Chromium Code Reviews| Index: base/system_monitor/system_monitor.h |
| diff --git a/base/system_monitor/system_monitor.h b/base/system_monitor/system_monitor.h |
| index 6620d27b42d109a65ceb86aaefe730f5e75dd07f..10f279f59254e8160c62ba696d59d2c0fccdf7aa 100644 |
| --- a/base/system_monitor/system_monitor.h |
| +++ b/base/system_monitor/system_monitor.h |
| @@ -134,13 +134,6 @@ class BASE_EXPORT SystemMonitor { |
| // be copied. Any significant addition to this class is blocked on |
| // refactoring to improve the state of affairs. See http://crbug.com/149059 |
| -#if defined(OS_WIN) |
| - // Windows-specific handling of a WM_POWERBROADCAST message. |
| - // Embedders of this API should hook their top-level window |
| - // message loop and forward WM_POWERBROADCAST through this call. |
| - void ProcessWmPowerBroadcastMessage(int event_id); |
| -#endif |
| - |
| // Cross-platform handling of a power event. |
| void ProcessPowerMessage(PowerEvent event_id); |
| @@ -148,6 +141,29 @@ class BASE_EXPORT SystemMonitor { |
| void ProcessDevicesChanged(DeviceType device_type); |
| private: |
| +#if defined(OS_WIN) |
| + // Represents a message-only window for power message handling on Windows. |
| + // Only allow SystemMonitor to create it. |
| + class PowerMessageWindow { |
|
Hongbo Min
2013/02/23 03:42:01
Let me explain the reason why we need to define th
vandebo (ex-Chrome)
2013/02/25 17:46:54
I see. This can be solved by making SystemMonitor
|
| + public: |
| + PowerMessageWindow(); |
| + ~PowerMessageWindow(); |
| + |
| + private: |
| + void ProcessWmPowerBroadcastMessage(int event_id); |
| + LRESULT CALLBACK WndProc(HWND hwnd, UINT message, |
| + WPARAM wparam, LPARAM lparam); |
| + static LRESULT CALLBACK WndProcThunk(HWND hwnd, |
| + UINT message, |
| + WPARAM wparam, |
| + LPARAM lparam); |
| + // Instance of the module containing the window procedure. |
| + HMODULE instance_; |
| + // A hidden message-only window. |
| + HWND message_hwnd_; |
| + }; |
| +#endif |
| + |
| #if defined(OS_MACOSX) |
| void PlatformInit(); |
| void PlatformDestroy(); |
| @@ -183,6 +199,10 @@ class BASE_EXPORT SystemMonitor { |
| std::vector<id> notification_observers_; |
| #endif |
| +#if defined(OS_WIN) |
| + PowerMessageWindow power_message_window_; |
| +#endif |
| + |
| DISALLOW_COPY_AND_ASSIGN(SystemMonitor); |
| }; |