| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef UI_AURA_TEST_EVENT_GENERATOR_H_ | 5 #ifndef UI_AURA_TEST_EVENT_GENERATOR_H_ |
| 6 #define UI_AURA_TEST_EVENT_GENERATOR_H_ | 6 #define UI_AURA_TEST_EVENT_GENERATOR_H_ |
| 7 | 7 |
| 8 #include <list> | 8 #include <list> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/memory/scoped_ptr.h" | 13 #include "base/memory/scoped_ptr.h" |
| 14 #include "ui/events/event_constants.h" | 14 #include "ui/events/event_constants.h" |
| 15 #include "ui/events/keycodes/keyboard_codes.h" | 15 #include "ui/events/keycodes/keyboard_codes.h" |
| 16 #include "ui/gfx/point.h" | 16 #include "ui/gfx/point.h" |
| 17 | 17 |
| 18 namespace base { | 18 namespace base { |
| 19 class TimeDelta; | 19 class TimeDelta; |
| 20 } | 20 } |
| 21 | 21 |
| 22 namespace ui { | 22 namespace ui { |
| 23 class Event; | 23 class Event; |
| 24 class EventProcessor; |
| 24 class KeyEvent; | 25 class KeyEvent; |
| 25 class MouseEvent; | 26 class MouseEvent; |
| 26 class ScrollEvent; | 27 class ScrollEvent; |
| 27 class TouchEvent; | 28 class TouchEvent; |
| 28 } | 29 } |
| 29 | 30 |
| 30 namespace aura { | 31 namespace aura { |
| 31 class Window; | 32 class Window; |
| 32 class WindowEventDispatcher; | 33 class WindowTreeHost; |
| 33 | 34 |
| 34 namespace client { | 35 namespace client { |
| 35 class ScreenPositionClient; | 36 class ScreenPositionClient; |
| 36 } | 37 } |
| 37 | 38 |
| 38 namespace test { | 39 namespace test { |
| 39 | 40 |
| 40 typedef base::Callback<void(ui::EventType, const gfx::Vector2dF&)> | 41 typedef base::Callback<void(ui::EventType, const gfx::Vector2dF&)> |
| 41 ScrollStepCallback; | 42 ScrollStepCallback; |
| 42 | 43 |
| 43 // A delegate interface for EventGenerator that provides a way to | 44 // A delegate interface for EventGenerator that provides a way to |
| 44 // locate aura root window for given point. | 45 // locate aura root window for given point. |
| 45 class EventGeneratorDelegate { | 46 class EventGeneratorDelegate { |
| 46 public: | 47 public: |
| 47 virtual ~EventGeneratorDelegate() {} | 48 virtual ~EventGeneratorDelegate() {} |
| 48 | 49 |
| 49 // Returns a root window for given point. | 50 // Returns the host for given point. |
| 50 virtual WindowEventDispatcher* GetDispatcherAt( | 51 virtual WindowTreeHost* GetHostAt(const gfx::Point& point) const = 0; |
| 51 const gfx::Point& point) const = 0; | |
| 52 | 52 |
| 53 // Returns the screen position client that determines the | 53 // Returns the screen position client that determines the |
| 54 // coordinates used in EventGenerator. EventGenerator uses | 54 // coordinates used in EventGenerator. EventGenerator uses |
| 55 // root Window's coordinate if this returns NULL. | 55 // root Window's coordinate if this returns NULL. |
| 56 virtual client::ScreenPositionClient* GetScreenPositionClient( | 56 virtual client::ScreenPositionClient* GetScreenPositionClient( |
| 57 const aura::Window* window) const = 0; | 57 const aura::Window* window) const = 0; |
| 58 }; | 58 }; |
| 59 | 59 |
| 60 // EventGenerator is a tool that generates and dispatch events. | 60 // EventGenerator is a tool that generates and dispatch events. |
| 61 // Unlike |ui_controls| package in ui/base/test, this does not generate platform | 61 // Unlike |ui_controls| package in ui/base/test, this does not generate platform |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 303 | 303 |
| 304 // Generates a key release event. On platforms except Windows and X11, a key | 304 // Generates a key release event. On platforms except Windows and X11, a key |
| 305 // event without native_event() is generated. Note that ui::EF_ flags should | 305 // event without native_event() is generated. Note that ui::EF_ flags should |
| 306 // be passed as |flags|, not the native ones like 'ShiftMask' in <X11/X.h>. | 306 // be passed as |flags|, not the native ones like 'ShiftMask' in <X11/X.h>. |
| 307 // TODO(yusukes): Support native_event() on all platforms. | 307 // TODO(yusukes): Support native_event() on all platforms. |
| 308 void ReleaseKey(ui::KeyboardCode key_code, int flags); | 308 void ReleaseKey(ui::KeyboardCode key_code, int flags); |
| 309 | 309 |
| 310 // Dispatch the event to the WindowEventDispatcher. | 310 // Dispatch the event to the WindowEventDispatcher. |
| 311 void Dispatch(ui::Event* event); | 311 void Dispatch(ui::Event* event); |
| 312 | 312 |
| 313 void set_current_dispatcher(WindowEventDispatcher* dispatcher) { | 313 void set_current_host(WindowTreeHost* host) { |
| 314 current_dispatcher_ = dispatcher; | 314 current_host_ = host; |
| 315 } | 315 } |
| 316 | 316 |
| 317 private: | 317 private: |
| 318 // Dispatch a key event to the WindowEventDispatcher. | 318 // Dispatch a key event to the WindowEventDispatcher. |
| 319 void DispatchKeyEvent(bool is_press, ui::KeyboardCode key_code, int flags); | 319 void DispatchKeyEvent(bool is_press, ui::KeyboardCode key_code, int flags); |
| 320 | 320 |
| 321 void UpdateCurrentDispatcher(const gfx::Point& point); | 321 void UpdateCurrentDispatcher(const gfx::Point& point); |
| 322 void PressButton(int flag); | 322 void PressButton(int flag); |
| 323 void ReleaseButton(int flag); | 323 void ReleaseButton(int flag); |
| 324 | 324 |
| 325 // Convert a point between API's coordinates and | 325 // Convert a point between API's coordinates and |
| 326 // |target|'s coordinates. | 326 // |target|'s coordinates. |
| 327 void ConvertPointFromTarget(const aura::Window* target, | 327 void ConvertPointFromTarget(const aura::Window* target, |
| 328 gfx::Point* point) const; | 328 gfx::Point* point) const; |
| 329 void ConvertPointToTarget(const aura::Window* target, | 329 void ConvertPointToTarget(const aura::Window* target, |
| 330 gfx::Point* point) const; | 330 gfx::Point* point) const; |
| 331 | 331 |
| 332 gfx::Point GetLocationInCurrentRoot() const; | 332 gfx::Point GetLocationInCurrentRoot() const; |
| 333 gfx::Point CenterOfWindow(const Window* window) const; | 333 gfx::Point CenterOfWindow(const Window* window) const; |
| 334 | 334 |
| 335 void DispatchNextPendingEvent(); | 335 void DispatchNextPendingEvent(); |
| 336 void DoDispatchEvent(ui::Event* event, bool async); | 336 void DoDispatchEvent(ui::Event* event, bool async); |
| 337 | 337 |
| 338 scoped_ptr<EventGeneratorDelegate> delegate_; | 338 scoped_ptr<EventGeneratorDelegate> delegate_; |
| 339 gfx::Point current_location_; | 339 gfx::Point current_location_; |
| 340 WindowEventDispatcher* current_dispatcher_; | 340 WindowTreeHost* current_host_; |
| 341 int flags_; | 341 int flags_; |
| 342 bool grab_; | 342 bool grab_; |
| 343 std::list<ui::Event*> pending_events_; | 343 std::list<ui::Event*> pending_events_; |
| 344 // Set to true to cause events to be posted asynchronously. | 344 // Set to true to cause events to be posted asynchronously. |
| 345 bool async_; | 345 bool async_; |
| 346 | 346 |
| 347 DISALLOW_COPY_AND_ASSIGN(EventGenerator); | 347 DISALLOW_COPY_AND_ASSIGN(EventGenerator); |
| 348 }; | 348 }; |
| 349 | 349 |
| 350 } // namespace test | 350 } // namespace test |
| 351 } // namespace aura | 351 } // namespace aura |
| 352 | 352 |
| 353 #endif // UI_AURA_TEST_EVENT_GENERATOR_H_ | 353 #endif // UI_AURA_TEST_EVENT_GENERATOR_H_ |
| OLD | NEW |