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

Issue 2007863004: Fix the double-tap to click gesture in touch accessibility mode. (Closed)

Created:
4 years, 6 months ago by dmazzoni
Modified:
4 years, 6 months ago
CC:
chromium-reviews, extensions-reviews_chromium.org, sadrul, oshima+watch_chromium.org, aboxhall+watch_chromium.org, nektar+watch_chromium.org, yuzo+watch_chromium.org, je_julie, dmazzoni+watch_chromium.org, dtseng+watch_chromium.org, chromium-apps-reviews_chromium.org, kalyank, davemoore+watch_chromium.org, arv+watch_chromium.org
Base URL:
https://chromium.googlesource.com/chromium/src.git@master
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

Fix the double-tap to click gesture in touch accessibility mode. Originally Chrome OS's touch accessibility support was implemented purely as an event rewriter. Tapping the screen generates a mouse move event, which announces the object under the finger without clicking it, and then double-tapping anywhere on the screen generates a click at the last point where the user tapped. It's also possible to trigger clicks and drags by more advanced means. This worked well for touch exploration alone, but it's also possible for the current accessibility object to move due to a gesture (to move to the next or previous object on the screen, for example) or due to input focus moving. In those cases, a double-tap was sending a simulated click to the wrong point - it was sending it to the last touch exploration point, rather than to the current accessibility object. This change fixes this behavior by changing how the touch accessibility support works. First, it introduces the concept of the anchor point, which is the point where the next simulated click will go. Initially this is set via touch exploration, however now as soon as ChromeVox identifies the object under the finger, it sends the center point of that object as the new explicit anchor point, and that point overrides the touch exploration point for the duration of this touch. Second, when the user does a discrete gesture to click on the current anchor point (double-tap, split-tap, or single-tap), it sends a gesture command to ChromeVox, allowing ChromeVox to directly activate the current object. However, if the user holds their finger down, it still passes through the touch events so dragging and long-pressing are possible. Third, it simplifies "split tap" support where you can tap a second finger as a shortcut to clicking. That support now only supports a basic click and not a long-press or drag. BUG=513713, 613694 CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:closure_compilation Committed: https://crrev.com/ff86e347c0030f96d3beefec7bb3de7caf882371 Cr-Commit-Position: refs/heads/master@{#397781}

Patch Set 1 #

Total comments: 11

Patch Set 2 : Remove log statements #

Total comments: 2

Patch Set 3 : Add TODO for second display #

Unified diffs Side-by-side diffs Delta from patch set Stats (+222 lines, -201 lines) Patch
M ash/ash_touch_exploration_manager_chromeos.h View 1 chunk +4 lines, -0 lines 0 comments Download
M ash/ash_touch_exploration_manager_chromeos.cc View 1 chunk +8 lines, -0 lines 0 comments Download
M ash/root_window_controller.h View 1 2 1 chunk +4 lines, -0 lines 0 comments Download
M ash/root_window_controller.cc View 1 2 1 chunk +8 lines, -0 lines 0 comments Download
M chrome/browser/accessibility/accessibility_extension_api.cc View 1 chunk +10 lines, -0 lines 0 comments Download
M chrome/browser/chromeos/accessibility/accessibility_manager.h View 1 chunk +4 lines, -0 lines 0 comments Download
M chrome/browser/chromeos/accessibility/accessibility_manager.cc View 2 chunks +8 lines, -0 lines 0 comments Download
M chrome/browser/resources/chromeos/chromevox/cvox2/background/background.js View 1 2 2 chunks +3 lines, -1 line 0 comments Download
M chrome/common/extensions/api/accessibility_private.json View 1 chunk +1 line, -1 line 0 comments Download
M ui/accessibility/ax_enums.idl View 1 2 1 chunk +1 line, -1 line 0 comments Download
M ui/chromeos/touch_exploration_controller.h View 6 chunks +45 lines, -15 lines 0 comments Download
M ui/chromeos/touch_exploration_controller.cc View 1 2 17 chunks +70 lines, -62 lines 0 comments Download
M ui/chromeos/touch_exploration_controller_unittest.cc View 1 2 10 chunks +56 lines, -121 lines 0 comments Download

Messages

Total messages: 21 (5 generated)
dmazzoni
David, please review all. Owners reviews: oshima: ash/, ui/chromeos/ asargent: chrome/common/extensions/api/
4 years, 6 months ago (2016-05-25 19:56:40 UTC) #3
asargent_no_longer_on_chrome
chrome/common/extensions/api/ lgtm
4 years, 6 months ago (2016-05-25 23:31:38 UTC) #4
oshima
I'm not familiar with touch exploration mode. can you quickly explain/show it to me offline? ...
4 years, 6 months ago (2016-05-26 22:15:39 UTC) #5
David Tseng
https://codereview.chromium.org/2007863004/diff/1/ui/accessibility/ax_enums.idl File ui/accessibility/ax_enums.idl (right): https://codereview.chromium.org/2007863004/diff/1/ui/accessibility/ax_enums.idl#newcode477 ui/accessibility/ax_enums.idl:477: click, I like the gesture_finger_count naming scheme better as ...
4 years, 6 months ago (2016-05-26 22:48:24 UTC) #6
dmazzoni
Removed logging statements https://codereview.chromium.org/2007863004/diff/1/ui/chromeos/touch_exploration_controller_unittest.cc File ui/chromeos/touch_exploration_controller_unittest.cc (right): https://codereview.chromium.org/2007863004/diff/1/ui/chromeos/touch_exploration_controller_unittest.cc#newcode964 ui/chromeos/touch_exploration_controller_unittest.cc:964: LOG(ERROR) << "*** SplitTap initial hold ...
4 years, 6 months ago (2016-05-26 22:53:49 UTC) #7
dmazzoni
https://codereview.chromium.org/2007863004/diff/1/ui/accessibility/ax_enums.idl File ui/accessibility/ax_enums.idl (right): https://codereview.chromium.org/2007863004/diff/1/ui/accessibility/ax_enums.idl#newcode477 ui/accessibility/ax_enums.idl:477: click, On 2016/05/26 22:48:24, David Tseng wrote: > I ...
4 years, 6 months ago (2016-05-26 22:59:24 UTC) #8
dmazzoni
Friendly ping
4 years, 6 months ago (2016-05-31 23:01:30 UTC) #9
David Tseng
lgtm https://codereview.chromium.org/2007863004/diff/1/ui/chromeos/touch_exploration_controller.cc File ui/chromeos/touch_exploration_controller.cc (right): https://codereview.chromium.org/2007863004/diff/1/ui/chromeos/touch_exploration_controller.cc#newcode588 ui/chromeos/touch_exploration_controller.cc:588: if (anchor_point_state_ == ANCHOR_POINT_EXPLICITLY_SET) { On 2016/05/26 22:59:24, ...
4 years, 6 months ago (2016-06-01 00:36:16 UTC) #10
oshima
https://codereview.chromium.org/2007863004/diff/20001/ui/chromeos/touch_exploration_controller.cc File ui/chromeos/touch_exploration_controller.cc (right): https://codereview.chromium.org/2007863004/diff/20001/ui/chromeos/touch_exploration_controller.cc#newcode520 ui/chromeos/touch_exploration_controller.cc:520: new_event->set_root_location_f(anchor_point_); Native event location must be in host window's ...
4 years, 6 months ago (2016-06-01 01:13:02 UTC) #11
dmazzoni
On 2016/06/01 00:36:16, David Tseng wrote: > This is a little surprising to me because ...
4 years, 6 months ago (2016-06-02 16:41:59 UTC) #12
dmazzoni
https://codereview.chromium.org/2007863004/diff/20001/ui/chromeos/touch_exploration_controller.cc File ui/chromeos/touch_exploration_controller.cc (right): https://codereview.chromium.org/2007863004/diff/20001/ui/chromeos/touch_exploration_controller.cc#newcode520 ui/chromeos/touch_exploration_controller.cc:520: new_event->set_root_location_f(anchor_point_); On 2016/06/01 01:13:02, oshima wrote: > Native event ...
4 years, 6 months ago (2016-06-02 16:54:03 UTC) #13
oshima
sg lgtm.
4 years, 6 months ago (2016-06-02 18:41:36 UTC) #14
David Tseng
Still lgtm; just replying below: On 2016/06/02 16:41:59, dmazzoni wrote: > On 2016/06/01 00:36:16, David ...
4 years, 6 months ago (2016-06-02 19:20:51 UTC) #15
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/2007863004/40001
4 years, 6 months ago (2016-06-03 17:04:33 UTC) #18
commit-bot: I haz the power
Committed patchset #3 (id:40001)
4 years, 6 months ago (2016-06-03 19:52:49 UTC) #19
commit-bot: I haz the power
4 years, 6 months ago (2016-06-03 19:54:02 UTC) #21
Message was sent while issue was closed.
Patchset 3 (id:??) landed as
https://crrev.com/ff86e347c0030f96d3beefec7bb3de7caf882371
Cr-Commit-Position: refs/heads/master@{#397781}

Powered by Google App Engine
This is Rietveld 408576698