Commit 40841e39 authored by Bailey Berro's avatar Bailey Berro Committed by Commit Bot

Add SystemRoutineController Power Routines

This change adds the Battery Charge and Battery Discharge Routines to
the SystemRoutineController interface.

Example of routines being called from frontend:
https://source.chromium.org/chromium/chromium/src/+/master:chromeos/components/diagnostics_ui/resources/routine_list_executor.js;l=88-118

Bug: 1128204
Change-Id: I1b4589a69b66bd7a62899d40a297ef96b4e8f877
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2488747
Commit-Queue: Bailey Berro <baileyberro@chromium.org>
Auto-Submit: Bailey Berro <baileyberro@chromium.org>
Reviewed-by: default avatarRobert Sesek <rsesek@chromium.org>
Reviewed-by: default avatarDominick Ng <dominickn@chromium.org>
Reviewed-by: default avatarZentaro Kavanagh <zentaro@chromium.org>
Cr-Commit-Position: refs/heads/master@{#828460}
parent 1f55f7c6
...@@ -3,6 +3,7 @@ include_rules = [ ...@@ -3,6 +3,7 @@ include_rules = [
"+chromeos/grit/chromeos_diagnostics_app_resources.h", "+chromeos/grit/chromeos_diagnostics_app_resources.h",
"+chromeos/strings/grit/chromeos_strings.h", "+chromeos/strings/grit/chromeos_strings.h",
"+content/public/browser", "+content/public/browser",
"+services/data_decoder/public",
"+ui/base", "+ui/base",
"+ui/resources", "+ui/resources",
"+ui/webui", "+ui/webui",
......
...@@ -27,6 +27,7 @@ static_library("backend") { ...@@ -27,6 +27,7 @@ static_library("backend") {
"//chromeos/dbus/power:power_manager_proto", "//chromeos/dbus/power:power_manager_proto",
"//chromeos/services/cros_healthd/public/cpp", "//chromeos/services/cros_healthd/public/cpp",
"//chromeos/services/cros_healthd/public/mojom", "//chromeos/services/cros_healthd/public/mojom",
"//services/data_decoder/public/cpp",
] ]
} }
...@@ -49,6 +50,7 @@ source_set("unit_tests") { ...@@ -49,6 +50,7 @@ source_set("unit_tests") {
"//chromeos/dbus/power:power_manager_proto", "//chromeos/dbus/power:power_manager_proto",
"//chromeos/services/cros_healthd/public/cpp", "//chromeos/services/cros_healthd/public/cpp",
"//chromeos/services/cros_healthd/public/mojom", "//chromeos/services/cros_healthd/public/mojom",
"//services/data_decoder/public/cpp:test_support",
"//testing/gtest", "//testing/gtest",
] ]
} }
...@@ -7,11 +7,13 @@ ...@@ -7,11 +7,13 @@
#include <memory> #include <memory>
#include "base/memory/weak_ptr.h"
#include "chromeos/components/diagnostics_ui/mojom/system_routine_controller.mojom.h" #include "chromeos/components/diagnostics_ui/mojom/system_routine_controller.mojom.h"
#include "chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom.h" #include "chromeos/services/cros_healthd/public/mojom/cros_healthd.mojom.h"
#include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h" #include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/data_decoder/public/cpp/data_decoder.h"
namespace base { namespace base {
class OneShotTimer; class OneShotTimer;
...@@ -52,21 +54,52 @@ class SystemRoutineController : public mojom::SystemRoutineController { ...@@ -52,21 +54,52 @@ class SystemRoutineController : public mojom::SystemRoutineController {
mojom::RoutineType routine_type, mojom::RoutineType routine_type,
cros_healthd::mojom::RunRoutineResponsePtr response_ptr); cros_healthd::mojom::RunRoutineResponsePtr response_ptr);
void OnPowerRoutineStarted(
mojom::RoutineType routine_type,
cros_healthd::mojom::RunRoutineResponsePtr response_ptr);
void ContinuePowerRoutine(mojom::RoutineType routine_type, int32_t id);
void OnPowerRoutineContinued(
mojom::RoutineType routine_type,
int32_t id,
cros_healthd::mojom::RoutineUpdatePtr update_ptr);
void CheckRoutineStatus(mojom::RoutineType routine_type, int32_t id); void CheckRoutineStatus(mojom::RoutineType routine_type, int32_t id);
void OnRoutineStatusUpdated(mojom::RoutineType routine_type, void OnRoutineStatusUpdated(mojom::RoutineType routine_type,
int32_t id, int32_t id,
cros_healthd::mojom::RoutineUpdatePtr update_ptr); cros_healthd::mojom::RoutineUpdatePtr update_ptr);
void HandlePowerRoutineStatusUpdate(
mojom ::RoutineType routine_type,
int32_t id,
cros_healthd::mojom::RoutineUpdatePtr update_ptr);
bool IsRoutineRunning() const; bool IsRoutineRunning() const;
void ScheduleCheckRoutineStatus(uint32_t duration_in_seconds, void ScheduleCheckRoutineStatus(uint32_t duration_in_seconds,
mojom::RoutineType routine_type, mojom::RoutineType routine_type,
int32_t id); int32_t id);
void ParsePowerRoutineResult(mojom::RoutineType routine_type,
mojom::StandardRoutineResult result,
mojo::ScopedHandle output_handle);
void OnPowerRoutineResultFetched(mojom::RoutineType routine_type,
const std::string& file_contents);
void OnPowerRoutineJsonParsed(mojom::RoutineType routine_type,
data_decoder::DataDecoder::ValueOrError result);
void OnStandardRoutineResult(mojom::RoutineType routine_type, void OnStandardRoutineResult(mojom::RoutineType routine_type,
mojom::StandardRoutineResult result); mojom::StandardRoutineResult result);
void OnPowerRoutineResult(mojom::RoutineType routine_type,
mojom::StandardRoutineResult result,
double percent_change,
uint32_t seconds_elapsed);
void BindCrosHealthdDiagnosticsServiceIfNeccessary(); void BindCrosHealthdDiagnosticsServiceIfNeccessary();
void OnDiagnosticsServiceDisconnected(); void OnDiagnosticsServiceDisconnected();
...@@ -80,6 +113,8 @@ class SystemRoutineController : public mojom::SystemRoutineController { ...@@ -80,6 +113,8 @@ class SystemRoutineController : public mojom::SystemRoutineController {
diagnostics_service_; diagnostics_service_;
mojo::Receiver<mojom::SystemRoutineController> receiver_{this}; mojo::Receiver<mojom::SystemRoutineController> receiver_{this};
base::WeakPtrFactory<SystemRoutineController> weak_factory_{this};
}; };
} // namespace diagnostics } // namespace diagnostics
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
module chromeos.diagnostics.mojom; module chromeos.diagnostics.mojom;
enum RoutineType { enum RoutineType {
kBatteryCharge,
kBatteryDischarge,
kCpuCache, kCpuCache,
kCpuStress, kCpuStress,
kCpuFloatingPoint, kCpuFloatingPoint,
...@@ -19,8 +21,15 @@ enum StandardRoutineResult { ...@@ -19,8 +21,15 @@ enum StandardRoutineResult {
kUnableToRun, kUnableToRun,
}; };
struct PowerRoutineResult {
StandardRoutineResult simple_result;
double percent_change;
uint32 time_elapsed_seconds;
};
union RoutineResult { union RoutineResult {
StandardRoutineResult simple_result; StandardRoutineResult simple_result;
PowerRoutineResult power_result;
}; };
struct RoutineResultInfo { struct RoutineResultInfo {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment