tor-browser

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

wheel-event-transactions-target-elements.html (2176B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <meta charset="utf-8">
      5 <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1">
      6 <link rel="stylesheet" type="text/css" href="/fonts/ahem.css"/>
      7 <script src="/resources/testharness.js"></script>
      8 <script src="/resources/testharnessreport.js"></script>
      9 <script src="/resources/testdriver.js"></script>
     10 <script src="/resources/testdriver-actions.js"></script>
     11 <script src="/resources/testdriver-vendor.js"></script>
     12 <script src="scroll_support.js"></script>
     13 <style>
     14 body {
     15  margin: 0;
     16  padding: 0;
     17  height: 200vh;
     18 }
     19 
     20 .spacer {
     21  width: 100%;
     22  height: 25px;
     23  padding: 0;
     24  margin: 0;
     25  font: 25px/1 Ahem;
     26 }
     27 
     28 </style>
     29 <head>
     30 <body>
     31 <div id="firstRootSpacer" class="spacer" style="background: green">X</div>
     32 <div id="secondRootSpacer" class="spacer" style="background: blue"></div>
     33 </body>
     34 
     35 <script>
     36 
     37 promise_test(async (t) => {
     38  // Wheel event transactions target elements, not nodes. A wheel event
     39  // transaction that begins over a text node should have an event target for
     40  // the containing element.
     41  await waitForCompositorReady();
     42 
     43  await waitForCompositorCommit();
     44 
     45  let wheelEventTargets = [];
     46 
     47  window.addEventListener("wheel", (e) => {
     48    wheelEventTargets.push(e.target);
     49  }, {passive: true});
     50 
     51  await waitForCompositorCommit();
     52 
     53  await new test_driver.Actions()
     54    .addWheel("wheel1")
     55    .scroll(12, 12, 0, 30, {origin: "viewport"})
     56    .pause(1)
     57    .scroll(12, 12, 0, 30, {origin: "viewport"})
     58    .send();
     59 
     60  // TODO(dlrobertson): Use the scrollend event here to wait for the
     61  // wheel scroll to finish instead of waitForAnimationEnd().
     62  await waitForAnimationEnd(() => { return document.scrollingElement.scrollTop; });
     63  await waitForCompositorCommit();
     64 
     65  // All of the wheel events should have the first div as their target.
     66  wheelEventTargets.forEach((wheelEventTarget, i) => {
     67    assert_equals(wheelEventTarget, firstRootSpacer,
     68                  "Wheel event at index `" + i + "` does not have the expected target");
     69  });
     70 
     71  assert_greater_than(document.scrollingElement.scrollTop, 0, "The document has scrolled");
     72 }, "Wheel event transactions target elements");
     73 </script>
     74 </html>