chromium/third_party/blink/web_tests/fast/hidpi/static/mousewheel-scroll-amount.html

<!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>