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

Unified Diff: base/power_monitor/power_monitor_device_source_mac.mm

Issue 17074009: Created multi-process-friendly PowerMonitor interface. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressing vandebo's feedback, part 2 Created 7 years, 5 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: base/power_monitor/power_monitor_device_source_mac.mm
diff --git a/base/power_monitor/power_monitor_mac.mm b/base/power_monitor/power_monitor_device_source_mac.mm
similarity index 77%
rename from base/power_monitor/power_monitor_mac.mm
rename to base/power_monitor/power_monitor_device_source_mac.mm
index ee906f63c8f438adce187a1d758eb1db1af86fbb..61e439630e74339a69661c117b5c72721296bd46 100644
--- a/base/power_monitor/power_monitor_mac.mm
+++ b/base/power_monitor/power_monitor_device_source_mac.mm
@@ -5,17 +5,18 @@
// Implementation based on sample code from
// http://developer.apple.com/library/mac/#qa/qa1340/_index.html.
+#include "base/power_monitor/power_monitor_device_source.h"
+
#include "base/power_monitor/power_monitor.h"
+#include "base/power_monitor/power_monitor_source.h"
#include <IOKit/pwr_mgt/IOPMLib.h>
#include <IOKit/IOMessage.h>
namespace base {
-void ProcessPowerEventHelper(PowerMonitor::PowerEvent event) {
- DCHECK(PowerMonitor::Get());
- if (PowerMonitor::Get())
- PowerMonitor::Get()->ProcessPowerEvent(event);
+void ProcessPowerEventHelper(PowerMonitorSource::PowerEvent event) {
+ PowerMonitorSource::ProcessPowerEvent(event);
}
namespace {
@@ -29,14 +30,19 @@ void SystemPowerEventCallback(void*,
natural_t message_type,
void* message_argument) {
switch (message_type) {
+ // If this message is not handled the system may delay sleep for 30 seconds.
+ case kIOMessageCanSystemSleep:
+ IOAllowPowerChange(g_system_power_io_port,
+ reinterpret_cast<intptr_t>(message_argument));
+ break;
case kIOMessageSystemWillSleep:
- ProcessPowerEventHelper(base::PowerMonitor::SUSPEND_EVENT);
+ ProcessPowerEventHelper(base::PowerMonitorSource::SUSPEND_EVENT);
IOAllowPowerChange(g_system_power_io_port,
reinterpret_cast<intptr_t>(message_argument));
break;
case kIOMessageSystemWillPowerOn:
- ProcessPowerEventHelper(PowerMonitor::RESUME_EVENT);
+ ProcessPowerEventHelper(PowerMonitorSource::RESUME_EVENT);
break;
}
}
@@ -49,7 +55,7 @@ void SystemPowerEventCallback(void*,
// See crbug.com/83783 .
// static
-void PowerMonitor::AllocateSystemIOPorts() {
+void PowerMonitorDeviceSource::AllocateSystemIOPorts() {
DCHECK_EQ(g_system_power_io_port, 0u);
// Notification port allocated by IORegisterForSystemPower.
@@ -60,7 +66,7 @@ void PowerMonitor::AllocateSystemIOPorts() {
DCHECK_NE(g_system_power_io_port, 0u);
}
-void PowerMonitor::PlatformInit() {
+void PowerMonitorDeviceSource::PlatformInit() {
// Need to call AllocateSystemIOPorts() before creating a PowerMonitor
// object.
DCHECK_NE(g_system_power_io_port, 0u);
@@ -74,7 +80,7 @@ void PowerMonitor::PlatformInit() {
kCFRunLoopCommonModes);
}
-void PowerMonitor::PlatformDestroy() {
+void PowerMonitorDeviceSource::PlatformDestroy() {
DCHECK_NE(g_system_power_io_port, 0u);
if (g_system_power_io_port == 0)
return;

Powered by Google App Engine
This is Rietveld 408576698