Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Unified Diff: ui/chromeos/touch_exploration_controller.h

Issue 410783002: Corner Passthrough for Accessibility (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@side-gestures
Patch Set: Rebase off Master Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/chromeos/touch_exploration_controller.h
diff --git a/ui/chromeos/touch_exploration_controller.h b/ui/chromeos/touch_exploration_controller.h
index 59ff11444f54a4cf7bbd0b1a057e8de65ebfe23e..f53185efb09030dc60acb306655a85650461aa98 100644
--- a/ui/chromeos/touch_exploration_controller.h
+++ b/ui/chromeos/touch_exploration_controller.h
@@ -33,13 +33,25 @@ class TouchExplorationControllerDelegate {
public:
virtual ~TouchExplorationControllerDelegate() {}
- // This function should be called whenever the delegate wants to play a sound
- // when the volume adjusts.
- virtual void PlayVolumeAdjustSound() = 0;
-
// 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 when the volume adjust earcon should be
+ // played
+ virtual void PlayVolumeAdjustEarcon() = 0;
+
+ // This function should be called when the passthrough earcon should be
+ // played.
+ virtual void PlayPassthroughEarcon() = 0;
+
+ // This function should be called when the exit screen earcon should be
+ // played.
+ virtual void PlayExitScreenEarcon() = 0;
+
+ // This function should be called when the enter screen earcon should be
+ // played.
+ virtual void PlayEnterScreenEarcon() = 0;
};
// TouchExplorationController is used in tandem with "Spoken Feedback" to
@@ -57,7 +69,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.
@@ -171,7 +185,7 @@ 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(
+ ui::EventRewriteStatus InCornerPassthrough(
const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
ui::EventRewriteStatus InOneFingerPassthrough(
const ui::TouchEvent& event, scoped_ptr<ui::Event>* rewritten_event);
@@ -194,6 +208,13 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
void StartTapTimer();
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
aboxhall 2014/08/06 18:10:45 Looks like it's 700ms now. Maybe just refer to the
lisayin 2014/08/06 20:37:35 Done.
+ // 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);
@@ -302,6 +323,11 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
// all fingers.
ONE_FINGER_PASSTHROUGH,
+ // 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 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
@@ -323,6 +349,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
@@ -368,9 +396,12 @@ 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 that fires after a long press delay.
+ base::OneShotTimer<TouchExplorationController> long_press_timer_;
+
// A timer to fire an indicating sound when sliding to change volume.
base::RepeatingTimer<TouchExplorationController> sound_timer_;
@@ -394,6 +425,10 @@ class UI_CHROMEOS_EXPORT TouchExplorationController
// testing, this clock is set to the simulated clock and used.
base::TickClock* tick_clock_;
+ // 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);
};

Powered by Google App Engine
This is Rietveld 408576698