Chromium Code Reviews| Index: ui/chromeos/touch_exploration_controller.h |
| diff --git a/ui/chromeos/touch_exploration_controller.h b/ui/chromeos/touch_exploration_controller.h |
| index 12f0bfa2fcebe0e32d1289d5343f9a0d1dfb0552..2cc4fc856af0d8d9ce8cc4445c17334dcbd01461 100644 |
| --- a/ui/chromeos/touch_exploration_controller.h |
| +++ b/ui/chromeos/touch_exploration_controller.h |
| @@ -39,6 +39,11 @@ class TouchExplorationControllerDelegate { |
| // Takes an int from 0.0 to 100.0 that indicates the percent the volume |
| // should be set to. |
| virtual void SetOutputLevel(int volume) = 0; |
| + |
| + // This function should be called whenever the delegate should play an earcon. |
|
dmazzoni
2014/07/28 05:32:44
Update this comment; now the function is just for
lisayin
2014/07/28 16:28:54
Done.
|
| + // In the future a parameter can be passed to indicate what sound should be |
| + // played. |
| + virtual void PlayCornerPassthroughEarcon() = 0; |
| }; |
| // TouchExplorationController is used in tandem with "Spoken Feedback" to |
| @@ -56,7 +61,9 @@ class TouchExplorationControllerDelegate { |
| // right would correspond to the keyboard short cut shift+search+right. |
| // When two or more fingers are pressed initially, from then on the events |
| // are passed through, but with the initial finger removed - so if you swipe |
| -// down with two fingers, the running app will see a one-finger swipe. Slide |
| +// down with two fingers, the running app will see a one-finger swipe. If the |
| +// user holds down the corner of the screen until an earcon sounds, all |
| +// subsequent fingers will also be passed through in a similar manner. Slide |
| // gestures performed on the edge of the screen can change settings |
| // continuously. For example, sliding a finger along the right side of the |
| // screen will change the volume. |
| @@ -165,6 +172,8 @@ class UI_CHROMEOS_EXPORT TouchExplorationController |
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event); |
| ui::EventRewriteStatus InTwoToOneFinger( |
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event); |
| + ui::EventRewriteStatus InCornerPassthrough( |
| + const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event); |
| ui::EventRewriteStatus InPassthrough( |
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event); |
| ui::EventRewriteStatus InGestureInProgress( |
| @@ -176,12 +185,21 @@ class UI_CHROMEOS_EXPORT TouchExplorationController |
| ui::EventRewriteStatus InSlideGesture( |
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event); |
| - // This timer is started every time we get the first press event, and |
| - // it fires after the double-click timeout elapses (300 ms by default). |
| + // This timer is started every time we get the first press event and the |
| + // finger is not in the corner of the screen. |
| + // It fires after the double-click timeout elapses (300 ms by default). |
| // If the user taps and releases within 300 ms and doesn't press again, |
| - // we treat that as a single mouse move (touch exploration) event. |
| + // we treat that as a single mouse move (touch exploration) event. If the user |
| + // completes a swipe gesture within 300 ms, then the gesture is processed. |
| void OnTapTimerFired(); |
| + // This timer is started every timer we get the first press event and the |
| + // finger is in the corner of the screen. |
| + // It fires after the long_press timeout elapses (500 ms by default). If the |
| + // user is still in the corner by the time this timre fires, all subsequent |
| + // fingers added on the screen will be passed through. |
| + void OnLongPressTimerFired(); |
| + |
| // Dispatch a new event outside of the event rewriting flow. |
| void DispatchEvent(ui::Event* event); |
| @@ -285,6 +303,11 @@ class UI_CHROMEOS_EXPORT TouchExplorationController |
| // happens until all fingers are up. |
| TWO_TO_ONE_FINGER, |
| + // If the user has pressed and held down the left corner past long press, |
| + // then as long as they are holding the corner, all subsequent fingers |
| + // registered will be in passthrough. |
| + CORNER_PASSTHROUGH, |
| + |
| // If the user is in TWO_TO_ONE_FINGER with two fingers down and presses |
| // a third finger, every finger and touch event is passed through until |
| // all fingers are released. |
| @@ -309,6 +332,8 @@ class UI_CHROMEOS_EXPORT TouchExplorationController |
| TOP_EDGE = 1 << 1, |
| LEFT_EDGE = 1 << 2, |
| BOTTOM_EDGE = 1 << 3, |
| + BOTTOM_LEFT_CORNER = LEFT_EDGE | BOTTOM_EDGE, |
| + BOTTOM_RIGHT_CORNER = RIGHT_EDGE | BOTTOM_EDGE, |
| }; |
| // Given a point, if it is within the given bounds of an edge, returns the |
| @@ -355,7 +380,10 @@ class UI_CHROMEOS_EXPORT TouchExplorationController |
| // the location and id of the touch release is from here. |
| scoped_ptr<ui::TouchEvent> last_two_to_one_; |
| - // A timer to fire the mouse move event after the double-tap delay. |
| + // A timer that fires after a long press delay. |
| + base::OneShotTimer<TouchExplorationController> long_press_timer_; |
| + |
| + // A timer that fires after a double tap delay. |
| base::OneShotTimer<TouchExplorationController> tap_timer_; |
| // A timer to fire an indicating sound when sliding to change volume. |
| @@ -381,6 +409,10 @@ class UI_CHROMEOS_EXPORT TouchExplorationController |
| // This toggles whether VLOGS are turned on or not. |
| bool VLOG_on_; |
| + // Indicates if a finger is in the lower left corner waiting for the timer to |
| + // run out. |
| + bool waiting_for_corner_passthrough_; |
| + |
| DISALLOW_COPY_AND_ASSIGN(TouchExplorationController); |
| }; |