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