Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: f9672dbf09d92cbcc1ce47ee959a7ff55ed27f9e
https://github.com/WebKit/WebKit/commit/f9672dbf09d92cbcc1ce47ee959a7ff55ed27f9e
Author: Wenson Hsieh <[email protected]>
Date: 2023-04-11 (Tue, 11 Apr 2023)
Changed paths:
A
LayoutTests/fast/events/touch/ios/swipe-after-tap-scrolls-web-view-in-non-responsive-viewport-expected.txt
A
LayoutTests/fast/events/touch/ios/swipe-after-tap-scrolls-web-view-in-non-responsive-viewport.html
M Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm
Log Message:
-----------
[iOS] Pan gestures immediately after tap do not scroll a page with an
unresponsive viewport
https://bugs.webkit.org/show_bug.cgi?id=255300
rdar://106010038
Reviewed by Megan Gardner.
Currently, in a page with an unresponsive viewport, attempting to scroll the
web view with a pan
gesture immediately after performing a tap does not actually result in any
scrolling, since the
scroll view's pan gesture recognizer does not begin. This happens because while
the pan gesture is
immediately reset to `Possible` state after the tap, it then transitions to
`Failed` state right
away when subsequently panning the web view, since it's excluded by the
synthetic tap (single click)
gesture which is still in `Ended` state because it hasn't been reset yet (due
to the double click
gesture still being `Possible`).
To avoid this, we allow both the synthetic tap gesture to recognize
simultaneously alongside pan
gestures by adding logic to
`-gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:`.
This means that instead of transitioning to `Failed` state right away when
panning the web view, we
instead remain in `Possible` state, which then allows us to recognize the
gesture if the user begins
to actually pan the view.
Test:
fast/events/touch/ios/swipe-after-tap-scrolls-web-view-in-non-responsive-viewport.html
*
LayoutTests/fast/events/touch/ios/swipe-after-tap-scrolls-web-view-in-non-responsive-viewport-expected.txt:
Added.
*
LayoutTests/fast/events/touch/ios/swipe-after-tap-scrolls-web-view-in-non-responsive-viewport.html:
Added.
Add a layout test to exercise the fix. This test preemptively tries to mitigate
any potential
flakiness as a result of either the tap or swipe gesture not getting recognized
by automatically
retrying itself several times, until it's successful.
* Source/WebKit/UIProcess/ios/WKContentViewInteraction.mm:
(-[WKContentView
gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:]):
Canonical link: https://commits.webkit.org/262853@main
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes