Current behavior: Given a scroll that starts on a non-snap position and has a specified direction, if there's no snap position on the direction, the snap behavior won't be performed and the scroll will end at the default offset.
Problem: However, if the scroll-snap-type is mandatory and there's a valid snap position on the other direction, at the scroll end, another snap behavior will still be performed, breaking the scroll into two parts(original scroll and snap scroll).
Use cases: This problem is prevalent in the fling gestures. The fling gesture consists of: a GSB, several non-inertial GSU when the finger is on the screen, several inertial GSU after the finger is lifted, and a GSE. Even if the gesture is performed from a snap position, at the time when the finger is lifted and we decide to snap for the fling, it's already away from the snap position, and won't snap back until the fling has ended.
We should allow it to snap backwards if there is no snap position on the direction forward and the type is mandatory.
Comment 1 by bugdroid1@chromium.org
, Dec 18