haikuwebkit/LayoutTests/scrollbars/scrolling-by-page-accountin...

76 lines
2.8 KiB
HTML

<html>
<head>
<style>
body {
height: 10000px;
}
#top-bar {
position: fixed;
width: 100%;
height: 200px;
background-color: green;
top: -150px;
left: 0;
}
/* This fixed element does not cover the entire width and should be ignored. */
#ignored-left {
position: fixed;
width: 20px;
height: 5000px;
background-color: red;
left: 0;
top: 0;
}
/* This fixed element does not cover an edge and should be ignored. */
#ignored-center {
position: fixed;
width: 100%;
height: 150px;
background-color: red;
left: 0;
top: 50%;
}
</style>
<script src="../resources/js-test-pre.js"></script>
</head>
<body>
<div id="top-bar"></div>
<div id="ignored-left"></div>
<div id="ignored-center"></div>
<script>
description("Test scrolling with page granularity by using the space bar excludes the height of fixed element covering the full page width. In this case, the top fixed element starts above the page, but the overlap should still be accounted for.");
jsTestIsAsync = true;
var maxOverlapBetweenPages = 40;
var failTimeoutId;
function test() {
if (window.eventSender) {
// Force the first layout to avoid the suppressed scrollbar cases.
scratch = document.documentElement.offsetWidth;
// Avoid special cases for being "onload".
setTimeout(function() {
eventSender.keyDown(' ');
} , 0);
failTimeoutId = setTimeout(function() {
testFailed("The scrollview failed to scroll in response to the event.");
debug("window.scrollY = " + window.scrollY + " excepted value around " + (window.innerHeight - 50 - maxOverlapBetweenPages));
finishJSTest();
}, 1000);
}
}
window.addEventListener("scroll", function() {
if (window.scrollY == window.innerHeight - 50 - maxOverlapBetweenPages) {
testPassed("Scrolled to " + window.scrollY);
clearTimeout(failTimeoutId);
finishJSTest();
}
})
window.addEventListener("load", test);
</script>
<script src="../resources/js-test-post.js"></script>
</body>
</html>