tor-browser

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

scrollend-event-fired-to-document.html (3476B)


      1 <!DOCTYPE HTML>
      2 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1">
      3 <script src="/resources/testharness.js"></script>
      4 <script src="/resources/testharnessreport.js"></script>
      5 <script src="/resources/testdriver.js"></script>
      6 <script src="/resources/testdriver-actions.js"></script>
      7 <script src="/resources/testdriver-vendor.js"></script>
      8 <script src="scroll_support.js"></script>
      9 <style>
     10  #hspacer {
     11    height: 100px;
     12    width: 100vw;
     13    top: 0;
     14    left: 200px;
     15    /* on the right edge od targetDiv */
     16    position: absolute;
     17  }
     18 
     19  #vspacer {
     20    height: 100vh;
     21    width: 100px;
     22    position: absolute;
     23  }
     24 
     25  #targetDiv {
     26    width: 200px;
     27    height: 200px;
     28    overflow: scroll;
     29  }
     30 
     31  #innerDiv {
     32    width: 400px;
     33    height: 400px;
     34  }
     35 </style>
     36 
     37 <body style="margin:0" onload=runTest()>
     38  <div id="targetDiv">
     39    <div id="innerDiv"></div>
     40  </div>
     41  <div id="hspacer"></div>
     42  <div id="vspacer"></div>
     43 </body>
     44 
     45 <script>
     46  var target_div = document.getElementById('targetDiv');
     47  async function resetScrollers(test) {
     48    await waitForScrollReset(test, target_div);
     49    await waitForScrollReset(test, document.scrollingElement);
     50  }
     51 
     52  function fail() {
     53    assert_true(false);
     54  }
     55 
     56  function runTest() {
     57    promise_test(async (t) => {
     58      await resetScrollers(t);
     59      await waitForCompositorCommit();
     60 
     61      assert_equals(document.scrollingElement.scrollTop, 0,
     62        "document should not be scrolled");
     63 
     64      let scrollend_promise = waitForScrollendEvent(t, target_div);
     65      let max_target_div_scroll_top = target_div.scrollHeight - target_div.clientHeight;
     66      target_div.scrollTo({ top: target_div.scrollHeight, left: 0 });
     67      await scrollend_promise;
     68      assert_approx_equals(target_div.scrollTop, max_target_div_scroll_top, 1,
     69        "target_div should be fully scrolled down");
     70 
     71      scrollend_promise = waitForScrollendEvent(t, document, 2000);
     72      target_div.addEventListener("scrollend", fail);
     73      // Scroll up on target div and wait for the doc to get scrollend event.
     74      await scrollElementDown(target_div, target_div.clientHeight + 25);
     75      await scrollend_promise;
     76 
     77      target_div.removeEventListener("scrollend", fail);
     78      assert_greater_than(document.scrollingElement.scrollTop, target_div.clientHeight - 1,
     79        "document is scrolled by the height of target_div");
     80    }, "testing, vertical");
     81 
     82    promise_test(async (t) => {
     83      await resetScrollers(t);
     84      await waitForCompositorCommit();
     85 
     86      assert_equals(document.scrollingElement.scrollLeft, 0,
     87        "document should not be scrolled");
     88 
     89      let scrollend_promise = waitForScrollendEvent(t, target_div);
     90      let max_target_div_scroll_left = target_div.scrollWidth - target_div.clientWidth;
     91      target_div.scrollTo({ left: target_div.scrollWidth, top: 0 });
     92      await scrollend_promise;
     93      assert_approx_equals(target_div.scrollLeft, max_target_div_scroll_left, 1,
     94        "target_div should be fully scrolled right");
     95 
     96      scrollend_promise = waitForScrollendEvent(t, document, 2000);
     97      target_div.addEventListener("scrollend", fail);
     98      await scrollElementLeft(target_div, target_div.clientWidth + 25);
     99      await scrollend_promise;
    100 
    101      target_div.removeEventListener("scrollend", fail);
    102      assert_greater_than(document.scrollingElement.scrollLeft, target_div.clientWidth - 1,
    103        "document is scrolled by the height of target_div");
    104    }, "testing, horizontal");
    105  }
    106 </script>