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; |