commit | fe61d394489c7de3d35c274dbd359d86ddc2ebea | [log] [tgz] |
---|---|---|
author | David Awogbemila <awogbemila@chromium.org> | Mon Oct 31 16:14:14 2022 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Mon Oct 31 16:14:14 2022 |
tree | 4173883ec46d0236376177a8e37617052e64fd1a | |
parent | 88e7c6731e278ee53284b62287ee03ad14eabc17 [diff] |
Fix touch resize control on Scroll Unif. path With Scroll Unification turned on, resize controls on touch screens do not work and this seems to be because the code that handles the resize (ScrollManager::HandleScrollGestureOnResizer) is triggered on the main thread in response to GestureScroll events and when scroll Unification is enabled, the main thread will not receive GestureScroll events. This patch tries to fix this by adding logic to PointerEventManager so that resizing can be triggered based on touch events and not GestureScroll events. In paint_chunker.cc we draw a touch action rect over the resize control corner. To ensure that the resize is handled as expected, we need to make sure that if a touchmove is over a region which doesn't have an event listener, we should still forward it from the compositor to the main thread if it is in a touch sequence that began with a touchstart that *was* in a region with a touch event listener. This change captured in input_proxy_handler. In crbug.com/729031, we wanted to allow blocking touchmoves that follow non-blocking touchstarts so this patch only forwards touchmoves that follow blocking touchstarts. The change to event_handler.cc is to make sure that similar to touch events on scrollbars, touch events on resizers are not adjusted. This patch splits the web_test resize-corner-tracking-touch.html into two test files: one with the original filename and another with a new filename, resize-iframe-corner-tracking-touch.html. The new file tests resizing on an iframe itself and on contents of an iframe. This patch does not cause these currently failing iframe-related test cases to pass and it seems to be because the HitTest done by PointerEventManager::HandlePointerEvent "passes through" the outer document and into the iframe document, but the resizer exists in the outer document. A follow-up patch will try to fix the iframe-related tests. This patch causes the currently failing non-iframe test cases to pass. Bug: 1248581 Change-Id: I2496af643c5cf124e8c2dbde78a2c47f63340745 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3946605 Commit-Queue: David Awogbemila <awogbemila@chromium.org> Reviewed-by: Steve Kobes <skobes@chromium.org> Reviewed-by: David Bokan <bokan@chromium.org> Cr-Commit-Position: refs/heads/main@{#1065517}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.