chromium/third_party/blink/web_tests/fast/scrolling/reset-scroll-in-onscroll.html

<!DOCTYPE html>
<html>
  <link rel="match" href="reset-scroll-in-onscroll-expected.html">
  <script src='../../resources/gesture-util.js'></script>
  <head>
    <style>
      body, html {
        margin: 0;
      }

      #scroller {
        position: absolute;
        clip: rect(0, 1000px, 1000px, 0);
        width: 300px;
        height: 300px;
        overflow: auto;
      }

      #spacer {
        height: 1000px;
      }

      #topbox {
        height: 5px;
        width: 100%;
        background-color: green;
      }
    </style>
    <script>
      window.onload = async () => {
        if (window.testRunner)
          window.testRunner.waitUntilDone();

        await waitForCompositorCommit();

        const scroller = document.getElementById('scroller');
        scroller.addEventListener('scroll', () => {
          scroller.scrollTop = 0;
          if (window.testRunner)
            window.testRunner.notifyDone();
        });

        // Scroll the scroller an arbitrary amount. The scroll should be reset
        // as soon as the scroll handler is run. The reftest will ensure the
        // value gets correctly pushed through compositing and the output
        // appears correctly to the user.
        const delta = 400;
        const location = elementCenter(scroller);
        await smoothScroll(delta,
                           location.x,
                           location.y,
                           GestureSourceType.TOUCH_INPUT,
                           'down',
                           SPEED_INSTANT);
      };
    </script>
  </head>
  <body>
    <div id="scroller">
      <div id="topbox"></div>
      <div id="spacer"></div>
    </div>
  </body>
</html>