chromium/third_party/blink/web_tests/fast/scrolling/percent-based-scrolling/max-percent-delta-page-zoom.html

<!doctype html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/gesture-util.js"></script>
<script src="../../../resources/scrollbar-util.js"></script>
<script src="../../../resources/blink-coordinates-util.js"></script>
<script src="../../../resources/percent-based-util.js"></script>

<style>
  .scroller {
    width: 300px;
    height: 300px;
    overflow: scroll;
  }

  .scroller>.child {
    width: 4000px;
    height: 4000px;
  }
</style>

<div id="scroller" class="scroller">
  <div class="child"></div>
</div>

<script>
  const ZOOM_RATIO = 3;

  // 1 - Test arrows
  promise_test(async function () {
    if (!isPercentBasedScrollingEnabled())
      return;

    // Mac doesn't have scrollbar arrows.
    const onMacPlatform = navigator.userAgent.includes("Mac OS X");
    if(onMacPlatform)
      return;

    testRunner.setPageZoomFactor(1);

    // As the clamping is made in un-zoomed physical pixels, zoom-out back to
    // 100% before calculating:
    const expected_x =
      Math.round(SCROLLBAR_SCROLL_PERCENTAGE * window.innerWidth) / ZOOM_RATIO;
    const expected_y =
      Math.round(SCROLLBAR_SCROLL_PERCENTAGE * window.innerHeight) / ZOOM_RATIO;

    testRunner.setPageZoomFactor(ZOOM_RATIO);

    await runScrollbarArrowsTest(scroller, expected_x, expected_y);
  }, "Percent scrolling using scrollbar arrows clamped by viewport size");

  // 2 - Test mousewheel
  promise_test(async function () {
    if (!isPercentBasedScrollingEnabled())
      return;

    const WHEEL_PERCENTAGE = 0.1;
    // As the clamping is made in un-zoomed physical pixels, zoom-out back to
    // 100% before calculating:
    testRunner.setPageZoomFactor(1);
    const expected_x =
      Math.round(WHEEL_PERCENTAGE * window.innerWidth) / ZOOM_RATIO;
    const expected_y =
      Math.round(WHEEL_PERCENTAGE * window.innerHeight) / ZOOM_RATIO;

    testRunner.setPageZoomFactor(ZOOM_RATIO);

    await runMousewheelTest(scroller, expected_x, expected_y, WHEEL_PERCENTAGE);
  }, "Percent scrolling using mousewheel clamped by visual viewport");
</script>