Chromium Code Reviews| Index: ui/chromeos/touch_exploration_controller.cc |
| diff --git a/ui/chromeos/touch_exploration_controller.cc b/ui/chromeos/touch_exploration_controller.cc |
| index 59ac4a7abc492263b0138b746b5fb3bca94f924b..9e3995d4590f2f96ef21c153804fcda7c1c71710 100644 |
| --- a/ui/chromeos/touch_exploration_controller.cc |
| +++ b/ui/chromeos/touch_exploration_controller.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/logging.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/time/default_tick_clock.h" |
| +#include "ui/accessibility/ax_enums.h" |
| #include "ui/aura/client/cursor_client.h" |
| #include "ui/aura/window.h" |
| #include "ui/aura/window_event_dispatcher.h" |
| @@ -28,9 +29,6 @@ namespace { |
| // Delay between adjustment sounds. |
| const int kSoundDelayInMS = 150; |
| -// In ChromeOS, VKEY_LWIN is synonymous for the search key. |
| -const ui::KeyboardCode kChromeOSSearchKey = ui::VKEY_LWIN; |
| - |
| } // namespace |
| TouchExplorationController::TouchExplorationController( |
| @@ -45,7 +43,6 @@ TouchExplorationController::TouchExplorationController( |
| tick_clock_(NULL) { |
| DCHECK(root_window); |
| root_window->GetHost()->GetEventSource()->AddEventRewriter(this); |
| - InitializeSwipeGestureMaps(); |
| } |
| TouchExplorationController::~TouchExplorationController() { |
| @@ -121,6 +118,7 @@ ui::EventRewriteStatus TouchExplorationController::RewriteEvent( |
| } |
| VLOG_EVENT(touch_event); |
| + /** |
|
David Tseng
2016/05/05 22:30:39
nit: remove
dmazzoni
2016/05/06 19:06:09
Done.
|
| // In order to avoid accidentally double tapping when moving off the edge |
| // of the screen, the state will be rewritten to NoFingersDown. |
| if ((type == ui::ET_TOUCH_RELEASED || type == ui::ET_TOUCH_CANCELLED) && |
| @@ -141,6 +139,7 @@ ui::EventRewriteStatus TouchExplorationController::RewriteEvent( |
| return ui::EVENT_REWRITE_DISCARD; |
| } |
| } |
| + **/ |
|
David Tseng
2016/05/05 22:30:39
nit: remove?
dmazzoni
2016/05/06 19:06:09
Done.
|
| // If the user is in a gesture state, or if there is a possiblity that the |
| // user will enter it in the future, we send the event to the gesture |
| @@ -795,6 +794,7 @@ void TouchExplorationController::OnGestureEvent(ui::GestureConsumer* consumer, |
| ui::GestureEvent* gesture) {} |
| void TouchExplorationController::ProcessGestureEvents() { |
| + LOG(ERROR) << "ProcessGestureEvents"; |
|
David Tseng
2016/05/05 22:30:39
nit: remove
dmazzoni
2016/05/06 19:06:09
Done.
|
| std::unique_ptr<ScopedVector<ui::GestureEvent>> gestures( |
| gesture_provider_->GetAndResetPendingGestures()); |
| if (gestures) { |
| @@ -873,22 +873,43 @@ void TouchExplorationController::OnSwipeEvent(ui::GestureEvent* swipe_gesture) { |
| if (VLOG_on_) |
| VLOG(0) << "\nSwipe with " << num_fingers << " fingers."; |
| - if (num_fingers > 4) |
| - return; |
| - |
| - if (event_details.swipe_left() && |
| - !left_swipe_gestures_[num_fingers].is_null()) { |
| - left_swipe_gestures_[num_fingers].Run(); |
| - } else if (event_details.swipe_right() && |
| - !right_swipe_gestures_[num_fingers].is_null()) { |
| - right_swipe_gestures_[num_fingers].Run(); |
| - } else if (event_details.swipe_up() && |
| - !up_swipe_gestures_[num_fingers].is_null()) { |
| - up_swipe_gestures_[num_fingers].Run(); |
| - } else if (event_details.swipe_down() && |
| - !down_swipe_gestures_[num_fingers].is_null()) { |
| - down_swipe_gestures_[num_fingers].Run(); |
| + ui::AXGesture gesture = ui::AX_GESTURE_NONE; |
| + if (event_details.swipe_left()) { |
| + switch (num_fingers) { |
| + case 1: gesture = ui::AX_GESTURE_SWIPE_LEFT_1; break; |
| + case 2: gesture = ui::AX_GESTURE_SWIPE_LEFT_2; break; |
| + case 3: gesture = ui::AX_GESTURE_SWIPE_LEFT_3; break; |
| + case 4: gesture = ui::AX_GESTURE_SWIPE_LEFT_4; break; |
| + default: break; |
| + } |
| + } else if (event_details.swipe_up()) { |
| + switch (num_fingers) { |
| + case 1: gesture = ui::AX_GESTURE_SWIPE_UP_1; break; |
| + case 2: gesture = ui::AX_GESTURE_SWIPE_UP_2; break; |
| + case 3: gesture = ui::AX_GESTURE_SWIPE_UP_3; break; |
| + case 4: gesture = ui::AX_GESTURE_SWIPE_UP_4; break; |
| + default: break; |
| + } |
| + } else if (event_details.swipe_right()) { |
| + switch (num_fingers) { |
| + case 1: gesture = ui::AX_GESTURE_SWIPE_RIGHT_1; break; |
| + case 2: gesture = ui::AX_GESTURE_SWIPE_RIGHT_2; break; |
| + case 3: gesture = ui::AX_GESTURE_SWIPE_RIGHT_3; break; |
| + case 4: gesture = ui::AX_GESTURE_SWIPE_RIGHT_4; break; |
| + default: break; |
| + } |
| + } else if (event_details.swipe_down()) { |
| + switch (num_fingers) { |
| + case 1: gesture = ui::AX_GESTURE_SWIPE_DOWN_1; break; |
| + case 2: gesture = ui::AX_GESTURE_SWIPE_DOWN_2; break; |
| + case 3: gesture = ui::AX_GESTURE_SWIPE_DOWN_3; break; |
| + case 4: gesture = ui::AX_GESTURE_SWIPE_DOWN_4; break; |
| + default: break; |
| + } |
| } |
| + |
| + if (gesture != ui::AX_GESTURE_NONE) |
| + delegate_->HandleAccessibilityGesture(gesture); |
| } |
| int TouchExplorationController::FindEdgesWithinBounds(gfx::Point point, |
| @@ -919,38 +940,6 @@ int TouchExplorationController::FindEdgesWithinBounds(gfx::Point point, |
| return result; |
| } |
| -void TouchExplorationController::DispatchShiftSearchKeyEvent( |
| - const ui::KeyboardCode third_key) { |
| - // In order to activate the shortcut shift+search+<arrow key> |
| - // three KeyPressed events must be dispatched in succession along |
| - // with three KeyReleased events. |
| - |
| - ui::KeyEvent shift_down( |
| - ui::ET_KEY_PRESSED, ui::VKEY_SHIFT, ui::EF_SHIFT_DOWN); |
| - ui::KeyEvent search_down( |
| - ui::ET_KEY_PRESSED, kChromeOSSearchKey, ui::EF_SHIFT_DOWN); |
| - ui::KeyEvent third_key_down(ui::ET_KEY_PRESSED, third_key, ui::EF_SHIFT_DOWN); |
| - |
| - ui::KeyEvent third_key_up(ui::ET_KEY_RELEASED, third_key, ui::EF_SHIFT_DOWN); |
| - ui::KeyEvent search_up( |
| - ui::ET_KEY_RELEASED, kChromeOSSearchKey, ui::EF_SHIFT_DOWN); |
| - ui ::KeyEvent shift_up(ui::ET_KEY_RELEASED, ui::VKEY_SHIFT, ui::EF_NONE); |
| - |
| - DispatchEvent(&shift_down); |
| - DispatchEvent(&search_down); |
| - DispatchEvent(&third_key_down); |
| - DispatchEvent(&third_key_up); |
| - DispatchEvent(&search_up); |
| - DispatchEvent(&shift_up); |
| -} |
| - |
| -base::Closure TouchExplorationController::BindShiftSearchKeyEvent( |
| - const ui::KeyboardCode third_key) { |
| - return base::Bind(&TouchExplorationController::DispatchShiftSearchKeyEvent, |
| - base::Unretained(this), |
| - third_key); |
| -} |
| - |
| void TouchExplorationController::DispatchKeyWithFlags( |
| const ui::KeyboardCode key, |
| int flags) { |
| @@ -1122,49 +1111,6 @@ const char* TouchExplorationController::EnumStateToString(State state) { |
| return "Not a state"; |
| } |
| -// TODO(evy, lisayin) : Just call abstracted methods on the delegate (e.g. |
| -// Swipe(Direction direction, int num_fingers)), and add the DispatchXYZ |
| -// methods to the delegate. Avoid the middle step of dispatching keys at all, |
| -// and simply have ChromeVox/ChromeOS complete the required action. |
| - |
| -void TouchExplorationController::InitializeSwipeGestureMaps() { |
| - // Gestures with one finger are used for navigation. |
| - left_swipe_gestures_[1] = BindShiftSearchKeyEvent(ui::VKEY_LEFT); |
| - right_swipe_gestures_[1] = BindShiftSearchKeyEvent(ui::VKEY_RIGHT); |
| - up_swipe_gestures_[1] = BindShiftSearchKeyEvent(ui::VKEY_UP); |
| - down_swipe_gestures_[1] = BindShiftSearchKeyEvent(ui::VKEY_DOWN); |
| - |
| - // Gestures with two fingers. |
| - left_swipe_gestures_[2] = |
| - BindKeyEventWithFlags(ui::VKEY_BROWSER_BACK, ui::EF_NONE); |
| - right_swipe_gestures_[2] = |
| - BindKeyEventWithFlags(ui::VKEY_BROWSER_FORWARD, ui::EF_NONE); |
| - // Jump to top. |
| - up_swipe_gestures_[2] = BindShiftSearchKeyEvent(ui::VKEY_A); |
| - // Read from here. |
| - down_swipe_gestures_[2] = BindShiftSearchKeyEvent(ui::VKEY_R); |
| - |
| - // Gestures with three fingers switch tabs left/right and scroll up/down. |
| - left_swipe_gestures_[3] = BindKeyEventWithFlags( |
| - ui::VKEY_TAB, ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN); |
| - right_swipe_gestures_[3] = |
| - BindKeyEventWithFlags(ui::VKEY_TAB, ui::EF_CONTROL_DOWN); |
| - up_swipe_gestures_[3] = BindKeyEventWithFlags(ui::VKEY_NEXT, ui::EF_NONE); |
| - down_swipe_gestures_[3] = BindKeyEventWithFlags(ui::VKEY_PRIOR, ui::EF_NONE); |
| - |
| - // Gestures with four fingers should probably eventually be used for rare |
| - // needs that are hard to access through menus. |
| - // Note that brightness levels are here because they can be important for low |
| - // vision users. However, none of these mappings are permanent. |
| - left_swipe_gestures_[4] = |
| - BindKeyEventWithFlags(ui::VKEY_BRIGHTNESS_DOWN, ui::EF_NONE); |
| - right_swipe_gestures_[4] = |
| - BindKeyEventWithFlags(VKEY_BRIGHTNESS_UP, ui::EF_NONE); |
| - up_swipe_gestures_[4] = BindKeyEventWithFlags(VKEY_BROWSER_HOME, ui::EF_NONE); |
| - down_swipe_gestures_[4] = |
| - BindKeyEventWithFlags(VKEY_BROWSER_REFRESH, ui::EF_NONE); |
| -} |
| - |
| float TouchExplorationController::GetSplitTapTouchSlop() { |
| return gesture_detector_config_.touch_slop * 3; |
| } |