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

Side by Side Diff: ui/views/win/hwnd_message_handler.cc

Issue 10959020: SystemMonitor refactoring: move power state monitor into a separate class called PowerMonitor (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Add PlatformInit/Destory for all platforms Created 8 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/win/hwnd_message_handler.h" 5 #include "ui/views/win/hwnd_message_handler.h"
6 6
7 #include <dwmapi.h> 7 #include <dwmapi.h>
8 #include <shellapi.h> 8 #include <shellapi.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/system_monitor/system_monitor.h" 11 #include "base/power_monitor/power_monitor.h"
12 #include "base/win/windows_version.h" 12 #include "base/win/windows_version.h"
13 #include "ui/base/events/event.h" 13 #include "ui/base/events/event.h"
14 #include "ui/base/keycodes/keyboard_code_conversion_win.h" 14 #include "ui/base/keycodes/keyboard_code_conversion_win.h"
15 #include "ui/base/native_theme/native_theme_win.h" 15 #include "ui/base/native_theme/native_theme_win.h"
16 #include "ui/base/win/hwnd_util.h" 16 #include "ui/base/win/hwnd_util.h"
17 #include "ui/base/win/mouse_wheel_util.h" 17 #include "ui/base/win/mouse_wheel_util.h"
18 #include "ui/base/win/shell.h" 18 #include "ui/base/win/shell.h"
19 #include "ui/gfx/canvas.h" 19 #include "ui/gfx/canvas.h"
20 #include "ui/gfx/canvas_skia_paint.h" 20 #include "ui/gfx/canvas_skia_paint.h"
21 #include "ui/gfx/icon_util.h" 21 #include "ui/gfx/icon_util.h"
(...skipping 10 matching lines...) Expand all
32 #include "ui/views/win/scoped_fullscreen_visibility.h" 32 #include "ui/views/win/scoped_fullscreen_visibility.h"
33 33
34 #if !defined(USE_AURA) 34 #if !defined(USE_AURA)
35 #include "ui/views/accessibility/native_view_accessibility_win.h" 35 #include "ui/views/accessibility/native_view_accessibility_win.h"
36 #include "ui/views/widget/child_window_message_processor.h" 36 #include "ui/views/widget/child_window_message_processor.h"
37 #endif 37 #endif
38 38
39 namespace views { 39 namespace views {
40 namespace { 40 namespace {
41 41
42 // Used to signal the power event when receiving Windows power broadcast
43 // message.
44 base::PowerMonitor::Signaler* g_power_signaler = NULL;
45
42 // MoveLoopMouseWatcher is used to determine if the user canceled or completed a 46 // MoveLoopMouseWatcher is used to determine if the user canceled or completed a
43 // move. win32 doesn't appear to offer a way to determine the result of a move, 47 // move. win32 doesn't appear to offer a way to determine the result of a move,
44 // so we install hooks to determine if we got a mouse up and assume the move 48 // so we install hooks to determine if we got a mouse up and assume the move
45 // completed. 49 // completed.
46 class MoveLoopMouseWatcher { 50 class MoveLoopMouseWatcher {
47 public: 51 public:
48 explicit MoveLoopMouseWatcher(HWNDMessageHandler* host); 52 explicit MoveLoopMouseWatcher(HWNDMessageHandler* host);
49 ~MoveLoopMouseWatcher(); 53 ~MoveLoopMouseWatcher();
50 54
51 // Returns true if the mouse is up, or if we couldn't install the hook. 55 // Returns true if the mouse is up, or if we couldn't install the hook.
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 is_right_mouse_pressed_on_caption_(false), 381 is_right_mouse_pressed_on_caption_(false),
378 lock_updates_count_(0), 382 lock_updates_count_(0),
379 destroyed_(NULL), 383 destroyed_(NULL),
380 ignore_window_pos_changes_(false), 384 ignore_window_pos_changes_(false),
381 ALLOW_THIS_IN_INITIALIZER_LIST(ignore_pos_changes_factory_(this)), 385 ALLOW_THIS_IN_INITIALIZER_LIST(ignore_pos_changes_factory_(this)),
382 last_monitor_(NULL), 386 last_monitor_(NULL),
383 use_layered_buffer_(false), 387 use_layered_buffer_(false),
384 layered_alpha_(255), 388 layered_alpha_(255),
385 ALLOW_THIS_IN_INITIALIZER_LIST(paint_layered_window_factory_(this)), 389 ALLOW_THIS_IN_INITIALIZER_LIST(paint_layered_window_factory_(this)),
386 can_update_layered_window_(true) { 390 can_update_layered_window_(true) {
391 if (g_power_signaler == NULL && base::PowerMonitor::Get())
392 g_power_signaler = base::PowerMonitor::Get()->GetSignalerOnce();
387 } 393 }
388 394
389 HWNDMessageHandler::~HWNDMessageHandler() { 395 HWNDMessageHandler::~HWNDMessageHandler() {
390 delegate_ = NULL; 396 delegate_ = NULL;
391 if (destroyed_ != NULL) 397 if (destroyed_ != NULL)
392 *destroyed_ = true; 398 *destroyed_ = true;
393 // Prevent calls back into this class via WNDPROC now that we've been 399 // Prevent calls back into this class via WNDPROC now that we've been
394 // destroyed. 400 // destroyed.
395 ClearUserData(); 401 ClearUserData();
402 delete g_power_signaler;
403 g_power_signaler = NULL;
396 } 404 }
397 405
398 void HWNDMessageHandler::Init(HWND parent, const gfx::Rect& bounds) { 406 void HWNDMessageHandler::Init(HWND parent, const gfx::Rect& bounds) {
399 GetMonitorAndRects(bounds.ToRECT(), &last_monitor_, &last_monitor_rect_, 407 GetMonitorAndRects(bounds.ToRECT(), &last_monitor_, &last_monitor_rect_,
400 &last_work_area_); 408 &last_work_area_);
401 409
402 // Create the window. 410 // Create the window.
403 WindowImpl::Init(parent, bounds); 411 WindowImpl::Init(parent, bounds);
404 } 412 }
405 413
(...skipping 1433 matching lines...) Expand 10 before | Expand all | Expand 10 after
1839 #endif 1847 #endif
1840 } 1848 }
1841 } else { 1849 } else {
1842 // TODO(msw): Find a better solution for this crbug.com/93530 workaround. 1850 // TODO(msw): Find a better solution for this crbug.com/93530 workaround.
1843 // Some scenarios otherwise fail to validate minimized app/popup windows. 1851 // Some scenarios otherwise fail to validate minimized app/popup windows.
1844 ValidateRect(hwnd(), NULL); 1852 ValidateRect(hwnd(), NULL);
1845 } 1853 }
1846 } 1854 }
1847 1855
1848 LRESULT HWNDMessageHandler::OnPowerBroadcast(DWORD power_event, DWORD data) { 1856 LRESULT HWNDMessageHandler::OnPowerBroadcast(DWORD power_event, DWORD data) {
1849 base::SystemMonitor* monitor = base::SystemMonitor::Get(); 1857 if (base::PowerMonitor::Get()) {
1850 if (monitor) 1858 CHECK(g_power_signaler);
1851 monitor->ProcessWmPowerBroadcastMessage(power_event); 1859 g_power_signaler->ProcessWmPowerBroadcastMessage(power_event);
1860 }
1861
1852 SetMsgHandled(FALSE); 1862 SetMsgHandled(FALSE);
1853 return 0; 1863 return 0;
1854 } 1864 }
1855 1865
1856 LRESULT HWNDMessageHandler::OnReflectedMessage(UINT message, 1866 LRESULT HWNDMessageHandler::OnReflectedMessage(UINT message,
1857 WPARAM w_param, 1867 WPARAM w_param,
1858 LPARAM l_param) { 1868 LPARAM l_param) {
1859 SetMsgHandled(FALSE); 1869 SetMsgHandled(FALSE);
1860 return 0; 1870 return 0;
1861 } 1871 }
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
2074 DwmExtendFrameIntoClientArea(hwnd(), &m); 2084 DwmExtendFrameIntoClientArea(hwnd(), &m);
2075 } 2085 }
2076 if (window_pos->flags & SWP_SHOWWINDOW) 2086 if (window_pos->flags & SWP_SHOWWINDOW)
2077 delegate_->HandleVisibilityChanged(true); 2087 delegate_->HandleVisibilityChanged(true);
2078 else if (window_pos->flags & SWP_HIDEWINDOW) 2088 else if (window_pos->flags & SWP_HIDEWINDOW)
2079 delegate_->HandleVisibilityChanged(false); 2089 delegate_->HandleVisibilityChanged(false);
2080 SetMsgHandled(FALSE); 2090 SetMsgHandled(FALSE);
2081 } 2091 }
2082 2092
2083 } // namespace views 2093 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698