Select me and drag up.

Verifies that triggering autoscroll near the top of a web view with a top content inset does not cause the scroll view's content offset to jump to 0. This test requires WebKitTestRunner. To verify manually, load this page in a web view that has a scroll view top content inset, and scroll such that the full top content inset area is visible. Check that starting a text selection loupe gesture near the top of the top of the document and dragging upwards does not thrash the scroll view's content offset.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


PASS finalContentOffset.x is 0
PASS verticalMovementDuringDrag < 1 is true
PASS successfullyParsed is true

TEST COMPLETE

