blob: 03621afec6914f4e4925c0311eb5401b8efb4fb0 [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>
body,html {
margin: 0;
width: 10000px;
height: 10000px;
}
</style>
<script>
const scroller = document.scrollingElement;
let floatPrecision = 0.00001;
window.addEventListener('load', async () => {
await waitForCompositorCommit();
promise_test(async () => {
scroller.scrollTop = 0;
scroller.scrollLeft = 0;
const distance = 5;
const x = 400;
const y = 300;
const precise_deltas = true;
if (window.internals) {
window.internals.setPageScaleFactor(4);
window.internals.setVisualViewportOffset(600, 450);
await waitForCompositorCommit();
}
let expected_scroll = distance / window.visualViewport.scale;
// If fractional scroll offsets are enabled, the expected scroll offset
// should be the actuall fractional distance we scrolled. Otherwise the
// offset should be truncated.
if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) {
assert_not_equals(expected_scroll,
Math.round(expected_scroll),
'Expected scroll should be fractional');
} else {
expected_scroll = Math.floor(expected_scroll);
}
// Scroll Vertically
await smoothScroll(distance,
x, y,
GestureSourceType.TOUCHPAD_INPUT,
'down',
SPEED_INSTANT,
precise_deltas);
await waitFor(() => { return scroller.scrollTop >= expected_scroll; },
"Didn't scroll to expected value.");
await waitForCompositorCommit();
assert_approx_equals(scroller.scrollTop, expected_scroll, floatPrecision);
await waitForCompositorCommit();
// Scroll Horizontally
await smoothScroll(distance,
x, y,
GestureSourceType.TOUCHPAD_INPUT,
'right',
SPEED_INSTANT,
precise_deltas);
await waitFor(() => { return scroller.scrollLeft >= expected_scroll; },
"Didn't scroll to expected value.");
await waitForCompositorCommit();
assert_approx_equals(scroller.scrollLeft, expected_scroll, floatPrecision);
}, 'Scrolling while zoomed scroller preserves fractional offsets.');
});
</script>