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 = [
"+chromeos/grit/chromeos_diagnostics_app_resources.h",
"+chromeos/strings/grit/chromeos_strings.h",
"+content/public/browser",
"+services/data_decoder/public",
"+ui/base",
"+ui/resources",
"+ui/webui",
......
......@@ -27,6 +27,7 @@ static_library("backend") {
"//chromeos/dbus/power:power_manager_proto",
"//chromeos/services/cros_healthd/public/cpp",
"//chromeos/services/cros_healthd/public/mojom",
"//services/data_decoder/public/cpp",
]
}
......@@ -49,6 +50,7 @@ source_set("unit_tests") {
"//chromeos/dbus/power:power_manager_proto",
"//chromeos/services/cros_healthd/public/cpp",
"//chromeos/services/cros_healthd/public/mojom",
"//services/data_decoder/public/cpp:test_support",
"//testing/gtest",
]
}
......@@ -7,11 +7,13 @@
#include <memory>
#include "base/memory/weak_ptr.h"
#include "chromeos/components/diagnostics_ui/mojom/system_routine_controller.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/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
#include "services/data_decoder/public/cpp/data_decoder.h"
namespace base {
class OneShotTimer;
......@@ -52,21 +54,52 @@ class SystemRoutineController : public mojom::SystemRoutineController {
mojom::RoutineType routine_type,
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 OnRoutineStatusUpdated(mojom::RoutineType routine_type,
int32_t id,
cros_healthd::mojom::RoutineUpdatePtr update_ptr);
void HandlePowerRoutineStatusUpdate(
mojom ::RoutineType routine_type,
int32_t id,
cros_healthd::mojom::RoutineUpdatePtr update_ptr);
bool IsRoutineRunning() const;
void ScheduleCheckRoutineStatus(uint32_t duration_in_seconds,
mojom::RoutineType routine_type,
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,
mojom::StandardRoutineResult result);
void OnPowerRoutineResult(mojom::RoutineType routine_type,
mojom::StandardRoutineResult result,
double percent_change,
uint32_t seconds_elapsed);
void BindCrosHealthdDiagnosticsServiceIfNeccessary();
void OnDiagnosticsServiceDisconnected();
......@@ -80,6 +113,8 @@ class SystemRoutineController : public mojom::SystemRoutineController {
diagnostics_service_;
mojo::Receiver<mojom::SystemRoutineController> receiver_{this};
base::WeakPtrFactory<SystemRoutineController> weak_factory_{this};
};
} // namespace diagnostics
......
......@@ -5,6 +5,8 @@
module chromeos.diagnostics.mojom;
enum RoutineType {
kBatteryCharge,
kBatteryDischarge,
kCpuCache,
kCpuStress,
kCpuFloatingPoint,
......@@ -19,8 +21,15 @@ enum StandardRoutineResult {
kUnableToRun,
};
struct PowerRoutineResult {
StandardRoutineResult simple_result;
double percent_change;
uint32 time_elapsed_seconds;
};
union RoutineResult {
StandardRoutineResult simple_result;
PowerRoutineResult power_result;
};
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