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 3 // found in the LICENSE file. 4 5 #ifndef UI_BASE_WIN_FOREGROUND_HELPER_H_ 6 #define UI_BASE_WIN_FOREGROUND_HELPER_H_ 7 8 #include "base/logging.h" 9 #include "ui/base/win/window_impl.h" 10 11 namespace ui { 12 13 // Helper class for moving a window to the foreground. 14 // Windows XP and later will not allow a window which is in the background to 15 // move to the foreground, unless requested by the current window in the 16 // foreground. For automated testing, we really want some of our windows 17 // to be capable of moving to the foreground. 18 // 19 // This is probably leveraging a windows bug. 20 class UI_EXPORT ForegroundHelper : public WindowImpl { 21 public: 22 ForegroundHelper() : window_(NULL) { } 23 24 BEGIN_MSG_MAP_EX(ForegroundHelper) 25 MESSAGE_HANDLER(WM_HOTKEY, OnHotKey) 26 END_MSG_MAP() 27 28 // Brings a window into the foreground. 29 // Can be called from any window, even if the caller is not the 30 // foreground window. 31 static HRESULT SetForeground(HWND window); 32 33 private: 34 HRESULT ForegroundHotKey(HWND window); 35 36 // Handle the registered Hotkey being pressed. 37 LRESULT OnHotKey(UINT message, WPARAM wparam, LPARAM lparam, BOOL& handled); 38 39 HWND window_; 40 41 DISALLOW_COPY_AND_ASSIGN(ForegroundHelper); 42 }; 43 44 } // namespace ui 45 46 #endif // UI_BASE_WIN_FOREGROUND_HELPER_H_ 47