| 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 {
|
| + 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);
|
| };
|
|
|
|
|