chromium/third_party/blink/web_tests/fast/events/touch/gesture/gesture-scrollbar-mainframe.html

<!DOCTYPE html>
<script src="../../../../resources/testharness.js"></script>
<script src="../../../../resources/testharnessreport.js"></script>
<script src="../../../../resources/gesture-util.js"></script>
<style>
::-webkit-scrollbar {
  background-color: #ccc;
  /* fixed size for consistent touch adjustment behavior across platforms */
  width: 15px;
}

::-webkit-scrollbar-button {
  display: none;
}

::-webkit-scrollbar-thumb {
  background-color: #777;
  width: 15px;
}

body {
  margin: 0;
}

.large {
  height: 2000px;
  width: 600px;
}
</style>
<div class="large"></div>

<script type="text/javascript">
promise_test (async () => {
  await waitForCompositorCommit();
  assert_greater_than(window.innerWidth - document.body.clientWidth, 5);
  var scrollbarX = document.body.clientWidth + 5;
  var scrollbarY = window.innerHeight / 2;  // Trying to grab the thumb
  // Scroll down to ensure we test the difference between content and client
  // co-ordinate spaces.
  window.scrollTo(0, 800);
  assert_equals(window.scrollY, 800);

  await smoothScroll(20, scrollbarX, scrollbarY, GestureSourceType.TOUCH_INPUT,
                     "up", SPEED_INSTANT);
  // We don't know exactly how far draging the thumb will scroll.  If we end
  // up scrolling in the wrong direction it probably means hit tests are
  // passing through the scrollbar and hitting the content.
  await waitFor( () => { return window.scrollY >= 820;});
  await smoothScroll(60, scrollbarX, scrollbarY, GestureSourceType.TOUCH_INPUT,
                     "up", SPEED_INSTANT);
  await waitFor( () => { return window.scrollY >= 885;});
}, 'This tests scroll gesture events on main frame scroll bars The document ' +
   'should be slightly scrolled down if successful.');
</script>