tor-browser

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

test_bug1303704.html (3831B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=1303704
      5 -->
      6 <head>
      7  <meta charset="utf-8">
      8  <title>Test for Bug 1303704</title>
      9  <script src="/tests/SimpleTest/SimpleTest.js"></script>
     10  <script src="/tests/SimpleTest/EventUtils.js"></script>
     11  <script type="text/javascript" src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script>
     12  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     13  <style>
     14    #scrollable {
     15      height: 80px;
     16      width: 200px;
     17      overflow-y: scroll;
     18      margin-bottom: 50px;
     19      scroll-behavior: auto;
     20    }
     21  </style>
     22 </head>
     23 <body>
     24 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1303704">Mozilla Bug 1303704</a>
     25 <p id="display"></p>
     26 <a id="link1" href="http://www.google.com">Link 1</a>
     27 <div id="scrollable">
     28 <pre>
     29 scroll
     30 scroll
     31 scroll
     32 scroll
     33 scroll
     34 scroll
     35 scroll
     36 scroll
     37 scroll
     38 scroll
     39 scroll
     40 scroll
     41 scroll
     42 scroll
     43 scroll
     44 scroll
     45 scroll
     46 scroll
     47 scroll
     48 scroll
     49 </pre>
     50 </div>
     51 <script type="text/javascript">
     52 
     53 /** Test for Bug 1303704 */
     54 SimpleTest.waitForExplicitFinish();
     55 
     56 function runTests() {
     57  let link1 = window.document.getElementById("link1");
     58  let mouseEvents = ["mousedown", "mouseup", "mousemove"];
     59 
     60  link1.addEventListener("pointerdown", (e) => {
     61    e.preventDefault();
     62    is(e.defaultPrevented, true, "defaultPrevented should be true");
     63  });
     64 
     65  mouseEvents.forEach((elm, index, arr) => {
     66    link1.addEventListener(elm, () => {
     67      ok(false, "Should not receive " + elm + " after preventDefault on pointerdown");
     68    });
     69  });
     70 
     71  link1.addEventListener("click", (e) => {
     72    e.preventDefault();
     73  });
     74 
     75  synthesizeMouseAtCenter(link1, { type: "mousedown",
     76                                   inputSource: MouseEvent.MOZ_SOURCE_MOUSE });
     77  synthesizeMouseAtCenter(link1, { type: "mousemove",
     78                                   inputSource: MouseEvent.MOZ_SOURCE_MOUSE });
     79  synthesizeMouseAtCenter(link1, { type: "mouseup",
     80                                   inputSource: MouseEvent.MOZ_SOURCE_MOUSE });
     81 
     82  if (navigator.userAgent.includes("Android") ||
     83      navigator.userAgent.includes("Mac") ||
     84      SpecialPowers.Cc["@mozilla.org/gfx/info;1"].
     85        getService(SpecialPowers.Ci.nsIGfxInfo).isHeadless) {
     86    SimpleTest.finish();
     87    return;
     88  }
     89 
     90  async function scrollTest() {
     91    var scrollable = document.getElementById("scrollable");
     92    scrollable.addEventListener('pointerdown', function(ev) {
     93      ev.preventDefault();
     94    }, true);
     95    var rect = scrollable.getBoundingClientRect();
     96    var offsetX = rect.width - 5;
     97    var offsetY = rect.height - 5;
     98    synthesizeMouse(scrollable, offsetX, offsetY,
     99                    { type: "mousedown",
    100                      inputSource: MouseEvent.MOZ_SOURCE_MOUSE });
    101 
    102    synthesizeMouse(scrollable, offsetX, offsetY,
    103                    { type: "mousemove",
    104                      inputSource: MouseEvent.MOZ_SOURCE_MOUSE });
    105 
    106    synthesizeMouse(scrollable, offsetX, offsetY,
    107                    { type: "mouseup",
    108                      inputSource: MouseEvent.MOZ_SOURCE_MOUSE });
    109 
    110    await waitToClearOutAnyPotentialScrolls(window);
    111 
    112    if (scrollable.scrollTop != 0) {
    113      isnot(scrollable.scrollTop, 0,
    114          "Scrollable element should have been scrolled.");
    115      SimpleTest.finish();
    116    } else {
    117      setTimeout(scrollTest);
    118    }
    119  }
    120 
    121  setTimeout(() => {
    122    var scrollable = document.getElementById("scrollable");
    123    is(scrollable.scrollTop, 0,
    124       "Scrollable element shouldn't be scrolled initially");
    125    scrollTest();
    126  });
    127 }
    128 
    129 SimpleTest.waitForFocus(() => {
    130  SpecialPowers.pushPrefEnv({"set": [["general.smoothScroll", false]]}, runTests);
    131 });
    132 
    133 </script>
    134 </body>
    135 </html>