tor-browser

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

file_suppressed_events_top_xhr.html (2442B)


      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 xhr = new XMLHttpRequest();
     50  opener.info("xhr open");
     51  xhr.open('GET', 'slow.sjs', false);
     52 
     53  const TOTAL = 100;
     54  for (let i = 0; i < TOTAL; i++) {
     55    synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
     56  }
     57  xhr.send();
     58  opener.info(`xhr done`);
     59 
     60  // Wait for click event to ensure we have received all mousemove events.
     61  await waitForClickEvent(innerDiv, innerWin);
     62  opener.info(`eventCount: ${eventCount}`);
     63  opener.ok(eventCount < TOTAL, "event should be suspressed");
     64 
     65  // Test that event handling is not suppressed.
     66  eventCount = 0;
     67  for (let i = 0; i < TOTAL; i++) {
     68    synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
     69  }
     70 
     71  // Wait for click event to ensure we have received all mousemove events.
     72  await waitForClickEvent(innerDiv, innerWin);
     73  opener.info(`eventCount: ${eventCount}`);
     74  opener.is(eventCount, TOTAL, "event should not be suspressed");
     75 
     76  opener.postMessage("done", "*");
     77 });
     78 
     79 </script>
     80 <iframe src="http://example.org/tests/dom/base/test/file_suppressed_events_middle.html"></iframe>
     81 </body>
     82 </html>