79 lines
2.4 KiB
HTML
79 lines
2.4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<title>Test event suppression</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script src="/tests/SimpleTest/EventUtils.js"></script>
|
|
<script src="/tests/SimpleTest/paint_listener.js"></script>
|
|
<script src="/tests/gfx/layers/apz/test/mochitest/apz_test_utils.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<div>Top</div>
|
|
<script type="application/javascript">
|
|
|
|
function waitForMessage(aMsg, aCallback) {
|
|
window.addEventListener("message", function handler(e) {
|
|
if (e.data != aMsg) {
|
|
return;
|
|
}
|
|
|
|
info(`received: ${e.data}`);
|
|
window.removeEventListener("message", handler);
|
|
if (aCallback) {
|
|
aCallback(e);
|
|
}
|
|
});
|
|
}
|
|
|
|
function waitForClickEvent(aElement, aWindow) {
|
|
return new Promise((aResolve) => {
|
|
aElement.addEventListener("click", aResolve, { once: true });
|
|
synthesizeMouseAtCenter(aElement, { type: "mousedown" }, aWindow);
|
|
synthesizeMouseAtCenter(aElement, { type: "mouseup" }, aWindow);
|
|
});
|
|
}
|
|
|
|
waitForMessage("ready", async function(e) {
|
|
await waitUntilApzStable();
|
|
|
|
let innerWin = e.source;
|
|
let innerDiv = innerWin.document.querySelector("div");
|
|
|
|
let eventCount = 0;
|
|
innerDiv.addEventListener("mousemove", function() {
|
|
eventCount++;
|
|
});
|
|
|
|
// Test that event handling is suppressed.
|
|
let utils = SpecialPowers.getDOMWindowUtils(window);
|
|
utils.suppressEventHandling(true);
|
|
const TOTAL = 100;
|
|
for (let i = 0; i < TOTAL; i++) {
|
|
synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
|
|
}
|
|
utils.suppressEventHandling(false);
|
|
|
|
// Wait for click event to ensure we have received all mousemove events.
|
|
await waitForClickEvent(innerDiv, innerWin);
|
|
opener.info(`eventCount: ${eventCount}`);
|
|
opener.ok(eventCount < TOTAL, "event should be suspressed");
|
|
|
|
// Test that event handling is not suppressed.
|
|
eventCount = 0;
|
|
for (let i = 0; i < TOTAL; i++) {
|
|
synthesizeMouseAtCenter(innerDiv, { type: "mousemove" }, innerWin);
|
|
}
|
|
|
|
// Wait for click event to ensure we have received all mousemove events.
|
|
await waitForClickEvent(innerDiv, innerWin);
|
|
opener.info(`eventCount: ${eventCount}`);
|
|
opener.is(eventCount, TOTAL, "event should not be suspressed");
|
|
|
|
opener.postMessage("done", "*");
|
|
});
|
|
|
|
</script>
|
|
<iframe src="http://example.org/tests/dom/base/test/file_suppressed_events_middle.html"></iframe>
|
|
</body>
|
|
</html>
|