haikuwebkit/LayoutTests/fast/scrolling/mac
Simon Fraser 226390f3bc Vertical scroll with mouse wheel in horizontal scroller fails to propagate to the document
https://bugs.webkit.org/show_bug.cgi?id=228891
<rdar://81640239>

Reviewed by Antti Koivisto.

Source/WebCore:

If a page has a horizontal scrolling carousel with a non-passive wheel event handler, and a
user with a clicky scroll wheel mouse tries to vertically scroll over that carousel, then
we'd fail to propagate the scroll to the page. This affects apple.com/store.

This happened because we don't do latching for legacy mouse wheel events, so we hit the code
in EventHandler::handleWheelEventInAppropriateEnclosingBox(); this finds the carousel and
calls handleWheelEventInScrollableArea(), but that dispatches to the scrolling thread in way
that does not propagate the event to the nearest ancestor that can handle it.

The fix is to check that the ScrollableArea can handle the event, sharing some code that
already exists and was used by findEnclosingScrollableContainer(). This is a conservative
fix; it's possible that scrollableAreaCanHandleEvent() could be called down in
handleWheelEventInScrollableArea() but that will affect other call sites.

Test: fast/scrolling/mac/vertical-scroll-in-horizontal-scroller.html

* page/EventHandler.cpp:
(WebCore::EventHandler::handleWheelEventInAppropriateEnclosingBox):
(WebCore::EventHandler::scrollableAreaCanHandleEvent):
* page/EventHandler.h:
* page/mac/EventHandlerMac.mm:
(WebCore::findEnclosingScrollableContainer):

LayoutTests:

* fast/scrolling/mac/vertical-scroll-in-horizontal-scroller-expected.txt: Added.
* fast/scrolling/mac/vertical-scroll-in-horizontal-scroller.html: Added.
* tiled-drawing/scrolling/overflow-scroll-reduced-content.html: Convert this test to use
async scrolling. webkit.org/b/228898 tracks an existing problem that caused the test
to fail with non-async scrolling.


Canonical link: https://commits.webkit.org/240377@main
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@280807 268f45cc-cd09-0410-ab3c-d52691b4dbfc
2021-08-09 23:41:29 +00:00
..
scrollbars Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
absolute-in-overflow-scroll-dynamic-expected.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
absolute-in-overflow-scroll-dynamic.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
absolute-in-overflow-scroll-expected.txt
absolute-in-overflow-scroll.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
adjust-scroll-snap-after-gesture-expected.txt Remove trailing spaces from expected.txt files (excluding WPT for now since that contains too many) 2020-09-27 02:15:19 +00:00
adjust-scroll-snap-after-gesture.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
adjust-scroll-snap-during-gesture-expected.txt Remove trailing spaces from expected.txt files (excluding WPT for now since that contains too many) 2020-09-27 02:15:19 +00:00
adjust-scroll-snap-during-gesture.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
async-scroll-overflow-expected.txt
async-scroll-overflow-hidden-on-one-axis-expected.txt
async-scroll-overflow-hidden-on-one-axis.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
async-scroll-overflow-rtl-expected.txt
async-scroll-overflow-rtl-zoomed-expected.txt
async-scroll-overflow-rtl-zoomed.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
async-scroll-overflow-rtl.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
async-scroll-overflow-top-inset-expected.txt
async-scroll-overflow-top-inset.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
async-scroll-overflow.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
border-radius-event-region-expected.txt REGRESSION (Async overflow scroll): Mouse wheel scrolling over an "always-on" overflow scrollbar doesn't work 2020-09-11 15:39:02 +00:00
border-radius-event-region.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
clip-path-hit-test-expected.txt
clip-path-hit-test.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
event-region-is-leaking-out-expected.txt [LFC][Integration] REGRESSION: Event handler region is wrong 2020-12-15 17:47:26 +00:00
event-region-is-leaking-out.html [LFC][Integration] REGRESSION: Event handler region is wrong 2020-12-15 17:47:26 +00:00
event-region-scrolled-contents-layer-expected.txt REGRESSION (Async overflow scroll): Mouse wheel scrolling over an "always-on" overflow scrollbar doesn't work 2020-09-11 15:39:02 +00:00
event-region-scrolled-contents-layer.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
event-region-subframe-expected.txt
event-region-subframe.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
event-region-subscroller-frame-expected.txt Remove trailing spaces from expected.txt files (excluding WPT for now since that contains too many) 2020-09-27 02:15:19 +00:00
event-region-subscroller-frame.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
event-region-subscroller-overflow-expected.txt REGRESSION (Async overflow scroll): Mouse wheel scrolling over an "always-on" overflow scrollbar doesn't work 2020-09-11 15:39:02 +00:00
event-region-subscroller-overflow.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
event-region-visibility-hidden-expected.txt Remove trailing spaces from expected.txt files (excluding WPT for now since that contains too many) 2020-09-27 02:15:19 +00:00
event-region-visibility-hidden.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
hit-test-overflow-tiled-layer-expected.txt
hit-test-overflow-tiled-layer.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
horizontal-overflow-trapping-small-deltas-expected.txt
horizontal-overflow-trapping-small-deltas.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
mousewheel-over-scrollbar-expected.txt REGRESSION (Async overflow scroll): Mouse wheel scrolling over an "always-on" overflow scrollbar doesn't work 2020-09-11 15:39:02 +00:00
mousewheel-over-scrollbar.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
move-node-in-overflow-scroll-expected.txt
move-node-in-overflow-scroll.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
negative-z-index-overflow-scroll-expected.txt REGRESSION (Async overflow scroll): Mouse wheel scrolling over an "always-on" overflow scrollbar doesn't work 2020-09-11 15:39:02 +00:00
negative-z-index-overflow-scroll.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
nested-overflow-proxy-node-expected.txt
nested-overflow-proxy-node.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
non-invertible-transform-hit-testing-expected.txt
non-invertible-transform-hit-testing.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overflow-hidden-on-one-axis-async-overflow-expected.txt Fix scrolling issues when scrolling on only one axis is enabled 2020-12-26 18:28:39 +00:00
overflow-hidden-on-one-axis-async-overflow.html Fix scrolling issues when scrolling on only one axis is enabled 2020-12-26 18:28:39 +00:00
overflow-hidden-on-one-axis-expected.txt Fix scrolling issues when scrolling on only one axis is enabled 2020-12-26 18:28:39 +00:00
overflow-hidden-on-one-axis.html Fix scrolling issues when scrolling on only one axis is enabled 2020-12-26 18:28:39 +00:00
overflow-scrollbars-should-be-visible-expected-mismatch.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overflow-scrollbars-should-be-visible.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overflow-scrollbars-toggle-dark-mode-expected.html Remove experimental: and internal: prefixes from recently added tests 2020-11-09 20:21:36 +00:00
overflow-scrollbars-toggle-dark-mode.html Remove experimental: and internal: prefixes from recently added tests 2020-11-09 20:21:36 +00:00
overflow-scrolled-document-expected.txt
overflow-scrolled-document.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overflow-zoomed-document-expected.txt
overflow-zoomed-document.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
overlapped-overflow-scroll-expected.txt
overlapped-overflow-scroll.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
programmatic-scroll-overrides-rubberband-expected.txt Programmatic scrolls need updated scrolling geometry 2020-11-07 05:34:18 +00:00
programmatic-scroll-overrides-rubberband.html Programmatic scrolls need updated scrolling geometry 2020-11-07 05:34:18 +00:00
rubberband-overflow-in-wheel-region-expected.txt
rubberband-overflow-in-wheel-region-root-jiggle-expected.txt Rubberbanding in an overflow:scroll can trigger page jiggles 2020-08-30 22:25:15 +00:00
rubberband-overflow-in-wheel-region-root-jiggle.html Only the first wheel event in a gesture should be cancelable 2020-12-04 07:10:03 +00:00
rubberband-overflow-in-wheel-region.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
scroll-container-horizontally-expected.txt
scroll-container-horizontally.html
scroll-snapping-in-progress-expected.txt
scroll-snapping-in-progress.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
slow-scrolling-overflow-expected.txt Allow passive mouse wheel event listeners to not force synchronous scrolling 2020-10-14 18:06:37 +00:00
slow-scrolling-overflow.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
vertical-scroll-in-horizontal-scroller-expected.txt Vertical scroll with mouse wheel in horizontal scroller fails to propagate to the document 2021-08-09 23:41:29 +00:00
vertical-scroll-in-horizontal-scroller.html Vertical scroll with mouse wheel in horizontal scroller fails to propagate to the document 2021-08-09 23:41:29 +00:00
wheel-event-listener-region-basic-expected.txt
wheel-event-listener-region-basic.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-document-expected.txt
wheel-event-listener-region-document.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-element-invalidation-expected.txt
wheel-event-listener-region-element-invalidation.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-inside-overflow-expected.txt Move tests in fast/events that dispatch platform wheel events to their own directory 2020-11-12 23:59:47 +00:00
wheel-event-listener-region-inside-overflow-scroll-clipped-out-expected.txt Allow passive mouse wheel event listeners to not force synchronous scrolling 2020-10-14 18:06:37 +00:00
wheel-event-listener-region-inside-overflow-scroll-clipped-out.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-inside-overflow-scroll-expected.txt Allow passive mouse wheel event listeners to not force synchronous scrolling 2020-10-14 18:06:37 +00:00
wheel-event-listener-region-inside-overflow-scroll.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-layer-offset-expected.txt
wheel-event-listener-region-layer-offset.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-root-invalidation-expected.txt Force wheel event listeners on the root to be passive 2020-11-13 16:46:42 +00:00
wheel-event-listener-region-root-invalidation.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00
wheel-event-listener-region-siblings-expected.txt Sibling element wheel event regions can be wrong 2020-12-22 16:48:30 +00:00
wheel-event-listener-region-siblings.html Sibling element wheel event regions can be wrong 2020-12-22 16:48:30 +00:00
wheel-event-listener-region-tiled-layer-switch-expected.txt Source/WebCore: 2020-11-07 18:15:18 +00:00
wheel-event-listener-region-tiled-layer-switch.html Source/WebCore: 2020-11-07 18:15:18 +00:00
wheel-event-listener-region-window-expected.txt
wheel-event-listener-region-window-scrollable-expected.txt Allow passive mouse wheel event listeners to not force synchronous scrolling 2020-10-14 18:06:37 +00:00
wheel-event-listener-region-window-scrollable.html Allow passive mouse wheel event listeners to not force synchronous scrolling 2020-10-14 18:06:37 +00:00
wheel-event-listener-region-window.html Remove experimental: and internal: prefixes from test header commands 2020-11-04 15:56:26 +00:00