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"/>
13 <script type=
"application/javascript">
15 function waitForMessage(aMsg, aCallback) {
16 window.addEventListener(
"message", function handler(e) {
21 info(`received: ${e.data}`);
22 window.removeEventListener(
"message", handler);
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);
37 waitForMessage(
"ready", async function(e) {
38 await waitUntilApzStable();
40 let innerWin = e.source;
41 let innerDiv = innerWin.document.querySelector(
"div");
44 innerDiv.addEventListener(
"mousemove", function() {
48 // Test that event handling is suppressed.
49 let xhr = new XMLHttpRequest();
50 opener.info(
"xhr open");
51 xhr.open('GET', 'slow.sjs', false);
54 for (let i =
0; i < TOTAL; i++) {
55 synthesizeMouseAtCenter(innerDiv, { type:
"mousemove" }, innerWin);
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.
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",
"*");
80 <iframe src=
"http://example.org/tests/dom/base/test/file_suppressed_events_middle.html"></iframe>