Chromium Code Reviews| Index: base/power_monitor/power_monitor_device_source_win.cc |
| diff --git a/base/power_monitor/power_monitor_device_source_win.cc b/base/power_monitor/power_monitor_device_source_win.cc |
| index 6f4c1319b32a5a2c9a0006345ca5b3badeca25bd..6609bd0e9e0bd71eefec7ea8591bc6eb8d4603b8 100644 |
| --- a/base/power_monitor/power_monitor_device_source_win.cc |
| +++ b/base/power_monitor/power_monitor_device_source_win.cc |
| @@ -17,6 +17,37 @@ namespace { |
| const wchar_t kWindowClassName[] = L"Base_PowerMessageWindow"; |
| +void ProcessWmPowerBroadcastMessage(WPARAM event_id) { |
| + PowerMonitorSource::PowerEvent power_event; |
| + switch (event_id) { |
| + case PBT_APMPOWERSTATUSCHANGE: // The power status changed. |
| + power_event = PowerMonitorSource::POWER_STATE_EVENT; |
| + break; |
| + case PBT_APMRESUMEAUTOMATIC: // Resume from suspend. |
| + //case PBT_APMRESUMESUSPEND: // User-initiated resume from suspend. |
| + // We don't notify for this latter event |
| + // because if it occurs it is always sent as a |
| + // second event after PBT_APMRESUMEAUTOMATIC. |
| + power_event = PowerMonitorSource::RESUME_EVENT; |
| + break; |
| + case PBT_APMSUSPEND: // System has been suspended. |
| + power_event = PowerMonitorSource::SUSPEND_EVENT; |
| + break; |
| + default: |
| + return; |
| + |
| + // Other Power Events: |
| + // PBT_APMBATTERYLOW - removed in Vista. |
| + // PBT_APMOEMEVENT - removed in Vista. |
| + // PBT_APMQUERYSUSPEND - removed in Vista. |
| + // PBT_APMQUERYSUSPENDFAILED - removed in Vista. |
| + // PBT_APMRESUMECRITICAL - removed in Vista. |
| + // PBT_POWERSETTINGCHANGE - user changed the power settings. |
| + } |
| + |
| + ProcessPowerEventHelper(power_event); |
| +} |
| + |
| } // namespace |
| // Function to query the system to see if it is currently running on |
| @@ -52,8 +83,6 @@ PowerMonitorDeviceSource::PowerMessageWindow::PowerMessageWindow() |
| message_hwnd_ = CreateWindowEx(WS_EX_NOACTIVATE, kWindowClassName, |
| NULL, WS_POPUP, 0, 0, 0, 0, NULL, NULL, instance_, NULL); |
| - SetWindowLongPtr(message_hwnd_, GWLP_USERDATA, |
| - reinterpret_cast<LONG_PTR>(this)); |
| } |
| PowerMonitorDeviceSource::PowerMessageWindow::~PowerMessageWindow() { |
| @@ -63,68 +92,19 @@ PowerMonitorDeviceSource::PowerMessageWindow::~PowerMessageWindow() { |
| } |
| } |
| -void |
| -PowerMonitorDeviceSource::PowerMessageWindow::ProcessWmPowerBroadcastMessage( |
| - int event_id) { |
| - PowerMonitorSource::PowerEvent power_event; |
| - switch (event_id) { |
| - case PBT_APMPOWERSTATUSCHANGE: // The power status changed. |
| - power_event = PowerMonitorSource::POWER_STATE_EVENT; |
| - break; |
| - case PBT_APMRESUMEAUTOMATIC: // Resume from suspend. |
| - //case PBT_APMRESUMESUSPEND: // User-initiated resume from suspend. |
| - // We don't notify for this latter event |
| - // because if it occurs it is always sent as a |
| - // second event after PBT_APMRESUMEAUTOMATIC. |
| - power_event = PowerMonitorSource::RESUME_EVENT; |
| - break; |
| - case PBT_APMSUSPEND: // System has been suspended. |
| - power_event = PowerMonitorSource::SUSPEND_EVENT; |
| - break; |
| - default: |
| - return; |
| - |
| - // Other Power Events: |
| - // PBT_APMBATTERYLOW - removed in Vista. |
| - // PBT_APMOEMEVENT - removed in Vista. |
| - // PBT_APMQUERYSUSPEND - removed in Vista. |
| - // PBT_APMQUERYSUSPENDFAILED - removed in Vista. |
| - // PBT_APMRESUMECRITICAL - removed in Vista. |
| - // PBT_POWERSETTINGCHANGE - user changed the power settings. |
| - } |
| - |
| - ProcessPowerEventHelper(power_event); |
| -} |
| - |
| -LRESULT CALLBACK PowerMonitorDeviceSource::PowerMessageWindow::WndProc( |
| +// static |
| +LRESULT CALLBACK PowerMonitorDeviceSource::PowerMessageWindow::WndProcThunk( |
| HWND hwnd, |
| UINT message, |
| WPARAM wparam, |
| LPARAM lparam) { |
| switch (message) { |
| - case WM_POWERBROADCAST: { |
| - DWORD power_event = static_cast<DWORD>(message); |
|
cpu_(ooo_6.6-7.5)
2013/11/03 17:20:22
Ah I see the bug.
|
| - ProcessWmPowerBroadcastMessage(power_event); |
| + case WM_POWERBROADCAST: |
| + ProcessWmPowerBroadcastMessage(wparam); |
| return TRUE; |
| - } |
| default: |
| - break; |
| + return ::DefWindowProc(hwnd, message, wparam, lparam); |
| } |
| - return ::DefWindowProc(hwnd, message, wparam, lparam); |
| -} |
| - |
| -// static |
| -LRESULT CALLBACK PowerMonitorDeviceSource::PowerMessageWindow::WndProcThunk( |
| - HWND hwnd, |
| - UINT message, |
| - WPARAM wparam, |
| - LPARAM lparam) { |
| - PowerMonitorDeviceSource::PowerMessageWindow* message_hwnd = |
| - reinterpret_cast<PowerMonitorDeviceSource::PowerMessageWindow*>( |
| - GetWindowLongPtr(hwnd, GWLP_USERDATA)); |
| - if (message_hwnd) |
| - return message_hwnd->WndProc(hwnd, message, wparam, lparam); |
| - return ::DefWindowProc(hwnd, message, wparam, lparam); |
| } |
| } // namespace base |