Home | History | Annotate | Download | only in test
      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