tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

helper_scrollbarbutton_repeat.html (2778B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4  <meta charset="utf-8">
      5  <meta name="viewport" content="width=device-width; initial-scale=1.0">
      6  <title>Basic test that click and hold on a scrollbar button works as expected</title>
      7  <script type="application/javascript" src="apz_test_native_event_utils.js"></script>
      8  <script type="application/javascript" src="apz_test_utils.js"></script>
      9  <script src="/tests/SimpleTest/paint_listener.js"></script>
     10  <script type="text/javascript">
     11 
     12 
     13 async function test() {
     14  let utils = SpecialPowers.getDOMWindowUtils(window);
     15  let scroller = document.getElementById('scroller');
     16  let w = {}, h = {};
     17  utils.getScrollbarSizes(scroller, w, h);
     18  let verticalScrollbarWidth = w.value;
     19  if (verticalScrollbarWidth == 0) {
     20    ok(false, "No scrollbar, test will fail");
     21  }
     22  let downArrowHeight = verticalScrollbarWidth; // assume square scrollbar buttons
     23  var mouseX = scroller.clientWidth + verticalScrollbarWidth / 2;
     24  let mouseY = scroller.clientHeight - (downArrowHeight / 2);
     25 
     26  let waitForScroll = waitForScrollEvent(scroller);
     27 
     28  info("Synthesizing click at (" + mouseX + ", " + mouseY);
     29  await promiseNativeMouseEventWithAPZ({
     30    type: "click",
     31    target: scroller,
     32    offsetX: mouseX,
     33    offsetY: mouseY,
     34  });
     35 
     36  await waitForScroll;
     37 
     38  // Sanity-check: we should have scrolled.
     39  ok(scroller.scrollTop > 0, "Should have scrolled by clicking the scrollbar button");
     40 
     41  let startPos = scroller.scrollTop;
     42 
     43  info("scroller.scrollTop " + scroller.scrollTop);
     44 
     45  // mouse move over the scrollbar button
     46  await promiseNativeMouseEventWithAPZ({
     47    type: "mousemove",
     48    target: scroller,
     49    offsetX: mouseX,
     50    offsetY: mouseY,
     51  });
     52  // mouse down
     53  await promiseNativeMouseEventWithAPZ({
     54    type: "mousedown",
     55    target: scroller,
     56    offsetX: mouseX,
     57    offsetY: mouseY,
     58  });
     59 
     60  info("sent mouse down");
     61 
     62  info("scroller.scrollTop " + scroller.scrollTop);
     63 
     64  // mouse down on the scrollbar button and then wait until
     65  // we scroll more 2x the distance of one click.
     66  while ((scroller.scrollTop - startPos) < 2*startPos) {
     67    let waitForScroll2 = waitForScrollEvent(scroller);
     68    // Wait a bit
     69    await SpecialPowers.promiseTimeout(50);
     70    await waitForScroll2;
     71    info("loop scroller.scrollTop " + scroller.scrollTop);
     72  }
     73 
     74  await promiseNativeMouseEventWithAPZ({
     75    type: "mouseup",
     76    target: scroller,
     77    offsetX: mouseX,
     78    offsetY: mouseY,
     79  });
     80 
     81  ok(true, "got enough scroll");
     82 }
     83 
     84 waitUntilApzStable()
     85 .then(test)
     86 .then(subtestDone, subtestFailed);
     87 
     88  </script>
     89  <style>
     90    .spacer {
     91      background-color: #212121;
     92      height: 9000vh;
     93    }
     94  </style>
     95 </head>
     96 <body>
     97  <div id="scroller" style="overflow: auto; width: 200px; height: 200px;">
     98    <div class="spacer"></div>
     99  </div>
    100 </body>
    101 </html>