blob: bf5a4ef3b99f1f38cfda45832b8917006ca99c05 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<style>
body {
margin: 0;
}
.box {
width: 100vw;
height: 100vh;
}
</style>
<script src="../../resources/js-test.js"></script>
<script src="../../resources/ui-helper.js"></script>
<script>
window.jsTestIsAsync = true;
async function runTests()
{
try {
await UIHelper.keyDown("pageDown");
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
expectTrue(document.scrollingElement.scrollTop != 0, "paging moved body");
let defaultPagePosition = document.scrollingElement.scrollTop;
let viewportHeight = document.scrollingElement.clientHeight;
let pageProportion = document.scrollingElement.scrollTop / viewportHeight;
document.scrollingElement.scrollTop = 0;
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
document.documentElement.style.scrollPaddingTop = "10px";
await UIHelper.keyDown("pageDown");
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
let expected = (viewportHeight - 10) * pageProportion;
expectTrue(document.scrollingElement.scrollTop != 0, "paging moved padded body");
shouldBeCloseTo("document.scrollingElement.scrollTop", expected, 1);
document.scrollingElement.scrollTop = 0;
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
document.documentElement.style.scrollPaddingTop = "0px";
document.documentElement.style.scrollPaddingBottom = "10px";
await UIHelper.keyDown("pageDown");
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
expectTrue(document.scrollingElement.scrollTop != 0, "paging moved padded body");
shouldBeCloseTo("document.scrollingElement.scrollTop", expected, 1);
document.scrollingElement.scrollTop = 0;
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
document.documentElement.style.scrollPaddingTop = "10px";
document.documentElement.style.scrollPaddingBottom = "10px";
await UIHelper.keyDown("pageDown");
await UIHelper.waitForTargetScrollAnimationToSettle(document.scrollingElement);
expected = (viewportHeight - 20) * pageProportion;
expectTrue(document.scrollingElement.scrollTop != 0, "paging moved padded body");
shouldBeCloseTo("document.scrollingElement.scrollTop", expected, 2);
} catch (e) {
console.log(e);
} finally {
finishJSTest();
}
}
function onLoad()
{
if (window.eventSender) {
runTests();
} else {
var console = document.getElementById('console');
console.innerText = "This test cannot be run manually."
}
}
</script>
</head>
<body onload="onLoad();">
<div class="box" style="background: green;"><div id="console"></div></div>
<div class="box" style="background: red;"></div>
<div class="box" style="background: pink;"></div>
<div class="box" style="background: yellow;"></div>
<div class="box" style="background: orange;"></div>
</body>
</html>