Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Unified Diff: chromeos/dbus/power_manager_client.cc

Issue 622693004: Make base::PowerMonitor work on Chrome OS. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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) {
« base/base.gypi ('K') | « base/power_monitor/power_monitor_device_source_chromeos.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698