| 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..1809f3f55e6203229d0f2cab602a41438525bbe6 100644
|
| --- a/chromeos/dbus/fake_power_manager_client.cc
|
| +++ b/chromeos/dbus/fake_power_manager_client.cc
|
| @@ -6,6 +6,8 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| +#include "base/location.h"
|
| +#include "base/thread_task_runner_handle.h"
|
| #include "base/time/time.h"
|
|
|
| namespace chromeos {
|
| @@ -16,13 +18,22 @@ FakePowerManagerClient::FakePowerManagerClient()
|
| 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) {
|
| + props_.set_battery_percent(50);
|
| + props_.set_is_calculating_battery_time(false);
|
| + props_.set_battery_state(
|
| + power_manager::PowerSupplyProperties_BatteryState_DISCHARGING);
|
| + props_.set_external_power(
|
| + power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED);
|
| + props_.set_battery_time_to_full_sec(0);
|
| + props_.set_battery_time_to_empty_sec(18000);
|
| }
|
|
|
| void FakePowerManagerClient::AddObserver(Observer* observer) {
|
| @@ -34,7 +45,7 @@ void FakePowerManagerClient::RemoveObserver(Observer* observer) {
|
| }
|
|
|
| bool FakePowerManagerClient::HasObserver(const Observer* observer) const {
|
| - return false;
|
| + return observers_.HasObserver(observer);
|
| }
|
|
|
| void FakePowerManagerClient::SetRenderProcessManagerDelegate(
|
| @@ -63,6 +74,12 @@ void FakePowerManagerClient::IncreaseKeyboardBrightness() {
|
| }
|
|
|
| void FakePowerManagerClient::RequestStatusUpdate() {
|
| + // RequestStatusUpdate() calls and notifies the observers
|
| + // asynchronously on a real device. On the fake implementation, we call
|
| + // observers in a posted task to emulate the same behavior.
|
| + base::ThreadTaskRunnerHandle::Get()->PostTask(
|
| + FROM_HERE, base::Bind(&FakePowerManagerClient::NotifyObservers,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| void FakePowerManagerClient::RequestSuspend() {
|
| @@ -129,10 +146,20 @@ void FakePowerManagerClient::SendPowerButtonEvent(
|
| PowerButtonEventReceived(down, timestamp));
|
| }
|
|
|
| +void FakePowerManagerClient::UpdatePowerProperties(
|
| + const power_manager::PowerSupplyProperties& power_props) {
|
| + props_ = power_props;
|
| + NotifyObservers();
|
| +}
|
| +
|
| +void FakePowerManagerClient::NotifyObservers() {
|
| + FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(props_));
|
| +}
|
| +
|
| void FakePowerManagerClient::HandleSuspendReadiness() {
|
| CHECK(num_pending_suspend_readiness_callbacks_ > 0);
|
|
|
| --num_pending_suspend_readiness_callbacks_;
|
| }
|
|
|
| -} // namespace chromeos
|
| +} // namespace chromeos
|
|
|