Bug 1455513 - Do not treat jsterm as a live region; r=Jamie. draft
authorNicolas Chevobbe <nchevobbe@mozilla.com>
Fri, 20 Apr 2018 08:40:08 +0200
changeset 786421 450d0993baee2f2eedfb0ca8c2052fc07bbc6f17
parent 785448 ec3dd3ee2ae4b3a63529a912816a110e925eb2d0
push id107458
push userbmo:nchevobbe@mozilla.com
push dateMon, 23 Apr 2018 07:57:57 +0000
reviewersJamie
bugs1455513
milestone61.0a1
Bug 1455513 - Do not treat jsterm as a live region; r=Jamie. MozReview-Commit-ID: FQxs5DvR0Pu
devtools/client/webconsole/components/JSTerm.js
devtools/client/webconsole/test/mochitest/browser_jsterm_accessibility.js
--- 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);
+}