| Index: chromeos/dbus/power_manager_client.cc
|
| diff --git a/chromeos/dbus/power_manager_client.cc b/chromeos/dbus/power_manager_client.cc
|
| index c094d9d2801da1a31658b47392158f1f21a82019..d2a38171aaf111e20e9261e7f1492434ee6ef5e1 100644
|
| --- a/chromeos/dbus/power_manager_client.cc
|
| +++ b/chromeos/dbus/power_manager_client.cc
|
| @@ -14,6 +14,7 @@
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/message_loop/message_loop.h"
|
| #include "base/observer_list.h"
|
| +#include "base/power_monitor/power_monitor_device_source.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/stringprintf.h"
|
| @@ -403,7 +404,7 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| dbus::MessageReader reader(signal);
|
| power_manager::PowerSupplyProperties protobuf;
|
| if (reader.PopArrayOfBytesAsProto(&protobuf)) {
|
| - FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(protobuf));
|
| + HandlePowerSupplyProperties(protobuf);
|
| } else {
|
| LOG(ERROR) << "Unable to decode "
|
| << power_manager::kPowerSupplyPollSignal << "signal";
|
| @@ -420,7 +421,7 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| dbus::MessageReader reader(response);
|
| power_manager::PowerSupplyProperties protobuf;
|
| if (reader.PopArrayOfBytesAsProto(&protobuf)) {
|
| - FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(protobuf));
|
| + HandlePowerSupplyProperties(protobuf);
|
| } else {
|
| LOG(ERROR) << "Unable to decode "
|
| << power_manager::kGetPowerSupplyPropertiesMethod
|
| @@ -444,6 +445,14 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| callback.Run(percent);
|
| }
|
|
|
| + void HandlePowerSupplyProperties(
|
| + const power_manager::PowerSupplyProperties& proto) {
|
| + FOR_EACH_OBSERVER(Observer, observers_, PowerChanged(proto));
|
| + const bool on_battery = proto.external_power() ==
|
| + power_manager::PowerSupplyProperties_ExternalPower_DISCONNECTED;
|
| + base::PowerMonitorDeviceSource::SetPowerSource(on_battery);
|
| + }
|
| +
|
| void HandleRegisterSuspendDelayReply(bool dark_suspend,
|
| const std::string& method_name,
|
| dbus::Response* response) {
|
| @@ -507,6 +516,7 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| FOR_EACH_OBSERVER(Observer, observers_, DarkSuspendImminent());
|
| else
|
| FOR_EACH_OBSERVER(Observer, observers_, SuspendImminent());
|
| + base::PowerMonitorDeviceSource::HandleSystemSuspending();
|
| MaybeReportSuspendReadiness();
|
| }
|
|
|
| @@ -526,6 +536,7 @@ class PowerManagerClientImpl : public PowerManagerClient {
|
| << " duration=" << duration.InSeconds() << " sec";
|
| FOR_EACH_OBSERVER(
|
| PowerManagerClient::Observer, observers_, SuspendDone(duration));
|
| + base::PowerMonitorDeviceSource::HandleSystemResumed();
|
| }
|
|
|
| void IdleActionImminentReceived(dbus::Signal* signal) {
|
|
|