<!DOCTYPE html>
<script src="../../../resources/gesture-util.js"></script>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/percent-based-util.js"></script>
<style type="text/css">
body {
height: 2000px;
width: 2000px;
}
</style>
<script>
async function reset() {
await waitForScrollReset(document.scrollingElement);
await waitForCompositorCommit();
}
async function waitForWheelTickAndScroll(xTicks, yTicks, position) {
const scrollPromise = waitForScrollendEvent(document);
const gesturePromise = wheelTick(xTicks, yTicks, position);
return Promise.all([gesturePromise, scrollPromise]);
}
var position = {x: 20, y: 20};
promise_test(async () => {
await reset();
await waitForWheelTickAndScroll(0, 1, position);
const {x: expectedScrollX, y: expectedScrollY} =
calculateExpectedScroll(document.scrollingElement, 0, pixelsPerTick());
if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) {
assert_approx_equals(document.scrollingElement.scrollLeft, expectedScrollX, 0.0001);
assert_approx_equals(document.scrollingElement.scrollTop, expectedScrollY, 0.0001);
} else {
assert_equals(Math.round(document.scrollingElement.scrollLeft), expectedScrollX);
assert_equals(Math.round(document.scrollingElement.scrollTop), expectedScrollY);
}
}, "One vertical wheel tick scrolls the right number of pixels in high dpi mode.");
promise_test(async () => {
await reset();
await waitForWheelTickAndScroll(1, 0, position);
const {x: expectedScrollX, y: expectedScrollY} =
calculateExpectedScroll(document.scrollingElement, pixelsPerTick(), 0);
if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) {
assert_approx_equals(document.scrollingElement.scrollLeft, expectedScrollX, 0.0001);
assert_approx_equals(document.scrollingElement.scrollTop, expectedScrollY, 0.0001);
} else {
assert_equals(Math.round(document.scrollingElement.scrollLeft), expectedScrollX);
assert_equals(Math.round(document.scrollingElement.scrollTop), expectedScrollY);
}
}, "One horizontal wheel tick scrolls the right number of pixels in high dpi mode.");
promise_test(async () => {
await reset();
await waitForWheelTickAndScroll(0, 2, position);
const {x: expectedScrollX, y: expectedScrollY} =
calculateExpectedScroll(document.scrollingElement, 0, pixelsPerTick() * 2);
if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) {
assert_approx_equals(document.scrollingElement.scrollLeft, expectedScrollX, 0.0001);
assert_approx_equals(document.scrollingElement.scrollTop, expectedScrollY, 0.0001);
} else {
assert_equals(Math.round(document.scrollingElement.scrollLeft), expectedScrollX);
assert_equals(Math.round(document.scrollingElement.scrollTop), expectedScrollY);
}
}, "Two vertical wheel ticks scroll the right number of pixels in high dpi mode.");
promise_test(async () => {
await reset();
await waitForWheelTickAndScroll(2, 0, position);
const {x: expectedScrollX, y: expectedScrollY} =
calculateExpectedScroll(document.scrollingElement, pixelsPerTick() * 2, 0);
if (internals.runtimeFlags.fractionalScrollOffsetsEnabled) {
assert_approx_equals(document.scrollingElement.scrollLeft, expectedScrollX, 0.0001);
assert_approx_equals(document.scrollingElement.scrollTop, expectedScrollY, 0.0001);
} else {
assert_equals(Math.round(document.scrollingElement.scrollLeft), expectedScrollX);
assert_equals(Math.round(document.scrollingElement.scrollTop), expectedScrollY);
}
}, "Two horizontal wheel ticks scroll the right number of pixels in high dpi mode.");
</script>