tor-browser

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

file_suppressed_events_top_modalstate.html (2410B)


      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <title>Test event suppression</title>
      5 <script src="/tests/SimpleTest/SimpleTest.js"></script>
      6 <script src="/tests/SimpleTest/EventUtils.js"></script>
      7 <script src="/tests/SimpleTest/paint_listener.js"></script>
      8 <script src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script>
      9 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
     10 </head>
     11 <body>
     12 <div>Top</div>
     13 <script type="application/javascript">
     14 
     15 function waitForMessage(aMsg, aCallback) {
     16  window.addEventListener("message", function handler(e) {
     17    if (e.data != aMsg) {
     18      return;
     19    }
     20 
     21    info(`received: ${e.data}`);
     22    window.removeEventListener("message", handler);
     23    if (aCallback) {
     24      aCallback(e);
     25    }
     26  });
     27 }
     28 
     29 function waitForClickEvent(aElement, aWindow) {
     30  return new Promise((aResolve) => {
     31    aElement.addEventListener("click", aResolve, { once: true });
     32    synthesizeMouseAtCenter(aElement, { type: "mousedown" }, aWindow);
     33    synthesizeMouseAtCenter(aElement, { type: "mouseup" }, aWindow);
     34  });
     35 }
     36 
     37 waitForMessage("ready", async function(e) {
     38  await waitUntilApzStable();
     39 
     40  let innerWin = e.source;
     41  let innerDiv = innerWin.document.querySelector("div");
     42 
     43  let eventCount = 0;
     44  innerDiv.addEventListener("mousemove", function() {
     45    eventCount++;
     46  });
     47 
     48  // Test that event handling is suppressed.
     49  let utils = SpecialPowers.getDOMWindowUtils(window);
     50  utils.enterModalState();
     51  const TOTAL = 100;
     52  for (let i = 0; i < TOTAL; i++) {
     53    synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
     54  }
     55  utils.leaveModalState();
     56 
     57  // Wait for click event to ensure we have received all mousemove events.
     58  await waitForClickEvent(innerDiv, innerWin);
     59  opener.info(`eventCount: ${eventCount}`);
     60  opener.ok(eventCount < TOTAL, "event should be suspressed");
     61 
     62  // Test that event handling is not suppressed.
     63  eventCount = 0;
     64  for (let i = 0; i < TOTAL; i++) {
     65    synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
     66  }
     67 
     68  // Wait for click event to ensure we have received all mousemove events.
     69  await waitForClickEvent(innerDiv, innerWin);
     70  opener.info(`eventCount: ${eventCount}`);
     71  opener.is(eventCount, TOTAL, "event should not be suspressed");
     72 
     73  opener.postMessage("done", "*");
     74 });
     75 
     76 </script>
     77 <iframe src="http://example.org/tests/dom/base/test/file_suppressed_events_middle.html"></iframe>
     78 </body>
     79 </html>