ui_controls_win.cc revision 1e9bf3e0803691d0a228da41fc608347b6db4340
1// Copyright 2013 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#include "ui/base/test/ui_controls.h" 6 7#include "base/callback.h" 8#include "base/message_loop/message_loop.h" 9#include "ui/base/test/ui_controls_internal_win.h" 10#include "ui/gfx/point.h" 11 12namespace ui_controls { 13bool g_ui_controls_enabled = false; 14 15void EnableUIControls() { 16 g_ui_controls_enabled = true; 17} 18 19bool SendKeyPress(gfx::NativeWindow window, 20 ui::KeyboardCode key, 21 bool control, 22 bool shift, 23 bool alt, 24 bool command) { 25 CHECK(g_ui_controls_enabled); 26 DCHECK(!command); // No command key on Windows 27 return internal::SendKeyPressImpl(window, key, control, shift, alt, 28 base::Closure()); 29} 30 31bool SendKeyPressNotifyWhenDone(gfx::NativeWindow window, 32 ui::KeyboardCode key, 33 bool control, 34 bool shift, 35 bool alt, 36 bool command, 37 const base::Closure& task) { 38 CHECK(g_ui_controls_enabled); 39 DCHECK(!command); // No command key on Windows 40 return internal::SendKeyPressImpl(window, key, control, shift, alt, task); 41} 42 43bool SendMouseMove(long x, long y) { 44 CHECK(g_ui_controls_enabled); 45 return internal::SendMouseMoveImpl(x, y, base::Closure()); 46} 47 48bool SendMouseMoveNotifyWhenDone(long x, long y, const base::Closure& task) { 49 CHECK(g_ui_controls_enabled); 50 return internal::SendMouseMoveImpl(x, y, task); 51} 52 53bool SendMouseEvents(MouseButton type, int state) { 54 CHECK(g_ui_controls_enabled); 55 return internal::SendMouseEventsImpl(type, state, base::Closure()); 56} 57 58bool SendMouseEventsNotifyWhenDone(MouseButton type, int state, 59 const base::Closure& task) { 60 CHECK(g_ui_controls_enabled); 61 return internal::SendMouseEventsImpl(type, state, task); 62} 63 64bool SendMouseClick(MouseButton type) { 65 CHECK(g_ui_controls_enabled); 66 return internal::SendMouseEventsImpl(type, UP | DOWN, base::Closure()); 67} 68 69void RunClosureAfterAllPendingUIEvents(const base::Closure& closure) { 70 // On windows, posting UI events is synchronous so just post the closure. 71 base::MessageLoopForUI::current()->PostTask(FROM_HERE, closure); 72} 73 74} // namespace ui_controls 75