diff options
author | derat <derat@chromium.org> | 2014-10-06 21:18:44 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-10-07 04:19:22 +0000 |
commit | 07366580ce28f55f6dd242c9d79e7a1f1b3bef44 (patch) | |
tree | 478e99d7cd75628ff4904b76114305d17c43db4b /base/power_monitor | |
parent | ba722a2a8ddf967dcadb483ea32d5ad31fc4bdf6 (diff) | |
download | chromium_src-07366580ce28f55f6dd242c9d79e7a1f1b3bef44.zip chromium_src-07366580ce28f55f6dd242c9d79e7a1f1b3bef44.tar.gz chromium_src-07366580ce28f55f6dd242c9d79e7a1f1b3bef44.tar.bz2 |
Make base::PowerMonitor work on Chrome OS.
On Chrome OS, updates about the system power status are
received via D-Bus messages on the UI thread. Being in
base/, PowerMonitor can't depend on the code in chromeos/
that receives those messages, so make the Chrome OS code
instead notify PowerMonitor when it receives updates.
BUG=326534
Review URL: https://codereview.chromium.org/622693004
Cr-Commit-Position: refs/heads/master@{#298367}
Diffstat (limited to 'base/power_monitor')
-rw-r--r-- | base/power_monitor/power_monitor_device_source.h | 10 | ||||
-rw-r--r-- | base/power_monitor/power_monitor_device_source_chromeos.cc | 40 |
2 files changed, 50 insertions, 0 deletions
diff --git a/base/power_monitor/power_monitor_device_source.h b/base/power_monitor/power_monitor_device_source.h index 37b065a..d29ec0a 100644 --- a/base/power_monitor/power_monitor_device_source.h +++ b/base/power_monitor/power_monitor_device_source.h @@ -51,6 +51,16 @@ class BASE_EXPORT PowerMonitorDeviceSource : public PowerMonitorSource { #endif // OS_IOS #endif // OS_MACOSX +#if defined(OS_CHROMEOS) + // On Chrome OS, Chrome receives power-related events from powerd, the system + // power daemon, via D-Bus signals received on the UI thread. base can't + // directly depend on that code, so this class instead exposes static methods + // so that events can be passed in. + static void SetPowerSource(bool on_battery); + static void HandleSystemSuspending(); + static void HandleSystemResumed(); +#endif + private: #if defined(OS_WIN) // Represents a message-only window for power message handling on Windows. diff --git a/base/power_monitor/power_monitor_device_source_chromeos.cc b/base/power_monitor/power_monitor_device_source_chromeos.cc new file mode 100644 index 0000000..c3466ee --- /dev/null +++ b/base/power_monitor/power_monitor_device_source_chromeos.cc @@ -0,0 +1,40 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/power_monitor/power_monitor.h" +#include "base/power_monitor/power_monitor_device_source.h" +#include "base/power_monitor/power_monitor_source.h" + +namespace base { + +namespace { + +// The most-recently-seen power source. +bool g_on_battery = false; + +} // namespace + +// static +void PowerMonitorDeviceSource::SetPowerSource(bool on_battery) { + if (on_battery != g_on_battery) { + g_on_battery = on_battery; + ProcessPowerEvent(POWER_STATE_EVENT); + } +} + +// static +void PowerMonitorDeviceSource::HandleSystemSuspending() { + ProcessPowerEvent(SUSPEND_EVENT); +} + +// static +void PowerMonitorDeviceSource::HandleSystemResumed() { + ProcessPowerEvent(RESUME_EVENT); +} + +bool PowerMonitorDeviceSource::IsOnBatteryPowerImpl() { + return g_on_battery; +} + +} // namespace base |