blob: 71439c7857438c7a88d0e43ef4bcbd91262d1ecf [file] [log] [blame]
<!doctype html>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="../../resources/gesture-util.js"></script>
<style>
#scroll-div {
width:400px; height:100px;
overflow: auto;
position:relative;
}
#range-div {
width:4194410px; height: 4194410px;
border:1px solid red;
position:absolute;
top: 10px;
left: 10px;
}
</style>
<div id="scroll-div">
<div id="range-div"></div>
</div>
<script>
var scroller = document.querySelector("#scroll-div");
// Scroll div to some large offset that is > 0.5*4194410
const LARGE_SCROLL_OFFSET = 2097206;
scroller.scrollTop = LARGE_SCROLL_OFFSET;
scroller.scrollLeft = LARGE_SCROLL_OFFSET;
const SCROLL_PERCENTAGE = 0.1;
promise_test(async () => {
// Scroll the inner scroller by the SCROLL_PERCENTAGE.
var originalTopOffset = scroller.scrollTop;
var originalLeftOffset = scroller.scrollLeft;
// Use negative scroll percentages because we want to scroll up and left
await percentScroll(-SCROLL_PERCENTAGE,
-SCROLL_PERCENTAGE,
50,
50,
GestureSourceType.MOUSE_INPUT);
function isCorrectOffset() {
return scroller.scrollTop <=
Math.round(originalTopOffset - scroller.clientHeight * SCROLL_PERCENTAGE);
}
await waitFor(isCorrectOffset,
"Scrolling by 10% must scroll the correct amount.");
assert_less_than(scroller.scrollTop, originalTopOffset,
"Must be able to scroll vertically by percentage even when at large offset");
assert_less_than(scroller.scrollLeft, originalLeftOffset,
"Must be able to scroll horizontally by percentage even when at large offset");
}, "Can scroll by percentage at large offset");
</script>