Log Message
scroll-snap-stop: always not respected during momentum scrolling https://bugs.webkit.org/show_bug.cgi?id=223406
Patch by Martin Robinson <[email protected]> on 2021-03-19 Reviewed by Simon Fraser. Source/WebCore: Test: tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html * platform/ScrollSnapAnimatorState.cpp: (WebCore::ScrollSnapAnimatorState::targetOffsetForStartOffset const): Enable directional scroll snapping when handling momentum scrolling. This turns on scroll-snap-stop as well as a few other features. LayoutTests: * tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll-expected.txt: Added. * tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html: Added.
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/Source/WebCore/ChangeLog
- trunk/Source/WebCore/platform/ScrollSnapAnimatorState.cpp
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (274725 => 274726)
--- trunk/LayoutTests/ChangeLog 2021-03-19 17:40:06 UTC (rev 274725)
+++ trunk/LayoutTests/ChangeLog 2021-03-19 17:48:11 UTC (rev 274726)
@@ -1,3 +1,13 @@
+2021-03-19 Martin Robinson <[email protected]>
+
+ scroll-snap-stop: always not respected during momentum scrolling
+ https://bugs.webkit.org/show_bug.cgi?id=223406
+
+ Reviewed by Simon Fraser.
+
+ * tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll-expected.txt: Added.
+ * tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html: Added.
+
2021-03-19 Sergio Villar Senin <[email protected]>
[css-flexbox] Another WPT import
Added: trunk/LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll-expected.txt (0 => 274726)
--- trunk/LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll-expected.txt (rev 0)
+++ trunk/LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll-expected.txt 2021-03-19 17:48:11 UTC (rev 274726)
@@ -0,0 +1,6 @@
+PASS did not glide past first scroll snap stop.
+PASS did not glide past second scroll snap stop.
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
Added: trunk/LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html (0 => 274726)
--- trunk/LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html (rev 0)
+++ trunk/LayoutTests/tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html 2021-03-19 17:48:11 UTC (rev 274726)
@@ -0,0 +1,98 @@
+<!DOCTYPE HTML>
+<html>
+ <head>
+ <style>
+ html {
+ scroll-snap-type: y mandatory;
+ }
+ .verticalGallery {
+ width: 100vw;
+ height: 600vh;
+ margin: 0;
+ padding: 0;
+ }
+ .colorBox {
+ height: 200px;
+ width: 100vw;
+ float: left;
+ scroll-snap-align: start;
+ scroll-snap-stop: always;
+ }
+ .color0 { background-color: red; }
+ .color1 { background-color: green; }
+ .color2 { background-color: blue; }
+ .color3 { background-color: aqua; }
+ .color4 { background-color: yellow; }
+ .color5 { background-color: fuchsia; }
+ </style>
+ <script src=""
+ <script src=""
+ <script src=""
+ <script>
+ window.jsTestIsAsync = true;
+
+ async function runTests()
+ {
+ try {
+ let scrollMotionsForLargeScrollGlide = [
+ [-1, -1, 'began', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [-1, -1, 'changed', 'none'],
+ [0, 0, 'ended', 'none'],
+ [-1, -1, 'none', 'begin'],
+ [-1, -1, 'none', 'continue'],
+ [0, 0, 'none', 'end'],
+ ];
+
+ await UIHelper.delayFor(0);
+ await doScrollGlide(document.scrollingElement, VERTICAL);
+ expectTrue(document.scrollingElement.scrollTop == 200, "did not glide past first scroll snap stop.");
+
+ await UIHelper.delayFor(0);
+ await doScrollGlide(document.scrollingElement, VERTICAL);
+ expectTrue(document.scrollingElement.scrollTop == 400, "did not glide past second scroll snap stop.");
+ } catch (e) {
+ console.log(e);
+ } finally {
+ finishJSTest();
+ }
+ }
+
+ function onLoad()
+ {
+ if (window.eventSender) {
+ internals.setPlatformMomentumScrollingPredictionEnabled(false);
+ runTests();
+ } else {
+ var messageLocation = document.getElementById('console');
+ messageLocation.innerHTML = "<p>To run this test manually do a fast vertical momentum scroll. "
+ + "Scroling should snap to each block, regardless of how fast the scroll is.<p>";
+ }
+ }
+ </script>
+ </head>
+ <body _onload_="onLoad();" class="verticalGallery">
+ <div class="color0 colorBox"><div id="console"></div></div>
+ <div class="color1 colorBox"></div>
+ <div class="color2 colorBox"></div>
+ <div class="color3 colorBox"></div>
+ <div class="color4 colorBox"></div>
+ <div class="color5 colorBox"></div>
+ <div class="color0 colorBox"></div>
+ <div class="color1 colorBox"></div>
+ <div class="color2 colorBox"></div>
+ <div class="color3 colorBox"></div>
+ <div class="color4 colorBox"></div>
+ <div class="color5 colorBox"></div>
+ </body>
+</html>
Modified: trunk/Source/WebCore/ChangeLog (274725 => 274726)
--- trunk/Source/WebCore/ChangeLog 2021-03-19 17:40:06 UTC (rev 274725)
+++ trunk/Source/WebCore/ChangeLog 2021-03-19 17:48:11 UTC (rev 274726)
@@ -1,3 +1,17 @@
+2021-03-19 Martin Robinson <[email protected]>
+
+ scroll-snap-stop: always not respected during momentum scrolling
+ https://bugs.webkit.org/show_bug.cgi?id=223406
+
+ Reviewed by Simon Fraser.
+
+ Test: tiled-drawing/scrolling/scroll-snap/scroll-snap-stop-momentum-scroll.html
+
+ * platform/ScrollSnapAnimatorState.cpp:
+ (WebCore::ScrollSnapAnimatorState::targetOffsetForStartOffset const): Enable directional scroll
+ snapping when handling momentum scrolling. This turns on scroll-snap-stop as well as a few other
+ features.
+
2021-03-19 Simon Fraser <[email protected]>
https://bugs.webkit.org/show_bug.cgi?id=223141
Modified: trunk/Source/WebCore/platform/ScrollSnapAnimatorState.cpp (274725 => 274726)
--- trunk/Source/WebCore/platform/ScrollSnapAnimatorState.cpp 2021-03-19 17:40:06 UTC (rev 274725)
+++ trunk/Source/WebCore/platform/ScrollSnapAnimatorState.cpp 2021-03-19 17:48:11 UTC (rev 274726)
@@ -99,7 +99,7 @@
return clampTo<float>(startOffset, 0, maxScrollOffset);
}
- float targetOffset = m_snapOffsetsInfo.closestSnapOffset(axis, LayoutUnit(predictedOffset / pageScale), initialDelta).first;
+ float targetOffset = m_snapOffsetsInfo.closestSnapOffset(axis, LayoutUnit(predictedOffset / pageScale), initialDelta, LayoutUnit(startOffset / pageScale)).first;
float minimumTargetOffset = std::max<float>(0, snapOffsets.first().offset);
float maximumTargetOffset = std::min<float>(maxScrollOffset, snapOffsets.last().offset);
targetOffset = clampTo<float>(targetOffset, minimumTargetOffset, maximumTargetOffset);
_______________________________________________ webkit-changes mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-changes
