[webkit-changes] [WebKit/WebKit] dc3e66: [iOS] Scrolling snaps to previous snap point when ...
Wenson Hsieh
noreply at github.com
Wed Apr 19 18:54:17 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: dc3e66efee5b3ab0c2be1def4e3539a9dd178c66
https://github.com/WebKit/WebKit/commit/dc3e66efee5b3ab0c2be1def4e3539a9dd178c66
Author: Wenson Hsieh <wenson_hsieh at apple.com>
Date: 2023-04-19 (Wed, 19 Apr 2023)
Changed paths:
M LayoutTests/TestExpectations
A LayoutTests/css3/scroll-snap/ios/scroll-snap-mainframe-scroll-deceleration-with-obscured-inset-expected.txt
A LayoutTests/css3/scroll-snap/ios/scroll-snap-mainframe-scroll-deceleration-with-obscured-inset.html
M LayoutTests/platform/ios-wk2/TestExpectations
M Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm
M Tools/WebKitTestRunner/TestOptions.cpp
M Tools/WebKitTestRunner/TestOptions.h
M Tools/WebKitTestRunner/ios/TestControllerIOS.mm
Log Message:
-----------
[iOS] Scrolling snaps to previous snap point when tapping during a scroll snap in mainframe
https://bugs.webkit.org/show_bug.cgi?id=255670
rdar://108008480
Reviewed by Tim Horton.
When interrupting scroll view deceleration with a tap gesture, we re-run logic to retarget the snap
offset given the current scroll offset and the projected (original) scroll offset where we would've
ended up scrolling. In an overflow region where this bug does *not* reproduce, the current offset is
equal to the projected offset, so we simply retarget to the closest snap point.
However, in a mainframe scroll snapping context where the bug reproduces, the projected snap offset
is off by an amount equal to the top obscured inset, which means that instead of defaulting to the
closest snap position, we'll instead always retarget the previous snap point. To fix this, we simply
apply this same adjustment to this projected offset.
Test: css3/scroll-snap/ios/scroll-snap-mainframe-scroll-deceleration-with-obscured-inset.html
* LayoutTests/TestExpectations:
* LayoutTests/css3/scroll-snap/ios/scroll-snap-mainframe-scroll-deceleration-with-obscured-inset-expected.txt: Added.
* LayoutTests/css3/scroll-snap/ios/scroll-snap-mainframe-scroll-deceleration-with-obscured-inset.html: Added.
Add a layout test to exercise this change, by scrolling via a swipe gesture, tapping, and verifying
that we don't snap back to the start.
* LayoutTests/platform/ios-wk2/TestExpectations:
* Source/WebKit/UIProcess/RemoteLayerTree/ios/RemoteScrollingCoordinatorProxyIOS.mm:
(WebKit::RemoteScrollingCoordinatorProxyIOS::adjustTargetContentOffsetForSnapping):
Offset the projected offset by the top obscured inset, for consistency with the current offset.
* Tools/WebKitTestRunner/TestOptions.cpp:
(WTR::TestOptions::defaults):
(WTR::TestOptions::keyTypeMapping):
* Tools/WebKitTestRunner/TestOptions.h:
(WTR::TestOptions::obscuredInsetTop const):
* Tools/WebKitTestRunner/ios/TestControllerIOS.mm:
(WTR::TestController::platformResetStateToConsistentValues):
Add a new test option to specify a top obscured inset value on the web view.
Canonical link: https://commits.webkit.org/263158@main
More information about the webkit-changes
mailing list