| Index: chromeos/dbus/fake_power_manager_client.cc
|
| diff --git a/chromeos/dbus/fake_power_manager_client.cc b/chromeos/dbus/fake_power_manager_client.cc
|
| index 6c9a3872726a62a4ba5f0f2f353219f2e885b950..4b28beb85c366dbd1229514bcdc379a3a2f2a9db 100644
|
| --- a/chromeos/dbus/fake_power_manager_client.cc
|
| +++ b/chromeos/dbus/fake_power_manager_client.cc
|
| @@ -7,22 +7,29 @@
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| #include "base/time/time.h"
|
| +#include "components/device_event_log/device_event_log.h"
|
|
|
| namespace chromeos {
|
|
|
| FakePowerManagerClient::FakePowerManagerClient()
|
| - : num_request_restart_calls_(0),
|
| + : is_charging_(false),
|
| + is_calculating_(false),
|
| + battery_percentage_(50),
|
| + power_source_(0),
|
| + num_request_restart_calls_(0),
|
| num_request_shutdown_calls_(0),
|
| num_set_policy_calls_(0),
|
| num_set_is_projecting_calls_(0),
|
| num_pending_suspend_readiness_callbacks_(0),
|
| - is_projecting_(false) {
|
| + is_projecting_(false),
|
| + weak_ptr_factory_(this) {
|
| }
|
|
|
| FakePowerManagerClient::~FakePowerManagerClient() {
|
| }
|
|
|
| void FakePowerManagerClient::Init(dbus::Bus* bus) {
|
| + UpdatePowerStatus();
|
| }
|
|
|
| void FakePowerManagerClient::AddObserver(Observer* observer) {
|
| @@ -129,6 +136,83 @@ void FakePowerManagerClient::SendPowerButtonEvent(
|
| PowerButtonEventReceived(down, timestamp));
|
| }
|
|
|
| +void FakePowerManagerClient::UpdateBatteryPercentage(int percentage) {
|
| + battery_percentage_ = percentage;
|
| + UpdatePowerStatus();
|
| +}
|
| +
|
| +void FakePowerManagerClient::UpdateBatteryFullTimeToEmpty(int time_in_hours) {
|
| + hours_to_empty_full_battery = time_in_hours * 60 * 60;
|
| + UpdatePowerStatus();
|
| +}
|
| +
|
| +void FakePowerManagerClient::UpdateExternalPower(int power_source) {
|
| + power_source_ = power_source;
|
| + FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(props_));
|
| +}
|
| +
|
| +void FakePowerManagerClient::UpdateIsBatteryCharging(bool is_charging) {
|
| + is_charging_ = is_charging;
|
| + UpdatePowerStatus();
|
| +}
|
| +
|
| +void FakePowerManagerClient::UpdateIsCalculatingBatteryTime(
|
| + bool is_calculating) {
|
| + is_calculating_ = is_calculating;
|
| + UpdatePowerStatus();
|
| +}
|
| +
|
| +void FakePowerManagerClient::UpdatePowerStatus() {
|
| + int64 remaining_battery_time =
|
| + std::max(1, battery_percentage_ * hours_to_empty_full_battery / 100);
|
| +
|
| + props_.Clear();
|
| +
|
| + switch (power_source_) {
|
| + case 0:
|
| + // Say that the system is charging with AC connected or
|
| + // discharging without any charger connected.
|
| + props_.set_external_power(
|
| + !is_charging_
|
| + ? power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED
|
| + : power_manager::PowerSupplyProperties_ExternalPower_AC);
|
| + break;
|
| + case 1:
|
| + // Say that the system is both charging and discharging on USB
|
| + // (i.e. a low-power charger).
|
| + props_.set_external_power(
|
| + power_manager::PowerSupplyProperties_ExternalPower_USB);
|
| + break;
|
| + case 2:
|
| + // Say that the system is both charging and discharging on AC.
|
| + props_.set_external_power(
|
| + power_manager::PowerSupplyProperties_ExternalPower_AC);
|
| + break;
|
| + default:
|
| + NOTREACHED() << "Unhandled power source " << power_source_;
|
| + }
|
| +
|
| + if (battery_percentage_ == 100 && is_charging_) {
|
| + props_.set_battery_state(
|
| + power_manager::PowerSupplyProperties_BatteryState_FULL);
|
| + } else if (is_charging_) {
|
| + props_.set_battery_state(
|
| + power_manager::PowerSupplyProperties_BatteryState_CHARGING);
|
| + props_.set_battery_time_to_full_sec(
|
| + std::max(static_cast<int64>(1),
|
| + hours_to_empty_full_battery - remaining_battery_time));
|
| + } else {
|
| + props_.set_battery_state(
|
| + power_manager::PowerSupplyProperties_BatteryState_DISCHARGING);
|
| + props_.set_battery_time_to_empty_sec(remaining_battery_time);
|
| + }
|
| +
|
| + props_.set_is_calculating_battery_time(is_calculating_);
|
| + props_.set_battery_percent(battery_percentage_);
|
| +
|
| + FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(props_));
|
| +}
|
| +
|
| void FakePowerManagerClient::HandleSuspendReadiness() {
|
| CHECK(num_pending_suspend_readiness_callbacks_ > 0);
|
|
|
|
|