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

Unified Diff: chrome_frame/test/simulate_input.cc

Issue 126143005: Remove Chrome Frame code and resources. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync to r244038 Created 6 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome_frame/test/simulate_input.h ('k') | chrome_frame/test/test_scrubber.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome_frame/test/simulate_input.cc
diff --git a/chrome_frame/test/simulate_input.cc b/chrome_frame/test/simulate_input.cc
deleted file mode 100644
index 3dca6f185e6ab793346b5233fe4ec08091e85930..0000000000000000000000000000000000000000
--- a/chrome_frame/test/simulate_input.cc
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright (c) 2012 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "chrome_frame/test/simulate_input.h"
-
-#include <atlbase.h>
-#include <atlwin.h>
-
-#include "base/test/test_timeouts.h"
-#include "base/threading/platform_thread.h"
-#include "chrome_frame/utils.h"
-
-namespace simulate_input {
-
-class ForegroundHelperWindow : public CWindowImpl<ForegroundHelperWindow> {
- public:
-BEGIN_MSG_MAP(ForegroundHelperWindow)
- MESSAGE_HANDLER(WM_HOTKEY, OnHotKey)
-END_MSG_MAP()
-
- ForegroundHelperWindow() : window_(NULL) {}
-
- HRESULT SetForeground(HWND window) {
- DCHECK(::IsWindow(window));
- window_ = window;
- if (NULL == Create(NULL, NULL, NULL, WS_POPUP))
- return AtlHresultFromLastError();
-
- static const int kHotKeyId = 0x0000baba;
- static const int kHotKeyWaitTimeout = 2000;
-
- RegisterHotKey(m_hWnd, kHotKeyId, 0, VK_F22);
-
- MSG msg = {0};
- PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE);
-
- SendMnemonic(VK_F22, NONE, false, false, KEY_DOWN);
- // There are scenarios where the WM_HOTKEY is not dispatched by the
- // the corresponding foreground thread. To prevent us from indefinitely
- // waiting for the hotkey, we set a timer and exit the loop.
- SetTimer(kHotKeyId, kHotKeyWaitTimeout, NULL);
-
- while (GetMessage(&msg, NULL, 0, 0)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- if (msg.message == WM_HOTKEY) {
- break;
- }
- if (msg.message == WM_TIMER) {
- SetForegroundWindow(window);
- break;
- }
- }
-
- UnregisterHotKey(m_hWnd, kHotKeyId);
- KillTimer(kHotKeyId);
- DestroyWindow();
- return S_OK;
- }
-
- LRESULT OnHotKey(UINT msg, WPARAM wp, LPARAM lp, BOOL& handled) { // NOLINT
- SetForegroundWindow(window_);
- return 1;
- }
- private:
- HWND window_;
-};
-
-bool ForceSetForegroundWindow(HWND window) {
- if (GetForegroundWindow() == window)
- return true;
- ForegroundHelperWindow foreground_helper_window;
- HRESULT hr = foreground_helper_window.SetForeground(window);
- return SUCCEEDED(hr);
-}
-
-struct PidAndWindow {
- base::ProcessId pid;
- HWND hwnd;
-};
-
-BOOL CALLBACK FindWindowInProcessCallback(HWND hwnd, LPARAM param) {
- PidAndWindow* paw = reinterpret_cast<PidAndWindow*>(param);
- base::ProcessId pid;
- GetWindowThreadProcessId(hwnd, &pid);
- if (pid == paw->pid && IsWindowVisible(hwnd)) {
- paw->hwnd = hwnd;
- return FALSE;
- }
-
- return TRUE;
-}
-
-bool EnsureProcessInForeground(base::ProcessId process_id) {
- HWND hwnd = GetForegroundWindow();
- base::ProcessId current_foreground_pid = 0;
- DWORD active_thread_id = GetWindowThreadProcessId(hwnd,
- &current_foreground_pid);
- if (current_foreground_pid == process_id)
- return true;
-
- PidAndWindow paw = { process_id };
- EnumWindows(FindWindowInProcessCallback, reinterpret_cast<LPARAM>(&paw));
- if (!IsWindow(paw.hwnd)) {
- LOG(ERROR) << "failed to find process window";
- return false;
- }
-
- bool ret = ForceSetForegroundWindow(paw.hwnd);
- LOG_IF(ERROR, !ret) << "ForceSetForegroundWindow: " << ret;
-
- return ret;
-}
-
-void SendScanCode(short scan_code, uint32 modifiers) {
- DCHECK(-1 != scan_code);
-
- // High order byte in |scan_code| is SHIFT/CTRL/ALT key state.
- modifiers = static_cast<Modifier>(modifiers | HIBYTE(scan_code));
- DCHECK(modifiers <= ALT);
-
- // Low order byte in |scan_code| is the actual scan code.
- SendMnemonic(LOBYTE(scan_code), modifiers, false, true, KEY_DOWN);
-}
-
-void SendCharA(char c, uint32 modifiers) {
- SendScanCode(VkKeyScanA(c), modifiers);
-}
-
-void SendCharW(wchar_t c, uint32 modifiers) {
- SendScanCode(VkKeyScanW(c), modifiers);
-}
-
-// Sends a keystroke to the currently active application with optional
-// modifiers set.
-void SendMnemonic(WORD mnemonic_char,
- uint32 modifiers,
- bool extended,
- bool unicode,
- KeyMode key_mode) {
- const int kMaxInputs = 4;
- INPUT keys[kMaxInputs] = {0}; // Keyboard events
- int key_count = 0; // Number of generated events
-
- if (modifiers & SHIFT) {
- keys[key_count].type = INPUT_KEYBOARD;
- keys[key_count].ki.wVk = VK_SHIFT;
- keys[key_count].ki.wScan = MapVirtualKey(VK_SHIFT, 0);
- key_count++;
- }
-
- if (modifiers & CONTROL) {
- keys[key_count].type = INPUT_KEYBOARD;
- keys[key_count].ki.wVk = VK_CONTROL;
- keys[key_count].ki.wScan = MapVirtualKey(VK_CONTROL, 0);
- key_count++;
- }
-
- if (modifiers & ALT) {
- keys[key_count].type = INPUT_KEYBOARD;
- keys[key_count].ki.wVk = VK_MENU;
- keys[key_count].ki.wScan = MapVirtualKey(VK_MENU, 0);
- key_count++;
- }
-
- if (mnemonic_char) {
- keys[key_count].type = INPUT_KEYBOARD;
- keys[key_count].ki.wVk = mnemonic_char;
- keys[key_count].ki.wScan = MapVirtualKey(mnemonic_char, 0);
-
- if (extended)
- keys[key_count].ki.dwFlags |= KEYEVENTF_EXTENDEDKEY;
- if (unicode)
- keys[key_count].ki.dwFlags |= KEYEVENTF_UNICODE;
- key_count++;
- }
-
- DCHECK_LE(key_count, kMaxInputs);
-
- // Add the key up bit if needed.
- if (key_mode == KEY_UP) {
- for (int i = 0; i < key_count; i++) {
- keys[i].ki.dwFlags |= KEYEVENTF_KEYUP;
- }
- }
-
- SendInput(key_count, &keys[0], sizeof(keys[0]));
-}
-
-void SetKeyboardFocusToWindow(HWND window) {
- SendMouseClick(window, 1, 1, LEFT);
-}
-
-void SendMouseClick(int x, int y, MouseButton button) {
- const base::TimeDelta kMessageTimeout = TestTimeouts::tiny_timeout();
- // TODO(joshia): Fix this. GetSystemMetrics(SM_CXSCREEN) will
- // retrieve screen size of the primarary monitor only. And monitors
- // arrangement could be pretty arbitrary.
- double screen_width = ::GetSystemMetrics(SM_CXSCREEN) - 1;
- double screen_height = ::GetSystemMetrics(SM_CYSCREEN) - 1;
- double location_x = x * (65535.0f / screen_width);
- double location_y = y * (65535.0f / screen_height);
-
- // Take advantage of button flag bitmask layout
- unsigned int button_flag = MOUSEEVENTF_LEFTDOWN << (button + button);
-
- INPUT input_info = {0};
- input_info.type = INPUT_MOUSE;
- input_info.mi.dwFlags = MOUSEEVENTF_MOVE | MOUSEEVENTF_ABSOLUTE;
- input_info.mi.dx = static_cast<LONG>(location_x);
- input_info.mi.dy = static_cast<LONG>(location_y);
- ::SendInput(1, &input_info, sizeof(INPUT));
- base::PlatformThread::Sleep(kMessageTimeout);
-
- input_info.mi.dwFlags = button_flag | MOUSEEVENTF_ABSOLUTE;
- ::SendInput(1, &input_info, sizeof(INPUT));
- base::PlatformThread::Sleep(kMessageTimeout);
-
- input_info.mi.dwFlags = (button_flag << 1) | MOUSEEVENTF_ABSOLUTE;
- ::SendInput(1, &input_info, sizeof(INPUT));
- base::PlatformThread::Sleep(kMessageTimeout);
-}
-
-void SendMouseClick(HWND window, int x, int y, MouseButton button) {
- if (!IsWindow(window)) {
- NOTREACHED() << "Invalid window handle.";
- return;
- }
-
- HWND top_level_window = window;
- if (!IsTopLevelWindow(top_level_window)) {
- top_level_window = GetAncestor(window, GA_ROOT);
- }
-
- ForceSetForegroundWindow(top_level_window);
-
- POINT cursor_position = {x, y};
- ClientToScreen(window, &cursor_position);
- SendMouseClick(cursor_position.x, cursor_position.y, button);
-}
-
-void SendExtendedKey(WORD key, uint32 modifiers) {
- SendMnemonic(key, modifiers, true, false, KEY_UP);
-}
-
-void SendStringW(const std::wstring& s) {
- for (size_t i = 0; i < s.length(); i++) {
- SendCharW(s[i], NONE);
- Sleep(10);
- }
-}
-
-void SendStringA(const std::string& s) {
- for (size_t i = 0; i < s.length(); i++) {
- SendCharA(s[i], NONE);
- Sleep(10);
- }
-}
-
-} // namespace simulate_input
« no previous file with comments | « chrome_frame/test/simulate_input.h ('k') | chrome_frame/test/test_scrubber.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698