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 "base/basictypes.h" 6#include "base/logging.h" 7#include "base/message_loop/message_loop.h" 8#include "ui/aura/test/ui_controls_factory_aura.h" 9#include "ui/aura/window.h" 10#include "ui/aura/window_tree_host.h" 11#include "ui/base/test/ui_controls_aura.h" 12#include "ui/base/test/ui_controls_internal_win.h" 13 14namespace aura { 15namespace test { 16 17namespace { 18 19using ui_controls::DOWN; 20using ui_controls::LEFT; 21using ui_controls::MIDDLE; 22using ui_controls::MouseButton; 23using ui_controls::RIGHT; 24using ui_controls::UIControlsAura; 25using ui_controls::UP; 26using namespace ui_controls::internal; 27 28class UIControlsWin : public UIControlsAura { 29 public: 30 UIControlsWin() {} 31 32 // UIControlsAura overrides: 33 virtual bool SendKeyPress(gfx::NativeWindow native_window, 34 ui::KeyboardCode key, 35 bool control, 36 bool shift, 37 bool alt, 38 bool command) { 39 DCHECK(!command); // No command key on Aura 40 HWND window = 41 native_window->GetHost()->GetAcceleratedWidget(); 42 return SendKeyPressImpl( 43 window, key, control, shift, alt, base::Closure()); 44 } 45 virtual bool SendKeyPressNotifyWhenDone(gfx::NativeWindow native_window, 46 ui::KeyboardCode key, 47 bool control, 48 bool shift, 49 bool alt, 50 bool command, 51 const base::Closure& task) { 52 DCHECK(!command); // No command key on Aura 53 HWND window = 54 native_window->GetHost()->GetAcceleratedWidget(); 55 return SendKeyPressImpl(window, key, control, shift, alt, task); 56 } 57 virtual bool SendMouseMove(long screen_x, long screen_y) { 58 return SendMouseMoveImpl(screen_x, screen_y, base::Closure()); 59 } 60 virtual bool SendMouseMoveNotifyWhenDone(long screen_x, 61 long screen_y, 62 const base::Closure& task) { 63 return SendMouseMoveImpl(screen_x, screen_y, task); 64 } 65 virtual bool SendMouseEvents(MouseButton type, int state) { 66 return SendMouseEventsImpl(type, state, base::Closure()); 67 } 68 virtual bool SendMouseEventsNotifyWhenDone(MouseButton type, 69 int state, 70 const base::Closure& task) { 71 return SendMouseEventsImpl(type, state, task); 72 } 73 virtual bool SendMouseClick(MouseButton type) { 74 return SendMouseEvents(type, UP | DOWN); 75 } 76 virtual void RunClosureAfterAllPendingUIEvents(const base::Closure& closure) { 77 // On windows, posting UI events is synchronous so just post the closure. 78 base::MessageLoopForUI::current()->PostTask(FROM_HERE, closure); 79 } 80 81 private: 82 DISALLOW_COPY_AND_ASSIGN(UIControlsWin); 83}; 84 85} // namespace 86 87UIControlsAura* CreateUIControlsAura(WindowTreeHost* host) { 88 return new UIControlsWin(); 89} 90 91} // namespace test 92} // namespace aura 93