Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2016 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 #ifndef ASH_AUTOCLICK_COMMON_AUTOCLICK_CONTROLLER_COMMON_H | |
| 6 #define ASH_AUTOCLICK_COMMON_AUTOCLICK_CONTROLLER_COMMON_H | |
| 7 | |
| 8 #include "ash/autoclick/common/autoclick_ring_handler.h" | |
| 9 #include "base/macros.h" | |
| 10 #include "base/timer/timer.h" | |
| 11 #include "ui/events/keycodes/keyboard_codes.h" | |
| 12 #include "ui/gfx/geometry/point.h" | |
| 13 | |
| 14 namespace views { | |
| 15 class Widget; | |
| 16 } | |
| 17 | |
| 18 namespace ui { | |
| 19 class MouseEvent; | |
| 20 class KeyEvent; | |
| 21 class TouchEvent; | |
| 22 class GestureEvent; | |
| 23 class ScrollEvent; | |
| 24 } | |
| 25 | |
| 26 namespace ash { | |
| 27 | |
| 28 // Autoclick controller common code for ash and mus. | |
| 29 class AutoclickControllerCommon { | |
| 30 public: | |
| 31 class Delegate { | |
| 32 public: | |
| 33 Delegate() {} | |
| 34 virtual ~Delegate() {} | |
| 35 | |
| 36 // Creates a ring widget at |event_location|. AutoclickControllerCommon | |
| 37 // takes ownership of the created widget. | |
| 38 virtual std::unique_ptr<views::Widget> CreateAutoclickRingWidget( | |
| 39 const gfx::Point& event_location) = 0; | |
| 40 | |
| 41 // Moves |widget| to |event_location|. | |
| 42 virtual void UpdateAutoclickRingWidget( | |
| 43 views::Widget* widget, | |
| 44 const gfx::Point& event_location) = 0; | |
| 45 | |
| 46 // Generates a click with |mouse_event_flags| at |event_location|. | |
| 47 virtual void DoAutoclick(const gfx::Point& event_location, | |
| 48 const int mouse_event_flags) = 0; | |
| 49 | |
|
sadrul
2016/08/15 15:25:10
Let's add OnAutoClickCanceled() here too, which wi
riajiang
2016/08/15 17:16:23
Makes sense! Done.
| |
| 50 private: | |
| 51 DISALLOW_COPY_AND_ASSIGN(Delegate); | |
| 52 }; | |
| 53 | |
| 54 AutoclickControllerCommon(base::TimeDelta delay, Delegate* delegate); | |
| 55 ~AutoclickControllerCommon(); | |
| 56 | |
| 57 void HandleMouseEvent(const ui::MouseEvent& event); | |
| 58 void HandleKeyEvent(const ui::KeyEvent& event); | |
| 59 void HandleTouchEvent(const ui::TouchEvent& event); | |
| 60 void HandleGestureEvent(const ui::GestureEvent& event); | |
| 61 void HandleScrollEvent(const ui::ScrollEvent& event); | |
| 62 | |
| 63 void SetAutoclickDelay(const base::TimeDelta delay); | |
| 64 void StopAutoclickTimer(); | |
| 65 void StopGesture(); | |
| 66 bool IsModifierKey(const ui::KeyboardCode key_code); | |
| 67 | |
| 68 private: | |
| 69 void InitClickTimer(); | |
| 70 | |
| 71 void DoAutoclick(); | |
| 72 | |
| 73 void UpdateRingWidget(const gfx::Point& mouse_location); | |
| 74 | |
| 75 base::TimeDelta delay_; | |
| 76 int mouse_event_flags_; | |
| 77 std::unique_ptr<base::Timer> autoclick_timer_; | |
| 78 Delegate* delegate_; | |
| 79 std::unique_ptr<views::Widget> widget_; | |
| 80 // The position in screen coordinates used to determine | |
| 81 // the distance the mouse has moved. | |
| 82 gfx::Point anchor_location_; | |
| 83 std::unique_ptr<AutoclickRingHandler> autoclick_ring_handler_; | |
| 84 | |
| 85 DISALLOW_COPY_AND_ASSIGN(AutoclickControllerCommon); | |
| 86 }; | |
| 87 | |
| 88 } // namespace ash | |
| 89 | |
| 90 #endif // ASH_AUTOCLICK_COMMON_AUTOCLICK_CONTROLLER_COMMON_H | |
| OLD | NEW |