| Index: ui/chromeos/touch_exploration_controller.h
|
| diff --git a/ui/chromeos/touch_exploration_controller.h b/ui/chromeos/touch_exploration_controller.h
|
| index 75dc93422b70788d031e905657b317c10fd908ba..a5584808eab334213bed0e185a1deba2edf01959 100644
|
| --- a/ui/chromeos/touch_exploration_controller.h
|
| +++ b/ui/chromeos/touch_exploration_controller.h
|
| @@ -58,9 +58,7 @@ class TouchExplorationControllerDelegate {
|
| // is in touch exploration or a double-tap simulates a click, and gestures
|
| // can be used to send high-level accessibility commands. For example, a swipe
|
| // 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
|
| +// Swipes with up to four fingers are also mapped to commands. 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. When a user double taps and holds with one
|
| @@ -93,13 +91,13 @@ class TouchExplorationControllerDelegate {
|
| // anywhere to activate it.
|
| //
|
| // The user can perform swipe gestures in one of the four cardinal directions
|
| -// which will be interpreted and used to control the UI. The gesture will only
|
| -// be registered if the finger moves outside the slop and completed within the
|
| -// grace period. If additional fingers are added during the grace period, the
|
| -// state changes to wait for those fingers to be released, and then goes to
|
| -// touch exploration mode. If the gesture fails to be completed within the
|
| -// grace period, the state changes to touch exploration mode. Once the state has
|
| -// changed, any gestures made during the grace period are discarded.
|
| +// which will be interpreted and used to control the UI. All gestures will only
|
| +// be registered if the fingers move outside the slop, and all fingers will only
|
| +// be registered if they are completed within the grace period. If a single
|
| +// finger gesture fails to be completed within the grace period, the state
|
| +// changes to touch exploration mode. If a multi finger gesture fails to be
|
| +// completed within the grace period, the user must lift all fingers before
|
| +// completing any more actions.
|
| //
|
| // If the user double-taps, the second tap is passed through, allowing the
|
| // user to click - however, the double-tap location is changed to the location
|
| @@ -178,15 +176,13 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
|
| ui::EventRewriteStatus InTouchExploration(
|
| 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 InOneFingerPassthrough(
|
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
|
| ui::EventRewriteStatus InGestureInProgress(
|
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
|
| ui::EventRewriteStatus InTouchExploreSecondPress(
|
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
|
| - ui::EventRewriteStatus InWaitForOneFinger(
|
| + ui::EventRewriteStatus InWaitForNoFingers(
|
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
|
| ui::EventRewriteStatus InSlideGesture(
|
| const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
|
| @@ -223,17 +219,22 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
|
|
| // Dispatches the keyboard short cut Shift+Search+<arrow key>
|
| // outside the event rewritting flow.
|
| - void DispatchShiftSearchKeyEvent(const ui::KeyboardCode direction);
|
| + void DispatchShiftSearchKeyEvent(const ui::KeyboardCode third_key);
|
| +
|
| + // Binds DispatchShiftSearchKeyEvent to a specific third key.
|
| + base::Closure BindShiftSearchKeyEvent(const ui::KeyboardCode third_key);
|
| +
|
| + // Dispatches a single key with the given flags.
|
| + void DispatchKeyWithFlags(const ui::KeyboardCode key, int flags);
|
| +
|
| + // Binds DispatchKeyWithFlags to a specific key and flags.
|
| + base::Closure BindKeyEventWithFlags(const ui::KeyboardCode key, int flags);
|
|
|
| scoped_ptr<ui::Event> CreateMouseMoveEvent(const gfx::PointF& location,
|
| int flags);
|
|
|
| void EnterTouchToMouseMode();
|
|
|
| - // Set the state to NO_FINGERS_DOWN and reset any other fields to their
|
| - // default value.
|
| - void ResetToNoFingersDown();
|
| -
|
| void PlaySoundForTimer();
|
|
|
| // Some constants used in touch_exploration_controller:
|
| @@ -267,7 +268,7 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| // The user was in touch explore mode and released the finger.
|
| // If another touch press occurs within the grace period, a single
|
| // tap click occurs. This state differs from SINGLE_TAP_RELEASED
|
| - // In that if a second tap doesn't occur within the grace period,
|
| + // in that if a second tap doesn't occur within the grace period,
|
| // there is no mouse move dispatched.
|
| TOUCH_EXPLORE_RELEASED,
|
|
|
| @@ -314,10 +315,10 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| // If the user added another finger in SINGLE_TAP_PRESSED, or if the user
|
| // has multiple fingers fingers down in any other state between
|
| // passthrough, touch exploration, and gestures, they must release
|
| - // all fingers except before completing any more actions. This state is
|
| + // all fingers before completing any more actions. This state is
|
| // generally useful for developing new features, because it creates a
|
| // simple way to handle a dead end in user flow.
|
| - WAIT_FOR_ONE_FINGER,
|
| + WAIT_FOR_NO_FINGERS,
|
|
|
| // If the user is within the given bounds from an edge of the screen, not
|
| // including corners, then the resulting movements will be interpreted as
|
| @@ -344,6 +345,10 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| // SCREEN_CENTER.
|
| int FindEdgesWithinBounds(gfx::Point point, float bounds);
|
|
|
| + // Set the state and modifies any variables related to the state change.
|
| + // (e.g. resetting the gesture provider).
|
| + void SetState(State new_state, const char* function_name);
|
| +
|
| void VlogState(const char* function_name);
|
|
|
| void VlogEvent(const ui::TouchEvent& event, const char* function_name);
|
| @@ -351,6 +356,10 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| // Gets enum name from integer value.
|
| const char* EnumStateToString(State state);
|
|
|
| + // Maps each single/multi finger swipe to the function that dispatches
|
| + // the corresponding key events.
|
| + void InitializeSwipeGestureMaps();
|
| +
|
| aura::Window* root_window_;
|
|
|
| // Handles volume control. Not owned.
|
| @@ -385,7 +394,7 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| // we send the passed-through tap to the location of this event.
|
| scoped_ptr<ui::TouchEvent> last_touch_exploration_;
|
|
|
| - // A timer to fire the mouse move event after the double-tap delay.
|
| + // A timer that fires after the double-tap delay.
|
| base::OneShotTimer<TouchExplorationController> tap_timer_;
|
|
|
| // A timer to fire an indicating sound when sliding to change volume.
|
| @@ -396,7 +405,7 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| ui::GestureDetector::Config gesture_detector_config_;
|
|
|
| // Gesture Handler to interpret the touch events.
|
| - ui::GestureProviderAura gesture_provider_;
|
| + scoped_ptr<ui::GestureProviderAura> gesture_provider_;
|
|
|
| // The previous state entered.
|
| State prev_state_;
|
| @@ -411,6 +420,13 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
|
| // testing, this clock is set to the simulated clock and used.
|
| base::TickClock* tick_clock_;
|
|
|
| + // Maps the number of fingers in a swipe to the resulting functions that
|
| + // dispatch key events.
|
| + std::map<int, base::Closure> left_swipe_gestures_;
|
| + std::map<int, base::Closure> right_swipe_gestures_;
|
| + std::map<int, base::Closure> up_swipe_gestures_;
|
| + std::map<int, base::Closure> down_swipe_gestures_;
|
| +
|
| DISALLOW_COPY_AND_ASSIGN(TouchExplorationController);
|
| };
|
|
|
|
|