Backed out changeset 2450366cf7ca (bug 1891629) for causing win msix mochitest failures
[gecko.git] / dom / base / test / file_suppressed_events_top_xhr.html
blob79299e291ead15faa33818718a2229a1eba74403
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">
15 function waitForMessage(aMsg, aCallback) {
16 window.addEventListener("message", function handler(e) {
17 if (e.data != aMsg) {
18 return;
21 info(`received: ${e.data}`);
22 window.removeEventListener("message", handler);
23 if (aCallback) {
24 aCallback(e);
26 });
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 });
37 waitForMessage("ready", async function(e) {
38 await waitUntilApzStable();
40 let innerWin = e.source;
41 let innerDiv = innerWin.document.querySelector("div");
43 let eventCount = 0;
44 innerDiv.addEventListener("mousemove", function() {
45 eventCount++;
46 });
48 // Test that event handling is suppressed.
49 let xhr = new XMLHttpRequest();
50 opener.info("xhr open");
51 xhr.open('GET', 'slow.sjs', false);
53 const TOTAL = 100;
54 for (let i = 0; i < TOTAL; i++) {
55 synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
57 xhr.send();
58 opener.info(`xhr done`);
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");
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);
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");
76 opener.postMessage("done", "*");
77 });
79 </script>
80 <iframe src="http://example.org/tests/dom/base/test/file_suppressed_events_middle.html"></iframe>
81 </body>
82 </html>