blob: 79927688a7441db51efb94108684da7933e9d99c [file] [log] [blame]
// Copyright (c) 2010 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.
#ifndef CHROME_FRAME_TEST_SIMULATE_INPUT_H_
#define CHROME_FRAME_TEST_SIMULATE_INPUT_H_
#include <windows.h>
#include <string>
#include "base/basictypes.h"
#include "base/process/process_handle.h"
namespace simulate_input {
enum Modifier {
NONE,
SHIFT = 1,
CONTROL = 2,
ALT = 4
};
enum KeyMode {
KEY_DOWN,
KEY_UP,
};
// Bring a window into foreground to receive user input.
// Note that this may not work on
bool ForceSetForegroundWindow(HWND window);
// Looks for a top level window owned by the given process id and
// calls ForceSetForegroundWindow on it.
bool EnsureProcessInForeground(base::ProcessId process_id);
// Helper function to set keyboard focus to a window. This is achieved by
// sending a mouse move followed by a mouse down/mouse up combination to the
// window.
void SetKeyboardFocusToWindow(HWND window);
// Sends a keystroke to the currently active application with optional modifiers
// set. Sends one "key (down|up)" input event for each modifier set, plus one
// for |mnemonic_char| depending on the value of |key_mode|. This can be useful
// as it has been observed that tests will exit after receiving the "key down"
// events leaving the keyboard in an inconsistent state.
void SendMnemonic(WORD mnemonic_char, uint32 modifiers, bool extended,
bool unicode, KeyMode key_mode);
// Sends a mouse click to the desktop.
enum MouseButton { LEFT, RIGHT, MIDDLE, X };
void SendMouseClick(int x, int y, MouseButton button);
// Sends a mouse click to the window passed in, after ensuring that the window
// is in the foreground.
void SendMouseClick(HWND window, int x, int y, MouseButton button);
// Translates a single char to a virtual key.
void SendScanCode(short scan_code, uint32 modifiers);
void SendCharA(char c, uint32 modifiers);
void SendCharW(wchar_t c, uint32 modifiers);
// Sends extended keystroke to the currently active application with optional
// modifiers set.
void SendExtendedKey(WORD key, uint32 modifiers);
// Iterates through all the characters in the string and simulates
// keyboard input. The input goes to the currently active application.
void SendStringW(const std::wstring& s);
void SendStringA(const std::string& s);
} // end namespace simulate_input
#endif // CHROME_FRAME_TEST_SIMULATE_INPUT_H_