tor-browser

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

test_bug946632.html (4926B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <!--
      4 https://bugzilla.mozilla.org/show_bug.cgi?id=946632
      5 -->
      6 <head>
      7  <title>Test for bug 946632 - propagate mouse-wheel vertical scroll events to container</title>
      8  <script src="/tests/SimpleTest/SimpleTest.js"></script>
      9  <script src="/tests/SimpleTest/EventUtils.js"></script>
     10  <script src="/tests/SimpleTest/paint_listener.js"></script>
     11  <script type="application/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      overflow: scroll;
     16      height: 200px;
     17      width: 200px;
     18    }
     19    input {
     20      font-size: 72px;
     21      height: 20px;
     22      width: 20px;
     23    }
     24  </style>
     25 </head>
     26 <body>
     27 <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=946632">Mozilla Bug 946632</a>
     28 <p id="display"></p>
     29 <div id="container" class="scrollable">
     30 <input value="value">
     31 x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
     32 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
     33 </div>
     34 <div id="content" style="display: none">
     35  
     36 </div>
     37 <pre id="test">
     38 <script type="application/javascript">
     39 
     40 SimpleTest.waitForExplicitFinish();
     41 SimpleTest.waitForFocus(function() {
     42  SpecialPowers.pushPrefEnv({
     43    "set":[["general.smoothScroll", false],
     44           ["mousewheel.system_scroll_override.enabled", false],
     45           ["test.events.async.enabled", true]]
     46    }, runTests)
     47  }, window);
     48 
     49 var input = document.querySelector("input");
     50 var container = document.querySelector("#container");
     51 
     52 function reset()
     53 {
     54  container.scrollTop = 0;
     55  container.scrollLeft = 0;
     56  input.scrollTop = 0;
     57  input.scrollLeft = 0;
     58  container.style.display='none';
     59  container.getBoundingClientRect();
     60 }
     61 
     62 function prepare(check)
     63 {
     64  return new Promise(resolve => {
     65    container.style.display='';
     66    container.getBoundingClientRect();
     67    scrollHandler = function(event) {
     68      window.removeEventListener("scroll", arguments.callee, true);
     69      event.stopPropagation();
     70      check(event)
     71      resolve();
     72    };
     73    window.addEventListener("scroll", scrollHandler, true);
     74  });
     75 }
     76 
     77 var tests = [
     78  { 
     79    check(event) {
     80      is(event.target, container, "<input> vertical line scroll targets container");
     81      ok(container.scrollTop > 0, "<input> vertical line scroll container.scrollTop");
     82      is(container.scrollLeft, 0, "<input> vertical line scroll container.scrollLeft");
     83      is(input.scrollTop, 0, "<input> horizontal line scroll input.scrollTop");
     84      is(input.scrollLeft, 0, "<input> horizontal line scroll input.scrollLeft");
     85    },
     86    event: {
     87      deltaMode: WheelEvent.DOM_DELTA_LINE,
     88      deltaY: 1.0,
     89      lineOrPageDeltaY: 1,
     90    }
     91  },
     92 { 
     93    check(event) {
     94      is(event.target, input, "<input> horizontal line scroll targets <input>");
     95      is(input.scrollTop, 0, "<input> horizontal line scroll input.scrollTop");
     96      ok(input.scrollLeft > 0, "<input> horizontal line scroll input.scrollLeft");
     97      is(container.scrollTop, 0, "<input> horizontal line scroll container.scrollTop");
     98      is(container.scrollLeft, 0, "<input> horizontal line scroll container.scrollLeft");
     99    },
    100    event: {
    101      deltaMode: WheelEvent.DOM_DELTA_LINE,
    102      deltaX: 1.0,
    103      lineOrPageDeltaX: 1
    104    }
    105  },
    106 { 
    107    check(event) {
    108      is(event.target, container, "<input> vertical page scroll targets container");
    109      ok(container.scrollTop > 0, "<input> vertical line scroll container.scrollTop");
    110      is(container.scrollLeft, 0, "<input> vertical line scroll container.scrollLeft");
    111      is(input.scrollTop, 0, "<input> vertical page scroll input.scrollTop");
    112      is(input.scrollLeft, 0, "<input> vertical page scroll input.scrollLeft");
    113    },
    114    event: {
    115      deltaMode: WheelEvent.DOM_DELTA_PAGE,
    116      deltaY: 1.0,
    117      lineOrPageDeltaY: 1
    118    }
    119  },
    120 { 
    121    check(event) {
    122      is(event.target, input, "<input> horizontal page scroll targets <input>");
    123      is(input.scrollTop, 0, "<input> horizontal page scroll input.scrollTop");
    124      ok(input.scrollLeft > 0, "<input> horizontal page scroll input.scrollLeft");
    125      is(container.scrollTop, 0, "<input> horizontal page scroll container.scrollTop");
    126      is(container.scrollLeft, 0, "<input> horizontal page scroll container.scrollLeft");
    127    },
    128    event: {
    129      deltaMode: WheelEvent.DOM_DELTA_PAGE,
    130      deltaX: 1.0,
    131      lineOrPageDeltaX: 1
    132    }
    133  },
    134 ];
    135 
    136 async function runTests()
    137 {
    138  for (var i = 0; i < tests.length; i++) {
    139    var test = tests[i];
    140    reset();
    141    await promiseApzFlushedRepaints();
    142    let testEndPromise = prepare(test.check);
    143    await new Promise(resolve => {
    144      sendWheelAndPaint(input, 8, 6, test.event, resolve);
    145    });
    146    await testEndPromise;
    147  }
    148 
    149  SpecialPowers.DOMWindowUtils.restoreNormalRefresh();
    150  SimpleTest.finish();
    151 }
    152 
    153 </script>
    154 </pre>
    155 </body>
    156 </html>