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}
12 files changed
tree: 4173883ec46d0236376177a8e37617052e64fd1a
  1. android_webview/
  2. apps/
  3. ash/
  4. base/
  5. build/
  6. build_overrides/
  7. buildtools/
  8. cc/
  9. chrome/
  10. chromecast/
  11. chromeos/
  12. codelabs/
  13. components/
  14. content/
  15. courgette/
  16. crypto/
  17. dbus/
  18. device/
  19. docs/
  20. extensions/
  21. fuchsia_web/
  22. gin/
  23. google_apis/
  24. google_update/
  25. gpu/
  26. headless/
  27. infra/
  28. ios/
  29. ipc/
  30. media/
  31. mojo/
  32. native_client_sdk/
  33. net/
  34. pdf/
  35. ppapi/
  36. printing/
  37. remoting/
  38. rlz/
  39. sandbox/
  40. services/
  41. skia/
  42. sql/
  43. storage/
  44. styleguide/
  45. testing/
  46. third_party/
  47. tools/
  48. ui/
  49. url/
  50. weblayer/
  51. .clang-format
  52. .clang-tidy
  53. .eslintrc.js
  54. .git-blame-ignore-revs
  55. .gitattributes
  56. .gitignore
  57. .gn
  58. .mailmap
  59. .rustfmt.toml
  60. .vpython3
  61. .yapfignore
  62. AUTHORS
  63. BUILD.gn
  64. CODE_OF_CONDUCT.md
  65. codereview.settings
  66. DEPS
  67. DIR_METADATA
  68. ENG_REVIEW_OWNERS
  69. LICENSE
  70. LICENSE.chromium_os
  71. OWNERS
  72. PRESUBMIT.py
  73. PRESUBMIT_test.py
  74. PRESUBMIT_test_mocks.py
  75. README.md
  76. WATCHLISTS
README.md

Logo Chromium

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.