summaryrefslogtreecommitdiffstats
path: root/accessible/tests/browser/events/browser_alert.js
diff options
context:
space:
mode:
Diffstat (limited to 'accessible/tests/browser/events/browser_alert.js')
-rw-r--r--accessible/tests/browser/events/browser_alert.js46
1 files changed, 46 insertions, 0 deletions
diff --git a/accessible/tests/browser/events/browser_alert.js b/accessible/tests/browser/events/browser_alert.js
new file mode 100644
index 0000000000..f35a602fa3
--- /dev/null
+++ b/accessible/tests/browser/events/browser_alert.js
@@ -0,0 +1,46 @@
+/* Any copyright is dedicated to the Public Domain.
+ * http://creativecommons.org/publicdomain/zero/1.0/ */
+
+"use strict";
+
+/**
+ * Test that alert events aren't fired when reflow happens but no actual
+ * insertion occurs.
+ */
+addAccessibleTask(
+ `
+<div id="alert" role="alert">
+ <div id="content" hidden>content</div>
+</div>
+ `,
+ async function (browser, docAcc) {
+ const alert = findAccessibleChildByID(docAcc, "alert");
+ info("Showing content");
+ await contentSpawnMutation(
+ browser,
+ { expected: [[EVENT_ALERT, alert]] },
+ () => {
+ content.document.getElementById("content").hidden = false;
+ }
+ );
+ info("Changing content display style and removing text");
+ const content = findAccessibleChildByID(docAcc, "content");
+ await contentSpawnMutation(
+ browser,
+ {
+ expected: [[EVENT_REORDER, content]],
+ unexpected: [[EVENT_ALERT, alert]],
+ },
+ () => {
+ const node = content.document.getElementById("content");
+ node.textContent = "";
+ // This causes the node's layout frame to be reconstructed. This in
+ // turn causes a11y to queue it as an insertion in case there were
+ // changes. Because it already has an Accessible, This node is skipped
+ // when processing insertions, so we should not fire an alert event.
+ node.style.display = "flex";
+ }
+ );
+ },
+ { chrome: true, topLevel: true, remoteIframe: true }
+);