86 lines
2.8 KiB
HTML
86 lines
2.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<style>
|
|
body {
|
|
height: 2000px;
|
|
}
|
|
#scroller {
|
|
width: 300px;
|
|
height: 300px;
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
margin: 20px;
|
|
scroll-snap-type: y mandatory;
|
|
}
|
|
#scroller > div {
|
|
height: 100%;
|
|
width: 100%;
|
|
scroll-snap-align: start;
|
|
}
|
|
</style>
|
|
<script src="../../../resources/js-test.js"></script>
|
|
<script>
|
|
jsTestIsAsync = true;
|
|
|
|
var targetScroller;
|
|
|
|
function checkEndState()
|
|
{
|
|
shouldBe('targetScroller.scrollTop', 'targetScroller.clientHeight');
|
|
shouldBe('document.scrollingElement.scrollTop', '0');
|
|
finishJSTest();
|
|
}
|
|
|
|
function scrollTest()
|
|
{
|
|
targetScroller = document.getElementById('scroller');
|
|
|
|
var targetRect = targetScroller.getBoundingClientRect();
|
|
|
|
var dx = 0;
|
|
var dy = -1;
|
|
var startPosX = targetRect.left + 50;
|
|
var startPosY = targetRect.top + 50;
|
|
eventSender.monitorWheelEvents();
|
|
eventSender.mouseMoveTo(startPosX, startPosY);
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(dx, dy, 'began', 'none');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(dx, dy, 'changed', 'none');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(dx, dy, 'changed', 'none');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(dx, dy, 'changed', 'none');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'ended', 'none');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(dx, dy, 'none', 'begin');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(dx, dy, 'none', 'continue');
|
|
eventSender.mouseScrollByWithWheelAndMomentumPhases(0, 0, 'none', 'end');
|
|
eventSender.callAfterScrollingCompletes(checkEndState);
|
|
}
|
|
|
|
function startTest()
|
|
{
|
|
description('Tests that latching is not recomputed between the scroll and momentum phases, which triggers a document scroll.');
|
|
if (window.eventSender) {
|
|
internals.setPlatformMomentumScrollingPredictionEnabled(false);
|
|
setTimeout(scrollTest, 0);
|
|
return;
|
|
}
|
|
|
|
debug('This test requires eventSender');
|
|
finishJSTest();
|
|
}
|
|
|
|
window.addEventListener('load', startTest, false);
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div id="scroller">
|
|
<div style="background-color: orange"></div>
|
|
<div style="background-color: green"></div>
|
|
<div style="background-color: blue"></div>
|
|
<div style="background-color: aqua"></div>
|
|
<div style="background-color: yellow"></div>
|
|
<div style="background-color: fuchsia"></div>
|
|
</div>
|
|
<div id="console"></div>
|
|
</body>
|
|
</html>
|