Bug 1455513 - Do not treat jsterm as a live region; r=Jamie.
MozReview-Commit-ID: FQxs5DvR0Pu
--- a/devtools/client/webconsole/components/JSTerm.js
+++ b/devtools/client/webconsole/components/JSTerm.js
@@ -1340,17 +1340,18 @@ class JSTerm extends Component {
return null;
}
return [
dom.div({id: "webconsole-notificationbox", key: "notification"}),
dom.div({
className: "jsterm-input-container",
key: "jsterm-container",
- style: {direction: "ltr"}
+ style: {direction: "ltr"},
+ "aria-live": "off",
},
dom.textarea({
className: "jsterm-complete-node devtools-monospace",
key: "complete",
tabIndex: "-1",
ref: node => {
this.completeNode = node;
},
--- a/devtools/client/webconsole/test/mochitest/browser_jsterm_accessibility.js
+++ b/devtools/client/webconsole/test/mochitest/browser_jsterm_accessibility.js
@@ -11,16 +11,19 @@
const TEST_URI = "data:text/html;charset=utf8,<p>test code completion";
add_task(async function() {
let hud = await openNewTabAndConsole(TEST_URI);
let jsterm = hud.jsterm;
let input = jsterm.inputNode;
+ info("Test that the console input is not treated as a live region");
+ ok(!isElementInLiveRegion(input), "Console input is not treated as a live region");
+
info("Type 'd' to open the autocomplete popup");
await autocomplete(jsterm, "d");
// Add listeners for focus and blur events.
let wasBlurred = false;
input.addEventListener("blur", () => {
wasBlurred = true;
}, {
@@ -51,8 +54,20 @@ async function autocomplete(jsterm, valu
await new Promise(resolve => {
jsterm.setInputValue(value);
jsterm.complete(jsterm.COMPLETE_HINT_ONLY, resolve);
});
ok(popup.isOpen && popup.itemCount > 0,
"Autocomplete popup is open and contains suggestions");
}
+
+function isElementInLiveRegion(element) {
+ if (!element) {
+ return false;
+ }
+
+ if (element.hasAttribute("aria-live")) {
+ return element.getAttribute("aria-live") !== "off";
+ }
+
+ return isElementInLiveRegion(element.parentNode);
+}