Merge mozilla-central to mozilla-inbound. a=merge
authorDaniel Varga <dvarga@mozilla.com>
Sat, 20 Oct 2018 13:32:54 +0300
changeset 500753 8784cdbf16d36c6e10a969bfaf47725ecec3b080
parent 500752 b6174ebcb60c2e4f981215bc99fa37025c11a7a0 (current diff)
parent 500739 f88ebf2720c875520d2de1cf4104a3b550c73ad8 (diff)
child 500754 a83370778faf43b69e9a3b3540d25ce8b51da6a8
push id1864
push userffxbld-merge
push dateMon, 03 Dec 2018 15:51:40 +0000
treeherdermozilla-release@f040763d99ad [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone64.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to mozilla-inbound. a=merge
accessible/tests/mochitest/treeupdate/test_bug1276857.html
browser/app/profile/firefox.js
mobile/android/extensions/webcompat/injections.js
mobile/android/extensions/webcompat/injections/js/bug0000000-dummy-js-injection.js
mobile/android/extensions/webcompat/injections/js/bug1452707-window.controllers-shim-ib.absa.co.za.js
mobile/android/extensions/webcompat/injections/js/bug1457335-histography.io-ua-change.js
mobile/android/extensions/webcompat/injections/js/bug1472075-bankofamerica.com-ua-change.js
mobile/android/extensions/webcompat/injections/js/bug1472081-election.gov.np-window.sidebar-shim.js
mobile/android/extensions/webcompat/injections/js/bug1482066-portalminasnet.com-window.sidebar-shim.js
testing/talos/talos/tests/tart/addon/api.js
testing/talos/talos/tests/tart/addon/chrome/blank.icon.html
testing/talos/talos/tests/tart/addon/manifest.json
testing/talos/talos/tests/tart/addon/schema.json
testing/talos/talos/tests/tart/tart.html
testing/talos/talos/tests/tart/tart.ico
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -34,32 +34,10 @@ module.exports = {
       "browser/base/content/urlbarBindings.xml",
       "browser/components/search/content/search.xml",
       "browser/components/translation/translation-infobar.xml",
       "toolkit/components/prompts/content/tabprompts.xml"
     ],
     "env": {
       "mozilla/browser-window": true
     }
-  }, {
-    // XXX Bug 1486741 - We've not rolled out comma-dangle to these directories
-    // yet, so turn it off for now.
-    "files": [
-      "accessible/**",
-      "caps/**",
-      "chrome/**",
-      "devtools/**",
-      "dom/**",
-      "extensions/**",
-      "intl/**",
-      "js/**",
-      "mobile/**",
-      "security/**",
-      "storage/**",
-      "testing/**",
-      "tools/**",
-      "xpcom/**",
-    ],
-    "rules": {
-      "comma-dangle": "off",
-    }
   }]
 };
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -762,17 +762,17 @@ dependencies = [
 name = "dump_syms_rust_demangle"
 version = "0.1.0"
 dependencies = [
  "rustc-demangle 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "dwrote"
-version = "0.5.1"
+version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
 dependencies = [
  "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc 0.2.43 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_derive 1.0.66 (git+https://github.com/servo/serde?branch=deserialize_from_enums8)",
  "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
@@ -2927,17 +2927,17 @@ dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "cfg-if 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-text 13.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
- "dwrote 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dwrote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "freetype 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "gleam 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "lazy_static 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "num-traits 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
  "plane-split 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -2955,33 +2955,33 @@ name = "webrender_api"
 version = "0.57.2"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bitflags 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "byteorder 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "dwrote 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dwrote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde 1.0.66 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_bytes 0.10.4 (registry+https://github.com/rust-lang/crates.io-index)",
  "serde_derive 1.0.66 (git+https://github.com/servo/serde?branch=deserialize_from_enums8)",
  "time 0.1.40 (registry+https://github.com/rust-lang/crates.io-index)",
 ]
 
 [[package]]
 name = "webrender_bindings"
 version = "0.1.0"
 dependencies = [
  "app_units 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "bincode 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-foundation 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "core-graphics 0.17.1 (registry+https://github.com/rust-lang/crates.io-index)",
- "dwrote 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
+ "dwrote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
  "euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "foreign-types 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "fxhash 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
  "gleam 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)",
  "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)",
  "nsstring 0.1.0",
  "rayon 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "thread_profiler 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -3180,17 +3180,17 @@ dependencies = [
 "checksum darling_macro 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "eb69a38fdeaeaf3db712e1df170de67ee9dfc24fb88ca3e9d21e703ec25a4d8e"
 "checksum devd-rs 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e7c9ac481c38baf400d3b732e4a06850dfaa491d1b6379a249d9d40d14c2434c"
 "checksum diff 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "3c2b69f912779fbb121ceb775d74d51e915af17aaebc38d28a592843a2dd0a3a"
 "checksum digest 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "03b072242a8cbaf9c145665af9d250c59af3b958f83ed6824e13533cf76d5b90"
 "checksum dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "88972de891f6118092b643d85a0b28e0678e0f948d7f879aa32f2d5aafe97d2a"
 "checksum docopt 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d8acd393692c503b168471874953a2531df0e9ab77d0b6bbc582395743300a4a"
 "checksum dtoa 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "09c3753c3db574d215cba4ea76018483895d7bff25a31b49ba45db21c48e50ab"
 "checksum dtoa-short 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "068d4026697c1a18f0b0bb8cfcad1b0c151b90d8edb9bf4c235ad68128920d1d"
-"checksum dwrote 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "30a998e9ff70cd208ccdc4f864e998688bf61d7b897dccec8e17a884d17358bf"
+"checksum dwrote 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f5472f94ba0d9e65b4fefb8c1661ad5b253455eec42cb0702cf0189526321034"
 "checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a"
 "checksum ena 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "88dc8393b3c7352f94092497f6b52019643e493b6b890eb417cdb7c46117e621"
 "checksum encoding_c 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "769ecb8b33323998e482b218c0d13cd64c267609023b4b7ec3ee740714c318ee"
 "checksum encoding_rs 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f1a79fa56c329a5b087de13748054fb3b974c4a672c12c71f0b66e35c5addec5"
 "checksum env_logger 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "0561146661ae44c579e993456bc76d11ce1e0c7d745e57b2fa7146b6e49fa2ad"
 "checksum error-chain 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ff511d5dc435d703f4971bc399647c9bc38e20cb41452e3b9feb4765419ed3f3"
 "checksum euclid 0.19.0 (registry+https://github.com/rust-lang/crates.io-index)" = "70a2ebdf55fb9d6329046e026329a55ef8fbaae5ea833f56e170beb3125a8a5f"
 "checksum failure 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7efb22686e4a466b1ec1a15c2898f91fa9cb340452496dca654032de20ff95b9"
--- a/accessible/generic/ARIAGridAccessible.cpp
+++ b/accessible/generic/ARIAGridAccessible.cpp
@@ -65,18 +65,20 @@ ARIAGridAccessible::ColCount() const
   Accessible* row = rowIter.Next();
   if (!row)
     return 0;
 
   AccIterator cellIter(row, filters::GetCell);
   Accessible* cell = nullptr;
 
   uint32_t colCount = 0;
-  while ((cell = cellIter.Next()))
-    colCount++;
+  while ((cell = cellIter.Next())) {
+    MOZ_ASSERT(cell->IsTableCell(), "No table or grid cell!");
+    colCount += cell->AsTableCell()->ColExtent();
+  }
 
   return colCount;
 }
 
 uint32_t
 ARIAGridAccessible::RowCount()
 {
   uint32_t rowCount = 0;
@@ -597,20 +599,19 @@ ARIAGridCellAccessible::ColIdx() const
   Accessible* row = Row();
   if (!row)
     return 0;
 
   int32_t indexInRow = IndexInParent();
   uint32_t colIdx = 0;
   for (int32_t idx = 0; idx < indexInRow; idx++) {
     Accessible* cell = row->GetChildAt(idx);
-    roles::Role role = cell->Role();
-    if (role == roles::CELL || role == roles::GRID_CELL ||
-        role == roles::ROWHEADER || role == roles::COLUMNHEADER)
-      colIdx++;
+    if (cell->IsTableCell()) {
+      colIdx += cell->AsTableCell()->ColExtent();
+    }
   }
 
   return colIdx;
 }
 
 uint32_t
 ARIAGridCellAccessible::RowIdx() const
 {
--- a/accessible/generic/TableAccessible.cpp
+++ b/accessible/generic/TableAccessible.cpp
@@ -256,15 +256,17 @@ TableAccessible::RowAt(int32_t aRow)
 }
 
 Accessible*
 TableAccessible::CellInRowAt(Accessible* aRow, int32_t aColumn)
 {
   int32_t colIdx = aColumn;
 
   AccIterator cellIter(aRow, filters::GetCell);
-  Accessible* cell = cellIter.Next();
-  while (colIdx != 0 && (cell = cellIter.Next())) {
-    colIdx--;
+  Accessible* cell = nullptr;
+  
+  while (colIdx >= 0 && (cell = cellIter.Next())) {
+    MOZ_ASSERT(cell->IsTableCell(), "No table or grid cell!");
+    colIdx -= cell->AsTableCell()->ColExtent();
   }
 
   return cell;
 }
--- a/accessible/html/HTMLTableAccessible.cpp
+++ b/accessible/html/HTMLTableAccessible.cpp
@@ -633,60 +633,104 @@ HTMLTableAccessible::CellAt(uint32_t aRo
 
 int32_t
 HTMLTableAccessible::CellIndexAt(uint32_t aRowIdx, uint32_t aColIdx)
 {
   nsTableWrapperFrame* tableFrame = do_QueryFrame(mContent->GetPrimaryFrame());
   if (!tableFrame)
     return -1;
 
-  return tableFrame->GetIndexByRowAndColumn(aRowIdx, aColIdx);
+  int32_t cellIndex = tableFrame->GetIndexByRowAndColumn(aRowIdx, aColIdx);
+  if (cellIndex == -1) {
+    // Sometimes, the accessible returned here is a row accessible instead of
+    // a cell accessible, for example when a cell has CSS display:block; set.
+    // In such cases, iterate through the cells in this row differently to find it.
+    nsIContent* cellContent = tableFrame->GetCellAt(aRowIdx, aColIdx);
+    Accessible* cell = mDoc->GetAccessible(cellContent);
+    if (cell && cell->IsTableRow()) {
+      return TableAccessible::CellIndexAt(aRowIdx, aColIdx);
+    }
+  }
+
+  return cellIndex;
 }
 
 int32_t
 HTMLTableAccessible::ColIndexAt(uint32_t aCellIdx)
 {
   nsTableWrapperFrame* tableFrame = do_QueryFrame(mContent->GetPrimaryFrame());
   if (!tableFrame)
     return -1;
 
   int32_t rowIdx = -1, colIdx = -1;
   tableFrame->GetRowAndColumnByIndex(aCellIdx, &rowIdx, &colIdx);
+
+  if (colIdx == -1) {
+    // Sometimes, the index returned indicates that this is not a regular
+    // cell, for example when a cell has CSS display:block; set.
+    // In such cases, try the super class method to find it.
+    return TableAccessible::ColIndexAt(aCellIdx);
+  }
+
   return colIdx;
 }
 
 int32_t
 HTMLTableAccessible::RowIndexAt(uint32_t aCellIdx)
 {
   nsTableWrapperFrame* tableFrame = do_QueryFrame(mContent->GetPrimaryFrame());
   if (!tableFrame)
     return -1;
 
   int32_t rowIdx = -1, colIdx = -1;
   tableFrame->GetRowAndColumnByIndex(aCellIdx, &rowIdx, &colIdx);
+
+  if (rowIdx == -1) {
+    // Sometimes, the index returned indicates that this is not a regular
+    // cell, for example when a cell has CSS display:block; set.
+    // In such cases, try the super class method to find it.
+    return TableAccessible::RowIndexAt(aCellIdx);
+  }
+
   return rowIdx;
 }
 
 void
 HTMLTableAccessible::RowAndColIndicesAt(uint32_t aCellIdx, int32_t* aRowIdx,
                                         int32_t* aColIdx)
 {
   nsTableWrapperFrame* tableFrame = do_QueryFrame(mContent->GetPrimaryFrame());
-  if (tableFrame)
+  if (tableFrame) {
     tableFrame->GetRowAndColumnByIndex(aCellIdx, aRowIdx, aColIdx);
+    if (*aRowIdx == -1 || *aColIdx == -1) {
+      // Sometimes, the index returned indicates that this is not a regular
+      // cell, for example when a cell has CSS display:block; set.
+      // In such cases, try the super class method to find it.
+      TableAccessible::RowAndColIndicesAt(aCellIdx, aRowIdx, aColIdx);
+    }
+  }
 }
 
 uint32_t
 HTMLTableAccessible::ColExtentAt(uint32_t aRowIdx, uint32_t aColIdx)
 {
   nsTableWrapperFrame* tableFrame = do_QueryFrame(mContent->GetPrimaryFrame());
   if (!tableFrame)
     return 0;
 
-  return tableFrame->GetEffectiveColSpanAt(aRowIdx, aColIdx);
+  uint32_t colExtent = tableFrame->GetEffectiveColSpanAt(aRowIdx, aColIdx);
+  if (colExtent == 0) {
+    nsIContent* cellContent = tableFrame->GetCellAt(aRowIdx, aColIdx);
+    Accessible* cell = mDoc->GetAccessible(cellContent);
+    if (cell && cell->IsTableRow()) {
+      return TableAccessible::ColExtentAt(aRowIdx, aColIdx);
+    }
+  }
+
+  return colExtent;
 }
 
 uint32_t
 HTMLTableAccessible::RowExtentAt(uint32_t aRowIdx, uint32_t aColIdx)
 {
   nsTableWrapperFrame* tableFrame = do_QueryFrame(mContent->GetPrimaryFrame());
   if (!tableFrame)
     return 0;
--- a/accessible/jsat/AccessFu.jsm
+++ b/accessible/jsat/AccessFu.jsm
@@ -252,17 +252,17 @@ var AccessFu = {
       let bounds = new Rect(aJsonBounds.left, aJsonBounds.top,
                             aJsonBounds.right - aJsonBounds.left,
                             aJsonBounds.bottom - aJsonBounds.top);
       let { devicePixelRatio, mozInnerScreenX, mozInnerScreenY } = aWindow;
 
       bounds = bounds.scale(1 / devicePixelRatio, 1 / devicePixelRatio);
       bounds = bounds.translate(-mozInnerScreenX, -mozInnerScreenY);
       return bounds.expandToIntegers();
-    }
+    },
 };
 
 var Input = {
   moveToPoint: function moveToPoint(aRule, aX, aY) {
     const mm = Utils.getMessageManager();
     mm.sendAsyncMessage("AccessFu:MoveToPoint",
       {rule: aRule, x: aX, y: aY, origin: "top"});
   },
@@ -310,11 +310,11 @@ var Input = {
     let horizontal = aDetails.horizontal;
     let page = aDetails.page;
     let win = aBrowser.ownerGlobal;
     let winUtils = win.windowUtils;
     let p = AccessFu.screenToClientBounds(aDetails.bounds, win).center();
     winUtils.sendWheelEvent(p.x, p.y,
       horizontal ? page : 0, horizontal ? 0 : page, 0,
       win.WheelEvent.DOM_DELTA_PAGE, 0, 0, 0, 0);
-  }
+  },
 };
 AccessFu.Input = Input;
--- a/accessible/jsat/ContentControl.jsm
+++ b/accessible/jsat/ContentControl.jsm
@@ -474,28 +474,28 @@ this.ContentControl.prototype = {
       }
 
       this.sendToChild(vc, {
         name: "AccessFu:AutoMove",
         json: {
           moveMethod: aOptions.moveMethod,
           moveToFocused: aOptions.moveToFocused,
           noOpIfOnScreen: true,
-        }
+        },
       }, null, true);
     };
 
     if (aOptions.delay) {
       this._autoMove = this.window.setTimeout(moveFunc, aOptions.delay);
     } else {
       moveFunc();
     }
   },
 
   cancelAutoMove: function cc_cancelAutoMove() {
     this.window.clearTimeout(this._autoMove);
     this._autoMove = 0;
   },
 
   QueryInterface: ChromeUtils.generateQI([Ci.nsISupportsWeakReference,
-    Ci.nsIMessageListener
-  ])
+    Ci.nsIMessageListener,
+  ]),
 };
--- a/accessible/jsat/EventManager.jsm
+++ b/accessible/jsat/EventManager.jsm
@@ -129,17 +129,17 @@ this.EventManager.prototype = {
       case Events.VALUE_CHANGE:
       {
         // XXX: Port to Android
         break;
       }
     }
   },
 
-  QueryInterface: ChromeUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver])
+  QueryInterface: ChromeUtils.generateQI([Ci.nsISupportsWeakReference, Ci.nsIObserver]),
 };
 
 const AccessibilityEventObserver = {
 
   /**
    * A WeakMap containing [content, EventManager] pairs.
    */
   eventManagers: new WeakMap(),
@@ -278,10 +278,10 @@ const AccessibilityEventObserver = {
     }
     try {
       eventManager.handleAccEvent(event);
     } catch (x) {
       Logger.logException(x, "Error handing accessible event");
     } finally {
       return;
     }
-  }
+  },
 };
--- a/accessible/jsat/Traversal.jsm
+++ b/accessible/jsat/Traversal.jsm
@@ -51,17 +51,17 @@ BaseTraversalRule.prototype = {
       if (this._explicitMatchRoles.has(role) ||
           !this._explicitMatchRoles.size) {
         return this._matchFunc(aAccessible);
       }
 
       return Filters.IGNORE;
     },
 
-    QueryInterface: ChromeUtils.generateQI([Ci.nsIAccessibleTraversalRule])
+    QueryInterface: ChromeUtils.generateQI([Ci.nsIAccessibleTraversalRule]),
 };
 
 var gSimpleTraversalRoles =
   [Roles.MENUITEM,
    Roles.LINK,
    Roles.PAGETAB,
    Roles.GRAPHIC,
    Roles.STATICTEXT,
@@ -216,17 +216,17 @@ var TraversalRules = { // jshint ignore:
 
       let matchedRole = Utils.matchRoles(aAccessible, [
         "banner",
         "complementary",
         "contentinfo",
         "main",
         "navigation",
         "search",
-        "region"
+        "region",
         ]);
 
       return matchedRole ? Filters.MATCH : Filters.IGNORE;
     }, null, true),
 
   Entry: new BaseTraversalRule(
     [Roles.ENTRY,
      Roles.PASSWORD_TEXT]),
@@ -341,17 +341,17 @@ var TraversalRules = { // jshint ignore:
      Roles.CHECK_MENU_ITEM,
      Roles.SWITCH /* A type of checkbox that represents on/off values */]),
 
   _shouldSkipImage: function _shouldSkipImage(aAccessible) {
     if (gSkipEmptyImages.value && aAccessible.name === "") {
       return Filters.IGNORE;
     }
     return Filters.MATCH;
-  }
+  },
 };
 
 var TraversalHelper = {
   _helperPivotCache: null,
 
   get helperPivotCache() {
     delete this.helperPivotCache;
     this.helperPivotCache = new WeakMap();
@@ -388,11 +388,11 @@ var TraversalHelper = {
           break;
         }
       }
 
       return moved;
     }
     return aVirtualCursor[aMethod](rule);
 
-  }
+  },
 
 };
--- a/accessible/jsat/Utils.jsm
+++ b/accessible/jsat/Utils.jsm
@@ -21,17 +21,17 @@ ChromeUtils.defineModuleGetter(this, "Pl
 
 var EXPORTED_SYMBOLS = ["Utils", "Logger", "PivotContext", "PrefCache"]; // jshint ignore:line
 
 var Utils = { // jshint ignore:line
   _buildAppMap: {
     "{3c2e2abc-06d4-11e1-ac3b-374f68613e61}": "b2g",
     "{d1bfe7d9-c01e-4237-998b-7b5f960a4314}": "graphene",
     "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}": "browser",
-    "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android"
+    "{aa3c5121-dab2-40e2-81ca-7ea25febc110}": "mobile/android",
   },
 
   get AccService() {
     if (!this._AccService) {
       this._AccService = Cc["@mozilla.org/accessibilityService;1"].
         getService(Ci.nsIAccessibilityService);
     }
 
@@ -124,17 +124,17 @@ var Utils = { // jshint ignore:line
             str = PluralForm.get(count, str);
             str = str.replace("#1", count);
           }
         } catch (e) {
           Logger.debug("Failed to get a string from a bundle for", string);
         } finally {
           return str;
         }
-      }
+      },
     };
     return this.stringBundle;
   },
 
   getMessageManager: function getMessageManager(aBrowser) {
     let browser = aBrowser || this.getCurrentBrowser();
     try {
       return browser.frameLoader.messageManager;
@@ -282,34 +282,34 @@ var Utils = { // jshint ignore:line
 
   getLandmarkName: function getLandmarkName(aAccessible) {
     return this.matchRoles(aAccessible, [
       "banner",
       "complementary",
       "contentinfo",
       "main",
       "navigation",
-      "search"
+      "search",
     ]);
   },
 
   getMathRole: function getMathRole(aAccessible) {
     return this.matchRoles(aAccessible, [
       "base",
       "close-fence",
       "denominator",
       "numerator",
       "open-fence",
       "overscript",
       "presubscript",
       "presuperscript",
       "root-index",
       "subscript",
       "superscript",
-      "underscript"
+      "underscript",
     ]);
   },
 
   matchRoles: function matchRoles(aAccessible, aRoles) {
     let roles = this.getAttributes(aAccessible)["xml-roles"];
     if (!roles) {
       return;
     }
@@ -336,17 +336,17 @@ var Utils = { // jshint ignore:line
                                                     aExcludeOrdered) {
     let parent = aStaticText.parent;
     if (aExcludeOrdered && parent.parent.DOMNode.nodeName === "OL") {
       return false;
     }
 
     return parent.role === Roles.LISTITEM && parent.childCount > 1 &&
       aStaticText.indexInParent === 0;
-  }
+  },
 };
 
 /**
  * State object used internally to process accessible's states.
  * @param {Number} aBase     Base state.
  * @param {Number} aExtended Extended state.
  */
 function State(aBase, aExtended) {
@@ -361,17 +361,17 @@ State.prototype = {
   toString: function State_toString() {
     let stateStrings = Utils.AccService.
       getStringStates(this.base, this.extended);
     let statesArray = new Array(stateStrings.length);
     for (let i = 0; i < statesArray.length; i++) {
       statesArray[i] = stateStrings.item(i);
     }
     return "[" + statesArray.join(", ") + "]";
-  }
+  },
 };
 
 var Logger = { // jshint ignore:line
   GESTURE: -1,
   DEBUG: 0,
   INFO: 1,
   WARNING: 2,
   ERROR: 3,
@@ -508,17 +508,17 @@ var Logger = { // jshint ignore:line
       }
       this.log(aLogLevel, indentStr,
                this.accessibleToString(aAccessible),
                "(" + this.statesToString(aAccessible) + ")");
       for (let i = 0; i < aAccessible.childCount; i++) {
         this._dumpTreeInternal(aLogLevel, aAccessible.getChildAt(i),
           aIndent + 1);
       }
-    }
+    },
 };
 
 /**
  * PivotContext: An object that generates and caches context information
  * for a given accessible and its relationship with another accessible.
  *
  * If the given accessible is a label for a nested control, then this
  * context will represent the nested control instead of the label.
@@ -697,17 +697,17 @@ PivotContext.prototype = {
     let hints = [];
     this.newAncestry.concat(this.accessible).reverse().forEach(aAccessible => {
       let hint = Utils.getAttributes(aAccessible)["moz-hint"];
       if (hint) {
         hints.push(hint);
       } else if (aAccessible.actionCount > 0) {
         hints.push({
           string: Utils.AccService.getStringRole(
-            aAccessible.role).replace(/\s/g, "") + "-hint"
+            aAccessible.role).replace(/\s/g, "") + "-hint",
         });
       }
     });
     return hints;
   },
 
   /*
    * A subtree generator function, used to generate a flattened
@@ -736,17 +736,17 @@ PivotContext.prototype = {
     let getAccessibleCell = function getAccessibleCell(aAccessible) {
       if (!aAccessible) {
         return null;
       }
       if (![
             Roles.CELL,
             Roles.COLUMNHEADER,
             Roles.ROWHEADER,
-            Roles.MATHML_CELL
+            Roles.MATHML_CELL,
           ].includes(aAccessible.role)) {
           return null;
       }
       try {
         return aAccessible.QueryInterface(Ci.nsIAccessibleTableCell);
       } catch (x) {
         Logger.logException(x);
         return null;
@@ -824,17 +824,17 @@ PivotContext.prototype = {
   },
 
   _isDefunct: function _isDefunct(aAccessible) {
     try {
       return Utils.getState(aAccessible).contains(States.DEFUNCT);
     } catch (x) {
       return true;
     }
-  }
+  },
 };
 
 function PrefCache(aName, aCallback, aRunCallbackNow) { // jshint ignore:line
   this.name = aName;
   this.callback = aCallback;
 
   let branch = Services.prefs;
   this.value = this._getValue(branch);
@@ -880,10 +880,10 @@ PrefCache.prototype = {
         this.callback(this.name, this.value, false);
       } catch (x) {
         Logger.logException(x);
       }
     }
   },
 
   QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-                                           Ci.nsISupportsWeakReference])
+                                           Ci.nsISupportsWeakReference]),
 };
--- a/accessible/tests/mochitest/actions.js
+++ b/accessible/tests/mochitest/actions.js
@@ -173,10 +173,10 @@ var gActionDescrMap =
   select: "Select",
   open: "Open",
   close: "Close",
   switch: "Switch",
   click: "Click",
   collapse: "Collapse",
   expand: "Expand",
   activate: "Activate",
-  cycle: "Cycle"
+  cycle: "Cycle",
 };
--- a/accessible/tests/mochitest/actions/test_anchors.html
+++ b/accessible/tests/mochitest/actions/test_anchors.html
@@ -38,37 +38,37 @@
     function doTest() {
       var actionsArray = [
         {
           ID: "anchor1",
           actionName: "jump",
           actionIndex: 0,
           events: CLICK_EVENTS,
           eventSeq: [
-            new scrollingChecker(getAccessible("bottom1"))
-          ]
+            new scrollingChecker(getAccessible("bottom1")),
+          ],
         },
         { // jump again (test for bug 437607)
           ID: "anchor1",
           actionName: "jump",
           actionIndex: 0,
           events: CLICK_EVENTS,
           eventSeq: [
-            new scrollingChecker(getAccessible("bottom1"))
-          ]
+            new scrollingChecker(getAccessible("bottom1")),
+          ],
         },
         {
           ID: "anchor2",
           actionName: "jump",
           actionIndex: 0,
           events: CLICK_EVENTS,
           eventSeq: [
-            new scrollingChecker(getAccessible("bottom2"))
-          ]
-        }
+            new scrollingChecker(getAccessible("bottom2")),
+          ],
+        },
       ];
 
       testActions(actionsArray);
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
--- a/accessible/tests/mochitest/actions/test_aria.html
+++ b/accessible/tests/mochitest/actions/test_aria.html
@@ -17,118 +17,118 @@
           src="../actions.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       var actionsArray = [
         {
           ID: "clickable",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "button",
           actionName: "press",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "checkbox_unchecked",
           actionName: "check",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "checkbox_checked",
           actionName: "uncheck",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "checkbox_mixed",
           actionName: "cycle",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "combobox_collapsed",
           actionName: "open",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "combobox_expanded",
           actionName: "close",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "link",
           actionName: "jump",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "menuitem",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "menuitemcheckbox",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "menuitemradio",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "option",
           actionName: "select",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "radio",
           actionName: "select",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "switch_unchecked",
           actionName: "check",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "switch_checked",
           actionName: "uncheck",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "tab",
           actionName: "switch",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "textbox",
           actionName: "activate",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "treeitem",
           actionName: "activate",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "sortable",
           actionName: "sort",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "expandable",
           actionName: "expand",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "collapseable",
           actionName: "collapse",
-          events: CLICK_EVENTS
-        }
+          events: CLICK_EVENTS,
+        },
       ];
       testActions(actionsArray);
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
 </head>
--- a/accessible/tests/mochitest/actions/test_controls.html
+++ b/accessible/tests/mochitest/actions/test_controls.html
@@ -21,53 +21,53 @@
           src="../actions.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       var actionsArray = [
         {
           ID: "button",
           actionName: "press",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "input_button",
           actionName: "press",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "checkbox_unchecked",
           actionName: "check",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "checkbox_checked",
           actionName: "uncheck",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "checkbox_mixed",
           actionName: "cycle",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "radio",
           actionName: "select",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "textarea",
           actionName: "activate",
-          events: FOCUS_EVENT
+          events: FOCUS_EVENT,
         },
         {
           ID: "textinput",
           actionName: "activate",
-          events: FOCUS_EVENT
-        }
+          events: FOCUS_EVENT,
+        },
 
       ];
       document.getElementById("checkbox_mixed").indeterminate = true;
 
       testActions(actionsArray);
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/actions/test_general.html
+++ b/accessible/tests/mochitest/actions/test_general.html
@@ -17,38 +17,38 @@
           src="../actions.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       var actionsArray = [
         {
           ID: "li_clickable1",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "li_clickable2",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "li_clickable3",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "onclick_img",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "label1",
           actionName: "click",
-          events: CLICK_EVENTS
-        }
+          events: CLICK_EVENTS,
+        },
 
       ];
 
       testActions(actionsArray);
 
       is(getAccessible("label1").firstChild.actionCount, 1, "label text should have 1 action");
 
       getAccessible("onclick_img").takeFocus();
--- a/accessible/tests/mochitest/actions/test_link.html
+++ b/accessible/tests/mochitest/actions/test_link.html
@@ -55,61 +55,61 @@
 
     function doTest() {
       var actionsArray = [
         {
           ID: "link1",
           actionName: "jump",
           events: CLICK_EVENTS,
           eventSeq: [
-            new linkChecker("link1")
-          ]
+            new linkChecker("link1"),
+          ],
         },
         {
           ID: "img1",
           targetID: "link1",
           actionName: "jump",
           events: CLICK_EVENTS,
           eventSeq: [
-            new linkChecker("link1")
-          ]
+            new linkChecker("link1"),
+          ],
         },
         {
           ID: "link2",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "img2",
           targetID: "link2",
           actionName: "jump",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "link3",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "img3",
           targetID: "link3",
           actionName: "jump",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "link4",
           actionName: "click",
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: "img4",
           targetID: "link4",
           actionName: "jump",
-          events: CLICK_EVENTS
-        }
+          events: CLICK_EVENTS,
+        },
       ];
       testActions(actionsArray);
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
 </head>
--- a/accessible/tests/mochitest/actions/test_media.html
+++ b/accessible/tests/mochitest/actions/test_media.html
@@ -81,35 +81,35 @@ https://bugzilla.mozilla.org/show_bug.cg
       var actions = [
         {
           ID: muteBtn,
           actionName: "press",
           eventTarget: "element",
           eventSeq: [
      //       new focusChecker(muteBtn),
             new nameChecker(muteBtn, "Unmute"),
-          ]
+          ],
         },
      //   {
      //     ID: scrubber,
      //     actionName: "activate",
      //     events: null,
      //     eventSeq: [
      //       new focusChecker(scrubber)
      //     ]
      //   },
         {
           ID: playBtn,
           actionName: "press",
           eventTarget: "element",
           eventSeq: [
      //       new focusChecker(playBtn),
             new nameChecker(playBtn, "Pause"),
-          ]
-        }
+          ],
+        },
       ];
 
       testActions(actions); // Will call SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(loadAudioSource);
   </script>
--- a/accessible/tests/mochitest/actions/test_select.html
+++ b/accessible/tests/mochitest/actions/test_select.html
@@ -25,55 +25,55 @@
     function doTest() {
       var actionsArray = [
         {
           ID: "lb_apple",
           actionIndex: 0,
           actionName: "select",
           events: CLICK_EVENTS,
           eventSeq: [
-            new focusChecker("lb_apple")
-          ]
+            new focusChecker("lb_apple"),
+          ],
         },
         {
           ID: "combobox",
           actionIndex: 0,
           actionName: "open",
           events: CLICK_EVENTS,
           eventSeq: [
-            new focusChecker("cb_orange")
-          ]
+            new focusChecker("cb_orange"),
+          ],
         },
         {
           ID: "cb_apple",
           actionIndex: 0,
           actionName: "select",
           events: CLICK_EVENTS,
           eventSeq: [
-            new focusChecker("combobox")
-          ]
+            new focusChecker("combobox"),
+          ],
         },
         {
           ID: "combobox",
           actionIndex: 0,
           actionName: "open",
           events: CLICK_EVENTS,
           eventSeq: [
-            new focusChecker("cb_apple")
-          ]
+            new focusChecker("cb_apple"),
+          ],
         },
         {
           ID: "combobox",
           actionIndex: 0,
           actionName: "close",
           events: CLICK_EVENTS,
           eventSeq: [
-            new focusChecker("combobox")
-          ]
-        }
+            new focusChecker("combobox"),
+          ],
+        },
       ];
 
       testActions(actionsArray);
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
--- a/accessible/tests/mochitest/aom/test_general.html
+++ b/accessible/tests/mochitest/aom/test_general.html
@@ -100,27 +100,27 @@
     is(anode.DOMNode, ifrDoc, "correct DOM Node of a document accessible node");
 
     // States may differ depending on the document state, for example, if it is
     // loaded or is loading still.
     var states = null;
     switch (anode.states.length) {
       case 5:
         states = [
-          "readonly", "focusable", "opaque", "enabled", "sensitive"
+          "readonly", "focusable", "opaque", "enabled", "sensitive",
         ];
         break;
       case 6:
         states = [
-          "readonly", "busy", "focusable", "opaque", "enabled", "sensitive"
+          "readonly", "busy", "focusable", "opaque", "enabled", "sensitive",
         ];
         break;
       case 7:
         states = [
-          "readonly", "busy", "focusable", "opaque", "stale", "enabled", "sensitive"
+          "readonly", "busy", "focusable", "opaque", "stale", "enabled", "sensitive",
         ];
         break;
       default:
         ok(false, "Unexpected amount of states");
     }
     if (states) {
       for (let i = 0; i < states.length; i++) {
         is(anode.states[i], states[i], `${states[i]} state is expected at ${i}th index`);
@@ -136,17 +136,17 @@
     ok(anode.has("explicit-name"),
        "object attributes are present");
 
     var attrs = [ "explicit-name" ];
     if (anode.attributes.length > 1) {
       attrs = [
         "margin-left", "text-align", "text-indent", "margin-right",
         "tag", "margin-top", "margin-bottom", "display",
-        "explicit-name"
+        "explicit-name",
       ];
     }
 
     is(anode.attributes.length, attrs.length, "correct number of attributes");
     for (let i = 0; i < attrs.length; i++) {
       ok(attrs.includes(anode.attributes[i]),
          `${anode.attributes[i]} attribute is expected and found`);
     }
--- a/accessible/tests/mochitest/attributes.js
+++ b/accessible/tests/mochitest/attributes.js
@@ -54,33 +54,33 @@ function testCSSAttrs(aID) {
 
   var attrs = {
     "display": computedStyle.display,
     "text-align": computedStyle.textAlign,
     "text-indent": computedStyle.textIndent,
     "margin-left": computedStyle.marginLeft,
     "margin-right": computedStyle.marginRight,
     "margin-top": computedStyle.marginTop,
-    "margin-bottom": computedStyle.marginBottom
+    "margin-bottom": computedStyle.marginBottom,
   };
   testAttrs(aID, attrs, true);
 }
 
 /**
  * Test the accessible that it doesn't have CSS-based object attributes.
  */
 function testAbsentCSSAttrs(aID) {
   var attrs = {
     "display": "",
     "text-align": "",
     "text-indent": "",
     "margin-left": "",
     "margin-right": "",
     "margin-top": "",
-    "margin-bottom": ""
+    "margin-bottom": "",
   };
   testAbsentAttrs(aID, attrs);
 }
 
 /**
  * Test group object attributes (posinset, setsize and level) and
  * nsIAccessible::groupPosition() method.
  *
@@ -97,17 +97,17 @@ function testGroupAttrs(aAccOrElmOrID, a
   if (aPosInSet && aSetSize) {
     is(posInSetObj.value, aPosInSet,
        "Wrong group position (posinset) for " + prettyName(aAccOrElmOrID));
     is(setSizeObj.value, aSetSize,
        "Wrong size of the group (setsize) for " + prettyName(aAccOrElmOrID));
 
     let attrs = {
       "posinset": String(aPosInSet),
-      "setsize": String(aSetSize)
+      "setsize": String(aSetSize),
     };
     testAttrs(aAccOrElmOrID, attrs, true);
   }
 
   if (aLevel) {
     is(levelObj.value, aLevel,
        "Wrong group level for " + prettyName(aAccOrElmOrID));
 
@@ -294,17 +294,17 @@ function buildDefaultTextAttrs(aID, aFon
 
   var defAttrs = {
     "font-style": computedStyle.fontStyle,
     "font-size": aFontSize,
     "background-color": bgColor,
     "font-weight": aFontWeight ? aFontWeight : kNormalFontWeight,
     "color": computedStyle.color,
     "font-family": aFontFamily ? aFontFamily : fontFamily(computedStyle),
-    "text-position": computedStyle.verticalAlign
+    "text-position": computedStyle.verticalAlign,
   };
 
   return defAttrs;
 }
 
 // //////////////////////////////////////////////////////////////////////////////
 // Private.
 
--- a/accessible/tests/mochitest/attributes/test_dpub_aria_xml-roles.html
+++ b/accessible/tests/mochitest/attributes/test_dpub_aria_xml-roles.html
@@ -53,17 +53,17 @@
         "doc-pagelist",
         "doc-part",
         "doc-preface",
         "doc-prologue",
         "doc-pullquote",
         "doc-qna",
         "doc-subtitle",
         "doc-tip",
-        "doc-toc"
+        "doc-toc",
       ];
       for (let attr of dpub_attrs) {
         testAttrs(attr, {"xml-roles": attr}, true);
       }
       SimpleTest.finish();
     }
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/attributes/test_graphics_aria_xml-roles.html
+++ b/accessible/tests/mochitest/attributes/test_graphics_aria_xml-roles.html
@@ -17,17 +17,17 @@
 
   <script type="application/javascript">
 
     function doTest() {
       // Graphics ARIA roles should be exposed via the xml-roles object attribute.
       let graphics_attrs = [
         "graphics-document",
         "graphics-object",
-        "graphics-symbol"
+        "graphics-symbol",
       ];
       for (let attr of graphics_attrs) {
         testAttrs(attr, {"xml-roles": attr}, true);
       }
       SimpleTest.finish();
     }
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/attributes/test_obj.html
+++ b/accessible/tests/mochitest/attributes/test_obj.html
@@ -130,17 +130,17 @@ https://bugzilla.mozilla.org/show_bug.cg
       // don't barf on an empty abbr element.
       testAbsentAttrs("th3", { "abbr": "" }, true);
 
       // application accessible
       if (WIN) {
         var gfxInfo = Cc["@mozilla.org/gfx/info;1"].
           getService(Ci.nsIGfxInfo);
         var attrs = {
-          "D2D": (gfxInfo.D2DEnabled ? "true" : "false")
+          "D2D": (gfxInfo.D2DEnabled ? "true" : "false"),
         };
         testAttrs(getApplicationAccessible(), attrs, false);
       }
 
       // no object attributes
       testAbsentAttrs(getAccessible("listitem").firstChild, { "tag": "" });
 
       // experimental aria
--- a/accessible/tests/mochitest/attributes/test_obj_css.html
+++ b/accessible/tests/mochitest/attributes/test_obj_css.html
@@ -17,17 +17,17 @@
   <script type="application/javascript">
     var gQueue = null;
 
     function removeElm(aID) {
       this.node = getNode(aID);
       this.accessible = getAccessible(aID);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_HIDE, this.accessible)
+        new invokerChecker(EVENT_HIDE, this.accessible),
       ];
 
       this.invoke = function removeElm_invoke() {
         this.node.remove();
       };
 
       this.check = function removeElm_check() {
         testAbsentCSSAttrs(this.accessible);
--- a/accessible/tests/mochitest/autocomplete.js
+++ b/accessible/tests/mochitest/autocomplete.js
@@ -80,17 +80,17 @@ ResultsHeap.prototype =
     var values = [], comments = [];
     for (var idx = 0; idx < this.values.length; idx++) {
       if (this.values[idx].includes(aSearchString)) {
         values.push(this.values[idx]);
         comments.push(this.comments[idx]);
       }
     }
     return new AutoCompleteResult(values, comments);
-  }
+  },
 };
 
 
 /**
  * nsIAutoCompleteSearch implementation.
  *
  * @param aName       [in] the name of autocomplete search
  * @param aAllResults [in] ResultsHeap object
@@ -119,17 +119,17 @@ AutoCompleteSearch.prototype =
   createInstance(outer, iid) {
     return this.QueryInterface(iid);
   },
 
   // Search name. Used by AutoCompleteController.
   name: null,
 
   // Results heap.
-  allResults: null
+  allResults: null,
 };
 
 
 /**
  * nsIAutoCompleteResult implementation.
  */
 function AutoCompleteResult(aValues, aComments) {
   this.values = aValues;
@@ -180,10 +180,10 @@ AutoCompleteResult.prototype =
 
   removeValueAt(aRowIndex, aRemoveFromDb) {},
 
   // nsISupports implementation
   QueryInterface: ChromeUtils.generateQI(["nsIAutoCompleteResult"]),
 
   // Data
   values: null,
-  comments: null
+  comments: null,
 };
--- a/accessible/tests/mochitest/bounds/test_select.html
+++ b/accessible/tests/mochitest/bounds/test_select.html
@@ -21,17 +21,17 @@
 
   <script type="application/javascript">
     function openComboboxNCheckBounds(aID) {
       this.combobox = getAccessible(aID);
       this.comboboxList = this.combobox.firstChild;
       this.comboboxOption = this.comboboxList.firstChild;
 
       this.eventSeq = [
-        new invokerChecker(EVENT_FOCUS, this.comboboxOption)
+        new invokerChecker(EVENT_FOCUS, this.comboboxOption),
       ];
 
       this.invoke = function openComboboxNCheckBounds_invoke() {
         getNode(aID).focus();
         synthesizeKey("VK_DOWN", { altKey: true });
       };
 
       this.finalCheck = function openComboboxNCheckBounds_invoke() {
--- a/accessible/tests/mochitest/browser.js
+++ b/accessible/tests/mochitest/browser.js
@@ -92,17 +92,17 @@ function reloadButton() {
 // private section
 
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 
 var gBrowserContext =
 {
   browserWnd: null,
   testFunc: null,
-  startURL: ""
+  startURL: "",
 };
 
 function openBrowserWindowIntl() {
   var params = "chrome,all,dialog=no,non-remote";
   var rect = gBrowserContext.browserRect;
   if (rect) {
     if ("left" in rect)
       params += ",left=" + rect.left;
--- a/accessible/tests/mochitest/common.js
+++ b/accessible/tests/mochitest/common.js
@@ -924,13 +924,13 @@ function getTestPluginTag(aPluginName) {
 }
 
 function normalizeAccTreeObj(aObj) {
   var key = Object.keys(aObj)[0];
   var roleName = "ROLE_" + key;
   if (roleName in nsIAccessibleRole) {
     return {
       role: nsIAccessibleRole[roleName],
-      children: aObj[key]
+      children: aObj[key],
     };
   }
   return aObj;
 }
--- a/accessible/tests/mochitest/editabletext/editabletext.js
+++ b/accessible/tests/mochitest/editabletext/editabletext.js
@@ -32,17 +32,17 @@ function editableTextTest(aID) {
    * Schedule a test, the given function with its arguments will be executed
    * when preceding test is complete.
    */
   this.scheduleTest = function scheduleTest(aFunc) {
     // A data container acts like a dummy invoker, it's never invoked but
     // it's used to generate real invoker when previous invoker was handled.
     var dataContainer = {
       func: aFunc,
-      funcArgs: Array.slice(arguments, 1)
+      funcArgs: Array.slice(arguments, 1),
     };
     this.mEventQueue.push(dataContainer);
 
     if (!this.mEventQueueReady) {
       this.unwrapNextTest();
       this.mEventQueueReady = true;
     }
   };
@@ -212,26 +212,26 @@ function editableTextTest(aID) {
 
   /**
    * Common checkers.
    */
   function getValueChecker(aValue) {
     var checker = {
       check: function valueChecker_check() {
         is(getValue(), aValue, "Wrong value " + aValue);
-      }
+      },
     };
     return checker;
   }
 
   function getClipboardChecker(aText) {
     var checker = {
       check: function clipboardChecker_check() {
         is(getTextFromClipboard(), aText, "Wrong text in clipboard.");
-      }
+      },
     };
     return checker;
   }
 
   /**
    * Process next scheduled test.
    */
   this.unwrapNextTest = function unwrapNextTest() {
@@ -251,17 +251,17 @@ function editableTextTest(aID) {
 
       invoke: aInvokeFunc,
       finalCheck: function finalCheck() {
         // dumpTree(aID, `'${aID}' tree:`);
 
         aChecker.check();
         et.unwrapNextTest(); // replace dummy invoker on real invoker object.
       },
-      getID: function getID() { return aInvokerID; }
+      getID: function getID() { return aInvokerID; },
     };
 
     if (aRemoveTriple) {
       let checker = new textChangeChecker(aID, aRemoveTriple[0],
                                           aRemoveTriple[1], aRemoveTriple[2],
                                           false);
       invoker.eventSeq.push(checker);
     }
--- a/accessible/tests/mochitest/elm/test_HTMLSpec.html
+++ b/accessible/tests/mochitest/elm/test_HTMLSpec.html
@@ -32,52 +32,52 @@
         role: ROLE_LINK,
         states: STATE_LINKED,
         actions: "jump",
         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText, nsIAccessibleHyperLink ],
         children: [ // all kids inherits linked state and jump action
           {
             role: ROLE_TEXT_LEAF,
             states: STATE_LINKED,
-            actions: "jump"
-          }
-        ]
+            actions: "jump",
+          },
+        ],
       };
       testElm("a_href", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:a no @href
 
       obj = {
         todo_role: ROLE_TEXT_CONTAINER,
         absentStates: STATE_LINKED,
         actions: null,
         children: [
           {
             role: ROLE_TEXT_LEAF,
             absentStates: STATE_LINKED,
-            actions: null
-          }
-        ]
+            actions: null,
+          },
+        ],
       };
       testElm("a_nohref", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:abbr contained by HTML:td
 
       obj = {
         role: ROLE_CELL,
         attributes: { abbr: "WWW" },
         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
         children: [
           {
             role: ROLE_TEXT,
-            children: [ { role: ROLE_TEXT_LEAF } ]
-          }
-        ]
+            children: [ { role: ROLE_TEXT_LEAF } ],
+          },
+        ],
       };
       testElm("td_abbr", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:address
 
       obj = {
         role: ROLE_TEXT_CONTAINER,
@@ -88,27 +88,27 @@
       // ////////////////////////////////////////////////////////////////////////
       // HTML:area@href
 
       obj = {
         role: ROLE_LINK,
         states: STATE_LINKED,
         actions: "jump",
         interfaces: [ nsIAccessibleHyperLink ],
-        children: []
+        children: [],
       };
       testElm(getAccessible("imgmap").firstChild, obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:area no @href
 
       obj = {
         todo_role: "ROLE_SHAPE",
         absentStates: STATE_LINKED,
-        children: []
+        children: [],
       };
       testElm(getAccessible("imgmap").lastChild, obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:article
       obj = {
         role: ROLE_ARTICLE,
         states: STATE_READONLY,
@@ -116,215 +116,215 @@
       };
       testElm("article", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:aside
       obj = {
         role: ROLE_NOTE,
         attributes: { "xml-roles": "complementary" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("aside", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       obj = { // HTML:audio
-        role: ROLE_GROUPING
+        role: ROLE_GROUPING,
       };
       testElm("audio", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       obj = { // HTML:b contained by paragraph
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-weight": kBoldFontWeight }
+          6: { "font-weight": kBoldFontWeight },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:b text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:b text
+        ],
       };
       testElm("b_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       obj = { // HTML:bdi contained by paragraph
         role: ROLE_PARAGRAPH,
         todo_textAttrs: {
           0: { },
           5: { "writing-mode": "rl" },
-          8: { }
+          8: { },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
           { role: ROLE_TEXT_LEAF }, // HTML:bdi text
-          { role: ROLE_TEXT_LEAF } // plain text
-        ]
+          { role: ROLE_TEXT_LEAF }, // plain text
+        ],
       };
       testElm("bdi_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:bdo contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         todo_textAttrs: {
           0: { },
-          6: { "writing-mode": "rl" }
+          6: { "writing-mode": "rl" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-        ]
+        ],
       };
       testElm("bdo_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:blockquote
 
       obj = {
         role: ROLE_BLOCKQUOTE,
         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
-        children: [ { role: ROLE_PARAGRAPH } ]
+        children: [ { role: ROLE_PARAGRAPH } ],
       };
       testElm("blockquote", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:br contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
-        children: [ { role: ROLE_WHITESPACE } ]
+        children: [ { role: ROLE_WHITESPACE } ],
       };
       testElm("br_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       obj = { // HTML:button
         role: ROLE_PUSHBUTTON,
         absentStates: STATE_DEFAULT,
         actions: "press",
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("button", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:button@type="submit" (default button)
 
       obj = {
         role: ROLE_PUSHBUTTON,
         states: STATE_DEFAULT,
-        actions: "press"
+        actions: "press",
       };
       testElm("button_default", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:canvas
 
       obj = {
-        role: ROLE_CANVAS
+        role: ROLE_CANVAS,
       };
       testElm("canvas", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:caption under table
 
       obj = {
         role: ROLE_TABLE,
         relations: {
-          RELATION_LABELLED_BY: "caption"
+          RELATION_LABELLED_BY: "caption",
         },
         interfaces: nsIAccessibleTable,
         children: [
           {
             role: ROLE_CAPTION,
             relations: {
-              RELATION_LABEL_FOR: "table"
+              RELATION_LABEL_FOR: "table",
             },
-            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
           },
           { // td inside thead
             role: ROLE_ROW,
             children: [
               {
                 role: ROLE_COLUMNHEADER,
-                interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ]
+                interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ],
               },
-              { role: ROLE_COLUMNHEADER }
-            ]
+              { role: ROLE_COLUMNHEADER },
+            ],
           },
           { // td inside tbody
             role: ROLE_ROW,
             children: [
               {
                 role: ROLE_ROWHEADER,
-                interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ]
+                interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ],
               },
               {
                 role: ROLE_CELL,
-                interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ]
-              }
-            ]
+                interfaces: [ nsIAccessibleTableCell, nsIAccessibleText, nsIAccessibleHyperText ],
+              },
+            ],
           },
           { // td inside tfoot
-            role: ROLE_ROW
-          }
-        ]
+            role: ROLE_ROW,
+          },
+        ],
       };
       testElm("table", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:cite contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-style": "italic" }
+          6: { "font-style": "italic" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:cite text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:cite text
+        ],
       };
       testElm("cite_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:code contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-family": kMonospaceFontFamily }
+          6: { "font-family": kMonospaceFontFamily },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:code text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:code text
+        ],
       };
       testElm("code_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:col and HTML:colgroup under table
 
       obj =
         { TABLE: [
           { ROW: [
             { role: ROLE_CELL },
             { role: ROLE_CELL },
-            { role: ROLE_CELL }
-          ] }
+            { role: ROLE_CELL },
+          ] },
         ] };
       testElm("colNcolgroup_table", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:data contained by paragraph
 
       obj =
         { PARAGRAPH: [
-          { TEXT_LEAF: [] } // HTML:data text
+          { TEXT_LEAF: [] }, // HTML:data text
         ] };
       testElm("data_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:datalist associated with input
 
       todo(false, "datalist and summary tree hierarchy test missed");
 
@@ -335,199 +335,199 @@
         role: ROLE_DEFINITION_LIST,
         states: STATE_READONLY,
         children: [ // dl
           {
             role: ROLE_TERM,
             states: STATE_READONLY,
             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
             children: [ // dt
-              { role: ROLE_TEXT_LEAF }
-            ]
+              { role: ROLE_TEXT_LEAF },
+            ],
           },
           {
             role: ROLE_DEFINITION,
             interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
             children: [ // dd
-              { role: ROLE_TEXT_LEAF }
-            ]
-          }
-        ]
+              { role: ROLE_TEXT_LEAF },
+            ],
+          },
+        ],
       };
       testElm("dl", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:del contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_CONTENT_DELETION  }
-        ]
+          { role: ROLE_CONTENT_DELETION  },
+        ],
       };
       testElm("del_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:details with open state
 
       obj = {
         role: ROLE_DETAILS,
         children: [
           {
             role: ROLE_SUMMARY,
             states: STATE_EXPANDED,
-            actions: "collapse"
+            actions: "collapse",
          },
-         { role: ROLE_PARAGRAPH }
-        ]
+         { role: ROLE_PARAGRAPH },
+        ],
       };
       testElm("details", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:details with closed (default) state
 
       obj = {
         role: ROLE_DETAILS,
         children: [
           {
             role: ROLE_SUMMARY,
             states: STATE_COLLAPSED,
-            actions: "expand"
-         }
-        ]
+            actions: "expand",
+         },
+        ],
       };
       testElm("details_closed", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:dfn contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { "font-style": "italic" },
-          12: { }
+          12: { },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // HTML:dfn text
-          { role: ROLE_TEXT_LEAF } // plain text
-        ]
+          { role: ROLE_TEXT_LEAF }, // plain text
+        ],
       };
       testElm("dfn_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:dialog
 
       ok(isAccessible("dialog"), "dialog element is not accessible");
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:div
 
       obj = {
         role: ROLE_SECTION,
         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
         children: [
-          { role: ROLE_TEXT_LEAF } // plain text
-        ]
+          { role: ROLE_TEXT_LEAF }, // plain text
+        ],
       };
       testElm("div", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:em in a paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-style": "italic" }
+          6: { "font-style": "italic" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:em text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:em text
+        ],
       };
       testElm("em_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:embed (windowless and windowed plugins)
 
       if (WIN) {
         obj = {
           role: ROLE_EMBEDDED_OBJECT,
-          states: STATE_UNAVAILABLE
+          states: STATE_UNAVAILABLE,
         };
 
         testElm("embed_plugin_windowless", obj);
 
         obj = {
           role: ROLE_EMBEDDED_OBJECT,
-          absentStates: STATE_UNAVAILABLE
+          absentStates: STATE_UNAVAILABLE,
         };
         testElm("embed_plugin_windowed", obj);
       }
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:fieldset and HTML:legend
 
       obj = {
         role: ROLE_GROUPING,
         relations: {
-          RELATION_LABELLED_BY: "legend"
+          RELATION_LABELLED_BY: "legend",
         },
         children: [
           {
             role: ROLE_LABEL,
             relations: {
-              RELATION_LABEL_FOR: "fieldset"
+              RELATION_LABEL_FOR: "fieldset",
             },
-            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
           },
           {
-            role: ROLE_ENTRY
-          }
-        ]
+            role: ROLE_ENTRY,
+          },
+        ],
       };
       testElm("fieldset", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:figure and HTML:figcaption
 
       obj = {
         role: ROLE_FIGURE,
         attributes: { "xml-roles": "figure" },
         relations: {
-          RELATION_LABELLED_BY: "figcaption"
+          RELATION_LABELLED_BY: "figcaption",
         },
         children: [
           { role: ROLE_GRAPHIC },
           {
             role: ROLE_CAPTION,
             relations: {
-              RELATION_LABEL_FOR: "figure"
+              RELATION_LABEL_FOR: "figure",
             },
-            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
-          }
-        ]
+            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
+          },
+        ],
       };
       testElm("figure", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:footer
 
       obj = {
         role: ROLE_FOOTER,
         attributes: { "xml-roles": "contentinfo" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("footer", obj);
 
       obj = {
         role: ROLE_SECTION,
         absentAttributes: { "xml-roles": "contentinfo" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("footer_in_article", obj);
       testElm("footer_in_aside", obj);
       testElm("footer_in_nav", obj);
       testElm("footer_in_section", obj);
       testElm("footer_in_blockquote", obj);
       testElm("footer_in_details", obj);
       testElm("footer_in_dialog", obj);
@@ -535,101 +535,101 @@
       testElm("footer_in_figure", obj);
       testElm("footer_in_td", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:form
 
       obj = {
         role: ROLE_FORM,
-        absentAttributes: { "xml-roles": "form" }
+        absentAttributes: { "xml-roles": "form" },
       };
       testElm("form", obj);
 
       // HTML:form with an accessible name
 
       obj = {
         role: ROLE_FORM,
-        attributes: { "xml-roles": "form" }
+        attributes: { "xml-roles": "form" },
       };
       testElm("named_form", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // // HTML:frameset, HTML:frame and HTML:iframe
 
       obj = {
         INTERNAL_FRAME: [ { // HTML:iframe
           DOCUMENT: [ {
             INTERNAL_FRAME: [ { // HTML:frame
-              DOCUMENT: [ { role: ROLE_TEXT_LEAF} ]
-            } ]
-          } ]
-        } ]
+              DOCUMENT: [ { role: ROLE_TEXT_LEAF} ],
+            } ],
+          } ],
+        } ],
       };
       testElm("frameset_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:h1, HTML:h2, HTML:h3, HTML:h4, HTML:h5, HTML:h6
 
       obj = {
         role: ROLE_HEADING,
         attributes: { "level": "1" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("h1", obj);
 
       obj = {
         role: ROLE_HEADING,
         attributes: { "level": "2" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("h2", obj);
 
       obj = {
         role: ROLE_HEADING,
         attributes: { "level": "3" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("h3", obj);
 
       obj = {
         role: ROLE_HEADING,
         attributes: { "level": "4" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("h4", obj);
 
       obj = {
         role: ROLE_HEADING,
         attributes: { "level": "5" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("h5", obj);
 
       obj = {
         role: ROLE_HEADING,
         attributes: { "level": "6" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("h6", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:header
 
       obj = {
         role: ROLE_HEADER,
         attributes: { "xml-roles": "banner" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("header", obj);
 
       obj = {
         role: ROLE_SECTION,
         absentAttributes: { "xml-roles": "banner" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("header_in_article", obj);
       testElm("header_in_aside", obj);
       testElm("header_in_nav", obj);
       testElm("header_in_section", obj);
       testElm("header_in_blockquote", obj);
       testElm("header_in_details", obj);
       testElm("header_in_dialog", obj);
@@ -645,87 +645,87 @@
       };
       testElm("hr", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       obj = { // HTML:i contained by paragraph
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-style": "italic" }
+          6: { "font-style": "italic" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:i text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:i text
+        ],
       };
       testElm("i_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:img
 
       obj = {
         role: ROLE_GRAPHIC,
-        interfaces: [ nsIAccessibleImage ]
+        interfaces: [ nsIAccessibleImage ],
       };
       testElm("img", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="button"
 
       obj = {
         role: ROLE_PUSHBUTTON,
-        absentStates: STATE_DEFAULT
+        absentStates: STATE_DEFAULT,
       };
       testElm("input_button", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="checkbox"
 
       obj = {
         role: ROLE_CHECKBUTTON,
         states: STATE_CHECKABLE,
         absentStates: STATE_CHECKED,
-        actions: "check"
+        actions: "check",
       };
       testElm("input_checkbox", obj);
 
       obj = {
         role: ROLE_CHECKBUTTON,
         states: STATE_CHECKABLE | STATE_CHECKED,
-        actions: "uncheck"
+        actions: "uncheck",
       };
       testElm("input_checkbox_true", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="file"
 
       obj = {
         TEXT_CONTAINER: [
           { role: ROLE_PUSHBUTTON },
-          { role: ROLE_LABEL }
-        ]
+          { role: ROLE_LABEL },
+        ],
       };
       testElm("input_file", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="image"
 
       obj = {
         role: ROLE_PUSHBUTTON,
         absentStates: STATE_DEFAULT,
-        actions: "press"
+        actions: "press",
       };
       testElm("input_image", obj);
       testElm("input_submit", obj);
 
       obj = {
         role: ROLE_PUSHBUTTON,
         actions: "press",
-        states: STATE_DEFAULT
+        states: STATE_DEFAULT,
       };
       testElm("input_image_default", obj);
       testElm("input_submit_default", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="number" and etc
 
       obj = {
@@ -733,42 +733,42 @@
         interfaces: [ nsIAccessibleValue ],
         children: [
           {
             role: ROLE_ENTRY,
             extraStates: EXT_STATE_EDITABLE | EXT_STATE_SINGLE_LINE,
             actions: "activate",
             interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ],
             children: [
-              { role: ROLE_TEXT_LEAF }
-            ]
+              { role: ROLE_TEXT_LEAF },
+            ],
           },
           {
             role: ROLE_PUSHBUTTON,
-            actions: "press"
+            actions: "press",
           },
           {
             role: ROLE_PUSHBUTTON,
-            actions: "press"
-          }
-        ]
+            actions: "press",
+          },
+        ],
       };
       testElm("input_number", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="text" and etc
 
       obj = {
         role: ROLE_ENTRY,
         extraStates: EXT_STATE_EDITABLE | EXT_STATE_SINGLE_LINE,
         actions: "activate",
         interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ],
         children: [
-          { role: ROLE_TEXT_LEAF }
-        ]
+          { role: ROLE_TEXT_LEAF },
+        ],
       };
       testElm("input_email", obj);
       testElm("input_search", obj);
       testElm("input_tel", obj);
       testElm("input_text", obj);
       testElm("input_url", obj);
 
       // ////////////////////////////////////////////////////////////////////////
@@ -776,471 +776,471 @@
 
       obj = {
         role: ROLE_PASSWORD_TEXT,
         states: STATE_PROTECTED,
         extraStates: EXT_STATE_EDITABLE,
         actions: "activate",
         children: [
         {
-            role: ROLE_TEXT_LEAF
-          }
-        ]
+            role: ROLE_TEXT_LEAF,
+          },
+        ],
       };
       testElm("input_password", obj);
       ok(getAccessible("input_password").firstChild.name != "44",
          "text leaf for password shouldn't have its real value as its name!");
 
       obj = {
         role: ROLE_PASSWORD_TEXT,
         states: STATE_PROTECTED | STATE_READONLY,
         actions: "activate",
         children: [
         {
-            role: ROLE_TEXT_LEAF
-          }
-        ]
+            role: ROLE_TEXT_LEAF,
+          },
+        ],
       };
       testElm("input_password_readonly", obj);
       ok(getAccessible("input_password_readonly").firstChild.name != "44",
          "text leaf for password shouldn't have its real value as its name!");
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="radio"
 
       obj = {
         role: ROLE_RADIOBUTTON,
         states: STATE_CHECKABLE,
         absentStates: STATE_CHECKED,
-        actions: "select"
+        actions: "select",
       };
       testElm("input_radio", obj);
 
       obj = {
         role: ROLE_RADIOBUTTON,
         states: STATE_CHECKABLE | STATE_CHECKED,
-        actions: "select"
+        actions: "select",
       };
       testElm("input_radio_true", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="range"
 
       obj = {
-        role: ROLE_SLIDER
+        role: ROLE_SLIDER,
       };
       testElm("input_range", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="reset"
 
       obj = {
         role: ROLE_PUSHBUTTON,
         actions: "press",
-        absentStates: STATE_DEFAULT
+        absentStates: STATE_DEFAULT,
       };
       testElm("input_reset", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="time"
 
       obj = {
         role: ROLE_GROUPING,
         children: [
           { role: ROLE_SPINBUTTON },
           { role: ROLE_TEXT_LEAF },
           { role: ROLE_SPINBUTTON },
           { role: ROLE_TEXT_LEAF },
           { role: ROLE_ENTRY },
-          { role: ROLE_PUSHBUTTON }
-        ]
+          { role: ROLE_PUSHBUTTON },
+        ],
       };
       testElm("input_time", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:input@type="date"
 
       obj = {
         role: ROLE_DATE_EDITOR,
         children: [
           { role: ROLE_SPINBUTTON },
           { role: ROLE_TEXT_LEAF },
           { role: ROLE_SPINBUTTON },
           { role: ROLE_TEXT_LEAF },
           { role: ROLE_SPINBUTTON },
-          { role: ROLE_PUSHBUTTON }
-        ]
+          { role: ROLE_PUSHBUTTON },
+        ],
       };
       testElm("input_date", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:ins contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_CONTENT_INSERTION  }
-        ]
+          { role: ROLE_CONTENT_INSERTION  },
+        ],
       };
       testElm("ins_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:kbd contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-family": kMonospaceFontFamily }
+          6: { "font-family": kMonospaceFontFamily },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:kbd text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:kbd text
+        ],
       };
       testElm("kbd_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:keygen
 
       obj = {
         role: ROLE_COMBOBOX,
         states: STATE_COLLAPSED | STATE_HASPOPUP,
         extraStates: EXT_STATE_EXPANDABLE,
         actions: "open",
         children: [
           { COMBOBOX_LIST: [
             { role: ROLE_COMBOBOX_OPTION }, // high grade
-            { role: ROLE_COMBOBOX_OPTION } // medium grade
-          ] }
-        ]
+            { role: ROLE_COMBOBOX_OPTION }, // medium grade
+          ] },
+        ],
       };
       testElm("keygen", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:label
 
       obj = {
         role: ROLE_LABEL,
         todo_relations: {
-          RELATION_LABEL_FOR: "label_input"
+          RELATION_LABEL_FOR: "label_input",
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
           {
             role: ROLE_ENTRY,
             relations: {
-              RELATION_LABELLED_BY: "label"
-            }
-          }
-        ]
+              RELATION_LABELLED_BY: "label",
+            },
+          },
+        ],
       };
       testElm("label", obj);
 
       obj = {
         role: ROLE_LABEL,
         relations: {
-          RELATION_LABEL_FOR: "label_for_input"
-        }
+          RELATION_LABEL_FOR: "label_for_input",
+        },
       };
       testElm("label_for", obj);
 
       obj = {
         role: ROLE_ENTRY,
         relations: {
-          RELATION_LABELLED_BY: "label_for"
-        }
+          RELATION_LABELLED_BY: "label_for",
+        },
       };
       testElm("label_for_input", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:ul, HTML:ol, HTML:li
 
       obj = { // ul or ol
         role: ROLE_LIST,
         states: STATE_READONLY,
         children: [
           { // li
             role: ROLE_LISTITEM,
             states: STATE_READONLY,
-            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
-          }
-        ]
+            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
+          },
+        ],
       };
       testElm("ul", obj);
       testElm("ol", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:link
 
       ok(!isAccessible("link"), "link element is not accessible");
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:main
 
       obj = {
         todo_role: ROLE_GROUPING,
         attributes: { "xml-roles": "main" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("main", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:map
 
       ok(!isAccessible("map_imagemap"),
          "map element is not accessible if used as an image map");
 
       obj = {
-        role: ROLE_TEXT_CONTAINER
+        role: ROLE_TEXT_CONTAINER,
       };
       testElm("map", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:mark contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "background-color": "rgb(255, 255, 0)" }
+          6: { "background-color": "rgb(255, 255, 0)" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:mark text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:mark text
+        ],
       };
       testElm("mark_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:math
 
       obj = {
-        role: ROLE_MATHML_MATH
+        role: ROLE_MATHML_MATH,
       };
       testElm("math", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:menu
 
       obj = {
-        todo_role: ROLE_MENUPOPUP
+        todo_role: ROLE_MENUPOPUP,
       };
       testElm("menu", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:meter
 
       todo(isAccessible("meter"), "meter element is not accessible");
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:nav
 
       obj = {
         role: ROLE_SECTION,
         attributes: { "xml-roles": "navigation" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("nav", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:object (windowless and windowed plugins) and HTML:param
 
       if (WIN) {
         obj = {
           role: ROLE_EMBEDDED_OBJECT,
           states: STATE_UNAVAILABLE,
-          children: [ ] // no child for HTML:param
+          children: [ ], // no child for HTML:param
         };
         testElm("object_plugin_windowless", obj);
 
         obj = {
           role: ROLE_EMBEDDED_OBJECT,
-          absentStates: STATE_UNAVAILABLE
+          absentStates: STATE_UNAVAILABLE,
         };
         testElm("object_plugin_windowed", obj);
       }
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:select, HTML:optgroup and HTML:option
 
       obj = { // HMTL:select@size > 1
         role: ROLE_LISTBOX,
         states: STATE_FOCUSABLE,
         absentStates: STATE_MULTISELECTABLE,
         interfaces: [ nsIAccessibleSelectable ],
         children: [
           { GROUPING: [ // HTML:optgroup
             { role: ROLE_STATICTEXT },
             { role: ROLE_OPTION }, // HTML:option
-            { role: ROLE_OPTION }
+            { role: ROLE_OPTION },
           ] },
           {
             role: ROLE_OPTION,
             states: STATE_FOCUSABLE,
             actions: "select",
-            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
-          }
-        ]
+            interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
+          },
+        ],
       };
       testElm("select_listbox", obj);
 
       obj = { // HTML:select@multiple
         role: ROLE_LISTBOX,
         states: STATE_FOCUSABLE | STATE_MULTISELECTABLE,
         children: [
           { role: ROLE_OPTION },
           { role: ROLE_OPTION },
-          { role: ROLE_OPTION }
-        ]
+          { role: ROLE_OPTION },
+        ],
       };
       testElm("select_listbox_multiselectable", obj);
 
       obj = { // HTML:select
         role: ROLE_COMBOBOX,
         states: STATE_FOCUSABLE,
         children: [
           {
             role: ROLE_COMBOBOX_LIST,
             children: [
               { role: ROLE_COMBOBOX_OPTION },
               { role: ROLE_COMBOBOX_OPTION },
-              { role: ROLE_COMBOBOX_OPTION }
-            ]
-          }
-        ]
+              { role: ROLE_COMBOBOX_OPTION },
+            ],
+          },
+        ],
       };
       testElm("select_combobox", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:output
 
       obj = {
         role: ROLE_SECTION,
         attributes: { "live": "polite" },
         todo_relations: {
-          RELATION_CONTROLLED_BY: "output_input"
+          RELATION_CONTROLLED_BY: "output_input",
         },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("output", obj);
 
       obj = {
         role: ROLE_ENTRY,
         relations: {
-          RELATION_CONTROLLER_FOR: "output"
-        }
+          RELATION_CONTROLLER_FOR: "output",
+        },
       };
       testElm("output_input", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:pre
 
       obj = {
         role: ROLE_TEXT_CONTAINER,
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("pre", obj);
 
       // /////////////////////////////////////////////////////////////////////////
       // HTML:progress
 
       obj = {
         role: ROLE_PROGRESSBAR,
         absentStates: STATE_MIXED,
-        interfaces: [ nsIAccessibleValue ]
+        interfaces: [ nsIAccessibleValue ],
       };
       testElm("progress", obj);
 
       obj = {
         role: ROLE_PROGRESSBAR,
-        states: STATE_MIXED
+        states: STATE_MIXED,
       };
       testElm("progress_indeterminate", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:q
 
       obj = {
         role: ROLE_TEXT,
         interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
         children: [
           { role: ROLE_STATICTEXT }, // left quote
           { role: ROLE_TEXT_LEAF }, // quoted text
-          { role: ROLE_STATICTEXT } // right quote
-        ]
+          { role: ROLE_STATICTEXT }, // right quote
+        ],
       };
       testElm("q", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:ruby
 
       todo(isAccessible("ruby"), "ruby element is not accessible");
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:s contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "text-line-through-style": "solid" }
+          6: { "text-line-through-style": "solid" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:i text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:i text
+        ],
       };
       testElm("s_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:samp contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:samp text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:samp text
+        ],
       };
       testElm("samp_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:section without an accessible name
 
       obj = {
         role: ROLE_SECTION,
         absentAttributes: { "xml-roles": "region" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("section", obj);
 
       // HTML:section with an accessible name
 
       obj = {
         role: ROLE_SECTION,
         attributes: { "xml-roles": "region" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("named_section", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:small contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "font-size": "10pt" }
+          6: { "font-size": "10pt" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:small text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:small text
+        ],
       };
       testElm("small_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:source
 
       ok(!isAccessible("source"), "source element is not accessible");
 
@@ -1251,115 +1251,115 @@
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:strong contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:strong text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:strong text
+        ],
       };
       testElm("strong_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:sub contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "text-position": "sub" }
+          6: { "text-position": "sub" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:sub text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:sub text
+        ],
       };
       testElm("sub_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:sup contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "text-position": "super" }
+          6: { "text-position": "super" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:sup text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:sup text
+        ],
       };
       testElm("sup_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:svg
 
       obj = {
-        todo_role: ROLE_GRAPHIC
+        todo_role: ROLE_GRAPHIC,
       };
       testElm("svg", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:textarea
 
       obj = {
         role: ROLE_ENTRY,
         extraStates: EXT_STATE_MULTI_LINE | EXT_STATE_EDITABLE,
         actions: "activate",
-        interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleEditableText ],
       };
       testElm("textarea", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:time
 
       obj = {
         role: ROLE_TEXT,
         attributes: { "xml-roles": "time", "datetime": "2001-05-15 19:00" },
-        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ]
+        interfaces: [ nsIAccessibleText, nsIAccessibleHyperText ],
       };
       testElm("time", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:u contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         textAttrs: {
           0: { },
-          6: { "text-underline-style": "solid" }
+          6: { "text-underline-style": "solid" },
         },
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:u text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:u text
+        ],
       };
       testElm("u_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML:var contained by paragraph
 
       obj = {
         role: ROLE_PARAGRAPH,
         children: [
           { role: ROLE_TEXT_LEAF }, // plain text
           { role: ROLE_TEXT_LEAF }, // HTML:var text
           { role: ROLE_TEXT_LEAF }, // plain text
-          { role: ROLE_TEXT_LEAF } // HTML:var text
-        ]
+          { role: ROLE_TEXT_LEAF }, // HTML:var text
+        ],
       };
       testElm("var_container", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       obj = { // HTML:video
-        role: ROLE_GROUPING
+        role: ROLE_GROUPING,
       };
       testElm("video", obj);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/elm/test_MathMLSpec.html
+++ b/accessible/tests/mochitest/elm/test_MathMLSpec.html
@@ -49,29 +49,29 @@
       };
       testElm("mn", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mo
 
       obj = {
         role: ROLE_MATHML_OPERATOR,
-        attributes: { accent: "true", largeop: "true" }
+        attributes: { accent: "true", largeop: "true" },
       };
       testElm("mo", obj);
 
       obj = {
         role: ROLE_MATHML_OPERATOR,
-        attributes: { fence: "true" }
+        attributes: { fence: "true" },
       };
       testElm("mo_fence", obj);
 
       obj = {
         role: ROLE_MATHML_OPERATOR,
-        attributes: { separator: "true" }
+        attributes: { separator: "true" },
       };
       testElm("mo_separator", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mtext
 
       obj = {
         role: ROLE_MATHML_TEXT,
@@ -102,17 +102,17 @@
       };
       testElm("mrow", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mfrac
 
       obj = {
         role: ROLE_MATHML_FRACTION,
-        attributes: { bevelled: "true", linethickness: "thick" }
+        attributes: { bevelled: "true", linethickness: "thick" },
       };
       testElm("mfrac", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // msqrt
 
       obj = {
         role: ROLE_MATHML_SQUARE_ROOT,
@@ -120,46 +120,46 @@
       testElm("msqrt", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mroot
 
       obj = {
         role: ROLE_MATHML_ROOT,
         relations: {
-          RELATION_NODE_PARENT_OF: ["mroot_index", "mroot_base"]
+          RELATION_NODE_PARENT_OF: ["mroot_index", "mroot_base"],
         },
         children: [
           {
             role: ROLE_MATHML_IDENTIFIER,
-            relations: { RELATION_NODE_CHILD_OF: "mroot" }
+            relations: { RELATION_NODE_CHILD_OF: "mroot" },
           },
           {
             role: ROLE_MATHML_NUMBER,
-            relations: { RELATION_NODE_CHILD_OF: "mroot" }
-          }
-        ]
+            relations: { RELATION_NODE_CHILD_OF: "mroot" },
+          },
+        ],
       };
       testElm("mroot", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mfenced
 
       obj = {
         role: ROLE_MATHML_FENCED,
-        attributes: { open: "]", close: "[", separators: "." }
+        attributes: { open: "]", close: "[", separators: "." },
       };
       testElm("mfenced", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // menclose
 
       obj = {
         role: ROLE_MATHML_ENCLOSED,
-        attributes: { notation: "circle" }
+        attributes: { notation: "circle" },
       };
       testElm("menclose", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mstyle, mpadded, mphantom
 
       obj = {
         role: ROLE_MATHML_STYLE,
@@ -193,26 +193,26 @@
       };
       testElm("msubsup", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // munder
 
       obj = {
         role: ROLE_MATHML_UNDER,
-        attributes: { accentunder: "true", align: "center" }
+        attributes: { accentunder: "true", align: "center" },
       };
       testElm("munder", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mover
 
       obj = {
         role: ROLE_MATHML_OVER,
-        attributes: { accent: "true", align: "center" }
+        attributes: { accent: "true", align: "center" },
       };
       testElm("mover", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // munderover
 
       obj = {
         role: ROLE_MATHML_UNDER_OVER,
@@ -228,17 +228,17 @@
       };
       testElm("mmultiscripts", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mtable
 
       obj = {
         role: ROLE_MATHML_TABLE,
-        attributes: { align: "center", columnlines: "solid", rowlines: "solid" }
+        attributes: { align: "center", columnlines: "solid", rowlines: "solid" },
       };
       testElm("mtable", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mlabeledtr
 
       obj = {
         role: ROLE_MATHML_LABELED_ROW,
@@ -261,17 +261,17 @@
       };
       testElm("mtd", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // maction
 
       obj = {
         role: ROLE_MATHML_ACTION,
-        attributes: { actiontype: "toggle", selection: "1" }
+        attributes: { actiontype: "toggle", selection: "1" },
       };
       testElm("maction", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // merror
 
       obj = {
         role: ROLE_MATHML_ERROR,
@@ -284,71 +284,71 @@
       ok(!isAccessible("annotation"), "annotation should not have accessible");
       ok(!isAccessible("annotation-xml"), "annotation-xml should not have accessible");
 
       // ////////////////////////////////////////////////////////////////////////
       // mstack
 
       obj = {
         role: ROLE_MATHML_STACK,
-        attributes: { align: "center" }
+        attributes: { align: "center" },
       };
       testElm("mstack", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mlongdiv
 
       obj = {
         role: ROLE_MATHML_LONG_DIVISION,
-        attributes: { longdivstyle: "stackedrightright" }
+        attributes: { longdivstyle: "stackedrightright" },
       };
       testElm("mlongdiv", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // msgroup
 
       obj = {
         role: ROLE_MATHML_STACK_GROUP,
-        attributes: { position: "2", shift: "-1" }
+        attributes: { position: "2", shift: "-1" },
       };
       testElm("msgroup", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // msrow
 
       obj = {
         role: ROLE_MATHML_STACK_ROW,
-        attributes: { position: "1" }
+        attributes: { position: "1" },
       };
       testElm("msrow", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mscarries
 
       obj = {
         role: ROLE_MATHML_STACK_CARRIES,
-        attributes: { location: "nw", position: "1" }
+        attributes: { location: "nw", position: "1" },
       };
       testElm("mscarries", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // mscarry
 
       obj = {
         role: ROLE_MATHML_STACK_CARRY,
-        attributes: { crossout: "updiagonalstrike" }
+        attributes: { crossout: "updiagonalstrike" },
       };
       testElm("mscarry", obj);
 
       // ////////////////////////////////////////////////////////////////////////
       // msline
 
       obj = {
         role: ROLE_MATHML_STACK_LINE,
-        attributes: { position: "1" }
+        attributes: { position: "1" },
       };
       testElm("msline", obj);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/elm/test_shadowroot.html
+++ b/accessible/tests/mochitest/elm/test_shadowroot.html
@@ -20,18 +20,18 @@
   <div id="content" style="display: none"></div>
   <pre id="test">
   </pre>
 
   <script>
     SimpleTest.waitForExplicitFinish();
     SpecialPowers.pushPrefEnv({
       set: [
-        ["dom.webcomponents.shadowdom.enabled", true]
-      ]
+        ["dom.webcomponents.shadowdom.enabled", true],
+      ],
     }, function() {
       // This test loads in an iframe, to ensure that the element instance is
       // loaded with the correct value of the preference.
       var iframe = document.createElement("iframe");
       iframe.src = "test_shadowroot_subframe.html";
       document.body.appendChild(iframe);
     });
   </script>
--- a/accessible/tests/mochitest/elm/test_shadowroot_subframe.html
+++ b/accessible/tests/mochitest/elm/test_shadowroot_subframe.html
@@ -16,17 +16,17 @@
         role: ROLE_GROUPING,
         children: [
         {
           role: ROLE_PUSHBUTTON,
         },
         {
           role: ROLE_LINK,
         },
-        ]
+        ],
       });
 
       SimpleTest.finish();
     }
 
     addA11yLoadEvent(doTest);
   </script>
 
--- a/accessible/tests/mochitest/events.js
+++ b/accessible/tests/mochitest/events.js
@@ -107,17 +107,17 @@ function waitForEvent(aEventType, aTarge
       unregisterA11yEventListener(aEventType, this);
 
       window.setTimeout(
         function() {
           aFunc.call(aContext, aArg1, aArg2);
         },
         0
       );
-    }
+    },
   };
 
   registerA11yEventListener(aEventType, handler);
 }
 
 /**
  * A promise based version of waitForEvent function.
  */
@@ -129,17 +129,17 @@ function waitForEventPromise(eventType, 
         if (event.eventType !== eventType) {
           return;
         }
 
         if (event.accessible == getAccessible(target)) {
           Services.obs.removeObserver(this, "accessible-event");
           resolve(event);
         }
-      }
+      },
     };
     Services.obs.addObserver(eventObserver, "accessible-event");
   });
 }
 
 /**
  * Generate mouse move over image map what creates image map accessible (async).
  * See waitForImageMap() function.
@@ -1406,17 +1406,17 @@ function synthContextMenu(aID, aCheckerO
   };
 }
 
 /**
  * Open combobox, autocomplete and etc popup, check expandable states.
  */
 function openCombobox(aComboboxID) {
   this.eventSeq = [
-    new stateChangeChecker(STATE_EXPANDED, false, true, aComboboxID)
+    new stateChangeChecker(STATE_EXPANDED, false, true, aComboboxID),
   ];
 
   this.invoke = function openCombobox_invoke() {
     getNode(aComboboxID).focus();
     synthesizeKey("VK_DOWN", { altKey: true });
   };
 
   this.getID = function openCombobox_getID() {
@@ -1424,17 +1424,17 @@ function openCombobox(aComboboxID) {
   };
 }
 
 /**
  * Close combobox, autocomplete and etc popup, check expandable states.
  */
 function closeCombobox(aComboboxID) {
   this.eventSeq = [
-    new stateChangeChecker(STATE_EXPANDED, false, false, aComboboxID)
+    new stateChangeChecker(STATE_EXPANDED, false, false, aComboboxID),
   ];
 
   this.invoke = function closeCombobox_invoke() {
     synthesizeKey("KEY_Escape");
   };
 
   this.getID = function closeCombobox_getID() {
     return "close combobox " + prettyName(aComboboxID);
@@ -1564,17 +1564,17 @@ function moveCaretToDOMPoint(aID, aDOMPo
   };
 
   this.finalCheck = function moveCaretToDOMPoint_finalCheck() {
     if (aCheckFunc)
       aCheckFunc.call();
   };
 
   this.eventSeq = [
-    new caretMoveChecker(aExpectedOffset, this.target)
+    new caretMoveChecker(aExpectedOffset, this.target),
   ];
 
   if (this.focus)
     this.eventSeq.push(new asyncInvokerChecker(EVENT_FOCUS, this.focus));
 }
 
 /**
  * Set caret offset in text accessible.
@@ -1588,17 +1588,17 @@ function setCaretOffset(aID, aOffset, aF
     this.target.caretOffset = this.offset;
   };
 
   this.getID = function setCaretOffset_getID() {
    return "Set caretOffset on " + prettyName(aID) + " at " + this.offset;
   };
 
   this.eventSeq = [
-    new caretMoveChecker(this.offset, this.target)
+    new caretMoveChecker(this.offset, this.target),
   ];
 
   if (this.focus)
     this.eventSeq.push(new asyncInvokerChecker(EVENT_FOCUS, this.focus));
 }
 
 
 // //////////////////////////////////////////////////////////////////////////////
@@ -1899,53 +1899,53 @@ function expandedStateChecker(aIsEnabled
 
 /**
  * Event seq for single selection change.
  */
 function selChangeSeq(aUnselectedID, aSelectedID) {
   if (!aUnselectedID) {
     return [
       new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
-      new invokerChecker(EVENT_SELECTION, aSelectedID)
+      new invokerChecker(EVENT_SELECTION, aSelectedID),
     ];
   }
 
   // Return two possible scenarios: depending on widget type when selection is
   // moved the the order of items that get selected and unselected may vary.
   return [
     [
       new stateChangeChecker(STATE_SELECTED, false, false, aUnselectedID),
       new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
-      new invokerChecker(EVENT_SELECTION, aSelectedID)
+      new invokerChecker(EVENT_SELECTION, aSelectedID),
     ],
     [
       new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
       new stateChangeChecker(STATE_SELECTED, false, false, aUnselectedID),
-      new invokerChecker(EVENT_SELECTION, aSelectedID)
-    ]
+      new invokerChecker(EVENT_SELECTION, aSelectedID),
+    ],
   ];
 }
 
 /**
  * Event seq for item removed form the selection.
  */
 function selRemoveSeq(aUnselectedID) {
   return [
     new stateChangeChecker(STATE_SELECTED, false, false, aUnselectedID),
-    new invokerChecker(EVENT_SELECTION_REMOVE, aUnselectedID)
+    new invokerChecker(EVENT_SELECTION_REMOVE, aUnselectedID),
   ];
 }
 
 /**
  * Event seq for item added to the selection.
  */
 function selAddSeq(aSelectedID) {
   return [
     new stateChangeChecker(STATE_SELECTED, false, true, aSelectedID),
-    new invokerChecker(EVENT_SELECTION_ADD, aSelectedID)
+    new invokerChecker(EVENT_SELECTION_ADD, aSelectedID),
   ];
 }
 
 // //////////////////////////////////////////////////////////////////////////////
 // Private implementation details.
 // //////////////////////////////////////////////////////////////////////////////
 
 
@@ -2022,17 +2022,17 @@ var gA11yEventObserver =
     }
 
     // Do not notify listeners if event is result of event log changes.
     if (!listenersArray || eventFromDumpArea)
       return;
 
     for (var index = 0; index < listenersArray.length; index++)
       listenersArray[index].handleEvent(event);
-  }
+  },
 };
 
 function listenA11yEvents(aStartToListen) {
   if (aStartToListen) {
     // Add observer when adding the first applicant only.
     if (!(gA11yEventApplicantsCount++))
       Services.obs.addObserver(gA11yEventObserver, "accessible-event");
   } else {
@@ -2159,17 +2159,17 @@ var gLogger =
   hasFeature: function logger_hasFeature(aFeature) {
     var startIdx = gA11yEventDumpFeature.indexOf(aFeature);
     if (startIdx == -1)
       return false;
 
     var endIdx = startIdx + aFeature.length;
     return endIdx == gA11yEventDumpFeature.length ||
       gA11yEventDumpFeature[endIdx] == ";";
-  }
+  },
 };
 
 
 // //////////////////////////////////////////////////////////////////////////////
 // Sequence
 
 /**
  * Base class of sequence item.
@@ -2189,17 +2189,17 @@ function sequenceItem(aProcessor, aEvent
 
   var invoker = {
     invoke: function invoker_invoke() {
       return aProcessor.process();
     },
     getID: function invoker_getID() {
       return aItemID;
     },
-    eventSeq: [ new invokerChecker(aEventType, aTarget) ]
+    eventSeq: [ new invokerChecker(aEventType, aTarget) ],
   };
 
   this.queue.push(invoker);
 }
 
 // //////////////////////////////////////////////////////////////////////////////
 // Event queue invokers
 
--- a/accessible/tests/mochitest/events/docload/test_docload_aria.html
+++ b/accessible/tests/mochitest/events/docload/test_docload_aria.html
@@ -21,17 +21,17 @@
   <script type="application/javascript">
     // //////////////////////////////////////////////////////////////////////////
     // Invokers
 
     function showARIADialog(aID) {
       this.dialogNode = getNode(aID);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, this.dialogNode)
+        new invokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, this.dialogNode),
       ];
 
       this.invoke = function showARIADialog_invoke() {
         this.dialogNode.style.display = "block";
       };
 
       this.getID = function showARIADialog_getID() {
         return "show ARIA dialog";
--- a/accessible/tests/mochitest/events/docload/test_docload_busy.html
+++ b/accessible/tests/mochitest/events/docload/test_docload_busy.html
@@ -36,18 +36,18 @@
             // The document shouldn't have busy state (the DOM document was
             // loaded before its accessible was created). Do this test lately to
             // make sure the content of document accessible was created
             // initially, prior to this the document accessible keeps busy
             // state. The initial creation happens asynchronously after document
             // creation, there are no events we could use to catch it.
             let { state, isEnabled } = aEvent.QueryInterface(nsIAccessibleStateChangeEvent);
             return state & STATE_BUSY && !isEnabled;
-          }
-        }
+          },
+        },
       ];
 
       this.invoke = () => (this.DOMNode.style.visibility = "visible");
 
       this.getID = () =>
         "The accessible for DOM document loaded before it's shown shouldn't have busy state.";
     }
 
--- a/accessible/tests/mochitest/events/docload/test_docload_embedded.html
+++ b/accessible/tests/mochitest/events/docload/test_docload_embedded.html
@@ -24,30 +24,30 @@
       this.DOMNode = getNode(aIdentifier);
 
       function getIframeDoc() {
         return getAccessible(getNode(aIdentifier).contentDocument);
       }
 
       this.eventSeq = [
         new invokerChecker(EVENT_REORDER, getAccessible(this.DOMNode)),
-        new asyncInvokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, getIframeDoc)
+        new asyncInvokerChecker(EVENT_DOCUMENT_LOAD_COMPLETE, getIframeDoc),
       ];
 
       this.invoke = () => (this.DOMNode.src = aURL);
 
       this.finalCheck = () =>
         testAccessibleTree(this.DOMNode, {
           role: ROLE_INTERNAL_FRAME,
           children: [
             {
               role: ROLE_DOCUMENT,
-              name: aURL == "about:license" ? "Licenses" : aURL
-            }
-          ]
+              name: aURL == "about:license" ? "Licenses" : aURL,
+            },
+          ],
         });
 
       this.getID = () => `change iframe src on ${aURL}`;
     }
 
     // //////////////////////////////////////////////////////////////////////////
     // Do tests
 
--- a/accessible/tests/mochitest/events/docload/test_docload_iframe.html
+++ b/accessible/tests/mochitest/events/docload/test_docload_iframe.html
@@ -27,17 +27,17 @@
     const kRemove = 3;
 
     function morphIFrame(aIdentifier, aAction) {
       this.DOMNode = getNode(aIdentifier);
       this.IFrameContainerDOMNode = this.DOMNode.parentNode;
 
       this.eventSeq = [
         new invokerChecker(aAction === kShow ? EVENT_SHOW : EVENT_HIDE, this.DOMNode),
-        new invokerChecker(EVENT_REORDER, this.IFrameContainerDOMNode)
+        new invokerChecker(EVENT_REORDER, this.IFrameContainerDOMNode),
       ];
 
       this.invoke = () => {
         if (aAction === kRemove) {
           this.IFrameContainerDOMNode.removeChild(this.DOMNode);
         } else {
           this.DOMNode.style.display = aAction === kHide ? "none" : "block";
         }
@@ -46,20 +46,20 @@
       this.finalCheck = () =>
         testAccessibleTree(this.IFrameContainerDOMNode, {
           role: ROLE_SECTION,
           children: (aAction == kHide || aAction == kRemove) ? [ ] :
             [
               {
                 role: ROLE_INTERNAL_FRAME,
                 children: [
-                  { role: ROLE_DOCUMENT }
-                ]
-              }
-            ]
+                  { role: ROLE_DOCUMENT },
+                ],
+              },
+            ],
         });
 
       this.getID = () => {
         if (aAction === kRemove) {
           return "remove iframe";
         }
 
         return `change display style of iframe to ${aAction === kHide ? "none" : "block"}`;
--- a/accessible/tests/mochitest/events/docload/test_docload_root.html
+++ b/accessible/tests/mochitest/events/docload/test_docload_root.html
@@ -41,22 +41,22 @@
 
       this.invoke = () => (gDialog = window.openDialog(aURL));
 
       this.finalCheck = () => {
         const accTree = {
           role: ROLE_APP_ROOT,
           children: [
             {
-              role: ROLE_CHROME_WINDOW
+              role: ROLE_CHROME_WINDOW,
             },
             {
-              role: ROLE_CHROME_WINDOW
-            }
-          ]
+              role: ROLE_CHROME_WINDOW,
+            },
+          ],
         };
 
         testAccessibleTree(gRootAcc, accTree);
 
         gDialogDoc = gDialog.document;
         ok(isAccessibleInCache(gDialogDoc),
           `The document accessible for '${aURL}' is not in cache!`);
       };
--- a/accessible/tests/mochitest/events/docload/test_docload_shutdown.html
+++ b/accessible/tests/mochitest/events/docload/test_docload_shutdown.html
@@ -45,34 +45,34 @@
           get target() {
             gDialogDoc = gDialog.document;
             const iframe = gDialogDoc.getElementById("iframe");
             gIframeDoc = iframe.contentDocument;
             return iframe;
           },
           get targetDescr() {
             return "inner iframe of docload_wnd.html document";
-          }
-        }
+          },
+        },
       ];
 
 
       this.invoke = () => gDialog = window.openDialog(aURL);
 
       this.finalCheck = () => {
         const accTree = {
           role: ROLE_APP_ROOT,
           children: [
             {
-              role: ROLE_CHROME_WINDOW
+              role: ROLE_CHROME_WINDOW,
             },
             {
-              role: ROLE_CHROME_WINDOW
-            }
-          ]
+              role: ROLE_CHROME_WINDOW,
+            },
+          ],
         };
 
         testAccessibleTree(gRootAcc, accTree);
         // After timeout after event hide for iframe was handled the document
         // accessible for iframe's document should no longer be in cache.
         ok(!isAccessibleInCache(gIframeDoc),
           "The document accessible for iframe is in cache still after iframe hide!");
         ok(isAccessibleInCache(gDialogDoc),
--- a/accessible/tests/mochitest/events/test_aria_menu.html
+++ b/accessible/tests/mochitest/events/test_aria_menu.html
@@ -47,17 +47,17 @@
     function showMenu(aMenuID, aParentMenuID, aHow) {
       this.menuNode = getNode(aMenuID);
 
       // Because of aria-owns processing we may have menupopup start fired before
       // related show event.
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, this.menuNode),
         new invokerChecker(EVENT_REORDER, getNode(aParentMenuID)),
-        new invokerChecker(EVENT_MENUPOPUP_START, this.menuNode)
+        new invokerChecker(EVENT_MENUPOPUP_START, this.menuNode),
       ];
 
       this.invoke = function showMenu_invoke() {
         if (aHow == kViaDisplayStyle)
           this.menuNode.style.display = "block";
         else
           this.menuNode.style.visibility = "visible";
       };
@@ -71,17 +71,17 @@
 
     function closeMenu(aMenuID, aParentMenuID, aHow) {
       this.menuNode = getNode(aMenuID);
       this.menu = null;
 
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, getMenu, this),
         new invokerChecker(EVENT_MENUPOPUP_END, getMenu, this),
-        new invokerChecker(EVENT_REORDER, getNode(aParentMenuID))
+        new invokerChecker(EVENT_REORDER, getNode(aParentMenuID)),
       ];
 
       this.invoke = function closeMenu_invoke() {
         // Store menu accessible reference while menu is still open.
         this.menu = getAccessible(this.menuNode);
 
         // Hide menu.
         if (aHow == kViaDisplayStyle)
@@ -98,36 +98,36 @@
 
       function getMenu(aThisObj) {
         return aThisObj.menu;
       }
     }
 
     function focusInsideMenu(aMenuID, aMenuBarID) {
       this.eventSeq = [
-        new invokerChecker(EVENT_FOCUS, getNode(aMenuID))
+        new invokerChecker(EVENT_FOCUS, getNode(aMenuID)),
       ];
 
       this.unexpectedEventSeq = [
-        new invokerChecker(EVENT_MENU_END, getNode(aMenuBarID))
+        new invokerChecker(EVENT_MENU_END, getNode(aMenuBarID)),
       ];
 
       this.invoke = function focusInsideMenu_invoke() {
         getNode(aMenuID).focus();
       };
 
       this.getID = function focusInsideMenu_getID() {
         return "focus menu '" + aMenuID + "'";
       };
     }
 
     function blurMenu(aMenuBarID) {
       var eventSeq = [
         new invokerChecker(EVENT_MENU_END, getNode(aMenuBarID)),
-        new invokerChecker(EVENT_FOCUS, getNode("outsidemenu"))
+        new invokerChecker(EVENT_FOCUS, getNode("outsidemenu")),
       ];
 
       this.__proto__ = new synthClick("outsidemenu", eventSeq);
 
       this.getID = function blurMenu_getID() {
         return "blur menu";
       };
     }
--- a/accessible/tests/mochitest/events/test_aria_owns.html
+++ b/accessible/tests/mochitest/events/test_aria_owns.html
@@ -37,17 +37,17 @@
       this.parent = getNode("t1");
       this.fc = document.createElement("div");
       this.fc.setAttribute("id", "t1_fc");
       this.owns = document.createElement("span");
       this.owns.setAttribute("id", "t1_owns");
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, this.fc),
-        new unexpectedInvokerChecker(EVENT_SHOW, this.owns)
+        new unexpectedInvokerChecker(EVENT_SHOW, this.owns),
       ];
 
       this.invoke = function testAriaOwns_invoke() {
         getNode("t1").appendChild(this.fc);
         getNode("t1").appendChild(this.owns);
         getNode("t1_fc").setAttribute("aria-owns", "t1_owns");
       };
 
@@ -71,17 +71,17 @@
       this.sc = document.createElement("div");
       this.sc.setAttribute("id", "t2_sc");
       this.owns = document.createElement("span");
       this.owns.setAttribute("id", "t2_owns");
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, this.fc),
         new invokerChecker(EVENT_SHOW, this.sc),
-        new unexpectedInvokerChecker(EVENT_SHOW, this.owns)
+        new unexpectedInvokerChecker(EVENT_SHOW, this.owns),
       ];
 
       this.invoke = function testAriaOwns_invoke() {
         getNode("t2").appendChild(this.fc);
         getNode("t2").appendChild(this.sc);
         getNode("t2").appendChild(this.owns);
         getNode("t2_fc").setAttribute("aria-owns", "t2_owns");
         getNode("t2_sc").setAttribute("aria-labelledby", "t2_owns");
--- a/accessible/tests/mochitest/events/test_aria_statechange.html
+++ b/accessible/tests/mochitest/events/test_aria_statechange.html
@@ -28,67 +28,67 @@
 
     // gA11yEventDumpID = "eventdump"; // debugging
     // gA11yEventDumpToConsole = true; // debugging
 
     function expandNode(aID, aIsExpanded) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new expandedStateChecker(aIsExpanded, this.DOMNode)
+        new expandedStateChecker(aIsExpanded, this.DOMNode),
       ];
 
       this.invoke = function expandNode_invoke() {
         this.DOMNode.setAttribute("aria-expanded",
                                   (aIsExpanded ? "true" : "false"));
       };
 
       this.getID = function expandNode_getID() {
         return prettyName(aID) + " aria-expanded changed to '" + aIsExpanded + "'";
       };
     }
 
     function busyify(aID, aIsBusy) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new stateChangeChecker(STATE_BUSY, kOrdinalState, aIsBusy, this.DOMNode)
+        new stateChangeChecker(STATE_BUSY, kOrdinalState, aIsBusy, this.DOMNode),
       ];
 
       this.invoke = function busyify_invoke() {
         this.DOMNode.setAttribute("aria-busy", (aIsBusy ? "true" : "false"));
       };
 
       this.getID = function busyify_getID() {
         return prettyName(aID) + " aria-busy changed to '" + aIsBusy + "'";
       };
     }
 
     function makeCurrent(aID, aIsCurrent, aValue) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new stateChangeChecker(EXT_STATE_CURRENT, true, aIsCurrent, this.DOMNode)
+        new stateChangeChecker(EXT_STATE_CURRENT, true, aIsCurrent, this.DOMNode),
       ];
 
       this.invoke = function makeCurrent_invoke() {
         this.DOMNode.setAttribute("aria-current", aValue);
       };
 
       this.getID = function makeCurrent_getID() {
         return prettyName(aID) + " aria-current changed to " + aValue;
       };
     }
 
     function setAttrOfMixedType(aID, aAttr, aState, aValue) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
         new stateChangeChecker(aState, kOrdinalState,
-                               aValue == "true", this.DOMNode)
+                               aValue == "true", this.DOMNode),
       ];
 
       if (hasState(aID, STATE_MIXED) || aValue == "mixed") {
         this.eventSeq.push(
           new stateChangeChecker(STATE_MIXED, kOrdinalState,
                                  aValue == "mixed", this.DOMNode)
         );
       }
--- a/accessible/tests/mochitest/events/test_bug1322593-2.html
+++ b/accessible/tests/mochitest/events/test_bug1322593-2.html
@@ -21,17 +21,17 @@
       this.node1 = getNode("span1");
       this.node2 = getNode("span2");
 
       this.eventSeq = [
         new textChangeChecker("container", 0, 5, "hello", false, undefined, true),
         new textChangeChecker("container", 6, 11, "world", false, undefined, true),
         new orderChecker(),
         new textChangeChecker("container", 0, 1, "a", true, undefined, true),
-        new textChangeChecker("container", 7, 8, "b", true, undefined, true)
+        new textChangeChecker("container", 7, 8, "b", true, undefined, true),
       ];
 
       this.invoke = function changeMultipleElements_invoke() {
         this.node1.textContent = "a";
         this.node2.textContent = "b";
       };
 
       this.getID = function changeMultipleElements_invoke_getID() {
--- a/accessible/tests/mochitest/events/test_bug1322593.html
+++ b/accessible/tests/mochitest/events/test_bug1322593.html
@@ -21,17 +21,17 @@
       this.node1 = getNode("div1");
       this.node2 = getNode("div2");
 
       this.eventSeq = [
         new textChangeChecker("div1", 0, 5, "hello", false, undefined, true),
         new textChangeChecker("div2", 0, 5, "world", false, undefined, true),
         new orderChecker(),
         new textChangeChecker("div1", 0, 1, "a", true, undefined, true),
-        new textChangeChecker("div2", 0, 1, "b", true, undefined, true)
+        new textChangeChecker("div2", 0, 1, "b", true, undefined, true),
       ];
 
       this.invoke = function changeMultipleElements_invoke() {
         this.node1.textContent = "a";
         this.node2.textContent = "b";
       };
 
       this.getID = function changeMultipleElements_invoke_getID() {
--- a/accessible/tests/mochitest/events/test_coalescence.html
+++ b/accessible/tests/mochitest/events/test_coalescence.html
@@ -116,23 +116,23 @@
         }
       };
 
       this.initSequence = function coalescenceBase_initSequence() {
         // expected events
         var eventType = this.getEventType(aParentAction);
         this.eventSeq = [
           new invokerChecker(eventType, this.parentNode),
-          new invokerChecker(EVENT_REORDER, this.hostNode)
+          new invokerChecker(EVENT_REORDER, this.hostNode),
         ];
 
         // unexpected events
         this.unexpectedEventSeq = [
           new invokerChecker(this.getEventType(aChildAction), this.childNode),
-          new invokerChecker(EVENT_REORDER, this.parentNode)
+          new invokerChecker(EVENT_REORDER, this.parentNode),
         ];
       };
     }
 
     /**
      * Remove or hide mutation events coalescence testing.
      */
     function removeOrHideCoalescenceBase(aChildID, aParentID,
@@ -293,17 +293,17 @@
       this.child2 = getNode(aChild2Id);
       this.parent = getNode(aParentId);
 
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, getAccessible(aParentId)),
         new invokerChecker(EVENT_REORDER, getNode(aParentId).parentNode),
         new unexpectedInvokerChecker(EVENT_HIDE, getAccessible(aChild1Id)),
         new unexpectedInvokerChecker(EVENT_HIDE, getAccessible(aChild2Id)),
-        new unexpectedInvokerChecker(EVENT_REORDER, getAccessible(aParentId))
+        new unexpectedInvokerChecker(EVENT_REORDER, getAccessible(aParentId)),
       ];
 
       this.invoke = function removeGrandChildrenNHideParent_invoke() {
         this.child1.remove();
         this.child2.remove();
         this.parent.hidden = true;
       };
 
@@ -318,17 +318,17 @@
     function test3() {
       this.o = getAccessible("t3_o");
       this.ofc = getAccessible("t3_o").firstChild;
 
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, this.o),
         new invokerChecker(EVENT_REORDER, "t3_lb"),
         new unexpectedInvokerChecker(EVENT_HIDE, this.ofc),
-        new unexpectedInvokerChecker(EVENT_REORDER, this.o)
+        new unexpectedInvokerChecker(EVENT_REORDER, this.o),
       ];
 
       this.invoke = function test3_invoke() {
         getNode("t3_o").textContent = "";
         getNode("t3_lb").removeChild(getNode("t3_o"));
       };
 
       this.finalCheck = function test3_finalCheck() {
@@ -351,17 +351,17 @@
       this.o2fc = this.o2.firstChild;
 
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, this.o1fc),
         new invokerChecker(EVENT_HIDE, this.o2),
         new invokerChecker(EVENT_REORDER, "t4_lb"),
         new unexpectedInvokerChecker(EVENT_HIDE, this.o2fc),
         new unexpectedInvokerChecker(EVENT_REORDER, this.o1),
-        new unexpectedInvokerChecker(EVENT_REORDER, this.o2)
+        new unexpectedInvokerChecker(EVENT_REORDER, this.o2),
       ];
 
       this.invoke = function test4_invoke() {
         getNode("t4_o1").textContent = "";
         getNode("t4_o2").textContent = "";
         getNode("t4_lb").removeChild(getNode("t4_o2"));
       };
 
@@ -386,17 +386,17 @@
       this.lb = getAccessible("t5_lb");
 
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, this.b),
         new invokerChecker(EVENT_HIDE, this.o),
         new invokerChecker(EVENT_REORDER, "t5"),
         new unexpectedInvokerChecker(EVENT_HIDE, this.ofc),
         new unexpectedInvokerChecker(EVENT_REORDER, this.o),
-        new unexpectedInvokerChecker(EVENT_REORDER, this.lb)
+        new unexpectedInvokerChecker(EVENT_REORDER, this.lb),
       ];
 
       this.invoke = function test5_invoke() {
         getNode("t5_o").textContent = "";
         getNode("t5").removeChild(getNode("t5_b"));
         getNode("t5_lb").removeChild(getNode("t5_o"));
       };
 
@@ -430,17 +430,17 @@
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, this.fc),
         new invokerChecker(EVENT_SHOW, this.sc),
         new invokerChecker(EVENT_REORDER, this.parent),
         new unexpectedInvokerChecker(EVENT_REORDER, this.fc),
         new unexpectedInvokerChecker(EVENT_REORDER, this.sc),
         new unexpectedInvokerChecker(EVENT_HIDE, this.owns),
-        new unexpectedInvokerChecker(EVENT_SHOW, this.owns)
+        new unexpectedInvokerChecker(EVENT_SHOW, this.owns),
       ];
 
       this.invoke = function test6_invoke() {
         getNode("t6").appendChild(this.fc);
         getNode("t6_fc").appendChild(this.owns);
         getNode("t6").appendChild(this.sc);
         getNode("t6_sc").setAttribute("aria-owns", "t6_owns");
       };
@@ -464,17 +464,17 @@
     function test7() {
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, getNode("t7_c")),
         new invokerChecker(EVENT_SHOW, getNode("t7_c")),
         new invokerChecker(EVENT_REORDER, getNode("t7")),
         new unexpectedInvokerChecker(EVENT_REORDER, getNode("t7_c_directchild")),
         new unexpectedInvokerChecker(EVENT_REORDER, getNode("t7_c_grandchild")),
         new unexpectedInvokerChecker(EVENT_SHOW, () => getNode("t7_c_directchild").firstChild),
-        new unexpectedInvokerChecker(EVENT_SHOW, () => getNode("t7_c_grandchild").firstChild)
+        new unexpectedInvokerChecker(EVENT_SHOW, () => getNode("t7_c_grandchild").firstChild),
       ];
 
       this.invoke = function test7_invoke() {
         getNode("t7_c_directchild").textContent = "ha";
         getNode("t7_c_grandchild").textContent = "ha";
         getNode("t7_moveplace").setAttribute("aria-owns", "t7_c");
       };
 
@@ -538,17 +538,17 @@
         new invokerChecker(EVENT_HIDE, getNode("t9_c1_child")),
         new invokerChecker(EVENT_HIDE, getNode("t9_c2_child")),
         new invokerChecker(EVENT_HIDE, "t9_c3_moved"),
         new invokerChecker(EVENT_HIDE, "t9_c2_moved"),
         new invokerChecker(EVENT_SHOW, "t9_c2_moved"),
         new invokerChecker(EVENT_REORDER, "t9_c3"),
         new invokerChecker(EVENT_REORDER, "t9_c2"),
         new invokerChecker(EVENT_REORDER, "t9_c1"),
-        new unexpectedInvokerChecker(EVENT_SHOW, "t9_c3_moved")
+        new unexpectedInvokerChecker(EVENT_SHOW, "t9_c3_moved"),
       ];
 
       this.invoke = function test9_invoke() {
         // Remove child nodes from 't9_c1' and 't9_c2' containers to give
         // the event tree a needed structure ('t9_c1' and 't9_c2' nodes go
         // first in the event tree),
         getNode("t9_c1_child").remove();
         getNode("t9_c2_child").remove();
@@ -581,17 +581,17 @@
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, getNode("t10_c1_child")),
         new invokerChecker(EVENT_HIDE, getNode("t10_c2_child")),
         new invokerChecker(EVENT_HIDE, getNode("t10_c2_moved")),
         new invokerChecker(EVENT_HIDE, getNode("t10_c3_moved")),
         new invokerChecker(EVENT_SHOW, getNode("t10_c2_moved")),
         new invokerChecker(EVENT_REORDER, "t10_c2"),
         new invokerChecker(EVENT_REORDER, "t10_c1"),
-        new invokerChecker(EVENT_REORDER, "t10_c3")
+        new invokerChecker(EVENT_REORDER, "t10_c3"),
       ];
 
       this.invoke = function test10_invoke() {
         // Remove child nodes from 't10_c1' and 't10_c2' containers to give
         // the event tree a needed structure ('t10_c1' and 't10_c2' nodes go first
         // in the event tree),
         getNode("t10_c1_child").remove();
         getNode("t10_c2_child").remove();
@@ -617,17 +617,17 @@
         new orderChecker(),
         new asyncInvokerChecker(EVENT_SHOW, "t11_c2_child"),
         new asyncInvokerChecker(EVENT_SHOW, "t11_c2"),
         new orderChecker(),
         new invokerChecker(EVENT_REORDER, "t11"),
         new unexpectedInvokerChecker(EVENT_HIDE, "t11_c2_child"),
         new unexpectedInvokerChecker(EVENT_REORDER, "t11_c1"),
         new unexpectedInvokerChecker(EVENT_REORDER, "t11_c2"),
-        new unexpectedInvokerChecker(EVENT_REORDER, "t11_c3")
+        new unexpectedInvokerChecker(EVENT_REORDER, "t11_c3"),
       ];
 
       this.invoke = function test11_invoke() {
         // Remove a node from 't11_c1' container to give the event tree a
         // desired structure (the 't11_c1' container node goes first in
         // the event tree),
         getNode("t11_c1_child").remove();
         // then move 't11_c2_moved' from 't11_c2' to 't11_c1', and then move
--- a/accessible/tests/mochitest/events/test_contextmenu.html
+++ b/accessible/tests/mochitest/events/test_contextmenu.html
@@ -37,32 +37,32 @@
 
       this.getID = function showContextMenu_getID() {
         return "show context menu";
       };
     }
 
     function selectMenuItem() {
       this.eventSeq = [
-        new invokerChecker(EVENT_FOCUS, getFocusedMenuItem)
+        new invokerChecker(EVENT_FOCUS, getFocusedMenuItem),
       ];
 
       this.invoke = function selectMenuItem_invoke() {
         synthesizeKey("KEY_ArrowDown");
       };
 
       this.getID = function selectMenuItem_getID() {
         return "select first menuitem";
       };
     }
 
     function closeContextMenu(aID) {
       this.eventSeq = [
         new invokerChecker(EVENT_MENUPOPUP_END,
-                           getAccessible(getContextMenuNode()))
+                           getAccessible(getContextMenuNode())),
       ];
 
       this.invoke = function closeContextMenu_invoke() {
         synthesizeKey("KEY_Escape");
       };
 
       this.getID = function closeContextMenu_getID() {
         return "close context menu";
--- a/accessible/tests/mochitest/events/test_flush.html
+++ b/accessible/tests/mochitest/events/test_flush.html
@@ -38,17 +38,17 @@
 
           default:
             ok(false, "Wrong focus event!");
         }
 
         this.count++;
       },
 
-      count: 0
+      count: 0,
     };
 
     function doTests() {
       registerA11yEventListener(EVENT_FOCUS, gFocusHandler);
 
       getAccessible("input1").takeFocus();
     }
 
--- a/accessible/tests/mochitest/events/test_focus_aria_activedescendant.html
+++ b/accessible/tests/mochitest/events/test_focus_aria_activedescendant.html
@@ -19,31 +19,31 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript"
           src="../events.js"></script>
 
   <script type="application/javascript">
     // gA11yEventDumpToConsole = true; // debugging
 
     function changeARIAActiveDescendant(aID, aItemID) {
       this.eventSeq = [
-        new focusChecker(aItemID)
+        new focusChecker(aItemID),
       ];
 
       this.invoke = function changeARIAActiveDescendant_invoke() {
         getNode(aID).setAttribute("aria-activedescendant", aItemID);
       };
 
       this.getID = function changeARIAActiveDescendant_getID() {
         return "change aria-activedescendant on " + aItemID;
       };
     }
 
     function clearARIAActiveDescendant(aID) {
       this.eventSeq = [
-        new focusChecker(aID)
+        new focusChecker(aID),
       ];
 
       this.invoke = function clearARIAActiveDescendant_invoke() {
         getNode(aID).removeAttribute("aria-activedescendant");
       };
 
       this.getID = function clearARIAActiveDescendant_getID() {
         return "clear aria-activedescendant on container " + aID;
@@ -55,32 +55,32 @@ https://bugzilla.mozilla.org/show_bug.cg
      * Ensure that focus is fired on the element itself.
      */
     function changeARIAActiveDescendantInvalid(aID, aInvalidID) {
       if (!aInvalidID) {
         aInvalidID = "invalid";
       }
 
       this.eventSeq = [
-        new focusChecker(aID)
+        new focusChecker(aID),
       ];
 
       this.invoke = function changeARIAActiveDescendant_invoke() {
         getNode(aID).setAttribute("aria-activedescendant", aInvalidID);
       };
 
       this.getID = function changeARIAActiveDescendant_getID() {
         return "change aria-activedescendant to invalid id";
       };
     }
     
     function insertItemNFocus(aID, aNewItemID) {
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, aNewItemID),
-        new focusChecker(aNewItemID)
+        new focusChecker(aNewItemID),
       ];
 
       this.invoke = function insertItemNFocus_invoke() {
         var container  = getNode(aID);
 
         var itemNode = document.createElement("div");
         itemNode.setAttribute("id", aNewItemID);
         itemNode.setAttribute("role", "listitem");
@@ -102,17 +102,17 @@ https://bugzilla.mozilla.org/show_bug.cg
      * element first.
      * Ensure that focus is fired on the target element which was given the
      * desired id.
      * @param aFromID The existing id of the target element.
      * @param aToID The desired id to be given to the target element.
     */
     function moveARIAActiveDescendantID(aFromID, aToID) {
       this.eventSeq = [
-        new focusChecker(aToID)
+        new focusChecker(aToID),
       ];
 
       this.invoke = function moveARIAActiveDescendantID_invoke() {
         let orig = document.getElementById(aToID);
         if (orig) {
           orig.id = "";
         }
         document.getElementById(aFromID).id = aToID;
--- a/accessible/tests/mochitest/events/test_focus_general.html
+++ b/accessible/tests/mochitest/events/test_focus_general.html
@@ -24,21 +24,21 @@
     function focusElmWhileSubdocIsFocused(aID) {
       this.DOMNode = getNode(aID);
 
       this.invoke = function focusElmWhileSubdocIsFocused_invoke() {
         this.DOMNode.focus();
       };
 
       this.eventSeq = [
-        new focusChecker(this.DOMNode)
+        new focusChecker(this.DOMNode),
       ];
 
       this.unexpectedEventSeq = [
-        new invokerChecker(EVENT_FOCUS, this.DOMNode.ownerDocument)
+        new invokerChecker(EVENT_FOCUS, this.DOMNode.ownerDocument),
       ];
 
       this.getID = function focusElmWhileSubdocIsFocused_getID() {
         return "Focus element while subdocument is focused " + prettyName(aID);
       };
     }
 
     function imageMapChecker(aID) {
--- a/accessible/tests/mochitest/events/test_focus_name.html
+++ b/accessible/tests/mochitest/events/test_focus_name.html
@@ -34,27 +34,27 @@
       handleEvent: function gFocusHandler_handleEvent(aEvent) {
         var elm = aEvent.target;
         if (elm.nodeType != Node.ELEMENT_NODE)
           return;
 
         gTooltipElm.style.display = "block";
 
         elm.setAttribute("aria-describedby", "tooltip");
-      }
+      },
     };
 
     var gBlurHandler = {
       handleEvent: function gBlurHandler_handleEvent(aEvent) {
         gTooltipElm.style.display = "none";
 
         var elm = aEvent.target;
         if (elm.nodeType == Node.ELEMENT_NODE)
           elm.removeAttribute("aria-describedby");
-      }
+      },
     };
 
     /**
      * Do tests.
      */
 
     // gA11yEventDumpID = "eventdump"; // debug stuff
     // gA11yEventDumpToConsole = true;
--- a/accessible/tests/mochitest/events/test_fromUserInput.html
+++ b/accessible/tests/mochitest/events/test_fromUserInput.html
@@ -20,17 +20,17 @@
 
     /**
      * Remove text data from HTML input.
      */
     function removeTextFromInput(aID, aStart, aEnd, aText, aFromUser) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new textChangeChecker(aID, aStart, aEnd, aText, false, aFromUser)
+        new textChangeChecker(aID, aStart, aEnd, aText, false, aFromUser),
       ];
 
       this.invoke = function removeTextFromInput_invoke() {
         this.DOMNode.focus();
         this.DOMNode.setSelectionRange(aStart, aEnd);
 
         synthesizeKey("KEY_Delete");
       };
@@ -43,17 +43,17 @@
 
     /**
      * Remove text data from text node.
      */
     function removeTextFromContentEditable(aID, aStart, aEnd, aText, aFromUser) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new textChangeChecker(aID, aStart, aEnd, aText, false, aFromUser)
+        new textChangeChecker(aID, aStart, aEnd, aText, false, aFromUser),
       ];
 
       this.invoke = function removeTextFromContentEditable_invoke() {
         this.DOMNode.focus();
         this.textNode = getNode(aID).firstChild;
         var selection = window.getSelection();
         var range = document.createRange();
         range.setStart(this.textNode, aStart);
--- a/accessible/tests/mochitest/events/test_mutation.html
+++ b/accessible/tests/mochitest/events/test_mutation.html
@@ -228,17 +228,17 @@
      */
     function test1(aContainerID) {
       this.divNode = document.createElement("div");
       this.divNode.setAttribute("id", "div-test1");
       this.containerNode = getNode(aContainerID);
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, this.divNode),
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function test1_invoke() {
         this.containerNode.appendChild(this.divNode);
         getComputedStyle(this.divNode, "").color;
         this.containerNode.removeChild(this.divNode);
         this.containerNode.appendChild(this.divNode);
       };
@@ -258,21 +258,21 @@
       this.divNode.setAttribute("id", "div-test2");
       this.containerNode = getNode(aContainerID);
       this.tmpContainerNode = getNode(aTmpContainerID);
       this.container = getAccessible(this.containerNode);
       this.tmpContainer = getAccessible(this.tmpContainerNode);
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, this.divNode),
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.unexpectedEventSeq = [
-        new invokerChecker(EVENT_REORDER, this.tmpContainerNode)
+        new invokerChecker(EVENT_REORDER, this.tmpContainerNode),
       ];
 
       this.invoke = function test2_invoke() {
         this.tmpContainerNode.appendChild(this.divNode);
         getComputedStyle(this.divNode, "").color;
         this.tmpContainerNode.removeChild(this.divNode);
         this.containerNode.appendChild(this.divNode);
       };
@@ -289,17 +289,17 @@
     function test3(aContainerID) {
       this.divNode = document.createElement("div");
       this.divNode.setAttribute("id", "div-test3");
       this.containerNode = getNode(aContainerID);
 
       this.unexpectedEventSeq = [
         new invokerChecker(EVENT_SHOW, this.divNode),
         new invokerChecker(EVENT_HIDE, this.divNode),
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function test3_invoke() {
         this.containerNode.appendChild(this.divNode);
         getComputedStyle(this.divNode, "").color;
         this.containerNode.removeChild(this.divNode);
       };
 
@@ -309,17 +309,17 @@
     }
 
     function insertReferredElm(aContainerID) {
       this.containerNode = getNode(aContainerID);
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, function(aNode) { return aNode.firstChild; }, this.containerNode),
         new invokerChecker(EVENT_SHOW, function(aNode) { return aNode.lastChild; }, this.containerNode),
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function insertReferredElm_invoke() {
         let span = document.createElement("span");
         span.setAttribute("id", "insertReferredElms_span");
         let input = document.createElement("input");
         input.setAttribute("aria-labelledby", "insertReferredElms_span");
         this.containerNode.appendChild(span);
@@ -330,32 +330,32 @@
         return "insert inaccessible element and then insert referring element to make it accessible";
       };
     }
 
     function showHiddenParentOfVisibleChild() {
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, getNode("c4_child")),
         new invokerChecker(EVENT_SHOW, getNode("c4_middle")),
-        new invokerChecker(EVENT_REORDER, getNode("c4"))
+        new invokerChecker(EVENT_REORDER, getNode("c4")),
       ];
 
       this.invoke = function showHiddenParentOfVisibleChild_invoke() {
         getNode("c4_middle").style.visibility = "visible";
       };
 
       this.getID = function showHiddenParentOfVisibleChild_getID() {
         return "show hidden parent of visible child";
       };
     }
 
     function hideNDestroyDoc() {
       this.txt = null;
       this.eventSeq = [
-        new invokerChecker(EVENT_HIDE, () => { return this.txt; })
+        new invokerChecker(EVENT_HIDE, () => { return this.txt; }),
       ];
 
       this.invoke = function hideNDestroyDoc_invoke() {
         this.txt = getAccessible("c5").firstChild.firstChild;
         this.txt.DOMNode.remove();
       };
 
       this.check = function hideNDestroyDoc_check() {
@@ -365,17 +365,17 @@
       this.getID = function hideNDestroyDoc_getID() {
         return "remove text node and destroy a document on hide event";
       };
     }
 
     function hideHideNDestroyDoc() {
       this.target = null;
       this.eventSeq = [
-        new invokerChecker(EVENT_HIDE, () => { return this.target; })
+        new invokerChecker(EVENT_HIDE, () => { return this.target; }),
       ];
 
       this.invoke = function hideHideNDestroyDoc_invoke() {
         var doc = getAccessible("c6").firstChild;
         var l1 = doc.firstChild;
         this.target = l1.firstChild;
         var l2 = doc.lastChild;
         l1.DOMNode.firstChild.remove();
--- a/accessible/tests/mochitest/events/test_mutation.xhtml
+++ b/accessible/tests/mochitest/events/test_mutation.xhtml
@@ -34,17 +34,17 @@
       this.containerNode = getNode(aContainerID);
 
       function getButtonFromBinding(aNode) {
         try { return document.getAnonymousNodes(aNode.firstChild)[0]; } catch (e) { return null; }
       }
 
       this.eventSeq = [
         new invokerChecker(EVENT_SHOW, getButtonFromBinding, this.containerNode),
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function insertBinding_invoke() {
         var span = document.createElement("span");
         span.setAttribute("style", "-moz-binding:url(#button)");
         this.containerNode.appendChild(span);
       };
 
--- a/accessible/tests/mochitest/events/test_namechange.html
+++ b/accessible/tests/mochitest/events/test_namechange.html
@@ -36,17 +36,17 @@
     }
 
     /**
      * No name change on an accessible, because the accessible is recreated.
      */
     function setAttr_recreate(aID, aAttr, aValue) {
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, getAccessible(aID)),
-        new invokerChecker(EVENT_SHOW, aID)
+        new invokerChecker(EVENT_SHOW, aID),
       ];
       this.invoke = function setAttr_recreate_invoke() {
         todo(false, "No accessible recreation should happen, just name change event");
         getNode(aID).setAttribute(aAttr, aValue);
       };
 
       this.getID = function setAttr_recreate_getID() {
         return "set attr '" + aAttr + "', value '" + aValue + "'";
--- a/accessible/tests/mochitest/events/test_selection_aria.html
+++ b/accessible/tests/mochitest/events/test_selection_aria.html
@@ -24,17 +24,17 @@
     // //////////////////////////////////////////////////////////////////////////
     // Invokers
 
     function selectItem(aSelectID, aItemID) {
       this.selectNode = getNode(aSelectID);
       this.itemNode = getNode(aItemID);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_SELECTION, aItemID)
+        new invokerChecker(EVENT_SELECTION, aItemID),
       ];
 
       this.invoke = function selectItem_invoke() {
         var itemNode = this.selectNode.querySelector("*[aria-selected='true']");
         if (itemNode)
           itemNode.removeAttribute("aria-selected");
 
         this.itemNode.setAttribute("aria-selected", "true");
--- a/accessible/tests/mochitest/events/test_statechange.html
+++ b/accessible/tests/mochitest/events/test_statechange.html
@@ -69,17 +69,17 @@
         return prettyName(aNodeOrID) + " became invalid";
       };
     }
 
     function changeCheckInput(aID, aIsChecked) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new stateChangeChecker(STATE_CHECKED, false, aIsChecked, this.DOMNode)
+        new stateChangeChecker(STATE_CHECKED, false, aIsChecked, this.DOMNode),
       ];
 
       this.invoke = function changeCheckInput_invoke() {
         this.DOMNode.checked = aIsChecked;
       };
 
       this.getID = function changeCheckInput_getID() {
         return "change checked state to '" + aIsChecked + "' for " +
@@ -95,45 +95,45 @@
       // No state change events on the label.
 
       this.invoke = function stateChangeOnFileInput_invoke() {
         this.fileControlNode.setAttribute(aAttr, aValue);
       };
 
       this.eventSeq = [
         new stateChangeChecker(aState, aIsExtraState, aIsEnabled, this.fileControl),
-        new stateChangeChecker(aState, aIsExtraState, aIsEnabled, this.browseButton)
+        new stateChangeChecker(aState, aIsExtraState, aIsEnabled, this.browseButton),
       ];
 
       this.getID = function stateChangeOnFileInput_getID() {
         return "inherited state change on file input on attribute '" + aAttr + "' change";
       };
     }
 
     function dupeStateChange(aID, aAttr, aValue,
                              aState, aIsExtraState, aIsEnabled) {
       this.eventSeq = [
-        new stateChangeChecker(aState, aIsExtraState, aIsEnabled, getNode(aID))
+        new stateChangeChecker(aState, aIsExtraState, aIsEnabled, getNode(aID)),
       ];
 
       this.invoke = function dupeStateChange_invoke() {
         getNode(aID).setAttribute(aAttr, aValue);
         getNode(aID).setAttribute(aAttr, aValue);
       };
 
       this.getID = function dupeStateChange_getID() {
         return "duped state change events";
       };
     }
 
     function oppositeStateChange(aID, aAttr, aState, aIsExtraState) {
       this.eventSeq = [ ];
       this.unexpectedEventSeq = [
         new stateChangeChecker(aState, aIsExtraState, false, getNode(aID)),
-        new stateChangeChecker(aState, aIsExtraState, true, getNode(aID))
+        new stateChangeChecker(aState, aIsExtraState, true, getNode(aID)),
       ];
 
       this.invoke = function oppositeStateChange_invoke() {
         getNode(aID).setAttribute(aAttr, "false");
         getNode(aID).setAttribute(aAttr, "true");
       };
 
       this.getID = function oppositeStateChange_getID() {
@@ -142,17 +142,17 @@
     }
 
     /**
      * Change concomitant ARIA and native attribute at once.
      */
     function echoingStateChange(aID, aARIAAttr, aAttr, aValue,
                                aState, aIsExtraState, aIsEnabled) {
       this.eventSeq = [
-        new stateChangeChecker(aState, aIsExtraState, aIsEnabled, getNode(aID))
+        new stateChangeChecker(aState, aIsExtraState, aIsEnabled, getNode(aID)),
       ];
 
       this.invoke = function echoingStateChange_invoke() {
         if (aValue == null) {
           getNode(aID).removeAttribute(aARIAAttr);
           getNode(aID).removeAttribute(aAttr);
 
         } else {
--- a/accessible/tests/mochitest/events/test_text.html
+++ b/accessible/tests/mochitest/events/test_text.html
@@ -22,25 +22,25 @@
 
     /**
      * Base text remove invoker and checker.
      */
     function textRemoveInvoker(aID, aStart, aEnd, aText) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new textChangeChecker(aID, aStart, aEnd, aText, false)
+        new textChangeChecker(aID, aStart, aEnd, aText, false),
       ];
     }
 
     function textInsertInvoker(aID, aStart, aEnd, aText) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new textChangeChecker(aID, aStart, aEnd, aText, true)
+        new textChangeChecker(aID, aStart, aEnd, aText, true),
       ];
     }
 
     /**
      * Remove inaccessible child node containing accessibles.
      */
     function removeChildSpan(aID) {
       this.__proto__ = new textRemoveInvoker(aID, 0, 5, "33322");
--- a/accessible/tests/mochitest/events/test_text_alg.html
+++ b/accessible/tests/mochitest/events/test_text_alg.html
@@ -77,83 +77,83 @@
 
       // ////////////////////////////////////////////////////////////////////////
       // wqrema -> tqb: substitution coalesced with removal
 
       var events = [
         [ kRemoval, "w", 0 ], // wqrema -> qrema
         [ kInsertion, "t", 0], // qrema -> tqrema
         [ kRemoval, "rema", 2 ], // tqrema -> tq
-        [ kInsertion, "b", 2] // tq -> tqb
+        [ kInsertion, "b", 2], // tq -> tqb
       ];
       gQueue.push(new changeText("p1", "tqb", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // b -> insa: substitution coalesced with insertion (complex substitution)
 
       events = [
         [ kRemoval, "b", 0 ], // b ->
-        [ kInsertion, "insa", 0] //  -> insa
+        [ kInsertion, "insa", 0], //  -> insa
       ];
       gQueue.push(new changeText("p2", "insa", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // abc -> def: coalesced substitutions
 
       events = [
         [ kRemoval, "abc", 0 ], // abc ->
-        [ kInsertion, "def", 0] //  -> def
+        [ kInsertion, "def", 0], //  -> def
       ];
       gQueue.push(new changeText("p3", "def", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // abcabc -> abcDEFabc: coalesced insertions
 
       events = [
-        [ kInsertion, "DEF", 3] // abcabc -> abcDEFabc
+        [ kInsertion, "DEF", 3], // abcabc -> abcDEFabc
       ];
       gQueue.push(new changeText("p4", "abcDEFabc", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // abc -> defabc: insertion into begin
 
       events = [
-        [ kInsertion, "def", 0] // abc -> defabc
+        [ kInsertion, "def", 0], // abc -> defabc
       ];
       gQueue.push(new changeText("p5", "defabc", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // abc -> abcdef: insertion into end
 
       events = [
-        [ kInsertion, "def", 3] // abc -> abcdef
+        [ kInsertion, "def", 3], // abc -> abcdef
       ];
       gQueue.push(new changeText("p6", "abcdef", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // defabc -> abc: removal from begin
 
       events = [
-        [ kRemoval, "def", 0] // defabc -> abc
+        [ kRemoval, "def", 0], // defabc -> abc
       ];
       gQueue.push(new changeText("p7", "abc", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // abcdef -> abc: removal from the end
 
       events = [
-        [ kRemoval, "def", 3] // abcdef -> abc
+        [ kRemoval, "def", 3], // abcdef -> abc
       ];
       gQueue.push(new changeText("p8", "abc", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // abcDEFabc -> abcabc: coalesced removals
 
       events = [
-        [ kRemoval, "DEF", 3] // abcDEFabc -> abcabc
+        [ kRemoval, "DEF", 3], // abcDEFabc -> abcabc
       ];
       gQueue.push(new changeText("p9", "abcabc", events));
 
       // ////////////////////////////////////////////////////////////////////////
       // !abcdef@ -> @axbcef!: insertion, deletion and substitutions
 
       events = [
         [ kRemoval, "!", 0 ], // !abcdef@ -> abcdef@
@@ -182,35 +182,35 @@
       // new one
 
       var longStr1 = expStr("x", 16);
       var longStr2 = expStr("X", 16);
 
       var newStr = "a" + longStr1 + "b", insStr = longStr1, rmStr = "";
       events = [
         [ kRemoval, rmStr, 1, kUnexpected ],
-        [ kInsertion, insStr, 1 ]
+        [ kInsertion, insStr, 1 ],
       ];
       gQueue.push(new changeText("p12", newStr, events));
 
       newStr = "a" + longStr2 + "b";
       insStr = longStr2;
       rmStr = longStr1;
       events = [
         [ kRemoval, rmStr, 1 ],
-        [ kInsertion, insStr, 1]
+        [ kInsertion, insStr, 1],
       ];
       gQueue.push(new changeText("p12", newStr, events));
 
       newStr = "ab";
       insStr = "";
       rmStr = longStr2;
       events = [
         [ kRemoval, rmStr, 1 ],
-        [ kInsertion, insStr, 1, kUnexpected ]
+        [ kInsertion, insStr, 1, kUnexpected ],
       ];
       gQueue.push(new changeText("p12", newStr, events));
 
       gQueue.invoke(); // Will call SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTests);
--- a/accessible/tests/mochitest/events/test_textattrchange.html
+++ b/accessible/tests/mochitest/events/test_textattrchange.html
@@ -25,17 +25,17 @@
   <script type="application/javascript">
 
     ChromeUtils.import("resource://gre/modules/InlineSpellChecker.jsm");
 
     function spelledTextInvoker(aID) {
       this.DOMNode = getNode(aID);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_TEXT_ATTRIBUTE_CHANGED, this.DOMNode)
+        new invokerChecker(EVENT_TEXT_ATTRIBUTE_CHANGED, this.DOMNode),
       ];
 
       this.invoke = function spelledTextInvoker_invoke() {
         var editor = this.DOMNode.editor;
         var spellChecker = new InlineSpellChecker(editor);
         spellChecker.enabled = true;
 
         // var spellchecker = editor.getInlineSpellChecker(true);
@@ -47,17 +47,17 @@
       this.finalCheck = function spelledTextInvoker_finalCheck() {
         var defAttrs = buildDefaultTextAttrs(this.DOMNode, kInputFontSize,
                                              kNormalFontWeight,
                                              kInputFontFamily);
         testDefaultTextAttrs(aID, defAttrs);
 
         var attrs = { };
         var misspelledAttrs = {
-          "invalid": "spelling"
+          "invalid": "spelling",
         };
 
         testTextAttrs(aID, 0, attrs, defAttrs, 0, 11);
         testTextAttrs(aID, 11, misspelledAttrs, defAttrs, 11, 17);
         testTextAttrs(aID, 17, attrs, defAttrs, 17, 18);
         testTextAttrs(aID, 18, misspelledAttrs, defAttrs, 18, 22);
       };
 
--- a/accessible/tests/mochitest/events/test_textselchange.html
+++ b/accessible/tests/mochitest/events/test_textselchange.html
@@ -22,17 +22,17 @@
     var gQueue = null;
 
     // gA11yEventDumpID = "eventdump"; // debug stuff
     // gA11yEventDumpToConsole = true;
 
     function getOnclickSeq(aID) {
       return [
         new caretMoveChecker(0, aID),
-        new unexpectedInvokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID)
+        new unexpectedInvokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID),
       ];
     }
 
     function doTests() {
       // test caret move events and caret offsets
       gQueue = new eventQueue();
 
       gQueue.push(new synthClick("c1_p1", getOnclickSeq("c1_p1")));
--- a/accessible/tests/mochitest/events/test_valuechange.html
+++ b/accessible/tests/mochitest/events/test_valuechange.html
@@ -25,17 +25,17 @@
      */
     var gQueue = null;
 
     // Value change invoker
     function changeARIAValue(aNodeOrID, aValuenow, aValuetext) {
       this.DOMNode = getNode(aNodeOrID);
       this.eventSeq = [ new invokerChecker(aValuetext ?
                                            EVENT_TEXT_VALUE_CHANGE :
-                                           EVENT_VALUE_CHANGE, this.DOMNode)
+                                           EVENT_VALUE_CHANGE, this.DOMNode),
         ];
 
       this.invoke = function changeARIAValue_invoke() {
 
         // Note: this should not fire an EVENT_VALUE_CHANGE when aria-valuetext
         // is not empty
         if (aValuenow != undefined)
           this.DOMNode.setAttribute("aria-valuenow", aValuenow);
@@ -59,17 +59,17 @@
       this.getID = function changeARIAValue_getID() {
         return prettyName(aNodeOrID) + " value changed";
       };
     }
 
     function changeValue(aID, aValue) {
       this.DOMNode = getNode(aID);
       this.eventSeq = [new invokerChecker(EVENT_TEXT_VALUE_CHANGE,
-                                          this.DOMNode)
+                                          this.DOMNode),
         ];
 
       this.invoke = function changeValue_invoke() {
         this.DOMNode.value = aValue;
       };
 
       this.check = function changeValue_check() {
         var acc = getAccessible(this.DOMNode);
--- a/accessible/tests/mochitest/hittest/test_canvas_hitregion.html
+++ b/accessible/tests/mochitest/hittest/test_canvas_hitregion.html
@@ -44,17 +44,17 @@
 
       var context = document.getElementById("hitcanvas").getContext("2d");
       redrawCheckbox(context, document.getElementById("hitcheck"),
                      offsetX, offsetY);
 
       var hitcanvas = getAccessible("hitcanvas");
       var hitcheck = getAccessible("hitcheck");
 
-      var [hitX, hitY, /* hitWidth, hitHeight */] = getBounds(hitcanvas);
+      var [hitX, hitY /* hitWidth, hitHeight */] = getBounds(hitcanvas);
       var [deltaX, deltaY] = CSSToDevicePixels(window, offsetX, offsetY);
 
       var docAcc = getAccessible(document);
 
       // test if we hit the region associated with the shadow dom checkbox
       var tgtX = hitX + deltaX;
       var tgtY = hitY + deltaY;
       hitAcc = docAcc.getDeepestChildAtPoint(tgtX, tgtY);
--- a/accessible/tests/mochitest/hittest/test_shadowroot.html
+++ b/accessible/tests/mochitest/hittest/test_shadowroot.html
@@ -20,18 +20,18 @@
   <div id="content" style="display: none"></div>
   <pre id="test">
   </pre>
 
   <script>
     SimpleTest.waitForExplicitFinish();
     SpecialPowers.pushPrefEnv({
       set: [
-        ["dom.webcomponents.shadowdom.enabled", true]
-      ]
+        ["dom.webcomponents.shadowdom.enabled", true],
+      ],
     }, function() {
       // This test loads in an iframe, to ensure that the element instance is
       // loaded with the correct value of the preference.
       var iframe = document.createElement("iframe");
       iframe.src = "test_shadowroot_subframe.html";
       document.body.appendChild(iframe);
     });
   </script>
--- a/accessible/tests/mochitest/hypertext/test_update.html
+++ b/accessible/tests/mochitest/hypertext/test_update.html
@@ -14,17 +14,17 @@
           src="../events.js"></script>
 
   <script type="application/javascript">
     const kLinksCount = 128;
     function addLinks(aContainerID) {
       this.containerNode = getNode(aContainerID);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function addLinks_invoke() {
         for (var jdx = 0; jdx < kLinksCount; jdx++) {
           var a = document.createElement("a");
           a.setAttribute("href", "mozilla.org");
           a.textContent = "mozilla";
           this.containerNode.appendChild(a);
@@ -55,17 +55,17 @@
     function updateText(aContainerID) {
       this.containerNode = getNode(aContainerID);
       this.container = getAccessible(this.containerNode, nsIAccessibleHyperText);
       this.text = this.container.firstChild;
       this.textNode = this.text.DOMNode;
       this.textLen = this.textNode.data.length;
 
       this.eventSeq = [
-        new invokerChecker(EVENT_TEXT_INSERTED, this.containerNode)
+        new invokerChecker(EVENT_TEXT_INSERTED, this.containerNode),
       ];
 
       this.invoke = function updateText_invoke() {
         is(this.container.getLinkIndexAtOffset(this.textLen), 0,
            "Wrong intial text offsets!");
 
         this.text.DOMNode.appendData(" my");
       };
@@ -88,17 +88,17 @@
       this.container = getAccessible(this.containerNode, nsIAccessibleText);
       this.childNode = getNode(aChildID);
 
       // Call first to getText so offsets are cached
       is(this.container.getText(0, -1), aInitialText,
          "Wrong text before child removal");
 
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function removeChild_invoke() {
         this.containerNode.removeChild(this.childNode);
       };
 
       this.finalCheck = function removeChild_finalCheck() {
         is(this.container.getText(0, -1), aFinalText,
@@ -110,17 +110,17 @@
       this.getID = function removeChild_getID() {
         return "check text after removing child from '" + aContainerID + "'";
       };
     }
 
     function removeFirstChild(aContainer) {
       this.ht = getAccessible(aContainer, [ nsIAccessibleHyperText ]);
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, aContainer)
+        new invokerChecker(EVENT_REORDER, aContainer),
       ];
 
       this.invoke = function removeFirstChild_invoke() {
         is(this.ht.linkCount, 2, "Wrong embedded objects count before removal");
 
         getNode(aContainer).removeChild(getNode(aContainer).firstElementChild);
       };
 
@@ -133,17 +133,17 @@
       this.getID = function removeFirstChild_getID() {
         return "Remove first child and check embedded object indeces";
       };
     }
 
     function removeLastChild(aContainer) {
       this.ht = getAccessible(aContainer, [ nsIAccessibleHyperText ]);
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, aContainer)
+        new invokerChecker(EVENT_REORDER, aContainer),
       ];
 
       this.invoke = function removeLastChild_invoke() {
         is(this.ht.linkCount, 1, "Wrong embedded objects count before removal");
 
         getNode(aContainer).removeChild(getNode(aContainer).lastElementChild);
       };
 
--- a/accessible/tests/mochitest/jsat/jsatcommon.js
+++ b/accessible/tests/mochitest/jsat/jsatcommon.js
@@ -18,17 +18,17 @@ ChromeUtils.import("resource://gre/modul
 ChromeUtils.import("resource://gre/modules/accessibility/Utils.jsm");
 ChromeUtils.import("resource://gre/modules/accessibility/EventManager.jsm");
 ChromeUtils.import("resource://gre/modules/accessibility/Constants.jsm");
 
 const MovementGranularity = {
   CHARACTER: 1,
   WORD: 2,
   LINE: 4,
-  PARAGRAPH: 8
+  PARAGRAPH: 8,
 };
 
 var AccessFuTest = {
 
   addFunc: function AccessFuTest_addFunc(aFunc) {
     if (aFunc) {
       gTestFuncs.push(aFunc);
     }
@@ -40,17 +40,17 @@ var AccessFuTest = {
         // Ignore unexpected messages.
         if (!(aMessage instanceof Ci.nsIConsoleMessage)) {
           return;
         }
         if (!aMessage.message.includes(aWaitForMessage)) {
           return;
         }
         aListenerFunc.apply(listener);
-      }
+      },
     };
     Services.console.registerListener(listener);
     return listener;
   },
 
   on_log: function AccessFuTest_on_log(aWaitForMessage, aListenerFunc) {
     return this._registerListener(aWaitForMessage, aListenerFunc);
   },
@@ -155,17 +155,17 @@ var AccessFuTest = {
         // Run all test functions asynchronously.
         AccessFuTest.nextTest();
       } else {
         // Run all test functions synchronously.
         gTestFuncs.forEach(testFunc => testFunc());
         AccessFuTest.finish();
       }
     });
-  }
+  },
 };
 
 class AccessFuContentTestRunner {
   constructor() {
     this.listenersMap = new Map();
     let frames = Array.from(currentTabDocument().querySelectorAll("iframe"));
     this.mms = [Utils.getMessageManager(currentBrowser()),
       ...frames.map(f => Utils.getMessageManager(f)).filter(mm => !!mm)];
@@ -270,18 +270,18 @@ class AccessFuContentTestRunner {
 
   moveCursor(aArgs, ...aExpectedEvents) {
     return this.expectAndroidEvents(() => {
       this.sendMessage({
         name: "AccessFu:MoveCursor",
         data: {
           inputType: "gesture",
           origin: "top",
-          ...aArgs
-        }
+          ...aArgs,
+        },
       });
     }, ...aExpectedEvents);
   }
 
   moveNext(aRule, ...aExpectedEvents) {
     return this.moveCursor({ action: "moveNext", rule: aRule },
       ...aExpectedEvents);
   }
@@ -308,47 +308,47 @@ class AccessFuContentTestRunner {
           mm => mm.removeMessageListener("AccessFu:CursorCleared", _listener));
         resolve();
       };
       this.mms.forEach(
         mm => mm.addMessageListener("AccessFu:CursorCleared", _listener));
       this.sendMessage({
         name: "AccessFu:ClearCursor",
         data: {
-          origin: "top"
-        }
+          origin: "top",
+        },
       });
     });
   }
 
   focusSelector(aSelector, ...aExpectedEvents) {
     return this.expectAndroidEvents(() => {
       this.sendMessage({
         name: "AccessFuTest:Focus",
         data: {
-          selector: aSelector
-        }
+          selector: aSelector,
+        },
       });
     }, ...aExpectedEvents);
   }
 
   blur(...aExpectedEvents) {
     return this.expectAndroidEvents(() => {
       this.sendMessage({ name: "AccessFuTest:Blur" });
     }, ...aExpectedEvents);
   }
 
   activateCurrent(aOffset, ...aExpectedEvents) {
     return this.expectAndroidEvents(() => {
       this.sendMessage({
         name: "AccessFu:Activate",
         data: {
           origin: "top",
-          offset: aOffset
-        }
+          offset: aOffset,
+        },
       });
     }, ...aExpectedEvents);
   }
 
   typeKey(aKey, ...aExpectedEvents) {
     return this.expectAndroidEvents(() => {
       synthesizeKey(aKey, {}, currentTabWindow());
     }, ...aExpectedEvents);
@@ -365,35 +365,35 @@ class AccessFuContentTestRunner {
       is(aEvent[key], aExpected[key], `Event info matches for ${key}. ` +
          `Got ${aEvent[key]}, expected ${aExpected[key]}.`);
     }
   }
 
   androidScrollForward() {
     this.sendMessage({
       name: "AccessFu:AndroidScroll",
-      data: { origin: "top", direction: "forward" }
+      data: { origin: "top", direction: "forward" },
     });
   }
 
   androidScrollBackward() {
     this.sendMessage({
       name: "AccessFu:AndroidScroll",
-      data: { origin: "top", direction: "backward" }
+      data: { origin: "top", direction: "backward" },
     });
   }
 
   moveByGranularity(aDirection, aGranularity, ...aExpectedEvents) {
     return this.expectAndroidEvents(() => {
       this.sendMessage({
         name: "AccessFu:MoveByGranularity",
         data: {
           direction: aDirection,
-          granularity: aGranularity
-        }
+          granularity: aGranularity,
+        },
       });
     }, ...aExpectedEvents);
   }
 
   moveNextByGranularity(aGranularity, ...aExpectedEvents) {
     return this.moveByGranularity("Next", aGranularity, ...aExpectedEvents);
   }
 
--- a/accessible/tests/mochitest/jsat/test_content_integration.html
+++ b/accessible/tests/mochitest/jsat/test_content_integration.html
@@ -459,18 +459,18 @@
             SpecialPowers.pushPrefEnv({
               "set": [
                 // TODO: remove this as part of bug 820712
                 ["network.disable.ipc.security", true],
 
 
                 ["dom.ipc.browser_frames.oop_by_default", true],
                 ["dom.mozBrowserFramesEnabled", true],
-                ["browser.pagethumbnails.capturing_disabled", true]
-              ]
+                ["browser.pagethumbnails.capturing_disabled", true],
+              ],
             }, doTest);
           },
           getRootDirectory(window.location.href) + "doc_content_integration.html");
         });
   </script>
 </head>
 <body id="body">
 
--- a/accessible/tests/mochitest/jsat/test_explicit_names.html
+++ b/accessible/tests/mochitest/jsat/test_explicit_names.html
@@ -11,109 +11,109 @@
   <script type="application/javascript"
           src="output.js"></script>
   <script type="application/javascript">
 
     function doTest() {
       // Test the following accOrElmOrID.
       var tests = [{
         accOrElmOrID: "anchor1",
-        expected: [{"string": "link"}, "title"]
+        expected: [{"string": "link"}, "title"],
       }, {
         accOrElmOrID: "anchor2",
-        expected: [{"string": "link"}, "This is a link"]
+        expected: [{"string": "link"}, "This is a link"],
       }, {
         accOrElmOrID: "button1",
-        expected: [{"string": "pushbutton"}, "Press me"]
+        expected: [{"string": "pushbutton"}, "Press me"],
       }, {
         accOrElmOrID: "button2",
-        expected: [{"string": "pushbutton"}, "Press me"]
+        expected: [{"string": "pushbutton"}, "Press me"],
       }, {
         accOrElmOrID: "textarea1",
         expected: [{"string": "textarea"}, "This is the text area text.",
-          "Test Text Area"]
+          "Test Text Area"],
       }, {
         accOrElmOrID: "textarea2",
-        expected: [{"string": "textarea"}, "This is the text area text."]
+        expected: [{"string": "textarea"}, "This is the text area text."],
       }, {
         accOrElmOrID: "heading1",
         expected: [{"string": "headingLevel", "args": [1]}, "Test heading",
-          "This is the heading."]
+          "This is the heading."],
       }, {
         accOrElmOrID: "heading1",
         oldAccOrElmOrID: null,
         expected: [null /* parent doc title */, document.title,
           {"string": "headingLevel", "args": [1]}, "Test heading",
-          "This is the heading."]
+          "This is the heading."],
       }, {
         accOrElmOrID: "heading2",
         expected: [{"string": "headingLevel", "args": [1]},
-          "This is the heading."]
+          "This is the heading."],
       }, {
         accOrElmOrID: "list",
         expected: [{"string": "list"}, {"string": "listItemsCount", "count": 2},
           "Test List", {"string": "listStart"}, "Top of the list",
-          {"string": "listEnd"}, "2.", "list two"]
+          {"string": "listEnd"}, "2.", "list two"],
       }, {
         accOrElmOrID: "dlist",
         expected: [{"string": "definitionlist"},
           {"string": "listItemsCount", "count": 0.5}, "Test Definition List",
-          "dd one"]
+          "dd one"],
       }, {
         accOrElmOrID: "li_one",
         expected: [{"string": "list"}, {"string": "listItemsCount", "count": 2},
-          "Test List", {"string": "listStart"}, "Top of the list"]
+          "Test List", {"string": "listStart"}, "Top of the list"],
       }, {
         accOrElmOrID: "li_two",
         expected: [{"string": "list"}, {"string": "listItemsCount", "count": 2},
-          "Test List", {"string": "listEnd"}, "2.", "list two"]
+          "Test List", {"string": "listEnd"}, "2.", "list two"],
       }, {
         accOrElmOrID: "cell",
         expected: [{"string": "table"},
           {"string": "tblColumnInfo", "count": 1},
           {"string": "tblRowInfo", "count": 1}, "Fruits and vegetables",
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}, "List of Fruits",
           {"string": "list"}, {"string": "listItemsCount", "count": 4},
           {"string": "listStart"}, {"string": "link"}, "Apples",
           {"string": "link"}, "Bananas",
           {"string": "link"}, "Peaches", {"string": "listEnd"},
-          {"string": "link"}, "Plums"]
+          {"string": "link"}, "Plums"],
       }, {
         accOrElmOrID: "app.net",
         expected: [{"string": "list"}, {"string": "listItemsCount", "count": 2},
           {"string": "listStart"}, {"string": "link"}, "star",
-          {"string": "listEnd"}, {"string": "link"}, "repost"]
+          {"string": "listEnd"}, {"string": "link"}, "repost"],
       }, {
         // Test pivot to list from li_one.
         accOrElmOrID: "list",
         oldAccOrElmOrID: "li_one",
         expected: [{"string": "list"}, {"string": "listItemsCount", "count": 2},
           "Test List", {"string": "listStart"}, "Top of the list",
-          {"string": "listEnd"}, "2.", "list two"]
+          {"string": "listEnd"}, "2.", "list two"],
       }, {
         // Test pivot to li_one from list.
         accOrElmOrID: "li_one",
         oldAccOrElmOrID: "list",
-        expected: [{"string": "listStart"}, "Top of the list"]
+        expected: [{"string": "listStart"}, "Top of the list"],
       }, {
         // Test pivot to "apples" link from the table cell.
         accOrElmOrID: "apples",
         oldAccOrElmOrID: "cell",
         expected: [{"string": "list"}, {"string": "listItemsCount", "count": 4},
-          {"string": "listStart"}, {"string": "link"}, "Apples"]
+          {"string": "listStart"}, {"string": "link"}, "Apples"],
       }, {
         // Test pivot to the table cell from the "apples" link.
         accOrElmOrID: "cell",
         oldAccOrElmOrID: "apples",
         expected: ["List of Fruits", {"string": "list"},
           {"string": "listItemsCount", "count": 4}, {"string": "listStart"},
           {"string": "link"}, "Apples", {"string": "link"}, "Bananas",
           {"string": "link"}, "Peaches", {"string": "listEnd"},
-          {"string": "link"}, "Plums"]
+          {"string": "link"}, "Plums"],
       }];
 
       SpecialPowers.pushPrefEnv({"set": [[PREF_UTTERANCE_ORDER, 0]]}, function() {
         // Test various explicit names vs the utterance generated from subtrees.
         tests.forEach(function run(test) {
           testOutput(test.expected, test.accOrElmOrID, test.oldAccOrElmOrID);
         });
         SimpleTest.finish();
--- a/accessible/tests/mochitest/jsat/test_hints.html
+++ b/accessible/tests/mochitest/jsat/test_hints.html
@@ -10,47 +10,47 @@
           src="../common.js"></script>
   <script type="application/javascript"
           src="output.js"></script>
   <script type="application/javascript">
 
     function doTest() {
       var tests = [{
         accOrElmOrID: "can_wheel",
-        expectedHints: ["Swipe with two fingers to move between pages"]
+        expectedHints: ["Swipe with two fingers to move between pages"],
       }, {
         accOrElmOrID: "nested_link",
         expectedHints: [{string: "link-hint"},
-          "Swipe with two fingers to move between pages"]
+          "Swipe with two fingers to move between pages"],
       }, {
         accOrElmOrID: "nested_link",
         oldAccOrElmOrID: "can_wheel",
-        expectedHints: [{string: "link-hint"}]
+        expectedHints: [{string: "link-hint"}],
       }, {
         accOrElmOrID: "link_with_default_hint",
-        expectedHints: [{string: "link-hint"}]
+        expectedHints: [{string: "link-hint"}],
       }, {
         accOrElmOrID: "link_with_hint_override",
-        expectedHints: ["Tap and hold to get to menu"]
+        expectedHints: ["Tap and hold to get to menu"],
       }, {
         accOrElmOrID: "button_with_default_hint",
-        expectedHints: [{string: "pushbutton-hint"}]
+        expectedHints: [{string: "pushbutton-hint"}],
       }, {
         accOrElmOrID: "button_with_hint_override",
-        expectedHints: ["Tap and hold to activate"]
+        expectedHints: ["Tap and hold to activate"],
       }, {
         accOrElmOrID: "nested_link2",
-        expectedHints: [{string: "link-hint"}]
+        expectedHints: [{string: "link-hint"}],
       }, {
         accOrElmOrID: "nested_link3",
         expectedHints: [{string: "link-hint"}, {string: "pushbutton-hint"},
-          "Double tap and hold to activate"]
+          "Double tap and hold to activate"],
       }, {
         accOrElmOrID: "menuitemradio",
-        expectedHints: [{string: "radiomenuitem-hint"}]
+        expectedHints: [{string: "radiomenuitem-hint"}],
       }];
 
       // Test hints.
       tests.forEach(function run(test) {
         testHints(test.expectedHints, test.accOrElmOrID, test.oldAccOrElmOrID);
       });
 
       SimpleTest.finish();
--- a/accessible/tests/mochitest/jsat/test_landmarks.html
+++ b/accessible/tests/mochitest/jsat/test_landmarks.html
@@ -16,118 +16,118 @@
 
     function doTest() {
       // Test the following accOrElmOrID.
       var tests = [{
         accOrElmOrID: "nav",
         expectedUtterance: [[{"string": "navigation"}, "a nav"],
                             ["a nav", {"string": "navigation"}]],
         expectedBraille: [[{"string": "navigation"}, "a nav"],
-                          ["a nav", {"string": "navigation"}]]
+                          ["a nav", {"string": "navigation"}]],
       }, {
         accOrElmOrID: "main",
         expectedUtterance: [[{"string": "main"}, "a main area"],
                             ["a main area", {"string": "main"}]],
         expectedBraille: [[{"string": "main"}, "a main area"],
-                          ["a main area", {"string": "main"}]]
+                          ["a main area", {"string": "main"}]],
       }, {
         accOrElmOrID: "header",
         expectedUtterance: [
           [{"string": "banner"}, {"string": "header"}, "a header"],
           ["a header", {"string": "header"}, {"string": "banner"}]],
         expectedBraille: [
           [{"string": "banner"}, {"string": "headerAbbr"}, "a header"],
-          ["a header", {"string": "headerAbbr"}, {"string": "banner"}]]
+          ["a header", {"string": "headerAbbr"}, {"string": "banner"}]],
       }, {
         accOrElmOrID: "footer",
         expectedUtterance: [
           [{"string": "contentinfo"}, {"string": "footer"}, "a footer"],
           ["a footer", {"string": "footer"}, {"string": "contentinfo"}]],
         expectedBraille: [
           [{"string": "contentinfo"}, {"string": "footerAbbr"}, "a footer"],
-          ["a footer", {"string": "footerAbbr"}, {"string": "contentinfo"}]]
+          ["a footer", {"string": "footerAbbr"}, {"string": "contentinfo"}]],
       }, {
         accOrElmOrID: "article_header",
         expectedUtterance: [
           ["a header within an article"],
           ["a header within an article"]],
         expectedBraille: [
           ["a header within an article"],
           ["a header within an article"]],
       }, {
         accOrElmOrID: "article_footer",
         expectedUtterance: [
           ["a footer within an article"],
           ["a footer within an article"]],
         expectedBraille: [
           ["a footer within an article"],
-          ["a footer within an article"]]
+          ["a footer within an article"]],
       }, {
         accOrElmOrID: "section_header",
         expectedUtterance: [["a header within a section"],
                             ["a header within a section"]],
         expectedBraille: [
           ["a header within a section"],
-          ["a header within a section"]]
+          ["a header within a section"]],
       }, {
         accOrElmOrID: "section_footer",
         expectedUtterance: [
           ["a footer within a section"],
           ["a footer within a section"]],
         expectedBraille: [
           ["a footer within a section"],
-          ["a footer within a section"]]
+          ["a footer within a section"]],
       }, {
         accOrElmOrID: "aside",
         expectedUtterance: [
           [{"string": "complementary"}, "by the way I am an aside"],
           ["by the way I am an aside", {"string": "complementary"}]],
         expectedBraille: [
           [{"string": "complementary"}, "by the way I am an aside"],
-          ["by the way I am an aside", {"string": "complementary"}]]
+          ["by the way I am an aside", {"string": "complementary"}]],
       }, {
         accOrElmOrID: "main_element",
         expectedUtterance: [[{"string": "main"}, "another main area"],
                             ["another main area", {"string": "main"}]],
         expectedBraille: [[{"string": "main"}, "another main area"],
-                          ["another main area", {"string": "main"}]]
+                          ["another main area", {"string": "main"}]],
       }, {
         accOrElmOrID: "complementary",
         expectedUtterance: [[{"string": "list"},
           {"string": "listItemsCount", "count": 1}, {"string": "complementary"},
           {"string": "listStart"}, "A complementary"], ["A complementary",
           {"string": "listStart"}, {"string": "complementary"},
           {"string": "list"}, {"string": "listItemsCount", "count": 1}]],
         expectedBraille: [["*", {"string": "complementary"}, "A complementary"],
-                          ["*", "A complementary", {"string": "complementary"}]]
+                          ["*", "A complementary", {"string": "complementary"}]],
       }, {
         accOrElmOrID: "parent_main",
         expectedUtterance: [[{"string": "main"}, "a parent main",
           {"string": "complementary"}, "a child complementary"],
           ["a parent main", "a child complementary",
           {"string": "complementary"}, {"string": "main"}]],
         expectedBraille: [[{"string": "main"}, "a parent main",
           {"string": "complementary"}, "a child complementary"],
           ["a parent main", "a child complementary",
-          {"string": "complementary"}, {"string": "main"}]]
+          {"string": "complementary"}, {"string": "main"}]],
       }, {
         accOrElmOrID: "child_complementary",
         expectedUtterance: [[{"string": "main"}, {"string": "complementary"},
           "a child complementary"], ["a child complementary",
           {"string": "complementary"}, {"string": "main"}]],
         expectedBraille: [[{"string": "complementary"},
           "a child complementary"], ["a child complementary",
-          {"string": "complementary"}]]
+          {"string": "complementary"}]],
       }];
 
       // Test outputs (utterance and braille) for landmarks.
       function testOutputOrder(aOutputOrder) {
         return function() {
           SpecialPowers.pushPrefEnv({
-            "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]]
+            "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]],
           }, function() {
             tests.forEach(function run(test) {
               testOutput(test.expectedUtterance[aOutputOrder], test.accOrElmOrID,
                 test.oldAccOrElmOrID);
             });
             AccessFuTest.nextTest();
           });
         };
--- a/accessible/tests/mochitest/jsat/test_live_regions.html
+++ b/accessible/tests/mochitest/jsat/test_live_regions.html
@@ -63,344 +63,344 @@
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_hide1", "to_hide2", "to_hide3", "to_hide4"].forEach(id => hide(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden I will be hidden"],
         "addedCount": "hidden I will be hidden".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_hide_descendant1", "to_hide_descendant2",
          "to_hide_descendant3", "to_hide_descendant4"].forEach(id => hide(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I will be shown"],
         "addedCount": "I will be shown".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_show1", "to_show2", "to_show3", "to_show4"].forEach(id => show(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I will be shown"],
         "addedCount": "I will be shown".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_show_descendant1", "to_show_descendant2",
          "to_show_descendant3", "to_show_descendant4"].forEach(id => show(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden I will be hidden"],
         "addedCount": "hidden I will be hidden".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_hide5", "to_hide6", "to_hide7", "to_hide8", "to_hide9"].forEach(id => ariaHide(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden I will be hidden"],
         "addedCount": "hidden I will be hidden".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_hide_descendant5", "to_hide_descendant6",
          "to_hide_descendant7", "to_hide_descendant8"].forEach(id => ariaHide(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I will be shown"],
         "addedCount": "I will be shown".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_show5", "to_show6", "to_show7", "to_show8", "to_show9"].forEach(id => ariaShow(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I will be shown"],
         "addedCount": "I will be shown".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         ["to_show_descendant5", "to_show_descendant6",
          "to_show_descendant7", "to_show_descendant8"].forEach(id => ariaShow(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden I will be hidden"],
         "addedCount": "hidden I will be hidden".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         hide("to_hide_live_assertive");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden I will be hidden"],
         "addedCount": "hidden I will be hidden".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         ariaHide("to_hide_live_assertive2");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I will be shown"],
         "addedCount": "I will be shown".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         ["to_show_live_off", "to_show_live_assertive"].forEach(id => show(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I will be shown"],
         "addedCount": "I will be shown".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         ["to_show_live_off2", "to_show_live_assertive2"].forEach(id => ariaShow(id));
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["Text Added"],
         "addedCount": "Text Added".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateText("text_add", "Text Added");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["Text Added"],
         "addedCount": "Text Added".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateHTML("text_add", "Text Added");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden Text Removed"],
         "addedCount": "hidden Text Removed".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         updateText("text_remove", "");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["Descendant Text Added"],
         "addedCount": "Descendant Text Added".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateText("text_add_descendant", "Descendant Text Added");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["Descendant Text Added"],
         "addedCount": "Descendant Text Added".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateHTML("text_add_descendant", "Descendant Text Added");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden Descendant Text Removed"],
         "addedCount": "hidden Descendant Text Removed".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         updateText("text_remove_descendant", "");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["Descendant Text Added"],
         "addedCount": "Descendant Text Added".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateText("text_add_descendant2", "Descendant Text Added");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["Descendant Text Added"],
         "addedCount": "Descendant Text Added".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateHTML("text_add_descendant2", "Descendant Text Added");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["hidden Descendant Text Removed"],
         "addedCount": "hidden Descendant Text Removed".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         updateText("text_remove_descendant2", "");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I am replaced main"],
         "addedCount": "I am replaced main".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": true
         // }
       }],
       action: function action() {
         var child = document.getElementById("to_replace");
         child.setAttribute("role", "main");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I am a replaced text"],
         "addedCount": "I am a replaced text".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateText("to_replace_text", "I am a replaced text");
-      }
+      },
     }, {
       expected: [{
         "eventType": AndroidEvents.ANNOUNCEMENT,
         "text": ["I am a replaced text"],
         "addedCount": "I am a replaced text".length,
         "removedCount": 0,
         "fromIndex": 0,
         // "options": {
         //   "enqueue": false
         // }
       }],
       action: function action() {
         updateHTML("to_replace_text", "I am a replaced text");
-      }
+      },
     }];
 
     function doTest() {
       AccessFuTest.addFunc(startAccessFu);
       tests.forEach(function addTest(test) {
         AccessFuTest.addFunc(function() {
           AccessFuTest.once(test.expected, AccessFuTest.nextTest);
           test.action();
--- a/accessible/tests/mochitest/jsat/test_output.html
+++ b/accessible/tests/mochitest/jsat/test_output.html
@@ -22,29 +22,29 @@ https://bugzilla.mozilla.org/show_bug.cg
         // Test the following accOrElmOrID (with optional old accOrElmOrID).
         // Note: each accOrElmOrID entry maps to a unique object utterance
         // generator function within the UtteranceGenerator.
         var tests = [{
           accOrElmOrID: "anchor",
           expectedUtterance: [[{"string": "link"}, "title"],
             ["title", {"string": "link"}]],
           expectedBraille: [[{"string": "linkAbbr"}, "title"],
-            ["title", {"string": "linkAbbr"}]]
+            ["title", {"string": "linkAbbr"}]],
         }, {
           accOrElmOrID: "anchor_titleandtext",
           expectedUtterance: [[{"string": "link"}, "goes to the tests",
             "Tests"], ["Tests", "goes to the tests", {"string": "link"}]],
           expectedBraille:   [[{"string": "linkAbbr"}, "goes to the tests",
             "Tests"], ["Tests", "goes to the tests", {"string": "linkAbbr"}]],
         }, {
           accOrElmOrID: "anchor_duplicatedtitleandtext",
           expectedUtterance: [[{"string": "link"}, "Tests"],
             ["Tests", {"string": "link"}]],
           expectedBraille: [[{"string": "linkAbbr"}, "Tests"],
-            ["Tests", {"string": "linkAbbr"}]]
+            ["Tests", {"string": "linkAbbr"}]],
         }, {
           accOrElmOrID: "anchor_arialabelandtext",
           expectedUtterance: [[{"string": "link"}, "goes to the tests - Tests"],
             ["Tests - goes to the tests", {"string": "link"}]],
           expectedBraille: [[{"string": "linkAbbr"},
             "goes to the tests - Tests"], ["Tests - goes to the tests",
             {"string": "linkAbbr"}]],
         }, {
@@ -56,52 +56,52 @@ https://bugzilla.mozilla.org/show_bug.cg
             "This is the text area text."], ["This is the text area text.",
             {"string": "textareaAbbr"}]],
         }, {
           accOrElmOrID: "heading",
           expectedUtterance: [[{"string": "headingLevel", "args": [1]},
             "Test heading"], ["Test heading",
             {"string": "headingLevel", "args": [1]}]],
           expectedBraille: [[{"string": "headingAbbr"}, "Test heading"],
-                            ["Test heading", {"string": "headingAbbr"}]]
+                            ["Test heading", {"string": "headingAbbr"}]],
         }, {
           accOrElmOrID: "list",
           expectedUtterance: [[{"string": "list"},
             {"string": "listItemsCount", "count": 1}, {"string": "listStart"},
             "1.", "list one"], ["1.", "list one", {"string": "listStart"},
-            {"string": "list"}, {"string": "listItemsCount", "count": 1}]
+            {"string": "list"}, {"string": "listItemsCount", "count": 1}],
           ],
           expectedBraille: [[{"string": "listAbbr"}, "list one"],
-            ["list one", {"string": "listAbbr"}]]
+            ["list one", {"string": "listAbbr"}]],
         }, {
           accOrElmOrID: "dlist",
           expectedUtterance: [[{"string": "definitionlist"},
             {"string": "listItemsCount", "count": 0.5}, "dd one"], ["dd one",
             {"string": "definitionlist"},
-            {"string": "listItemsCount", "count": 0.5}]
+            {"string": "listItemsCount", "count": 0.5}],
           ],
           expectedBraille: [[{"string": "definitionlistAbbr"}, "dd one"],
-                            ["dd one", {"string": "definitionlistAbbr"}]]
+                            ["dd one", {"string": "definitionlistAbbr"}]],
         }, {
           accOrElmOrID: "li_one",
           expectedUtterance: [[{"string": "list"},
             {"string": "listItemsCount", "count": 1}, {"string": "listStart"},
             "1.", "list one"], ["1.", "list one", {"string": "listStart"},
-            {"string": "list"}, {"string": "listItemsCount", "count": 1}]
+            {"string": "list"}, {"string": "listItemsCount", "count": 1}],
           ],
-          expectedBraille: [["1.", "list one"], ["1.", "list one"]]
+          expectedBraille: [["1.", "list one"], ["1.", "list one"]],
         },
         {
           accOrElmOrID: "li_two",
           expectedUtterance: [[{"string": "list"},
             {"string": "listItemsCount", "count": 1}, {"string": "listStart"},
             "list two"], ["list two", {"string": "listStart"},
-            {"string": "list"}, {"string": "listItemsCount", "count": 1}]
+            {"string": "list"}, {"string": "listItemsCount", "count": 1}],
           ],
-          expectedBraille: [["*", "list two"], ["*", "list two"]]
+          expectedBraille: [["*", "list two"], ["*", "list two"]],
         }, {
           accOrElmOrID: "cell",
           expectedUtterance: [[{"string": "table"},
             {"string": "tblColumnInfo", "count": 1},
             {"string": "tblRowInfo", "count": 1}, "Fruits and vegetables",
             {"string": "columnInfo", "args": [1]},
             {"string": "rowInfo", "args": [1]}, {"string": "list"},
             {"string": "listItemsCount", "count": 4}, {"string": "listStart"},
@@ -118,367 +118,367 @@ https://bugzilla.mozilla.org/show_bug.cg
             {"string": "tblRowInfo", "count": 1}]],
           expectedBraille: [[{"string": "cellInfoAbbr", "args": [ 1, 1]},
             {"string": "listAbbr"}, {"string": "linkAbbr"}, "Apples",
             {"string": "linkAbbr"}, "Bananas", {"string": "linkAbbr"},
             "Peaches", {"string": "linkAbbr"}, "Plums"], ["Apples",
             {"string": "linkAbbr"}, "Bananas", {"string": "linkAbbr"},
             "Peaches", {"string": "linkAbbr"}, "Plums", {"string": "linkAbbr"},
             {"string": "listAbbr"},
-            {"string": "cellInfoAbbr", "args": [ 1, 1]}]]
+            {"string": "cellInfoAbbr", "args": [ 1, 1]}]],
         }, {
           accOrElmOrID: "email",
           expectedUtterance: [[{"string": "textInputType_email"},
             {"string": "entry"}, "test@example.com"], ["test@example.com",
             {"string": "textInputType_email"}, {"string": "entry"}]],
           expectedBraille: [[{"string": "textInputType_email"},
             {"string": "entryAbbr"}, "test@example.com"], ["test@example.com",
-            {"string": "textInputType_email"}, {"string": "entryAbbr"}]]
+            {"string": "textInputType_email"}, {"string": "entryAbbr"}]],
         }, {
           accOrElmOrID: "search",
           expectedUtterance: [[{"string": "textInputType_search"},
             {"string": "entry"}, "This is a search"], ["This is a search",
             {"string": "textInputType_search"}, {"string": "entry"}]],
           expectedBraille: [[{"string": "textInputType_search"},
             {"string": "entryAbbr"}, "This is a search"], ["This is a search",
-            {"string": "textInputType_search"}, {"string": "entryAbbr"}]]
+            {"string": "textInputType_search"}, {"string": "entryAbbr"}]],
         }, {
           accOrElmOrID: "tel",
           expectedUtterance: [[{"string": "textInputType_tel"},
             {"string": "entry"}, "555-5555"], ["555-5555",
             {"string": "textInputType_tel"}, {"string": "entry"}]],
           expectedBraille: [[{"string": "textInputType_tel"},
             {"string": "entryAbbr"}, "555-5555"], ["555-5555",
-            {"string": "textInputType_tel"}, {"string": "entryAbbr"}]]
+            {"string": "textInputType_tel"}, {"string": "entryAbbr"}]],
         }, {
           accOrElmOrID: "url",
           expectedUtterance: [[{"string": "textInputType_url"},
             {"string": "entry"}, "http://example.com"], ["http://example.com",
             {"string": "textInputType_url"}, {"string": "entry"}]],
           expectedBraille: [[{"string": "textInputType_url"},
             {"string": "entryAbbr"}, "http://example.com"],
             ["http://example.com", {"string": "textInputType_url"},
-            {"string": "entryAbbr"}]]
+            {"string": "entryAbbr"}]],
         }, {
           accOrElmOrID: "textInput",
           expectedUtterance: [[{"string": "entry"}, "This is text."],
                               ["This is text.", {"string": "entry"}]],
           expectedBraille: [[{"string": "entryAbbr"}, "This is text."],
-                            ["This is text.", {"string": "entryAbbr"}]]
+                            ["This is text.", {"string": "entryAbbr"}]],
         }, {
           // Test pivot to list from li_one.
           accOrElmOrID: "list",
           oldAccOrElmOrID: "li_one",
           expectedUtterance: [[{"string": "list"},
             {"string": "listItemsCount", "count": 1}, {"string": "listStart"},
             "1.", "list one"], ["1.", "list one", {"string": "listStart"},
-            {"string": "list"}, {"string": "listItemsCount", "count": 1}]
+            {"string": "list"}, {"string": "listItemsCount", "count": 1}],
           ],
           expectedBraille: [[{"string": "listAbbr"}, "list one"],
-                            ["list one", {"string": "listAbbr"}]]
+                            ["list one", {"string": "listAbbr"}]],
         }, {
           // Test pivot to "apples" link from the table cell.
           accOrElmOrID: "apples",
           oldAccOrElmOrID: "cell",
           expectedUtterance: [[{"string": "list"},
             {"string": "listItemsCount", "count": 4}, {"string": "listStart"},
             {"string": "link"}, "Apples"], ["Apples", {"string": "link"},
             {"string": "listStart"}, {"string": "list"},
-            {"string": "listItemsCount", "count": 4}]
+            {"string": "listItemsCount", "count": 4}],
           ],
           expectedBraille: [["*", {"string": "linkAbbr"}, "Apples"],
-                            ["*", "Apples", {"string": "linkAbbr"}]]
+                            ["*", "Apples", {"string": "linkAbbr"}]],
         }, {
           // Test pivot to "bananas" link from "apples" link.
           accOrElmOrID: "bananas",
           oldAccOrElmOrID: "apples",
           expectedUtterance: [[{"string": "link"}, "Bananas"],
                               ["Bananas", {"string": "link"}]],
           expectedBraille: [["*", {"string": "linkAbbr"}, "Bananas"],
-                            ["*", "Bananas", {"string": "linkAbbr"}]]
+                            ["*", "Bananas", {"string": "linkAbbr"}]],
         }, {
           // test unavailable state utterance
           accOrElmOrID: "unavailableButton",
           expectedUtterance: [[{"string": "stateUnavailable"},
             {"string": "pushbutton"}, "I am unavailable"], ["I am unavailable",
             {"string": "stateUnavailable"}, {"string": "pushbutton"}]],
           expectedBraille: [[{"string": "pushbuttonAbbr"}, "I am unavailable"],
-                            ["I am unavailable", {"string": "pushbuttonAbbr"}]]
+                            ["I am unavailable", {"string": "pushbuttonAbbr"}]],
         }, {
           // test expanded state utterance
           accOrElmOrID: "expandedButton",
           expectedUtterance: [[{"string": "stateExpanded"},
             {"string": "pushbutton"}, "I am expanded"], ["I am expanded",
             {"string": "stateExpanded"}, {"string": "pushbutton"}]],
           expectedBraille: [[{"string": "pushbuttonAbbr"}, "I am expanded"],
-                            ["I am expanded", {"string": "pushbuttonAbbr"}]]
+                            ["I am expanded", {"string": "pushbuttonAbbr"}]],
         }, {
           // test collapsed state utterance
           accOrElmOrID: "collapsedButton",
           expectedUtterance: [[{"string": "stateCollapsed"},
             {"string": "pushbutton"}, "I am collapsed"], ["I am collapsed",
             {"string": "stateCollapsed"}, {"string": "pushbutton"}]],
           expectedBraille: [[{"string": "pushbuttonAbbr"}, "I am collapsed"],
-                            ["I am collapsed", {"string": "pushbuttonAbbr"}]]
+                            ["I am collapsed", {"string": "pushbuttonAbbr"}]],
         }, {
           // test required state utterance
           accOrElmOrID: "requiredInput",
           expectedUtterance: [[{"string": "stateRequired"}, {"string": "entry"},
             "I am required"], ["I am required", {"string": "stateRequired"},
             {"string": "entry"}]],
           expectedBraille: [[{"string": "entryAbbr"}, "I am required"],
-                            ["I am required", {"string": "entryAbbr"}]]
+                            ["I am required", {"string": "entryAbbr"}]],
         }, {
           // test unavailable state utterance on inputs
           accOrElmOrID: "readonlyInput",
           expectedUtterance: [[{"string": "stateReadonly"}, {"string": "entry"},
             "No edits"], ["No edits", {"string": "stateReadonly"},
             {"string": "entry"}]],
           expectedBraille: [[{"string": "entryAbbr"}, "No edits"],
-                            ["No edits", {"string": "entryAbbr"}]]
+                            ["No edits", {"string": "entryAbbr"}]],
         }, {
           // test unavailable state utterance on textareas
           accOrElmOrID: "readonlyTextarea",
           expectedUtterance: [[{"string": "stateReadonly"}, {"string": "textarea"},
             "No editing"], ["No editing", {"string": "stateReadonly"},
             {"string": "textarea"}]],
           expectedBraille: [[{"string": "textareaAbbr"}, "No editing"],
-                            ["No editing", {"string": "textareaAbbr"}]]
+                            ["No editing", {"string": "textareaAbbr"}]],
         }, {
           // test has popup state utterance
           accOrElmOrID: "hasPopupButton",
           expectedUtterance: [[{"string": "stateHasPopup"},
             {"string": "buttonmenu"}, "I have a popup"], ["I have a popup",
             {"string": "stateHasPopup"}, {"string": "buttonmenu"}]],
           expectedBraille: [[{"string": "buttonmenuAbbr"}, "I have a popup"],
-                            ["I have a popup", {"string": "buttonmenuAbbr"}]]
+                            ["I have a popup", {"string": "buttonmenuAbbr"}]],
         }, {
           // Test selected tab
           accOrElmOrID: "tab1",
           expectedUtterance: [[{"string": "pagetablist"}, {"string": "pagetab"},
             {"string": "objItemOfN", "args": [1, 2]}, "Account"], ["Account",
             {"string": "pagetab"}, {"string": "objItemOfN", "args": [1, 2]},
-            {"string": "pagetablist"}]
+            {"string": "pagetablist"}],
           ],
           expectedBraille: [[{"string": "pagetabAbbr"},
             {"string": "objItemOfN", "args": [1, 2]}, "Account"], ["Account",
             {"string": "pagetabAbbr"},
-            {"string": "objItemOfN", "args": [1, 2]}]]
+            {"string": "objItemOfN", "args": [1, 2]}]],
         }, {
           // Test unselected tab
           accOrElmOrID: "tab2",
           expectedUtterance: [[{"string": "pagetablist"}, {"string": "pagetab"},
             {"string": "objItemOfN", "args": [2, 2]}, "Advanced"], ["Advanced",
             {"string": "pagetab"}, {"string": "objItemOfN", "args": [2, 2]},
             {"string": "pagetablist"}]],
           expectedBraille: [[{"string": "pagetabAbbr"},
             {"string": "objItemOfN", "args": [2, 2]}, "Advanced"], ["Advanced",
             {"string": "pagetabAbbr"},
-            {"string": "objItemOfN", "args": [2, 2]}]]
+            {"string": "objItemOfN", "args": [2, 2]}]],
         }, {
           // Landing on this label should mimic landing on the checkbox.
           accOrElmOrID: "label1",
           expectedUtterance: [[{"string": "checkbutton"}, "Orange"], ["Orange",
             {"string": "checkbutton"}]],
-          expectedBraille: [["Orange"], ["Orange"]]
+          expectedBraille: [["Orange"], ["Orange"]],
         }, {
           // Here we get a top-level view of the form.
           accOrElmOrID: "form1",
           expectedUtterance: [[{"string": "label"}, {"string": "checkbutton"}, "Orange",
             "Orange", {"string": "checkbutton"}, "Blue", {"string": "label"}, "Blue"],
             ["Orange", {"string": "checkbutton"}, "Orange", {"string": "label"}, "Blue",
             {"string": "checkbutton"}, "Blue", {"string": "label"}]],
           expectedBraille: [[{"string": "labelAbbr"}, "Orange", "Orange", "Blue",
             {"string": "labelAbbr"}, "Blue"], ["Orange", "Orange",
-            {"string": "labelAbbr"}, "Blue", "Blue", {"string": "labelAbbr"}]]
+            {"string": "labelAbbr"}, "Blue", "Blue", {"string": "labelAbbr"}]],
         }, {
           // This is a non-nesting label.
           accOrElmOrID: "label2",
           expectedUtterance: [[{"string": "label"}, "Blue"],
                               ["Blue", {"string": "label"}]],
           expectedBraille: [[{"string": "labelAbbr"}, "Blue"],
-                            ["Blue", {"string": "labelAbbr"}]]
+                            ["Blue", {"string": "labelAbbr"}]],
         }, {
           // This is a distinct control.
           accOrElmOrID: "input2",
           expectedUtterance: [[ {"string": "checkbutton"}, "Blue"],
                               ["Blue", {"string": "checkbutton"}]],
-          expectedBraille: [["Blue"], ["Blue"]]
+          expectedBraille: [["Blue"], ["Blue"]],
         }, {
           // This is a nested control.
           accOrElmOrID: "input1",
           expectedUtterance: [[ {"string": "checkbutton"}, "Orange"], ["Orange",
             {"string": "checkbutton"}]],
-          expectedBraille: [["Orange"], ["Orange"]]
+          expectedBraille: [["Orange"], ["Orange"]],
         }, {
           // Landing on this label should mimic landing on the entry.
           accOrElmOrID: "label3",
           expectedUtterance: [[{"string": "entry"}, "Joe", "First name:"],
                              ["First name:", "Joe", {"string": "entry"}]],
           expectedBraille: [[{"string": "entryAbbr"}, "Joe", "First name:"],
-                            ["First name:", "Joe", {"string": "entryAbbr"}]]
+                            ["First name:", "Joe", {"string": "entryAbbr"}]],
         }, {
           // This is a nested control with a value.
           accOrElmOrID: "input3",
           expectedUtterance: [[{"string": "entry"}, "Joe", "First name:"],
                               ["First name:", "Joe", {"string": "entry"}]],
           expectedBraille: [[{"string": "entryAbbr"}, "Joe", "First name:"],
-                            ["First name:", "Joe", {"string": "entryAbbr"}]]
+                            ["First name:", "Joe", {"string": "entryAbbr"}]],
         }, {
           // This is a nested control with a value.
           accOrElmOrID: "input4",
           expectedUtterance: [[{"string": "slider"}, "3", "Points:"],
                               ["Points:", "3", {"string": "slider"}]],
           expectedBraille: [[{"string": "sliderAbbr"}, "3", "Points:"],
-                            ["Points:", "3", {"string": "sliderAbbr"}]]
+                            ["Points:", "3", {"string": "sliderAbbr"}]],
         }, {
           accOrElmOrID: "password",
           expectedUtterance: [[{"string": "passwordtext"}, "Secret Password"],
                               ["Secret Password", {"string": "passwordtext"}]],
           expectedBraille: [[{"string": "passwordtextAbbr"}, "Secret Password"],
-                            ["Secret Password", {"string": "passwordtextAbbr"}]]
+                            ["Secret Password", {"string": "passwordtextAbbr"}]],
         }, {
           accOrElmOrID: "input5",
           expectedUtterance: [[{"string": "checkbutton"}, "Boring label"],
                               ["Boring label", {"string": "checkbutton"}]],
-          expectedBraille: [["Boring label"], ["Boring label"]]
+          expectedBraille: [["Boring label"], ["Boring label"]],
         }, {
           accOrElmOrID: "radio_unselected",
           expectedUtterance: [[{"string": "radiobutton"}, "any old radio button"],
-                              ["any old radio button", {"string": "radiobutton"}]
+                              ["any old radio button", {"string": "radiobutton"}],
           ],
-          expectedBraille: [["any old radio button"], ["any old radio button"]]
+          expectedBraille: [["any old radio button"], ["any old radio button"]],
         }, {
           accOrElmOrID: "radio_selected",
           expectedUtterance: [[{"string": "radiobutton"}, "a unique radio button"],
                               ["a unique radio button", {"string": "radiobutton"}]],
-          expectedBraille: [["a unique radio button"], ["a unique radio button"]]
+          expectedBraille: [["a unique radio button"], ["a unique radio button"]],
         }, {
           accOrElmOrID: "togglebutton_notpressed",
           expectedUtterance: [[{"string": "togglebutton"}, "I am not pressed"],
                               ["I am not pressed", {"string": "togglebutton"}]],
           expectedBraille: [
             [{"string": "stateUnpressedAbbr"}, "I am not pressed"],
-            ["I am not pressed", {"string": "stateUnpressedAbbr"}]]
+            ["I am not pressed", {"string": "stateUnpressedAbbr"}]],
         }, {
           accOrElmOrID: "togglebutton_pressed",
           expectedUtterance: [[{"string": "statePressed"},
             {"string": "togglebutton"}, "I am pressed!"], ["I am pressed!",
             {"string": "statePressed"}, {"string": "togglebutton"}]],
           expectedBraille: [[{"string": "statePressedAbbr"}, "I am pressed!"],
-                            ["I am pressed!", {"string": "statePressedAbbr"}]]
+                            ["I am pressed!", {"string": "statePressedAbbr"}]],
         }, {
           accOrElmOrID: "listbox-option",
           expectedUtterance: [[{"string": "listbox"},
             {"string": "listboxoption"}, "Search suggestion"],
             ["Search suggestion", {"string": "listboxoption"},
-            {"string": "listbox"}]
+            {"string": "listbox"}],
           ],
           expectedBraille: [
             [{"string": "listboxoptionAbbr"}, "Search suggestion"],
-            ["Search suggestion", {"string": "listboxoptionAbbr"}]]
+            ["Search suggestion", {"string": "listboxoptionAbbr"}]],
         }, {
           accOrElmOrID: "listbox-option2",
           oldAccOrElmOrID: "listbox-option",
           expectedUtterance: [[{"string": "listboxoption"}, "555-12345"],
                               ["555-12345", {"string": "listboxoption"}]],
           expectedBraille: [[{"string": "listboxoptionAbbr"}, "555-12345"],
-                            ["555-12345", {"string": "listboxoptionAbbr"}]]
+                            ["555-12345", {"string": "listboxoptionAbbr"}]],
         }, {
           accOrElmOrID: "columnheader",
           oldAccOrElmOrID: "grid",
           expectedUtterance: [[{"string": "columnInfo", "args": [1]},
             {"string": "rowInfo", "args": [1]}, "Sunday"], ["Sunday",
             {"string": "columnInfo", "args": [1]},
             {"string": "rowInfo", "args": [1]}]],
           expectedBraille: [[{"string": "cellInfoAbbr", "args": [1, 1]},
-            "Sunday"], ["Sunday", {"string": "cellInfoAbbr", "args": [1, 1]}]]
+            "Sunday"], ["Sunday", {"string": "cellInfoAbbr", "args": [1, 1]}]],
         }, {
           accOrElmOrID: "rowheader",
           oldAccOrElmOrID: "grid",
           expectedUtterance: [[{"string": "columnInfo", "args": [1]},
             {"string": "rowInfo", "args": [2]}, "Sunday", "Week 1"], ["Week 1",
             {"string": "columnInfo", "args": [1]},
             {"string": "rowInfo", "args": [2]}, "Sunday"]],
           expectedBraille: [[{"string": "cellInfoAbbr", "args": [1, 2]},
             "Sunday", "Week 1"], ["Week 1",
-            {"string": "cellInfoAbbr", "args": [1, 2]}, "Sunday"]]
+            {"string": "cellInfoAbbr", "args": [1, 2]}, "Sunday"]],
         }, {
           accOrElmOrID: "gridcell1",
           oldAccOrElmOrID: "grid",
           expectedUtterance: [["3"], ["3"]],
-          expectedBraille: [["3"], ["3"]]
+          expectedBraille: [["3"], ["3"]],
         }, {
           accOrElmOrID: "gridcell2",
           oldAccOrElmOrID: "grid",
           expectedUtterance: [["4", "7"], ["4", "7"]],
-          expectedBraille: [["4", "7"], ["4", "7"]]
+          expectedBraille: [["4", "7"], ["4", "7"]],
         }, {
           accOrElmOrID: "gridcell3",
           oldAccOrElmOrID: "grid",
           expectedUtterance: [["5"], ["5"]],
           expectedBraille: [["5"], ["5"]],
         }, {
           accOrElmOrID: "frequency",
           expectedUtterance: [[{"string": "stateCollapsed"},
             {"string": "stateHasPopup"}, {"string": "combobox"}, "15 min"], [
             "15 min", {"string": "stateCollapsed"}, {"string": "stateHasPopup"},
             {"string": "combobox"}]],
           expectedBraille: [[{"string": "comboboxAbbr"}, "15 min"], ["15 min",
-            {"string": "comboboxAbbr"}]]
+            {"string": "comboboxAbbr"}]],
         }, {
           accOrElmOrID: "selected-combobox-option",
           oldAccOrElmOrID: "frequency",
           expectedUtterance: [[{"string": "comboboxoption"}, "15 min"],
                               ["15 min", {"string": "comboboxoption"}]],
           expectedBraille: [[{"string": "comboboxoptionAbbr"}, "15 min"], [
-            "15 min", {"string": "comboboxoptionAbbr"}]]
+            "15 min", {"string": "comboboxoptionAbbr"}]],
         }, {
           accOrElmOrID: "combobox-option",
           oldAccOrElmOrID: "frequency",
           expectedUtterance: [[{"string": "comboboxoption"}, "30 min"], [
             "30 min", {"string": "comboboxoption"}]],
           expectedBraille: [[{"string": "comboboxoptionAbbr"}, "30 min"], [
-            "30 min", {"string": "comboboxoptionAbbr"}]]
+            "30 min", {"string": "comboboxoptionAbbr"}]],
         }, {
           accOrElmOrID: "labelled-combobox",
           expectedUtterance: [[{"string": "stateCollapsed"},
             {"string": "stateHasPopup"}, {"string": "combobox"}, "Never",
             "Intervals"], ["Intervals", "Never", {"string": "stateCollapsed"},
             {"string": "stateHasPopup"}, {"string": "combobox"}]],
           expectedBraille: [[{"string": "comboboxAbbr"}, "Never", "Intervals"],
-            ["Intervals", "Never", {"string": "comboboxAbbr"}]]
+            ["Intervals", "Never", {"string": "comboboxAbbr"}]],
         }, {
           accOrElmOrID: "statusbar-1",
           expectedUtterance: [["Last sync:", "2 days ago"],
                               ["Last sync:", "2 days ago"]],
           expectedBraille: [["Last sync:", "2 days ago"],
-                            ["Last sync:", "2 days ago"]]
+                            ["Last sync:", "2 days ago"]],
         }, {
           accOrElmOrID: "statusbar-2",
           expectedUtterance: [["Last sync: 30min ago"],
                               ["Last sync: 30min ago"]],
-          expectedBraille: [["Last sync: 30min ago"], ["Last sync: 30min ago"]]
+          expectedBraille: [["Last sync: 30min ago"], ["Last sync: 30min ago"]],
         }, {
           accOrElmOrID: "switch-1",
           expectedUtterance: [[{"string": "switch"}, "Simple switch"],
                               ["Simple switch", {"string": "switch"}]],
-          expectedBraille: [["Simple switch"], ["Simple switch"]]
+          expectedBraille: [["Simple switch"], ["Simple switch"]],
         }, {
           accOrElmOrID: "switch-2",
           expectedUtterance: [[{"string": "switch"}, "Another switch"],
                               ["Another switch", {"string": "switch"}]],
-          expectedBraille: [["Another switch"], ["Another switch"]]
+          expectedBraille: [["Another switch"], ["Another switch"]],
         }];
 
         // Test all possible utterance order preference values.
         function testOutputOrder(aOutputOrder) {
           return function() {
             SpecialPowers.pushPrefEnv({
-              "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]]
+              "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]],
             }, function() {
               tests.forEach(function run(test) {
                 testOutput(test.expectedUtterance[aOutputOrder], test.accOrElmOrID,
                   test.oldAccOrElmOrID);
               });
               AccessFuTest.nextTest();
             });
           };
--- a/accessible/tests/mochitest/jsat/test_output_mathml.html
+++ b/accessible/tests/mochitest/jsat/test_output_mathml.html
@@ -15,169 +15,169 @@
   <script type="application/javascript">
 
     function doTest() {
       // Test the following accOrElmOrID.
       var tests = [{
           accOrElmOrID: "math-1",
           expectedUtterance: [
             [{"string": "open-fence"}, "(", "x", ",", "y", {"string": "close-fence"}, ")"],
-            ["(", {"string": "open-fence"}, "x", ",", "y", ")", {"string": "close-fence"}]
+            ["(", {"string": "open-fence"}, "x", ",", "y", ")", {"string": "close-fence"}],
           ],
           expectedBraille: [
             [{"string": "open-fenceAbbr"}, "(", "x", ",", "y", {"string": "close-fenceAbbr"}, ")"],
-            ["(", {"string": "open-fenceAbbr"}, "x", ",", "y", ")", {"string": "close-fenceAbbr"}]
-          ]
+            ["(", {"string": "open-fenceAbbr"}, "x", ",", "y", ")", {"string": "close-fenceAbbr"}],
+          ],
         }, {
           accOrElmOrID: "mfrac-1",
           expectedUtterance: [
             [{"string": "mathmlfraction"}, {"string": "numerator"}, "a", {"string": "denominator"}, "b"],
-            ["a", {"string": "numerator"}, "b", {"string": "denominator"}, {"string": "mathmlfraction"}]
+            ["a", {"string": "numerator"}, "b", {"string": "denominator"}, {"string": "mathmlfraction"}],
           ],
           expectedBraille: [
             [{"string": "mathmlfractionAbbr"}, {"string": "numeratorAbbr"}, "a", {"string": "denominatorAbbr"}, "b"],
-            ["a", {"string": "numeratorAbbr"}, "b", {"string": "denominatorAbbr"}, {"string": "mathmlfractionAbbr"}]
-          ]
+            ["a", {"string": "numeratorAbbr"}, "b", {"string": "denominatorAbbr"}, {"string": "mathmlfractionAbbr"}],
+          ],
         }, {
           accOrElmOrID: "mfrac-2",
           expectedUtterance: [
             [{"string": "mathmlfractionwithoutbar"}, {"string": "numerator"}, "a", {"string": "denominator"}, "b"],
-            ["a", {"string": "numerator"}, "b", {"string": "denominator"}, {"string": "mathmlfractionwithoutbar"}]
+            ["a", {"string": "numerator"}, "b", {"string": "denominator"}, {"string": "mathmlfractionwithoutbar"}],
           ],
           expectedBraille: [
             [{"string": "mathmlfractionwithoutbarAbbr"}, {"string": "numeratorAbbr"}, "a", {"string": "denominatorAbbr"}, "b"],
-            ["a", {"string": "numeratorAbbr"}, "b", {"string": "denominatorAbbr"}, {"string": "mathmlfractionwithoutbarAbbr"}]
-          ]
+            ["a", {"string": "numeratorAbbr"}, "b", {"string": "denominatorAbbr"}, {"string": "mathmlfractionwithoutbarAbbr"}],
+          ],
         }, {
           accOrElmOrID: "msub-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "subscript"}, "b"],
-            ["a", {"string": "base"}, "b", {"string": "subscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "subscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "subscriptAbbr"}, "b"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "subscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "subscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "msup-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "superscript"}, "b"],
-            ["a", {"string": "base"}, "b", {"string": "superscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "superscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "superscriptAbbr"}, "b"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "superscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "superscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "msubsup-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "subscript"}, "b", {"string": "superscript"}, "c"],
-            ["a", {"string": "base"}, "b", {"string": "subscript"}, "c", {"string": "superscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "subscript"}, "c", {"string": "superscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "subscriptAbbr"}, "b", {"string": "superscriptAbbr"}, "c"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "subscriptAbbr"}, "c", {"string": "superscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "subscriptAbbr"}, "c", {"string": "superscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "mmultiscripts-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "subscript"}, "b", {"string": "superscript"}, "c", {"string": "superscript"}, "d", {"string": "presubscript"}, "e", {"string": "presubscript"}, "f", {"string": "presuperscript"}, "g"],
-            ["a", {"string": "base"}, "b", {"string": "subscript"}, "c", {"string": "superscript"}, "d", {"string": "superscript"}, "e", {"string": "presubscript"}, "f", {"string": "presubscript"}, "g", {"string": "presuperscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "subscript"}, "c", {"string": "superscript"}, "d", {"string": "superscript"}, "e", {"string": "presubscript"}, "f", {"string": "presubscript"}, "g", {"string": "presuperscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "subscriptAbbr"}, "b", {"string": "superscriptAbbr"}, "c", {"string": "superscriptAbbr"}, "d", {"string": "presubscriptAbbr"}, "e", {"string": "presubscriptAbbr"}, "f", {"string": "presuperscriptAbbr"}, "g"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "subscriptAbbr"}, "c", {"string": "superscriptAbbr"}, "d", {"string": "superscriptAbbr"}, "e", {"string": "presubscriptAbbr"}, "f", {"string": "presubscriptAbbr"}, "g", {"string": "presuperscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "subscriptAbbr"}, "c", {"string": "superscriptAbbr"}, "d", {"string": "superscriptAbbr"}, "e", {"string": "presubscriptAbbr"}, "f", {"string": "presubscriptAbbr"}, "g", {"string": "presuperscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "munder-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "underscript"}, "b"],
-            ["a", {"string": "base"}, "b", {"string": "underscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "underscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "underscriptAbbr"}, "b"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "underscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "underscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "mover-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "overscript"}, "b"],
-            ["a", {"string": "base"}, "b", {"string": "overscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "overscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "overscriptAbbr"}, "b"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "overscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "overscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "munderover-1",
           expectedUtterance: [
             [{"string": "mathmlscripted"}, {"string": "base"}, "a", {"string": "underscript"}, "b", {"string": "overscript"}, "c"],
-            ["a", {"string": "base"}, "b", {"string": "underscript"}, "c", {"string": "overscript"}, {"string": "mathmlscripted"}]
+            ["a", {"string": "base"}, "b", {"string": "underscript"}, "c", {"string": "overscript"}, {"string": "mathmlscripted"}],
           ],
           expectedBraille: [
             [{"string": "mathmlscriptedAbbr"}, {"string": "baseAbbr"}, "a", {"string": "underscriptAbbr"}, "b", {"string": "overscriptAbbr"}, "c"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "underscriptAbbr"}, "c", {"string": "overscriptAbbr"}, {"string": "mathmlscriptedAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "underscriptAbbr"}, "c", {"string": "overscriptAbbr"}, {"string": "mathmlscriptedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "mroot-1",
           expectedUtterance: [
             [{"string": "mathmlroot"}, {"string": "base"}, "a", {"string": "root-index"}, "b"],
-            ["a", {"string": "base"}, "b", {"string": "root-index"}, {"string": "mathmlroot"}]
+            ["a", {"string": "base"}, "b", {"string": "root-index"}, {"string": "mathmlroot"}],
           ],
           expectedBraille: [
             [{"string": "mathmlrootAbbr"}, {"string": "baseAbbr"}, "a", {"string": "root-indexAbbr"}, "b"],
-            ["a", {"string": "baseAbbr"}, "b", {"string": "root-indexAbbr"}, {"string": "mathmlrootAbbr"}]
-          ]
+            ["a", {"string": "baseAbbr"}, "b", {"string": "root-indexAbbr"}, {"string": "mathmlrootAbbr"}],
+          ],
         }, {
           accOrElmOrID: "mtable-1",
           expectedUtterance: [
             [{"string": "mathmltable"}, {"string": "tblColumnInfo", "count": 3}, {"string": "tblRowInfo", "count": 2}, {"string": "columnInfo", "args": [1]}, {"string": "rowInfo", "args": [1]}, "a", {"string": "columnInfo", "args": [2]}, {"string": "rowInfo", "args": [1]}, "b", {"string": "columnInfo", "args": [3]}, {"string": "rowInfo", "args": [1]}, "c", {"string": "columnInfo", "args": [1]}, {"string": "rowInfo", "args": [2]}, "d", {"string": "columnInfo", "args": [2]}, {"string": "rowInfo", "args": [2]}, "e", {"string": "columnInfo", "args": [3]}, {"string": "rowInfo", "args": [2]}, "f"],
-            ["a", {"string": "columnInfo", "args": [1]}, {"string": "rowInfo", "args": [1]}, "b", {"string": "columnInfo", "args": [2]}, {"string": "rowInfo", "args": [1]}, "c", {"string": "columnInfo", "args": [3]}, {"string": "rowInfo", "args": [1]}, "d", {"string": "columnInfo", "args": [1]}, {"string": "rowInfo", "args": [2]}, "e", {"string": "columnInfo", "args": [2]}, {"string": "rowInfo", "args": [2]}, "f", {"string": "columnInfo", "args": [3]}, {"string": "rowInfo", "args": [2]}, {"string": "mathmltable"}, {"string": "tblColumnInfo", "count": 3}, {"string": "tblRowInfo", "count": 2}]
+            ["a", {"string": "columnInfo", "args": [1]}, {"string": "rowInfo", "args": [1]}, "b", {"string": "columnInfo", "args": [2]}, {"string": "rowInfo", "args": [1]}, "c", {"string": "columnInfo", "args": [3]}, {"string": "rowInfo", "args": [1]}, "d", {"string": "columnInfo", "args": [1]}, {"string": "rowInfo", "args": [2]}, "e", {"string": "columnInfo", "args": [2]}, {"string": "rowInfo", "args": [2]}, "f", {"string": "columnInfo", "args": [3]}, {"string": "rowInfo", "args": [2]}, {"string": "mathmltable"}, {"string": "tblColumnInfo", "count": 3}, {"string": "tblRowInfo", "count": 2}],
           ],
           expectedBraille: [
             [{"string": "mathmltableAbbr"}, {"string": "tblColumnInfoAbbr", "count": 3}, {"string": "tblRowInfoAbbr", "count": 2}, {"string": "cellInfoAbbr", "args": [1, 1]}, "a", {"string": "cellInfoAbbr", "args": [2, 1]}, "b", {"string": "cellInfoAbbr", "args": [3, 1]}, "c", {"string": "cellInfoAbbr", "args": [1, 2]}, "d", {"string": "cellInfoAbbr", "args": [2, 2]}, "e", {"string": "cellInfoAbbr", "args": [3, 2]}, "f"],
-            ["a", {"string": "cellInfoAbbr", "args": [1, 1]}, "b", {"string": "cellInfoAbbr", "args": [2, 1]}, "c", {"string": "cellInfoAbbr", "args": [3, 1]}, "d", {"string": "cellInfoAbbr", "args": [1, 2]}, "e", {"string": "cellInfoAbbr", "args": [2, 2]}, "f", {"string": "cellInfoAbbr", "args": [3, 2]}, {"string": "mathmltableAbbr"}, {"string": "tblColumnInfoAbbr", "count": 3}, {"string": "tblRowInfoAbbr", "count": 2}]
-          ]
+            ["a", {"string": "cellInfoAbbr", "args": [1, 1]}, "b", {"string": "cellInfoAbbr", "args": [2, 1]}, "c", {"string": "cellInfoAbbr", "args": [3, 1]}, "d", {"string": "cellInfoAbbr", "args": [1, 2]}, "e", {"string": "cellInfoAbbr", "args": [2, 2]}, "f", {"string": "cellInfoAbbr", "args": [3, 2]}, {"string": "mathmltableAbbr"}, {"string": "tblColumnInfoAbbr", "count": 3}, {"string": "tblRowInfoAbbr", "count": 2}],
+          ],
       }, {
           accOrElmOrID: "menclose-1",
           expectedUtterance: [
             [{"string": "mathmlenclosed"}, {"string": "notation-longdiv"}, "a"],
-            ["a", {"string": "notation-longdiv"}, {"string": "mathmlenclosed"}]
+            ["a", {"string": "notation-longdiv"}, {"string": "mathmlenclosed"}],
           ],
           expectedBraille: [
             [{"string": "mathmlenclosedAbbr"}, {"string": "notation-longdivAbbr"}, "a"],
-            ["a", {"string": "notation-longdivAbbr"}, {"string": "mathmlenclosedAbbr"}]
-          ]
+            ["a", {"string": "notation-longdivAbbr"}, {"string": "mathmlenclosedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "menclose-2",
           expectedUtterance: [
             [{"string": "mathmlenclosed"}, {"string": "notation-circle"}, "a"],
-            ["a", {"string": "notation-circle"}, {"string": "mathmlenclosed"}]
+            ["a", {"string": "notation-circle"}, {"string": "mathmlenclosed"}],
           ],
           expectedBraille: [
             [{"string": "mathmlenclosedAbbr"}, {"string": "notation-circleAbbr"}, "a"],
-            ["a", {"string": "notation-circleAbbr"}, {"string": "mathmlenclosedAbbr"}]
-          ]
+            ["a", {"string": "notation-circleAbbr"}, {"string": "mathmlenclosedAbbr"}],
+          ],
         }, {
           accOrElmOrID: "menclose-3",
           expectedUtterance: [
             [{"string": "mathmlenclosed"}, {"string": "notation-left"}, {"string": "notation-top"}, {"string": "notation-bottom"}, "a"],
-            ["a", {"string": "notation-left"}, {"string": "notation-top"}, {"string": "notation-bottom"}, {"string": "mathmlenclosed"}]
+            ["a", {"string": "notation-left"}, {"string": "notation-top"}, {"string": "notation-bottom"}, {"string": "mathmlenclosed"}],
           ],
           expectedBraille: [
             [{"string": "mathmlenclosedAbbr"}, {"string": "notation-leftAbbr"}, {"string": "notation-topAbbr"}, {"string": "notation-bottomAbbr"}, "a"],
-            ["a", {"string": "notation-leftAbbr"}, {"string": "notation-topAbbr"}, {"string": "notation-bottomAbbr"}, {"string": "mathmlenclosedAbbr"}]
-          ]
+            ["a", {"string": "notation-leftAbbr"}, {"string": "notation-topAbbr"}, {"string": "notation-bottomAbbr"}, {"string": "mathmlenclosedAbbr"}],
+          ],
         }];
 
       // Test all possible utterance order preference values.
       function testOutputOrder(aOutputOrder) {
         return function() {
           SpecialPowers.pushPrefEnv({
-            "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]]
+            "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]],
           }, function() {
             tests.forEach(function run(test) {
               testOutput(test.expectedUtterance[aOutputOrder], test.accOrElmOrID,
                 test.oldAccOrElmOrID);
             });
             AccessFuTest.nextTest();
           });
         };
--- a/accessible/tests/mochitest/jsat/test_tables.html
+++ b/accessible/tests/mochitest/jsat/test_tables.html
@@ -49,17 +49,17 @@
           {"string": "cellInfoAbbr", "args": [1, 2]}, "col1", "cell1",
           {"string": "cellInfoAbbr", "args": [2, 2]}, "col2", "cell2"], ["col1",
           {"string": "cellInfoAbbr", "args": [1, 1]}, "col2",
           {"string": "cellInfoAbbr", "args": [2, 1]}, "cell1",
           {"string": "cellInfoAbbr", "args": [1, 2]}, "col1", "cell2",
           {"string": "cellInfoAbbr", "args": [2, 2]}, "col2",
           {"string": "tableAbbr"},
           {"string": "tblColumnInfoAbbr", "count": 2},
-          {"string": "tblRowInfoAbbr", "count": 2}]]
+          {"string": "tblRowInfoAbbr", "count": 2}]],
       }, {
         accOrElmOrID: "table2",
         expectedUtterance: [[
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 2},
           {"string": "tblRowInfo", "count": 2},
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}, "col1", "cell1",
@@ -111,17 +111,17 @@
           {"string": "tableAbbr"},
           {"string": "tblColumnInfoAbbr", "count": 1},
           {"string": "tblRowInfoAbbr", "count": 2},
           {"string": "cellInfoAbbr", "args": [2, 1]}, "col2", "col1",
           {"string": "cellInfoAbbr", "args": [1, 2]}, "col2",
           {"string": "cellInfoAbbr", "args": [2, 2]},
           {"string": "tableAbbr"},
           {"string": "tblColumnInfoAbbr", "count": 2},
-          {"string": "tblRowInfoAbbr", "count": 2}]]
+          {"string": "tblRowInfoAbbr", "count": 2}]],
       }, {
         accOrElmOrID: "table3",
         expectedUtterance: [[
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 2},
           {"string": "tblRowInfo", "count": 2},
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [1]}, "col2",
@@ -150,17 +150,17 @@
           {"string": "tblRowInfoAbbr", "count": 2},
           {"string": "cellInfoAbbr", "args": [1, 1]}, "colheader",
           {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader", "bla"],
           ["colheader",
           {"string": "cellInfoAbbr", "args": [1, 1]}, "bla",
           {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader",
           {"string": "tableAbbr"},
           {"string": "tblColumnInfoAbbr", "count": 1},
-          {"string": "tblRowInfoAbbr", "count": 2}]]
+          {"string": "tblRowInfoAbbr", "count": 2}]],
       }, {
         accOrElmOrID: "table4",
         expectedUtterance: [[
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 4},
           {"string": "tblRowInfo", "count": 3},
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}, "col1",
@@ -225,79 +225,79 @@
           {"string": "cellInfoAbbr", "args": [1, 2]}, "col1", "cell1",
           {"string": "cellInfoAbbr", "args": [3, 2]}, "col3", "row1", "cell2",
           {"string": "cellInfoAbbr", "args": [4, 2]}, "row1", "row2",
           {"string": "cellInfoAbbr", "args": [1, 3]}, "col1", "cell3",
           {"string": "cellInfoAbbr", "args": [2, 3]}, "col2", "row2", "cell4",
           {"string": "cellInfoAbbr", "args": [3, 3]}, "col3", "row2",
           {"string": "tableAbbr"},
           {"string": "tblColumnInfoAbbr", "count": 4},
-          {"string": "tblRowInfoAbbr", "count": 3}]]
+          {"string": "tblRowInfoAbbr", "count": 3}]],
       }, {
         accOrElmOrID: "table5",
         expectedUtterance: [["Row1", "Row2"], ["Row1", "Row2"]],
-        expectedBraille: [["Row1", "Row2"], ["Row1", "Row2"]]
+        expectedBraille: [["Row1", "Row2"], ["Row1", "Row2"]],
       }, {
         // Test pivot to table1_th1 from table1.
         accOrElmOrID: "table1_th1",
         oldAccOrElmOrID: "table1",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}, "col1"], ["col1",
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}]],
         expectedBraille: [[
           {"string": "cellInfoAbbr", "args": [1, 1]}, "col1"], ["col1",
-          {"string": "cellInfoAbbr", "args": [1, 1]}]]
+          {"string": "cellInfoAbbr", "args": [1, 1]}]],
       }, {
         // Test pivot to table1_td2 from table1.
         accOrElmOrID: "table1_td2",
         oldAccOrElmOrID: "table1",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [2]}, "col2", "cell2"], ["cell2",
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [2]}, "col2"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [2, 2]}, "col2", "cell2"],
-          ["cell2", {"string": "cellInfoAbbr", "args": [2, 2]}, "col2"]]
+          ["cell2", {"string": "cellInfoAbbr", "args": [2, 2]}, "col2"]],
       }, {
         // Test pivot to table1_td2 from table1_th1.
         accOrElmOrID: "table1_td2",
         oldAccOrElmOrID: "table1_th1",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [2]}, "col2", "cell2"], ["cell2",
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [2]}, "col2"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [2, 2]}, "col2", "cell2"],
-          ["cell2", {"string": "cellInfoAbbr", "args": [2, 2]}, "col2"]]
+          ["cell2", {"string": "cellInfoAbbr", "args": [2, 2]}, "col2"]],
       }, {
         // Test pivot to table1_td2 from table1_td1.
         accOrElmOrID: "table1_td2",
         oldAccOrElmOrID: "table1_td1",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]}, "col2", "cell2"], ["cell2",
           {"string": "columnInfo", "args": [2]}, "col2"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [2, 2]}, "col2", "cell2"],
-          ["cell2", {"string": "cellInfoAbbr", "args": [2, 2]}, "col2"]]
+          ["cell2", {"string": "cellInfoAbbr", "args": [2, 2]}, "col2"]],
       }, {
         // Test pivot to table2_cell_1 from table2.
         accOrElmOrID: "table2_cell_1",
         oldAccOrElmOrID: "table2",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}, "col1", "cell1"], ["cell1",
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [1]}, "col1"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 1]}, "col1", "cell1"],
-          ["cell1", {"string": "cellInfoAbbr", "args": [1, 1]}, "col1"]]
+          ["cell1", {"string": "cellInfoAbbr", "args": [1, 1]}, "col1"]],
       }, {
         // Test pivot to table2_cell_2 from table2.
         accOrElmOrID: "table2_cell_2",
         oldAccOrElmOrID: "table2",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [1]}, "col2",
           {"string": "table"},
@@ -324,27 +324,27 @@
           {"string": "cellInfoAbbr", "args": [1, 1]}, "colheader",
           {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader", "bla"],
           ["colheader",
           {"string": "cellInfoAbbr", "args": [1, 1]}, "bla",
           {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader",
           {"string": "tableAbbr"},
           {"string": "tblColumnInfoAbbr", "count": 1},
           {"string": "tblRowInfoAbbr", "count": 2},
-          {"string": "cellInfoAbbr", "args": [2, 1]}, "col2"]]
+          {"string": "cellInfoAbbr", "args": [2, 1]}, "col2"]],
       }, {
         // Test pivot to table2_cell_1 from table2_cell_2.
         accOrElmOrID: "table2_cell_1",
         oldAccOrElmOrID: "table2_cell_2",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [1]}, "col1", "cell1"], ["cell1",
           {"string": "columnInfo", "args": [1]}, "col1"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 1]}, "col1", "cell1"],
-          ["cell1", {"string": "cellInfoAbbr", "args": [1, 1]}, "col1"]]
+          ["cell1", {"string": "cellInfoAbbr", "args": [1, 1]}, "col1"]],
       }, {
         // Test pivot to table3_cell from table2.
         accOrElmOrID: "table3_cell",
         oldAccOrElmOrID: "table2",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [1]}, "col2",
           {"string": "table"},
@@ -356,17 +356,17 @@
           {"string": "rowInfo", "args": [2]}, "colheader",
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 1},
           {"string": "tblRowInfo", "count": 2},
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [1]}, "col2"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 2]}, "colheader", "bla"],
-          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader"]]
+          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader"]],
       }, {
         // Test pivot to table3_cell from table2_cell_1.
         accOrElmOrID: "table3_cell",
         oldAccOrElmOrID: "table2_cell_1",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]}, "col2",
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 1},
@@ -377,27 +377,27 @@
           {"string": "rowInfo", "args": [2]}, "colheader",
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 1},
           {"string": "tblRowInfo", "count": 2},
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [1]}, "col2"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 2]}, "colheader", "bla"],
-          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader"]]
+          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader"]],
       }, {
         // Test pivot to table3_cell from table3_ch.
         accOrElmOrID: "table3_cell",
         oldAccOrElmOrID: "table3_ch",
         expectedUtterance: [[
           {"string": "rowInfo", "args": [2]}, "bla"], ["bla",
           {"string": "rowInfo", "args": [2]}]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 2]}, "bla"],
-          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}]]
+          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}]],
       }, {
         // Test pivot to table3_cell from table1_td1.
         accOrElmOrID: "table3_cell",
         oldAccOrElmOrID: "table1_td1",
         expectedUtterance: [[
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 2},
           {"string": "tblRowInfo", "count": 2},
@@ -415,76 +415,76 @@
           {"string": "tblRowInfo", "count": 2},
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [1]}, "col2",
           {"string": "table"},
           {"string": "tblColumnInfo", "count": 2},
           {"string": "tblRowInfo", "count": 2}]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 2]}, "colheader", "bla"],
-          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader"]]
+          ["bla", {"string": "cellInfoAbbr", "args": [1, 2]}, "colheader"]],
       }, {
         // Test pivot to table4_ch_3 from table4.
         accOrElmOrID: "table4_ch_3",
         oldAccOrElmOrID: "table4",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [3]},
           {"string": "rowInfo", "args": [1]}, "col3"], ["col3",
           {"string": "columnInfo", "args": [3]},
           {"string": "rowInfo", "args": [1]}]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [3, 1]}, "col3"],
-          ["col3", {"string": "cellInfoAbbr", "args": [3, 1]}]]
+          ["col3", {"string": "cellInfoAbbr", "args": [3, 1]}]],
       }, {
         // Test pivot to table4_rh_1 from table4_ch_3.
         accOrElmOrID: "table4_rh_1",
         oldAccOrElmOrID: "table4_ch_3",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [2]},
           {"string": "spansColumns", "args": [2]}, "col1", "row1"], ["row1",
           {"string": "columnInfo", "args": [1]},
           {"string": "rowInfo", "args": [2]},
           {"string": "spansColumns", "args": [2]}, "col1"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [1, 2]}, "col1", "row1"],
-          ["row1", {"string": "cellInfoAbbr", "args": [1, 2]}, "col1"]]
+          ["row1", {"string": "cellInfoAbbr", "args": [1, 2]}, "col1"]],
       }, {
         // Test pivot to table4_cell_3 from table4_rh_1.
         accOrElmOrID: "table4_cell_3",
         oldAccOrElmOrID: "table4_rh_1",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [4]},
           {"string": "spansRows", "args": [2]}, "cell2"], ["cell2",
           {"string": "columnInfo", "args": [4]},
           {"string": "spansRows", "args": [2]}]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [4, 2]}, "cell2"],
-          ["cell2", {"string": "cellInfoAbbr", "args": [4, 2]}]]
+          ["cell2", {"string": "cellInfoAbbr", "args": [4, 2]}]],
       }, {
         // Test pivot to table4_cell_5 from table4_cell_3.
         accOrElmOrID: "table4_cell_5",
         oldAccOrElmOrID: "table4_cell_3",
         expectedUtterance: [[
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [3]}, "col2", "row2", "cell3"],
           ["cell3",
           {"string": "columnInfo", "args": [2]},
           {"string": "rowInfo", "args": [3]}, "col2", "row2"]],
         expectedBraille: [
           [{"string": "cellInfoAbbr", "args": [2, 3]}, "col2", "row2", "cell3"],
-          ["cell3", {"string": "cellInfoAbbr", "args": [2, 3]}, "col2", "row2"]]
+          ["cell3", {"string": "cellInfoAbbr", "args": [2, 3]}, "col2", "row2"]],
       }];
 
       // Test outputs (utterance and braille) for tables including their
       // headers and cells.
       function testOutputOrder(aOutputOrder) {
         return function() {
           SpecialPowers.pushPrefEnv({
-            "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]]
+            "set": [[PREF_UTTERANCE_ORDER, aOutputOrder]],
           }, function() {
             tests.forEach(function run(test) {
               testOutput(test.expectedUtterance[aOutputOrder], test.accOrElmOrID,
                 test.oldAccOrElmOrID);
             });
             AccessFuTest.nextTest();
           });
         };
--- a/accessible/tests/mochitest/name/markup.js
+++ b/accessible/tests/mochitest/name/markup.js
@@ -92,17 +92,17 @@ var gTestIterator =
 
   markupElms: null,
   markupIdx: -1,
   rulesetElm: null,
   ruleElms: null,
   ruleIdx: -1,
   elm: null,
   container: null,
-  testID: ""
+  testID: "",
 };
 
 /**
  * Process every 'markup' element and test names for it. Used by testNames
  * function.
  */
 function testNamesForMarkup(aMarkupElm) {
   if (gDumpToConsole)
@@ -249,17 +249,17 @@ function testNameForElmRule(aElm, aRule)
             aNode.getAttribute(this.mAttrName) == this.mAttrValue)
           return NodeFilter.FILTER_ACCEPT;
 
         return NodeFilter.FILTER_SKIP;
       },
 
       mLocalName: tagname,
       mAttrName: attrname,
-      mAttrValue: aElm.getAttribute("id")
+      mAttrValue: aElm.getAttribute("id"),
     };
 
     var treeWalker = document.createTreeWalker(document.body,
                                                NodeFilter.SHOW_ELEMENT,
                                                filter);
     labelElm = treeWalker.nextNode();
 
   } else {
@@ -355,12 +355,12 @@ function evaluateXPath(aNode, aExpr, aRe
   while ((res = result.iterateNext()))
     found.push(res);
 
   return found;
 }
 
 function htmlDocResolver(aPrefix) {
   var ns = {
-    "html": "http://www.w3.org/1999/xhtml"
+    "html": "http://www.w3.org/1999/xhtml",
   };
   return ns[aPrefix] || null;
 }
--- a/accessible/tests/mochitest/name/test_list.html
+++ b/accessible/tests/mochitest/name/test_list.html
@@ -16,17 +16,17 @@
           src="../events.js"></script>
 
   <script type="application/javascript">
     /**
      * Alter list item numbering and change list style type.
      */
     function bulletUpdate() {
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, getNode("list"))
+        new invokerChecker(EVENT_REORDER, getNode("list")),
       ];
 
       this.invoke = function bulletUpdate_invoke() {
         testName("li_end", "1. list end");
 
         var li = document.createElement("li");
         li.setAttribute("id", "li_start");
         li.textContent = "list start";
--- a/accessible/tests/mochitest/pivot.js
+++ b/accessible/tests/mochitest/pivot.js
@@ -29,17 +29,17 @@ var HeadersTraversalRule =
   },
 
   preFilter: PREFILTER_INVISIBLE,
 
   match(aAccessible) {
     return FILTER_MATCH;
   },
 
-  QueryInterface: ChromeUtils.generateQI([nsIAccessibleTraversalRule])
+  QueryInterface: ChromeUtils.generateQI([nsIAccessibleTraversalRule]),
 };
 
 /**
  * Traversal rule for all focusable nodes or leafs.
  */
 var ObjectTraversalRule =
 {
   getMatchRoles(aRules) {
@@ -57,17 +57,17 @@ var ObjectTraversalRule =
       rv = FILTER_IGNORE_SUBTREE | FILTER_MATCH;
     else if (aAccessible.childCount == 0 &&
              role != ROLE_STATICTEXT && aAccessible.name.trim())
       rv = FILTER_MATCH;
 
     return rv;
   },
 
-  QueryInterface: ChromeUtils.generateQI([nsIAccessibleTraversalRule])
+  QueryInterface: ChromeUtils.generateQI([nsIAccessibleTraversalRule]),
 };
 
 // //////////////////////////////////////////////////////////////////////////////
 // Virtual state invokers and checkers
 
 /**
  * A checker for virtual cursor changed events.
  */
@@ -158,17 +158,17 @@ VCChangedChecker.getPreviousPosAndOffset
 VCChangedChecker.methodReasonMap = {
   "moveNext": nsIAccessiblePivot.REASON_NEXT,
   "movePrevious": nsIAccessiblePivot.REASON_PREV,
   "moveFirst": nsIAccessiblePivot.REASON_FIRST,
   "moveLast": nsIAccessiblePivot.REASON_LAST,
   "setTextRange": nsIAccessiblePivot.REASON_NONE,
   "moveNextByText": nsIAccessiblePivot.REASON_NEXT,
   "movePreviousByText": nsIAccessiblePivot.REASON_PREV,
-  "moveToPoint": nsIAccessiblePivot.REASON_POINT
+  "moveToPoint": nsIAccessiblePivot.REASON_POINT,
 };
 
 /**
  * Set a text range in the pivot and wait for virtual cursor change event.
  *
  * @param aDocAcc         [in] document that manages the virtual cursor
  * @param aTextAccessible [in] accessible to set to virtual cursor's position
  * @param aTextOffsets    [in] start and end offsets of text range to set in
@@ -185,17 +185,17 @@ function setVCRangeInvoker(aDocAcc, aTex
   };
 
   this.getID = function setVCRangeInvoker_getID() {
     return "Set offset in " + prettyName(aTextAccessible) +
       " to (" + aTextOffsets[0] + ", " + aTextOffsets[1] + ")";
   };
 
   this.eventSeq = [
-    new VCChangedChecker(aDocAcc, aTextAccessible, aTextOffsets, "setTextRange", true)
+    new VCChangedChecker(aDocAcc, aTextAccessible, aTextOffsets, "setTextRange", true),
   ];
 }
 
 /**
  * Move the pivot and wait for virtual cursor change event.
  *
  * @param aDocAcc          [in] document that manages the virtual cursor
  * @param aPivotMoveMethod [in] method to test (ie. "moveNext", "moveFirst", etc.)
@@ -238,22 +238,22 @@ function setVCPosInvoker(aDocAcc, aPivot
 
   this.getID = function setVCPosInvoker_getID() {
     return "Do " + (expectMove ? "" : "no-op ") + aPivotMoveMethod;
   };
 
   if (expectMove) {
     this.eventSeq = [
       new VCChangedChecker(aDocAcc, aIdOrNameOrAcc, null, aPivotMoveMethod,
-        aIsFromUserInput === undefined ? !!aPivotMoveMethod : aIsFromUserInput)
+        aIsFromUserInput === undefined ? !!aPivotMoveMethod : aIsFromUserInput),
     ];
   } else {
     this.eventSeq = [];
     this.unexpectedEventSeq = [
-      new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc)
+      new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc),
     ];
   }
 }
 
 /**
  * Move the pivot by text and wait for virtual cursor change event.
  *
  * @param aDocAcc          [in] document that manages the virtual cursor
@@ -285,22 +285,22 @@ function setVCTextInvoker(aDocAcc, aPivo
     return "Do " + (expectMove ? "" : "no-op ") + aPivotMoveMethod + " in " +
       prettyName(aIdOrNameOrAcc) + ", " + boundaryToString(aBoundary) +
       ", [" + aTextOffsets + "]";
   };
 
   if (expectMove) {
     this.eventSeq = [
       new VCChangedChecker(aDocAcc, aIdOrNameOrAcc, aTextOffsets, aPivotMoveMethod,
-        aIsFromUserInput === undefined ? true : aIsFromUserInput, aBoundary)
+        aIsFromUserInput === undefined ? true : aIsFromUserInput, aBoundary),
     ];
   } else {
     this.eventSeq = [];
     this.unexpectedEventSeq = [
-      new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc)
+      new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc),
     ];
   }
 }
 
 
 /**
  * Move the pivot to the position under the point.
  *
@@ -328,22 +328,22 @@ function moveVCCoordInvoker(aDocAcc, aX,
   };
 
   this.getID = function setVCPosInvoker_getID() {
     return "Do " + (expectMove ? "" : "no-op ") + "moveToPoint " + aIdOrNameOrAcc;
   };
 
   if (expectMove) {
     this.eventSeq = [
-      new VCChangedChecker(aDocAcc, aIdOrNameOrAcc, null, "moveToPoint", true)
+      new VCChangedChecker(aDocAcc, aIdOrNameOrAcc, null, "moveToPoint", true),
     ];
   } else {
     this.eventSeq = [];
     this.unexpectedEventSeq = [
-      new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc)
+      new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc),
     ];
   }
 }
 
 /**
  * Change the pivot modalRoot
  *
  * @param aDocAcc         [in] document that manages the virtual cursor
@@ -366,17 +366,17 @@ function setModalRootInvoker(aDocAcc, aM
   };
 
   this.getID = function setModalRootInvoker_getID() {
     return "Set modalRoot to " + prettyName(aModalRootAcc);
   };
 
   this.eventSeq = [];
   this.unexpectedEventSeq = [
-    new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc)
+    new invokerChecker(EVENT_VIRTUALCURSOR_CHANGED, aDocAcc),
   ];
 }
 
 /**
  * Add invokers to a queue to test a rule and an expected sequence of element ids
  * or accessible names for that rule in the given document.
  *
  * @param aQueue     [in] event queue in which to push invoker sequence.
@@ -462,17 +462,17 @@ function removeVCPositionInvoker(aDocAcc
     aPosNode.remove();
   };
 
   this.getID = function removeVCPositionInvoker_getID() {
     return "Bring virtual cursor to accessible, and remove its DOM node.";
   };
 
   this.eventSeq = [
-    new removeVCPositionChecker(aDocAcc, this.accessible.parent)
+    new removeVCPositionChecker(aDocAcc, this.accessible.parent),
   ];
 }
 
 /**
  * A checker for removing the pivot root and then calling moveFirst, and
  * checking that an exception is thrown.
  */
 function removeVCRootChecker(aPivot) {
@@ -505,17 +505,17 @@ function removeVCRootInvoker(aRootNode) 
     aRootNode.remove();
   };
 
   this.getID = function removeVCRootInvoker_getID() {
     return "Remove root of pivot from tree.";
   };
 
   this.eventSeq = [
-    new removeVCRootChecker(this.pivot)
+    new removeVCRootChecker(this.pivot),
   ];
 }
 
 /**
  * A debug utility for writing proper sequences for queueTraversalSequence.
  */
 function dumpTraversalSequence(aPivot, aRule) {
   var sequence = [];
--- a/accessible/tests/mochitest/relations/test_ui_modalprompt.html
+++ b/accessible/tests/mochitest/relations/test_ui_modalprompt.html
@@ -31,18 +31,18 @@
     }
 
     function showAlert() {
       this.eventSeq = [
         {
           type: EVENT_SHOW,
           match(aEvent) {
             return aEvent.accessible.role == ROLE_DIALOG;
-          }
-        }
+          },
+        },
       ];
 
       this.invoke = function showAlert_invoke() {
         window.setTimeout(
           function() {
             currentTabDocument().defaultView.alert("hello");
           }, 0);
       };
--- a/accessible/tests/mochitest/relations/test_update.html
+++ b/accessible/tests/mochitest/relations/test_update.html
@@ -46,17 +46,17 @@
       testRelation(aDependent2ID, aDependentRelation, null);
       if (aHostRelation)
         testRelation(aHostID, aHostRelation, null);
     }
 
     function insertRelated(aHostRelAttr, aDependentID, aInsertHostFirst,
                            aHostRelation, aDependentRelation) {
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, document)
+        new invokerChecker(EVENT_REORDER, document),
       ];
 
       this.invoke = function insertRelated_invoke() {
         this.hostNode = document.createElement("div");
         this.hostNode.setAttribute(aHostRelAttr, aDependentID);
 
         this.dependentNode = document.createElement("div");
         this.dependentNode.setAttribute("id", aDependentID);
@@ -89,17 +89,17 @@
      * when accessibles are recreated.
      */
     function recreateRelatives(aContainerID, aLabelID, aElmID) {
       this.containerNode = getNode(aContainerID);
       this.container = getNode(this.containerNode);
 
       this.eventSeq = [
         new invokerChecker(EVENT_HIDE, this.container),
-        new invokerChecker(EVENT_SHOW, this.containerNode)
+        new invokerChecker(EVENT_SHOW, this.containerNode),
       ];
 
       this.invoke = function recreateRelatives_invoke() {
         testRelation(aLabelID, RELATION_LABEL_FOR, aElmID);
         testRelation(aElmID, RELATION_LABELLED_BY, aLabelID);
 
         this.containerNode.style.overflow = "visible";
       };
--- a/accessible/tests/mochitest/scroll/test_zoom.html
+++ b/accessible/tests/mochitest/scroll/test_zoom.html
@@ -16,35 +16,35 @@
           src="../role.js"></script>
   <script type="application/javascript"
           src="../layout.js"></script>
 
   <script type="application/javascript">
     function testScrollToPoint() {
       // scrollToPoint relative screen
       var anchor = getAccessible("bottom1");
-      let [x, /* y */] = getPos(anchor);
+      let [x /* y */] = getPos(anchor);
       var [docX, docY] = getPos(document);
 
       anchor.scrollToPoint(COORDTYPE_SCREEN_RELATIVE, docX, docY);
       testPos(anchor, [x, docY]);
 
       // scrollToPoint relative window
       anchor = getAccessible("bottom2");
-      [x, /* y */] = getPos(anchor);
+      [x /* y */] = getPos(anchor);
       var wnd = getRootAccessible().DOMDocument.defaultView;
       var [screenX, screenY] = CSSToDevicePixels(wnd, wnd.screenX, wnd.screenY);
       let scrollToX = docX - screenX, scrollToY = docY - screenY;
 
       anchor.scrollToPoint(COORDTYPE_WINDOW_RELATIVE, scrollToX, scrollToY);
       testPos(anchor, [x, docY]);
 
       // scrollToPoint relative parent
       anchor = getAccessible("bottom3");
-      [x, /* y */] = getPos(anchor);
+      [x /* y */] = getPos(anchor);
       var [parentX, parentY] = getPos(anchor.parent);
       scrollToX = parentX - docX;
       scrollToY = parentY - docY;
 
       anchor.scrollToPoint(COORDTYPE_PARENT_RELATIVE, scrollToX, scrollToY);
       testPos(anchor, [x, docY]);
     }
 
--- a/accessible/tests/mochitest/selectable.js
+++ b/accessible/tests/mochitest/selectable.js
@@ -45,17 +45,17 @@ function testSelectableSelection(aIdenti
 
 /**
  * Test isItemSelected method, helper for testSelectableSelection
  */
 function testIsItemSelected(aSelectAcc, aTraversedAcc, aIndexObj, aSelectedChildren, aMsg) {
   var childCount = aTraversedAcc.childCount;
   for (var idx = 0; idx < childCount; idx++) {
     var child = aTraversedAcc.getChildAt(idx);
-    var [state, /* extraState */] = getStates(child);
+    var [state /* extraState */] = getStates(child);
     if (state & STATE_SELECTABLE) {
       var isSelected = false;
       var len = aSelectedChildren.length;
       for (var jdx = 0; jdx < len; jdx++) {
         if (child == getAccessible(aSelectedChildren[jdx])) {
           isSelected = true;
           break;
         }
--- a/accessible/tests/mochitest/states/test_aria.html
+++ b/accessible/tests/mochitest/states/test_aria.html
@@ -28,17 +28,17 @@
 
   <script type="application/javascript">
     function testAriaDisabledTree(aAccOrElmOrID) {
       // test accessible and its subtree for propagated state.
       var acc = getAccessible(aAccOrElmOrID);
       if (!acc)
         return;
 
-      var [state, /* extraState */] = getStates(aAccOrElmOrID);
+      var [state /* extraState */] = getStates(aAccOrElmOrID);
       if (state & STATE_UNAVAILABLE) {
         var role = getRole(acc);
         if (role != ROLE_GROUPING) {
           testStates(acc, STATE_FOCUSABLE);
         }
       }
 
       // Iterate over its children to see if the state got propagated.
--- a/accessible/tests/mochitest/states/test_doc_busy.html
+++ b/accessible/tests/mochitest/states/test_doc_busy.html
@@ -20,23 +20,23 @@
           src="../events.js"></script>
 
   <script type="application/javascript">
     // gA11yEventDumpToConsole = true; // debugging stuff
 
     function loadFile() {
       var eventSeq = [
         new stateChangeChecker(STATE_BUSY, false, true, document, null, false, true),
-        new stateChangeChecker(STATE_BUSY, false, false, document)
+        new stateChangeChecker(STATE_BUSY, false, false, document),
       ];
       defineScenario(this, eventSeq); // both events were fired
 
       var unexpectedEventSeq = [
         new stateChangeChecker(STATE_BUSY, false, true, document),
-        new stateChangeChecker(STATE_BUSY, false, false, document)
+        new stateChangeChecker(STATE_BUSY, false, false, document),
       ];
       defineScenario(this, [], unexpectedEventSeq); // events were coalesced
 
       this.invoke = function loadFile_invoke() {
         synthesizeMouse(getNode("link"), 1, 1, {});
       };
 
       this.getID = function loadFile_getID() {
--- a/accessible/tests/mochitest/states/test_selects.html
+++ b/accessible/tests/mochitest/states/test_selects.html
@@ -21,17 +21,17 @@
 
   <script type="application/javascript">
     function openComboboxNCheckStates(aID) {
       this.combobox = getAccessible(aID);
       this.comboboxList = this.combobox.firstChild;
       this.comboboxOption = this.comboboxList.firstChild;
 
       this.eventSeq = [
-        new invokerChecker(EVENT_FOCUS, this.comboboxOption)
+        new invokerChecker(EVENT_FOCUS, this.comboboxOption),
       ];
 
       this.invoke = function openComboboxNCheckStates_invoke() {
         getNode(aID).focus();
         synthesizeKey("VK_DOWN", { altKey: true });
       };
 
       this.finalCheck = function openComboboxNCheckStates_invoke() {
--- a/accessible/tests/mochitest/states/test_stale.html
+++ b/accessible/tests/mochitest/states/test_stale.html
@@ -18,17 +18,17 @@
           src="../events.js"></script>
 
   <script type="application/javascript">
     function addChild(aContainerID) {
       this.containerNode = getNode(aContainerID);
       this.childNode = null;
 
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, this.containerNode)
+        new invokerChecker(EVENT_REORDER, this.containerNode),
       ];
 
       this.invoke = function addChild_invoke() {
         this.childNode = document.createElement("div");
         this.containerNode.appendChild(this.childNode);
       };
 
       this.finalCheck = function addChild_finalCheck() {
@@ -51,17 +51,17 @@
       };
     }
 
     function removeChild(aContainerID) {
       this.containerNode = getNode(aContainerID);
       this.child = null;
 
       this.eventSeq = [
-        new removeChildChecker(this)
+        new removeChildChecker(this),
       ];
 
       this.invoke = function removeChild_invoke() {
         var childNode = this.containerNode.firstChild;
         this.child = getAccessible(childNode);
 
         this.containerNode.removeChild(childNode);
       };
--- a/accessible/tests/mochitest/table.js
+++ b/accessible/tests/mochitest/table.js
@@ -54,17 +54,17 @@ function testTableStruct(aIdentifier, aC
     tableNode.getAttribute("role") == "treegrid" ||
     tableNode.localName == "tree";
 
   var rowCount = aCellsArray.length;
   var colsCount = aCellsArray[0] ? aCellsArray[0].length : 0;
 
   // Test table accessible tree.
   var tableObj = {
-    children: []
+    children: [],
   };
   switch (aTableType) {
     case kTable:
       tableObj.role = ROLE_TABLE;
       break;
     case kTreeTable:
       tableObj.role = ROLE_TREE_TABLE;
       break;
@@ -75,54 +75,54 @@ function testTableStruct(aIdentifier, aC
 
   // caption accessible handling
   if (aCaption) {
     var captionObj = {
       role: ROLE_CAPTION,
       children: [
         {
           role: ROLE_TEXT_LEAF,
-          name: aCaption
-        }
-      ]
+          name: aCaption,
+        },
+      ],
     };
 
     tableObj.children.push(captionObj);
   }
 
   // special types of column headers handling
   if (aColHeaderType) {
     var headersObj = {
       role: ROLE_LIST,
-      children: []
+      children: [],
     };
 
     for (let idx = 0; idx < colsCount; idx++) {
       var headerCellObj = {
-        role: ROLE_COLUMNHEADER
+        role: ROLE_COLUMNHEADER,
       };
       headersObj.children.push(headerCellObj);
     }
 
     if (aColHeaderType == kTreeColumnHeader) {
       var columnPickerObj = {
-        role: ROLE_PUSHBUTTON
+        role: ROLE_PUSHBUTTON,
       };
 
       headersObj.children.push(columnPickerObj);
     }
 
     tableObj.children.push(headersObj);
   }
 
   // rows and cells accessibles
   for (let rowIdx = 0; rowIdx < rowCount; rowIdx++) {
     let rowObj = {
       role: aRowRoles ? aRowRoles[rowIdx] : ROLE_ROW,
-      children: []
+      children: [],
     };
 
     for (let colIdx = 0; colIdx < colsCount; colIdx++) {
       let celltype = aCellsArray[rowIdx][colIdx];
 
       var role = ROLE_NOTHING;
       switch (celltype) {
         case kDataCell:
--- a/accessible/tests/mochitest/table/test_css_tables.html
+++ b/accessible/tests/mochitest/table/test_css_tables.html
@@ -18,53 +18,53 @@
 
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // elements with display:table
 
       // only display:table
       var accTree =
         { SECTION: [
-          { TEXT_LEAF: [ ] }
+          { TEXT_LEAF: [ ] },
         ] };
       testAccessibleTree("table1", accTree);
 
       // only display:table and display:table-cell
       accTree =
         { SECTION: [
           { SECTION: [
-            { TEXT_LEAF: [ ] }
-          ] }
+            { TEXT_LEAF: [ ] },
+          ] },
       ] };
       testAccessibleTree("table2", accTree);
 
       // display:table, display:table-row, and display:table-cell
       accTree =
         { SECTION: [
           { SECTION: [
-            { TEXT_LEAF: [ ] }
-          ] }
+            { TEXT_LEAF: [ ] },
+          ] },
       ] };
       testAccessibleTree("table3", accTree);
 
       // display:table, display:table-row-group, display:table-row, and display:table-cell
       accTree =
         { SECTION: [
           { SECTION: [
-            { TEXT_LEAF: [ ] }
-          ] }
+            { TEXT_LEAF: [ ] },
+          ] },
         ] };
       testAccessibleTree("table4", accTree);
 
       // display:inline-table
       accTree =
         { TEXT_CONTAINER: [
           { TEXT_CONTAINER: [
-            { TEXT_LEAF: [ ] }
-          ] }
+            { TEXT_LEAF: [ ] },
+          ] },
         ] };
       testAccessibleTree("table5", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/table/test_headers_ariagrid.html
+++ b/accessible/tests/mochitest/table/test_headers_ariagrid.html
@@ -19,85 +19,85 @@
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // column and row headers from markup
 
       headerInfoMap = [
         {
           cell: "table_dc_1",
           rowHeaderCells: [ "table_rh_1" ],
-          columnHeaderCells: [ "table_ch_2" ]
+          columnHeaderCells: [ "table_ch_2" ],
         },
         {
           cell: "table_dc_2",
           rowHeaderCells: [ "table_rh_1" ],
-          columnHeaderCells: [ "table_ch_3" ]
+          columnHeaderCells: [ "table_ch_3" ],
         },
         {
           cell: "table_dc_3",
           rowHeaderCells: [ "table_rh_2" ],
-          columnHeaderCells: [ "table_ch_2" ]
+          columnHeaderCells: [ "table_ch_2" ],
         },
         {
           cell: "table_dc_4",
           rowHeaderCells: [ "table_rh_2" ],
-          columnHeaderCells: [ "table_ch_3" ]
+          columnHeaderCells: [ "table_ch_3" ],
         },
         {
           cell: "table_rh_1",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table_ch_1" ]
+          columnHeaderCells: [ "table_ch_1" ],
         },
         {
           cell: "table_rh_2",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table_ch_1" ]
-        }
+          columnHeaderCells: [ "table_ch_1" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
 
       // ////////////////////////////////////////////////////////////////////////
       // column and row headers from markup for crazy grid.
 
       headerInfoMap = [
         {
           // not focusable cell (ARIAGridCellAccessible is used)
           cell: "table2_dc_1",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table2_ch_1" ]
+          columnHeaderCells: [ "table2_ch_1" ],
         },
         {
           // focusable cell (ARIAGridCellAccessible is used)
           cell: "table2_dc_2",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table2_ch_2" ]
-        }
+          columnHeaderCells: [ "table2_ch_2" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
 
       // ////////////////////////////////////////////////////////////////////////
       // column and row headers from markup for one more crazy grid.
 
       headerInfoMap = [
         {
           // ARIAGridCellAccessible is used
           cell: "t3_dc_1",
           rowHeaderCells: [ "t3_rh_1" ],
-          columnHeaderCells: [ ]
+          columnHeaderCells: [ ],
         },
         {
           // ARIAGridCellAccessible is used (inside rowgroup)
           cell: "t3_dc_2",
           rowHeaderCells: [ "t3_rh_2" ],
-          columnHeaderCells: [ ]
-        }
+          columnHeaderCells: [ ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/table/test_headers_ariatable.html
+++ b/accessible/tests/mochitest/table/test_headers_ariatable.html
@@ -19,43 +19,43 @@
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // column and row headers from markup
 
       headerInfoMap = [
         {
           cell: "table_dc_1",
           rowHeaderCells: [ "table_rh_1" ],
-          columnHeaderCells: [ "table_ch_2" ]
+          columnHeaderCells: [ "table_ch_2" ],
         },
         {
           cell: "table_dc_2",
           rowHeaderCells: [ "table_rh_1" ],
-          columnHeaderCells: [ "table_ch_3" ]
+          columnHeaderCells: [ "table_ch_3" ],
         },
         {
           cell: "table_dc_3",
           rowHeaderCells: [ "table_rh_2" ],
-          columnHeaderCells: [ "table_ch_2" ]
+          columnHeaderCells: [ "table_ch_2" ],
         },
         {
           cell: "table_dc_4",
           rowHeaderCells: [ "table_rh_2" ],
-          columnHeaderCells: [ "table_ch_3" ]
+          columnHeaderCells: [ "table_ch_3" ],
         },
         {
           cell: "table_rh_1",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table_ch_1" ]
+          columnHeaderCells: [ "table_ch_1" ],
         },
         {
           cell: "table_rh_2",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table_ch_1" ]
-        }
+          columnHeaderCells: [ "table_ch_1" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/table/test_headers_table.html
+++ b/accessible/tests/mochitest/table/test_headers_table.html
@@ -19,415 +19,415 @@
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // column header from thead and row header from @scope inside of tfoot
 
       var headerInfoMap = [
         {
           cell: "table1_cell_1",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table1_weekday", "table1_date" ]
+          columnHeaderCells: [ "table1_weekday", "table1_date" ],
         },
         {
           cell: "table1_cell_2",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table1_day", "table1_date" ]
+          columnHeaderCells: [ "table1_day", "table1_date" ],
         },
         {
           cell: "table1_cell_3",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table1_qty" ]
+          columnHeaderCells: [ "table1_qty" ],
         },
         {
           cell: "table1_cell_4",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table1_weekday", "table1_date" ]
+          columnHeaderCells: [ "table1_weekday", "table1_date" ],
         },
         {
           cell: "table1_cell_5",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table1_day", "table1_date" ]
+          columnHeaderCells: [ "table1_day", "table1_date" ],
         },
         {
           cell: "table1_cell_6",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table1_qty" ]
+          columnHeaderCells: [ "table1_qty" ],
         },
         {
           cell: "table1_cell_7",
           rowHeaderCells: [ "table1_total" ],
-          columnHeaderCells: [ "table1_qty" ]
-        }
+          columnHeaderCells: [ "table1_qty" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // column and row headers from thead and @scope
 
       headerInfoMap = [
         {
           cell: "table2_cell_2",
           rowHeaderCells: [ "table2_rh_1" ],
-          columnHeaderCells: [ "table2_ch_2" ]
+          columnHeaderCells: [ "table2_ch_2" ],
         },
         {
           cell: "table2_cell_3",
           rowHeaderCells: [ "table2_rh_1" ],
-          columnHeaderCells: [ "table2_ch_3" ]
+          columnHeaderCells: [ "table2_ch_3" ],
         },
         {
           cell: "table2_cell_5",
           rowHeaderCells: [ "table2_rh_2" ],
-          columnHeaderCells: [ "table2_ch_2" ]
+          columnHeaderCells: [ "table2_ch_2" ],
         },
         {
           cell: "table2_cell_6",
           rowHeaderCells: [ "table2_rh_2" ],
-          columnHeaderCells: [ "table2_ch_3" ]
+          columnHeaderCells: [ "table2_ch_3" ],
         },
         {
           cell: "table2_rh_1",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table2_ch_1" ]
+          columnHeaderCells: [ "table2_ch_1" ],
         },
         {
           cell: "table2_rh_2",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table2_ch_1" ]
-        }
+          columnHeaderCells: [ "table2_ch_1" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // column headers from @headers
 
       headerInfoMap = [
         {
           cell: "table3_cell_1",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table3_ch_1" ]
+          columnHeaderCells: [ "table3_ch_1" ],
         },
         {
           cell: "table3_cell_2",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table3_ch_2" ]
-        }
+          columnHeaderCells: [ "table3_ch_2" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // table consisted of one column
 
       headerInfoMap = [
         {
           cell: "table4_cell",
           rowHeaderCells: [],
-          columnHeaderCells: [ "table4_ch" ]
-        }
+          columnHeaderCells: [ "table4_ch" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // table consisted of one row
 
       headerInfoMap = [
         {
           cell: "table5_cell",
           rowHeaderCells: [ "table5_rh" ],
-          columnHeaderCells: [ ]
-        }
+          columnHeaderCells: [ ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // @headers points to table cells
 
       headerInfoMap = [
         {
           cell: "table6_cell",
           rowHeaderCells: [ "table6_rh" ],
-          columnHeaderCells: [ "table6_ch" ]
-        }
+          columnHeaderCells: [ "table6_ch" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // @scope="rowgroup" and @scope="row"
 
       headerInfoMap = [
         {
           cell: "t7_r1c1",
           rowHeaderCells: [ "t7_Mary", "t7_Females" ],
-          columnHeaderCells: [ "t7_1km" ]
+          columnHeaderCells: [ "t7_1km" ],
         },
         {
           cell: "t7_r1c2",
           rowHeaderCells: [ "t7_Mary", "t7_Females" ],
-          columnHeaderCells: [ "t7_5km" ]
+          columnHeaderCells: [ "t7_5km" ],
         },
         {
           cell: "t7_r1c3",
           rowHeaderCells: [ "t7_Mary", "t7_Females" ],
-          columnHeaderCells: [ "t7_10km" ]
+          columnHeaderCells: [ "t7_10km" ],
         },
         {
           cell: "t7_r2c1",
           rowHeaderCells: [ "t7_Betsy", "t7_Females" ],
-          columnHeaderCells: [ "t7_1km" ]
+          columnHeaderCells: [ "t7_1km" ],
         },
         {
           cell: "t7_r2c2",
           rowHeaderCells: [ "t7_Betsy", "t7_Females" ],
-          columnHeaderCells: [ "t7_5km" ]
+          columnHeaderCells: [ "t7_5km" ],
         },
         {
           cell: "t7_r2c3",
           rowHeaderCells: [ "t7_Betsy", "t7_Females" ],
-          columnHeaderCells: [ "t7_10km" ]
+          columnHeaderCells: [ "t7_10km" ],
         },
         {
           cell: "t7_r3c1",
           rowHeaderCells: [ "t7_Matt", "t7_Males" ],
-          columnHeaderCells: [ "t7_1km" ]
+          columnHeaderCells: [ "t7_1km" ],
         },
         {
           cell: "t7_r3c2",
           rowHeaderCells: [ "t7_Matt", "t7_Males" ],
-          columnHeaderCells: [ "t7_5km" ]
+          columnHeaderCells: [ "t7_5km" ],
         },
         {
           cell: "t7_r3c3",
           rowHeaderCells: [ "t7_Matt", "t7_Males" ],
-          columnHeaderCells: [ "t7_10km" ]
+          columnHeaderCells: [ "t7_10km" ],
         },
         {
           cell: "t7_r4c1",
           rowHeaderCells: [ "t7_Todd", "t7_Males" ],
-          columnHeaderCells: [ "t7_1km" ]
+          columnHeaderCells: [ "t7_1km" ],
         },
         {
           cell: "t7_r4c2",
           rowHeaderCells: [ "t7_Todd", "t7_Males" ],
-          columnHeaderCells: [ "t7_5km" ]
+          columnHeaderCells: [ "t7_5km" ],
         },
         {
           cell: "t7_r4c3",
           rowHeaderCells: [ "t7_Todd", "t7_Males" ],
-          columnHeaderCells: [ "t7_10km" ]
-        }
+          columnHeaderCells: [ "t7_10km" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // @scope="colgroup" and @scope="col"
 
       headerInfoMap = [
         {
           cell: "t8_r1c1",
           rowHeaderCells: [ "t8_1km" ],
-          columnHeaderCells: [ "t8_Mary", "t8_Females" ]
+          columnHeaderCells: [ "t8_Mary", "t8_Females" ],
         },
         {
           cell: "t8_r1c2",
           rowHeaderCells: [ "t8_1km" ],
-          columnHeaderCells: [ "t8_Betsy", "t8_Females" ]
+          columnHeaderCells: [ "t8_Betsy", "t8_Females" ],
         },
         {
           cell: "t8_r1c3",
           rowHeaderCells: [ "t8_1km" ],
-          columnHeaderCells: [ "t8_Matt", "t8_Males" ]
+          columnHeaderCells: [ "t8_Matt", "t8_Males" ],
         },
         {
           cell: "t8_r1c4",
           rowHeaderCells: [ "t8_1km" ],
-          columnHeaderCells: [ "t8_Todd", "t8_Males" ]
+          columnHeaderCells: [ "t8_Todd", "t8_Males" ],
         },
         {
           cell: "t8_r2c1",
           rowHeaderCells: [ "t8_5km" ],
-          columnHeaderCells: [ "t8_Mary", "t8_Females" ]
+          columnHeaderCells: [ "t8_Mary", "t8_Females" ],
         },
         {
           cell: "t8_r2c2",
           rowHeaderCells: [ "t8_5km" ],
-          columnHeaderCells: [ "t8_Betsy", "t8_Females" ]
+          columnHeaderCells: [ "t8_Betsy", "t8_Females" ],
         },
         {
           cell: "t8_r2c3",
           rowHeaderCells: [ "t8_5km" ],
-          columnHeaderCells: [ "t8_Matt", "t8_Males" ]
+          columnHeaderCells: [ "t8_Matt", "t8_Males" ],
         },
         {
           cell: "t8_r2c4",
           rowHeaderCells: [ "t8_5km" ],
-          columnHeaderCells: [ "t8_Todd", "t8_Males" ]
+          columnHeaderCells: [ "t8_Todd", "t8_Males" ],
         },
         {
           cell: "t8_r3c1",
           rowHeaderCells: [ "t8_10km" ],
-          columnHeaderCells: [ "t8_Mary", "t8_Females" ]
+          columnHeaderCells: [ "t8_Mary", "t8_Females" ],
         },
         {
           cell: "t8_r3c2",
           rowHeaderCells: [ "t8_10km" ],
-          columnHeaderCells: [ "t8_Betsy", "t8_Females" ]
+          columnHeaderCells: [ "t8_Betsy", "t8_Females" ],
         },
         {
           cell: "t8_r3c3",
           rowHeaderCells: [ "t8_10km" ],
-          columnHeaderCells: [ "t8_Matt", "t8_Males" ]
+          columnHeaderCells: [ "t8_Matt", "t8_Males" ],
         },
         {
           cell: "t8_r3c4",
           rowHeaderCells: [ "t8_10km" ],
-          columnHeaderCells: [ "t8_Todd", "t8_Males" ]
-        }
+          columnHeaderCells: [ "t8_Todd", "t8_Males" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // spanned table header cells (v1), @headers define header order
 
       headerInfoMap = [
         {
           cell: "t9_r1c1",
           rowHeaderCells: [ "t9_females", "t9_mary" ],
-          columnHeaderCells: [ "t9_1km" ]
+          columnHeaderCells: [ "t9_1km" ],
         },
         {
           cell: "t9_r1c2",
           rowHeaderCells: [ "t9_females", "t9_mary" ],
-          columnHeaderCells: [ "t9_5km" ]
+          columnHeaderCells: [ "t9_5km" ],
         },
         {
           cell: "t9_r1c3",
           rowHeaderCells: [ "t9_females", "t9_mary" ],
-          columnHeaderCells: [ "t9_10km" ]
+          columnHeaderCells: [ "t9_10km" ],
         },
         {
           cell: "t9_r2c1",
           rowHeaderCells: [ "t9_females", "t9_betsy" ],
-          columnHeaderCells: [ "t9_1km" ]
+          columnHeaderCells: [ "t9_1km" ],
         },
         {
           cell: "t9_r2c2",
           rowHeaderCells: [ "t9_females", "t9_betsy" ],
-          columnHeaderCells: [ "t9_5km" ]
+          columnHeaderCells: [ "t9_5km" ],
         },
         {
           cell: "t9_r2c3",
           rowHeaderCells: [ "t9_females", "t9_betsy" ],
-          columnHeaderCells: [ "t9_10km" ]
+          columnHeaderCells: [ "t9_10km" ],
         },
         {
           cell: "t9_r3c1",
           rowHeaderCells: [ "t9_males", "t9_matt" ],
-          columnHeaderCells: [ "t9_1km" ]
+          columnHeaderCells: [ "t9_1km" ],
         },
         {
           cell: "t9_r3c2",
           rowHeaderCells: [ "t9_males", "t9_matt" ],
-          columnHeaderCells: [ "t9_5km" ]
+          columnHeaderCells: [ "t9_5km" ],
         },
         {
           cell: "t9_r3c3",
           rowHeaderCells: [ "t9_males", "t9_matt" ],
-          columnHeaderCells: [ "t9_10km" ]
+          columnHeaderCells: [ "t9_10km" ],
         },
         {
           cell: "t9_r4c1",
           rowHeaderCells: [ "t9_males", "t9_todd" ],
-          columnHeaderCells: [ "t9_1km" ]
+          columnHeaderCells: [ "t9_1km" ],
         },
         {
           cell: "t9_r4c2",
           rowHeaderCells: [ "t9_males", "t9_todd" ],
-          columnHeaderCells: [ "t9_5km" ]
+          columnHeaderCells: [ "t9_5km" ],
         },
         {
           cell: "t9_r4c3",
           rowHeaderCells: [ "t9_males", "t9_todd" ],
-          columnHeaderCells: [ "t9_10km" ]
-        }
+          columnHeaderCells: [ "t9_10km" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       // ////////////////////////////////////////////////////////////////////////
       // spanned table header cells (v2), @headers define header order
 
       headerInfoMap = [
         {
           cell: "t10_r1c1",
           rowHeaderCells: [ "t10_1km" ],
-          columnHeaderCells: [ "t10_females", "t10_mary" ]
+          columnHeaderCells: [ "t10_females", "t10_mary" ],
         },
         {
           cell: "t10_r1c2",
           rowHeaderCells: [ "t10_1km" ],
-          columnHeaderCells: [ "t10_females", "t10_betsy" ]
+          columnHeaderCells: [ "t10_females", "t10_betsy" ],
         },
         {
           cell: "t10_r1c3",
           rowHeaderCells: [ "t10_1km" ],
-          columnHeaderCells: [ "t10_males", "t10_matt" ]
+          columnHeaderCells: [ "t10_males", "t10_matt" ],
         },
         {
           cell: "t10_r1c4",
           rowHeaderCells: [ "t10_1km" ],
-          columnHeaderCells: [ "t10_males", "t10_todd" ]
+          columnHeaderCells: [ "t10_males", "t10_todd" ],
         },
         {
           cell: "t10_r2c1",
           rowHeaderCells: [ "t10_5km" ],
-          columnHeaderCells: [ "t10_females", "t10_mary" ]
+          columnHeaderCells: [ "t10_females", "t10_mary" ],
         },
         {
           cell: "t10_r2c2",
           rowHeaderCells: [ "t10_5km" ],
-          columnHeaderCells: [ "t10_females", "t10_betsy" ]
+          columnHeaderCells: [ "t10_females", "t10_betsy" ],
         },
         {
           cell: "t10_r2c3",
           rowHeaderCells: [ "t10_5km" ],
-          columnHeaderCells: [ "t10_males", "t10_matt" ]
+          columnHeaderCells: [ "t10_males", "t10_matt" ],
         },
         {
           cell: "t10_r2c4",
           rowHeaderCells: [ "t10_5km" ],
-          columnHeaderCells: [ "t10_males", "t10_todd" ]
+          columnHeaderCells: [ "t10_males", "t10_todd" ],
         },
         {
           cell: "t10_r3c1",
           rowHeaderCells: [ "t10_10km" ],
-          columnHeaderCells: [ "t10_females", "t10_mary" ]
+          columnHeaderCells: [ "t10_females", "t10_mary" ],
         },
         {
           cell: "t10_r3c2",
           rowHeaderCells: [ "t10_10km" ],
-          columnHeaderCells: [ "t10_females", "t10_betsy" ]
+          columnHeaderCells: [ "t10_females", "t10_betsy" ],
         },
         {
           cell: "t10_r3c3",
           rowHeaderCells: [ "t10_10km" ],
-          columnHeaderCells: [ "t10_males", "t10_matt" ]
+          columnHeaderCells: [ "t10_males", "t10_matt" ],
         },
         {
           cell: "t10_r3c4",
           rowHeaderCells: [ "t10_10km" ],
-          columnHeaderCells: [ "t10_males", "t10_todd" ]
-        }
+          columnHeaderCells: [ "t10_males", "t10_todd" ],
+        },
       ];
 
       testHeaderCells(headerInfoMap);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/table/test_indexes_ariagrid.html
+++ b/accessible/tests/mochitest/table/test_indexes_ariagrid.html
@@ -18,33 +18,33 @@
   <script type="application/javascript">
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // ARIA grid
       var idxes = [
         [0, 1, 2],
         [3, 4, 5],
         [6, 7, 8],
-        [9, 10, 11]
+        [9, 10, 11],
       ];
       testTableIndexes("grid", idxes);
 
       idxes = [
         [0, 1, 2],
         [3, 4, 5],
         [6, 7, 8],
-        [9, 10, 11]
+        [9, 10, 11],
       ];
       testTableIndexes("grid-rowgroups", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // a bit crazy ARIA grid
       idxes = [
         [0, 1],
-        [2, 3]
+        [2, 3],
       ];
       testTableIndexes("grid2", idxes);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/table/test_indexes_table.html
+++ b/accessible/tests/mochitest/table/test_indexes_table.html
@@ -19,126 +19,134 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript">
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // table
       var idxes = [
         [0, 1, 2],
         [3, 4, 5],
         [6, 7, 7],
-        [6, 8, 9]
+        [6, 8, 9],
       ];
 
       testTableIndexes("table", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableborder
       idxes = [
         [0, 1, 2],
         [3, 4, 5],
         [6, 7, 7],
-        [6, 8, 9]
+        [6, 8, 9],
       ];
 
       testTableIndexes("tableborder", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // table
       idxes = [
         [ 0,  1,  2,  2,  3,  4,  5,  6],
         [ 7,  8,  9, 10, 11, 12, 13,  6],
         [14, 15, 15, 16, 17, 18, 19,  6],
-        [20, 15, 15, 21, 22, 18, 23,  6]
+        [20, 15, 15, 21, 22, 18, 23,  6],
       ];
 
       testTableIndexes("table2", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane1 (empty row groups)
       idxes = [
         [0, 1, 2],
         [3, 4, 5],
         [6, 7, 7],
-        [6, 8, 9]
+        [6, 8, 9],
       ];
 
       testTableIndexes("tableinsane1", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane2 (empry rows)
       idxes = [
         [-1, -1, -1],
         [-1, -1, -1],
-        [ 0,  1,  2]
+        [ 0,  1,  2],
       ];
 
       testTableIndexes("tableinsane2", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane3 (cell holes)
       idxes = [
         [0, 1, -1],
-        [2, 3,  4]
+        [2, 3,  4],
       ];
 
       testTableIndexes("tableinsane3", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane3.2 (cell holes, row spans, fixed in bug 417912)
       idxes = [
         [0,  1, 2],
         [3, -1, 2],
-        [4,  5, 2]
+        [4,  5, 2],
       ];
 
       testTableIndexes("tableinsane3.2", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane4 (empty row groups/rows and cell holes)
       idxes = [
         [ 0,  1,  2],
         [-1, -1, -1],
         [ 3,  4,  5],
         [ 6,  6,  7],
         [ 8, -1,  7],
-        [ 9,  9,  9]
+        [ 9,  9,  9],
       ];
       testTableIndexes("tableinsane4", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane5 (just a crazy table)
       idxes = [
         [ 0,  1,  2, -1, -1],
         [-1, -1, -1, -1, -1],
         [ 3,  4,  5, -1, -1],
         [ 6,  7,  -1,  -1,  -1],
         [ 6,  8,  9, -1, -1],
-        [ 6, 10,  9, 11, 12]
+        [ 6, 10,  9, 11, 12],
       ];
       testTableIndexes("tableinsane5", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // tableinsane6 (overlapping cells, mad table)
       idxes = [
         [ 0,  1,  2, -1, -1],
         [-1, -1, -1, -1, -1],
         [ 3,  4,  5, -1, -1],
         [ 6,  6,  7, -1, -1],
         [ 8,  9,  7, -1, -1],
-        [ 10, 9,  7, 11, 12]
+        [ 10, 9,  7, 11, 12],
       ];
       testTableIndexes("tableinsane6", idxes);
 
       // ////////////////////////////////////////////////////////////////////////
       // Table with a cell that has display: block; style
       idxes = [
-        [0, 1]
+        [0, 1],
       ];
       testTableIndexes("tablewithcelldisplayblock", idxes);
 
+      // ////////////////////////////////////////////////////////////////////////
+      // A table with a cell that has display: block; and a cell with colspan.
+      // This makes us fall back to the ARIAGridCellAccessible implementation.
+      idxes = [
+        [0, 0, 1],
+      ];
+      testTableIndexes("tablewithcolspanandcelldisplayblock", idxes);
+
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
 </head>
 <body>
@@ -414,10 +422,17 @@ https://bugzilla.mozilla.org/show_bug.cg
 
   <table id="tablewithcelldisplayblock">
     <tr>
       <th>a</th>
       <td style="display: block;">b</td>
     </tr>
   </table>
 
+  <table id="tablewithcolspanandcelldisplayblock">
+    <tr>
+      <th colspan="2">a</th>
+      <td style="display: block;" >b</td>
+    </tr>
+  </table>
+
 </body>
 </html>
--- a/accessible/tests/mochitest/table/test_mtable.html
+++ b/accessible/tests/mochitest/table/test_mtable.html
@@ -15,43 +15,43 @@
   <script type="application/javascript"
           src="../table.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       // 'Simple' table
       var idxes = [
         [0, 1],
-        [2, 3]
+        [2, 3],
       ];
       testTableIndexes("simple", idxes);
       var cellsArray = [
         [kDataCell, kDataCell],
-        [kDataCell, kDataCell]
+        [kDataCell, kDataCell],
       ];
       var rowsArray = [ROLE_MATHML_TABLE_ROW, ROLE_MATHML_TABLE_ROW];
       testTableStruct("simple", cellsArray, kNoColumnHeader,
                       "", "", kMathTable, rowsArray);
 
       // 'Complex' table
       idxes = [
         [0, 0, 0],
         [1, 1, 2],
-        [1, 1, 3]
+        [1, 1, 3],
       ];
       testTableIndexes("complex", idxes);
       cellsArray = [
         [kDataCell,   kColSpanned, kColSpanned],
         [kDataCell,   kColSpanned, kDataCell],
         [kRowSpanned, kSpanned,    kDataCell],
       ];
       rowsArray = [
         ROLE_MATHML_TABLE_ROW,
         ROLE_MATHML_TABLE_ROW,
-        ROLE_MATHML_TABLE_ROW
+        ROLE_MATHML_TABLE_ROW,
       ];
       testTableStruct("complex", cellsArray, kNoColumnHeader,
                       "", "", kMathTable, rowsArray);
 
       // 'Simple' table with mlabeledtr
       // At the moment we do not implement mlabeledtr but just hide the label
       // with display: none. Thus we just test the role for now. See bug 689641.
       idxes = [[0]];
--- a/accessible/tests/mochitest/table/test_sels_ariagrid.html
+++ b/accessible/tests/mochitest/table/test_sels_ariagrid.html
@@ -25,46 +25,46 @@ https://bugzilla.mozilla.org/show_bug.cg
       // ////////////////////////////////////////////////////////////////////////
       // ARIA grid
       var cellsArray =
       [
         [ true, true,  false, true],
         [ true, false, true,  true],
         [ true, false, false, true],
         [ true, true,  true,  true],
-        [ true, true,  true,  true]
+        [ true, true,  true,  true],
       ];
 
       testTableSelection("table", cellsArray);
       testUnselectTableColumn("table", 3, cellsArray);
       testUnselectTableRow("table", 3, cellsArray);
       testSelectTableColumn("table", 0, cellsArray);
       testSelectTableRow("table", 0, cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // a bit crazy ARIA grid
       cellsArray =
       [
         [ false, false],
-        [ false, false]
+        [ false, false],
       ];
 
       testTableSelection("grid2", cellsArray);
       testSelectTableColumn("grid2", 0, cellsArray);
       testSelectTableRow("grid2", 0, cellsArray);
       testUnselectTableColumn("grid2", 0, cellsArray);
       testUnselectTableRow("grid2", 0, cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // ARIA grid (column and row headers)
 
       cellsArray =
       [
         [ undefined, true, false],
-        [ undefined, true, false]
+        [ undefined, true, false],
       ];
 
       testTableSelection("grid3", cellsArray);
       testSelectTableColumn("grid3", 0, cellsArray);
       testSelectTableRow("grid3", 0, cellsArray);
       testUnselectTableColumn("grid3", 0, cellsArray);
       testUnselectTableRow("grid3", 0, cellsArray);
 
--- a/accessible/tests/mochitest/table/test_sels_table.html
+++ b/accessible/tests/mochitest/table/test_sels_table.html
@@ -24,17 +24,17 @@
       // ////////////////////////////////////////////////////////////////////////
       // table
 
       var cellsArray =
       [
         [false, false,       false,       kColSpanned, false, false,       false, false],
         [false, false,       false,       false,       false, false,       false, kRowSpanned],
         [false, false,       kColSpanned, false,       false, false,       false, kRowSpanned],
-        [false, kRowSpanned, kSpanned,    false,       false, kRowSpanned, false, kRowSpanned]
+        [false, kRowSpanned, kSpanned,    false,       false, kRowSpanned, false, kRowSpanned],
       ];
 
       testTableSelection("table", cellsArray);
 
       var rowCount = 4;
       for (let rowIdx = 0; rowIdx < rowCount; rowIdx++)
         testSelectTableRow("table", rowIdx, cellsArray);
 
@@ -59,17 +59,17 @@
       // table instane
 
       cellsArray =
       [
         [false,       false, false,       -1,          -1],
         [false,       false, false,       -1,          -1],
         [false,       false, kColSpanned, kColSpanned, -1],
         [kRowSpanned, false, false,       -1,          -1],
-        [kRowSpanned, false, kRowSpanned, false,       false]
+        [kRowSpanned, false, kRowSpanned, false,       false],
       ];
 
       testTableSelection("tableinsane", cellsArray);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/table/test_struct_ariagrid.html
+++ b/accessible/tests/mochitest/table/test_struct_ariagrid.html
@@ -18,36 +18,36 @@
 
   <script type="application/javascript">
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // Pure ARIA grid
       var cellsArray = [
         [kColHeaderCell, kColHeaderCell, kColHeaderCell],
         [kRowHeaderCell, kDataCell,      kDataCell],
-        [kRowHeaderCell, kDataCell,      kDataCell]
+        [kRowHeaderCell, kDataCell,      kDataCell],
       ];
 
       testTableStruct("table", cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // HTML table based ARIA grid
       cellsArray = [
         [kColHeaderCell, kColHeaderCell, kColHeaderCell],
         [kDataCell,      kDataCell,      kDataCell],
-        [kDataCell,      kDataCell,      kDataCell]
+        [kDataCell,      kDataCell,      kDataCell],
       ];
 
       testTableStruct("grid", cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // ARIA grid with HTML table elements
       cellsArray = [
         [kColHeaderCell, kColHeaderCell],
-        [kDataCell,      kDataCell]
+        [kDataCell,      kDataCell],
       ];
 
       testTableStruct("grid2", cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // ARIA grid of wrong markup
       cellsArray = [ ];
       testTableStruct("grid3", cellsArray);
--- a/accessible/tests/mochitest/table/test_struct_ariatreegrid.html
+++ b/accessible/tests/mochitest/table/test_struct_ariatreegrid.html
@@ -19,17 +19,17 @@
   <script type="application/javascript">
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // HTML based ARIA tree grid
 
       var cellsArray = [
         [kColHeaderCell, kColHeaderCell, kColHeaderCell],
         [kDataCell,      kDataCell,      kDataCell],
-        [kDataCell,      kDataCell,      kDataCell]
+        [kDataCell,      kDataCell,      kDataCell],
       ];
 
       testTableStruct("treegrid", cellsArray, kNoColumnHeader, "", "",
                       kTreeTable);
 
       SimpleTest.finish();
     }
 
--- a/accessible/tests/mochitest/table/test_struct_table.html
+++ b/accessible/tests/mochitest/table/test_struct_table.html
@@ -20,62 +20,62 @@
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // column headers from thead and tfoot
 
       cellsArray = [
         [kColHeaderCell, kColHeaderCell, kColSpanned],
         [kRowSpanned,    kColHeaderCell, kColHeaderCell],
         [kDataCell,      kDataCell,      kDataCell],
-        [kColHeaderCell, kColHeaderCell, kColHeaderCell]
+        [kColHeaderCell, kColHeaderCell, kColHeaderCell],
       ];
 
       testTableStruct("table1", cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // row and column headers from thead and @scope
 
       var cellsArray = [
         [kColHeaderCell, kColHeaderCell, kColHeaderCell],
         [kRowHeaderCell, kDataCell, kDataCell],
-        [kRowHeaderCell, kDataCell, kDataCell]
+        [kRowHeaderCell, kDataCell, kDataCell],
       ];
 
       testTableStruct("table2", cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // caption and @summary
 
       cellsArray = [
         [kColHeaderCell, kColHeaderCell, kColHeaderCell, kColHeaderCell],
         [kRowHeaderCell, kDataCell,      kDataCell,      kDataCell],
-        [kRowHeaderCell, kDataCell,      kDataCell,      kDataCell]
+        [kRowHeaderCell, kDataCell,      kDataCell,      kDataCell],
       ];
 
       testTableStruct("table3", cellsArray, kNoColumnHeader,
                       "Test Table",
                       "this is a test table for nsIAccessibleTable");
 
       // ////////////////////////////////////////////////////////////////////////
       // row and column spans
 
       cellsArray = [
         [kDataCell, kDataCell,   kDataCell,   kColSpanned, kDataCell, kDataCell,   kDataCell, kDataCell],
         [kDataCell, kDataCell,   kDataCell,   kDataCell,   kDataCell, kDataCell,   kDataCell, kRowSpanned],
         [kDataCell, kDataCell,   kColSpanned, kDataCell,   kDataCell, kDataCell,   kDataCell, kRowSpanned],
-        [kDataCell, kRowSpanned, kSpanned,    kDataCell,   kDataCell, kRowSpanned, kDataCell, kRowSpanned]
+        [kDataCell, kRowSpanned, kSpanned,    kDataCell,   kDataCell, kRowSpanned, kDataCell, kRowSpanned],
       ];
 
       testTableStruct("table4", cellsArray);
 
       // ////////////////////////////////////////////////////////////////////////
       // Table with a cell that has display: block; style
 
       cellsArray = [
-        [kRowHeaderCell, kDataCell]
+        [kRowHeaderCell, kDataCell],
       ];
 
       testTableStruct("table5", cellsArray);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/test_bug420863.html
+++ b/accessible/tests/mochitest/test_bug420863.html
@@ -37,42 +37,42 @@ https://bugzilla.mozilla.org/show_bug.cg
 
       // ////////////////////////////////////////////////////////////////////////
       // one td with 'onclick' attribute and one with registered click handler
       var td3Node = getNode("td3");
 
       // register 'click' event handler
       gClickHandler = {
         handleEvent: function handleEvent(aEvent) {
-        }
+        },
       };
       td3Node.addEventListener("click", gClickHandler);
 
       // check actions
       var actionsArray = [
         {
           ID: "td2", // "onclick" attribute
           actionName: "click",
           actionIndex: 0,
-          events: CLICK_EVENTS
+          events: CLICK_EVENTS,
         },
         {
           ID: td3Node,
           actionName: "click",
           actionIndex: 0,
           events: CLICK_EVENTS,
           checkOnClickEvent: function check(aEvent) {
             // unregister click event handler
             this.ID.removeEventListener("click", gClickHandler);
 
             // check actions
             is(getAccessible(this.ID).actionCount, 0,
                "td3 shouldn't have actions");
-          }
-        }
+          },
+        },
       ];
 
       testActions(actionsArray); // will call SimpleTest.finish()
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
--- a/accessible/tests/mochitest/text/test_atcaretoffset.html
+++ b/accessible/tests/mochitest/text/test_atcaretoffset.html
@@ -63,40 +63,40 @@
             this.mAtWrappedLineEnd = true;
           else
             this.mLine = nextLine;
         }
 
         return true;
       };
 
-      Object.defineProperty(this, "offset", { get() { return this.mOffset; }
+      Object.defineProperty(this, "offset", { get() { return this.mOffset; },
       });
 
       Object.defineProperty(this, "offsetDescr", { get() {
           return this.mOffset + " offset (" + this.mLine.number + " line, " +
             (this.mOffset - this.mLine.start) + " offset on the line)";
-        }
+        },
       });
 
       Object.defineProperty(this, "tests", { get() {
           // Line boundary tests.
           var cLine = this.mLine;
           var pLine = cLine.prevLine;
           var ppLine = pLine.prevLine;
           var nLine = cLine.nextLine;
           var nnLine = nLine.nextLine;
 
           var lineTests = [
             [ testTextBeforeOffset, BOUNDARY_LINE_START, pLine.start, cLine.start],
             [ testTextBeforeOffset, BOUNDARY_LINE_END, ppLine.end, pLine.end],
             [ testTextAtOffset, BOUNDARY_LINE_START, cLine.start, nLine.start],
             [ testTextAtOffset, BOUNDARY_LINE_END, pLine.end, cLine.end],
             [ testTextAfterOffset, BOUNDARY_LINE_START, nLine.start, nnLine.start],
-            [ testTextAfterOffset, BOUNDARY_LINE_END, cLine.end, nLine.end]
+            [ testTextAfterOffset, BOUNDARY_LINE_END, cLine.end, nLine.end],
           ];
 
           // Word boundary tests.
           var cWord = this.mLine.firstWord;
           var nWord = cWord.nextWord, pWord = cWord.prevWord;
 
           // The current word is a farthest word starting at or after the offset.
           if (this.mOffset >= nWord.start) {
@@ -132,17 +132,17 @@
               cWord.start, nWord.start ],
             [ testTextAtOffset, BOUNDARY_WORD_END,
               (useNextWordForAtWordEnd ? cWord : pWord).end,
               (useNextWordForAtWordEnd ? nWord : cWord).end ],
             [ testTextAfterOffset, BOUNDARY_WORD_START,
               nWord.start, nnWord.start ],
             [ testTextAfterOffset, BOUNDARY_WORD_END,
               (isAfterWordEnd ? nWord : cWord).end,
-              (isAfterWordEnd ? nnWord : nWord).end ]
+              (isAfterWordEnd ? nnWord : nWord).end ],
           ];
 
           // Character boundary tests.
           var prevOffset = this.offset > 1 ? this.offset - 1 : 0;
           var nextOffset = this.offset >= aWholeText.length ?
             this.offset : this.offset + 1;
           var nextAfterNextOffset = nextOffset >= aWholeText.length ?
             nextOffset : nextOffset + 1;
@@ -150,164 +150,164 @@
           var charTests = [
             [ testTextBeforeOffset, BOUNDARY_CHAR,
               prevOffset, this.offset ],
             [ testTextAtOffset, BOUNDARY_CHAR,
               this.offset,
               this.mAtWrappedLineEnd ? this.offset : nextOffset ],
             [ testTextAfterOffset, BOUNDARY_CHAR,
               this.mAtWrappedLineEnd ? this.offset : nextOffset,
-              this.mAtWrappedLineEnd ? nextOffset : nextAfterNextOffset ]
+              this.mAtWrappedLineEnd ? nextOffset : nextAfterNextOffset ],
           ];
 
           return lineTests.concat(wordTests.concat(charTests));
-        }
+        },
       });
 
       Object.defineProperty(this, "failures", { get() {
           if (this.mOffset == this.mLine.start)
             return this.mLine.lineStartFailures;
           if (this.mOffset == this.mLine.end)
             return this.mLine.lineEndFailures;
           return [];
-        }
+        },
       });
 
       this.mOffset = -1;
       this.mLine = new line(aWholeText, aLines, 0);
       this.mAtWrappedLineEnd = false;
       this.mWord = this.mLine.firstWord;
     }
 
     /**
      * A line object. Allows to navigate by lines and by words.
      */
     function line(aWholeText, aLines, aIndex) {
       Object.defineProperty(this, "prevLine", { get() {
           return new line(aWholeText, aLines, aIndex - 1);
-        }
+        },
       });
       Object.defineProperty(this, "nextLine", { get() {
           return new line(aWholeText, aLines, aIndex + 1);
-        }
+        },
       });
 
       Object.defineProperty(this, "start", { get() {
           if (aIndex < 0)
             return 0;
 
           if (aIndex >= aLines.length)
             return aWholeText.length;
 
           return aLines[aIndex][2];
-        }
+        },
       });
       Object.defineProperty(this, "end", { get() {
           if (aIndex < 0)
             return 0;
 
           if (aIndex >= aLines.length)
             return aWholeText.length;
 
           return aLines[aIndex][3];
-        }
+        },
       });
 
-      Object.defineProperty(this, "number", { get() { return aIndex; }
+      Object.defineProperty(this, "number", { get() { return aIndex; },
       });
-      Object.defineProperty(this, "wholeText", { get() { return aWholeText; }
+      Object.defineProperty(this, "wholeText", { get() { return aWholeText; },
       });
       this.isFakeLine = function line_isFakeLine() {
         return aIndex < 0 || aIndex >= aLines.length;
       };
 
       Object.defineProperty(this, "lastWord", { get() {
           if (aIndex < 0)
             return new word(this, [], -1);
           if (aIndex >= aLines.length)
             return new word(this, [], 0);
 
           var words = aLines[aIndex][4].words;
           return new word(this, words, words.length - 2);
-        }
+        },
       });
       Object.defineProperty(this, "firstWord", { get() {
           if (aIndex < 0)
             return new word(this, [], -1);
           if (aIndex >= aLines.length)
             return new word(this, [], 0);
 
           var words = aLines[aIndex][4].words;
           return new word(this, words, 0);
-        }
+        },
       });
 
       this.isLastWord = function line_isLastWord(aWord) {
         var lastWord = this.lastWord;
         return lastWord.start == aWord.start && lastWord.end == aWord.end;
       };
 
       Object.defineProperty(this, "lineStartFailures", { get() {
           if (aIndex < 0 || aIndex >= aLines.length)
             return [];
 
           return aLines[aIndex][4].lsf || [];
-        }
+        },
       });
       Object.defineProperty(this, "lineEndFailures", { get() {
           if (aIndex < 0 || aIndex >= aLines.length)
             return [];
 
           return aLines[aIndex][4].lef || [];
-        }
+        },
       });
     }
 
     /**
      * A word object. Allows to navigate by words.
      */
     function word(aLine, aWords, aIndex) {
       Object.defineProperty(this, "prevWord", { get() {
           if (aIndex >= 2)
             return new word(aLine, aWords, aIndex - 2);
 
           var prevLineLastWord = aLine.prevLine.lastWord;
           if (this.start == prevLineLastWord.start && !this.isFakeStartWord())
             return prevLineLastWord.prevWord;
           return prevLineLastWord;
-        }
+        },
       });
       Object.defineProperty(this, "nextWord", { get() {
           if (aIndex + 2 < aWords.length)
             return new word(aLine, aWords, aIndex + 2);
 
           var nextLineFirstWord = aLine.nextLine.firstWord;
           if (this.end == nextLineFirstWord.end && !this.isFakeEndWord())
             return nextLineFirstWord.nextWord;
           return nextLineFirstWord;
-        }
+        },
       });
 
       Object.defineProperty(this, "line", { get() { return aLine; } });
 
       Object.defineProperty(this, "start", { get() {
           if (this.isFakeStartWord())
             return 0;
 
           if (this.isFakeEndWord())
             return aLine.end;
            return aWords[aIndex];
-        }
+        },
       });
       Object.defineProperty(this, "end", { get() {
           if (this.isFakeStartWord())
             return 0;
 
           return this.isFakeEndWord() ? aLine.end : aWords[aIndex + 1];
-        }
+        },
       });
 
       this.toString = function word_toString() {
         var start = this.start, end = this.end;
         return "'" + aLine.wholeText.substring(start, end) +
           "' at [" + start + ", " + end + "]";
       };
 
@@ -373,31 +373,31 @@
       // __t__w__o__ (soft line break)
       //  6  7  8  9
       // __w__o__r__d__s
       // 10 11 12 13 14 15
 
       traverseTextByLines(gQueue, "textarea",
                           [ [ "aword", "\n", 0, 5, { words: [ 0, 5 ] } ],
                             [ "two ", "", 6, 10, { words: [ 6, 9 ] } ],
-                            [ "words", "", 10, 15, { words: [ 10, 15 ] } ]
+                            [ "words", "", 10, 15, { words: [ 10, 15 ] } ],
                           ] );
 
       var line4 = [ // "riend "
         [ "TextBeforeOffset", BOUNDARY_WORD_END, kTodo, kTodo, kTodo ],
-        [ "TextAfterOffset", BOUNDARY_WORD_END, kTodo, kTodo, kTodo ]
+        [ "TextAfterOffset", BOUNDARY_WORD_END, kTodo, kTodo, kTodo ],
       ];
       traverseTextByLines(gQueue, "ta_wrapped",
                           [ [ "hi ", "", 0, 3, { words: [ 0, 2 ] } ],
                             [ "hello ", "", 3, 9, { words: [ 3, 8 ] } ],
                             [ "my ", "", 9, 12, { words: [ 9, 11 ] } ],
                             [ "longf", "", 12, 17, { words: [ 12, 17 ] } ],
                             [ "riend ", "", 17, 23, { words: [ 17, 22 ], lsf: line4 } ],
                             [ "t sq ", "", 23, 28, { words: [ 23, 24, 25, 27 ] } ],
-                            [ "t", "", 28, 29, { words: [ 28, 29 ] } ]
+                            [ "t", "", 28, 29, { words: [ 28, 29 ] } ],
                           ] );
 
       gQueue.invoke(); // will call SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   </script>
--- a/accessible/tests/mochitest/text/test_dynamic.html
+++ b/accessible/tests/mochitest/text/test_dynamic.html
@@ -12,17 +12,17 @@
   <script type="application/javascript"
           src="../text.js"></script>
   <script type="application/javascript"
           src="../events.js"></script>
 
   <script type="application/javascript">
     function insertBefore(aId, aEl, aTextBefore, aTextAfter, aStartIdx, aEndIdx) {
       this.eventSeq = [
-        new invokerChecker(EVENT_REORDER, aId)
+        new invokerChecker(EVENT_REORDER, aId),
       ];
 
       this.invoke = function insertBefore_invoke() {
         testText(aId, 0, -1, aTextBefore);
         getNode(aId).insertBefore(aEl, getNode(aId).firstChild);
       };
 
       this.finalCheck = function insertBefore_finalCheck() {
--- a/accessible/tests/mochitest/text/test_wordboundary.html
+++ b/accessible/tests/mochitest/text/test_wordboundary.html
@@ -36,31 +36,31 @@
       // "hello "
       // __h__e__l__l__o__ __
       //  0  1  2  3  4  5  6
       ids = [ "i2", "d2", "e2", "t2" ];
       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
                            [ [ 0, 6, "", 0, 0 ] ]);
       testTextBeforeOffset(ids, BOUNDARY_WORD_END,
                            [ [ 0, 5, "", 0, 0 ],
-                             [ 6, 6, "hello", 0, 5 ]
+                             [ 6, 6, "hello", 0, 5 ],
                            ]);
 
       testTextAtOffset(ids, BOUNDARY_WORD_START,
                        [ [ 0, 6, "hello ", 0, 6 ] ]);
       testTextAtOffset(ids, BOUNDARY_WORD_END,
                        [ [ 0, 4, "hello", 0, 5 ],
-                         [ 5, 6, " ", 5, 6 ]
+                         [ 5, 6, " ", 5, 6 ],
                        ]);
 
       testTextAfterOffset(ids, BOUNDARY_WORD_START,
                           [ [ 0, 6, "", 6, 6 ] ]);
       testTextAfterOffset(ids, BOUNDARY_WORD_END,
                           [ [ 0, 5, " ", 5, 6 ],
-                            [ 6, 6, "", 6, 6 ]
+                            [ 6, 6, "", 6, 6 ],
                           ]);
 
       // "hello all"
       // __h__e__l__l__o__ __a__l__l__
       //  0  1  2  3  4  5  6  7  8  9
       ids = [ "i6", "d6", "e6", "t6" ];
       testTextBeforeOffset(ids, BOUNDARY_WORD_START,
                            [ [ 0, 5, "", 0, 0 ],
@@ -171,18 +171,18 @@
                            [ [ 0, 7, "", 0, 0 ],
                              [ 8, 12, "oneword", 0, 7,
                                [ [ 8, "ml_divbr1", kTodo, kOk, kTodo ],
                                  [ 8, "ml_edivbr1", kTodo, kOk, kTodo ],
                                  [ 9, "ml_divbr1", kTodo, kOk, kTodo ],
                                  [ 9, "ml_edivbr1", kTodo, kOk, kTodo ] ] ],
                              [ 13, 18, "\n\ntwo", 7, 12 ],
                              [ 19, 19, " words", 12, 18,
-                               [ [ 19, "ml_divbr1", kTodo, kTodo, kTodo, ],
-                                 [ 19, "ml_edivbr1", kTodo, kTodo, kTodo, ] ] ]
+                               [ [ 19, "ml_divbr1", kTodo, kTodo, kTodo ],
+                                 [ 19, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ],
                            ] );
 
       testTextAtOffset(ids, BOUNDARY_WORD_START,
                        [ [ 0, 8, "oneword\n\n", 0, 9,
                            [ [ 7, "ml_divbr1", kTodo, kTodo, kTodo ],
                              [ 7, "ml_edivbr1", kTodo, kTodo, kTodo ],
                              [ 8, "ml_divbr1", kTodo, kTodo, kTodo ],
                              [ 8, "ml_edivbr1", kTodo, kTodo, kTodo ] ] ],
--- a/accessible/tests/mochitest/textattrs/test_general.html
+++ b/accessible/tests/mochitest/textattrs/test_general.html
@@ -285,44 +285,44 @@
       attrs = { "font-family": kMonospaceFontFamily };
       testTextAttrs(ID, 70, attrs, defAttrs, 69, 83);
 
       attrs = {};
       testTextAttrs(ID, 84, attrs, defAttrs, 83, 91);
 
       attrs = {
         "text-underline-style": "solid",
-        "text-underline-color": gComputedStyle.color
+        "text-underline-color": gComputedStyle.color,
       };
       testTextAttrs(ID, 92, attrs, defAttrs, 91, 101);
 
       attrs = {};
       testTextAttrs(ID, 102, attrs, defAttrs, 101, 109);
 
       attrs = {
         "text-line-through-style": "solid",
-        "text-line-through-color": gComputedStyle.color
+        "text-line-through-color": gComputedStyle.color,
       };
       testTextAttrs(ID, 110, attrs, defAttrs, 109, 122);
 
       attrs = {};
       testTextAttrs(ID, 123, attrs, defAttrs, 122, 130);
 
       attrs = {
         "text-line-through-style": "solid",
-        "text-line-through-color": gComputedStyle.color
+        "text-line-through-color": gComputedStyle.color,
       };
       testTextAttrs(ID, 131, attrs, defAttrs, 130, 143);
 
       attrs = {};
       testTextAttrs(ID, 144, attrs, defAttrs, 143, 151);
 
       attrs = {
         "text-line-through-style": "solid",
-        "text-line-through-color": gComputedStyle.color
+        "text-line-through-color": gComputedStyle.color,
       };
       testTextAttrs(ID, 152, attrs, defAttrs, 151, 164);
 
       attrs = {};
       testTextAttrs(ID, 165, attrs, defAttrs, 164, 172);
 
       // ////////////////////////////////////////////////////////////////////////
       // area10, different single style spans in non-styled paragraph
@@ -363,26 +363,26 @@
       attrs = { "font-family": kMonospaceFontFamily };
       testTextAttrs(ID, 71, attrs, defAttrs, 70, 84);
 
       attrs = {};
       testTextAttrs(ID, 85, attrs, defAttrs, 84, 92);
 
       attrs = {
         "text-underline-style": "solid",
-        "text-underline-color": gComputedStyle.color
+        "text-underline-color": gComputedStyle.color,
       };
       testTextAttrs(ID, 93, attrs, defAttrs, 92, 102);
 
       attrs = {};
       testTextAttrs(ID, 103, attrs, defAttrs, 102, 110);
 
       attrs = {
         "text-line-through-style": "solid",
-        "text-line-through-color": gComputedStyle.color
+        "text-line-through-color": gComputedStyle.color,
       };
       testTextAttrs(ID, 111, attrs, defAttrs, 110, 123);
 
       attrs = {};
       testTextAttrs(ID, 124, attrs, defAttrs, 123, 131);
 
       // ////////////////////////////////////////////////////////////////////////
       // area11, "font-weight" tests
@@ -533,17 +533,17 @@
 
       // ////////////////////////////////////////////////////////////////////////
       // area18, "auto-generation text" tests
       ID = "area18";
       defAttrs = buildDefaultTextAttrs(ID, "12pt");
       testDefaultTextAttrs(ID, defAttrs);
 
       attrs = {
-        "auto-generated": "true"
+        "auto-generated": "true",
       };
       testTextAttrs(ID, 0, attrs, defAttrs, 0, 3);
       testTextAttrs(ID, 3, { }, defAttrs, 3, 7);
       testTextAttrs(ID, 7, attrs, defAttrs, 7, 8);
 
        // ////////////////////////////////////////////////////////////////////////
       // area19, "HTML5 mark tag" test
       // text enclosed in mark tag will have a different background color
--- a/accessible/tests/mochitest/textcaret/test_general.html
+++ b/accessible/tests/mochitest/textcaret/test_general.html
@@ -77,49 +77,49 @@
       gQueue.push(new setCaretOffset("heading", 1, document));
 
       // a*b*c
       var p2Doc = getNode("p2_container").contentDocument;
       var traversalList = [
         { // before 'a'
           DOMPoint: [ getNode("p2", p2Doc).firstChild, 0 ],
           point: [ getNode("p2", p2Doc), 0 ],
-          pointList: [ [ p2Doc, 0 ] ]
+          pointList: [ [ p2Doc, 0 ] ],
         },
         { // after 'a' (before anchor)
           DOMPoint: [ getNode("p2", p2Doc).firstChild, 1 ],
           point: [ getNode("p2", p2Doc), 1 ],
-          pointList: [ [ p2Doc, 0 ] ]
+          pointList: [ [ p2Doc, 0 ] ],
         },
         { // before 'b' (inside anchor)
           DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 0 ],
           point: [ getNode("p2_a", p2Doc), 0 ],
           pointList: [
             [ getNode("p2", p2Doc), 1 ],
-            [ p2Doc, 0 ]
-          ]
+            [ p2Doc, 0 ],
+          ],
         },
         { // after 'b' (inside anchor)
           DOMPoint: [ getNode("p2_a", p2Doc).firstChild, 1 ],
           point: [ getNode("p2_a", p2Doc), 1 ],
           pointList: [
             [ getNode("p2", p2Doc), 1 ],
-            [ p2Doc, 0 ]
-          ]
+            [ p2Doc, 0 ],
+          ],
         },
         { // before 'c' (after anchor)
           DOMPoint: [ getNode("p2", p2Doc).lastChild, 0 ],
           point: [ getNode("p2", p2Doc), 2 ],
-          pointList: [ [ p2Doc, 0 ] ]
+          pointList: [ [ p2Doc, 0 ] ],
         },
         { // after 'c'
           DOMPoint: [ getNode("p2", p2Doc).lastChild, 1 ],
           point: [ getNode("p2", p2Doc), 3 ],
-          pointList: [ [ p2Doc, 0 ] ]
-        }
+          pointList: [ [ p2Doc, 0 ] ],
+        },
       ];
       queueTraversalList(traversalList, getNode("p2", p2Doc));
 
       gQueue.onFinish = function() {
         turnCaretBrowsing(false);
       };
 
       gQueue.invoke(); // Will call SimpleTest.finish();
--- a/accessible/tests/mochitest/textselection/test_general.html
+++ b/accessible/tests/mochitest/textselection/test_general.html
@@ -20,17 +20,17 @@
      */
     function addSelections(aID, aSelections) {
       this.hyperTextNode = getNode(aID);
       this.hyperText = getAccessible(aID, [ nsIAccessibleText ]);
       this.initialSelectionCount = this.hyperText.selectionCount;
 
       // Multiple selection changes will be coalesced, so just listen for one.
       this.eventSeq = [
-        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID)
+        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID),
       ];
 
       this.invoke = function addSelection_invoke() {
         for (let [startOffset, endOffset] of aSelections) {
           this.hyperText.addSelection(startOffset, endOffset);
         }
       };
 
@@ -63,17 +63,17 @@
     }
 
     function changeSelection(aID, aIndex, aSelection) {
       let [startOffset, endOffset] = aSelection;
       this.hyperTextNode = getNode(aID);
       this.hyperText = getAccessible(aID, [ nsIAccessibleText ]);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID)
+        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID),
       ];
 
       this.invoke = function changeSelection_invoke() {
         this.hyperText.setSelectionBounds(aIndex, startOffset, endOffset);
       };
 
       this.finalCheck = function changeSelection_finalCheck() {
         var start = {}, end = {};
@@ -92,17 +92,17 @@
         return "nsIAccessibleText::setSelectionBounds test for " + aID;
       };
     }
 
     function removeSelections(aID) {
       this.hyperText = getAccessible(aID, [ nsIAccessibleText ]);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, document)
+        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, document),
       ];
 
       this.invoke = function removeSelection_invoke() {
         let selectionCount = this.hyperText.selectionCount;
         for (let i = 0; i < selectionCount; i++) {
           this.hyperText.removeSelection(0);
         }
       };
@@ -118,17 +118,17 @@
     }
 
     function changeDOMSelection(aID, aNodeID1, aNodeOffset1,
                                 aNodeID2, aNodeOffset2,
                                 aTests) {
       this.hyperText = getAccessible(aID, [ nsIAccessibleText ]);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID)
+        new invokerChecker(EVENT_TEXT_SELECTION_CHANGED, aID),
       ];
 
       this.invoke = function changeDOMSelection_invoke() {
         var sel = window.getSelection();
         var range = document.createRange();
         range.setStart(getNode(aNodeID1), aNodeOffset1);
         range.setEnd(getNode(aNodeID2), aNodeOffset2);
         sel.addRange(range);
--- a/accessible/tests/mochitest/tree/test_aria_globals.html
+++ b/accessible/tests/mochitest/tree/test_aria_globals.html
@@ -25,17 +25,17 @@
         "flowto",
         "grabbed",
         "haspopup",
         "invalid",
         "label",
         "labelledby",
         "live",
         "owns",
-        "relevant"
+        "relevant",
       ];
 
       // Elements having ARIA global state or properties or referred by another
       // element must be accessible.
       ok(isAccessible("pawn"),
          "Must be accessible because referred by another element.");
 
       for (let idx = 0; idx < globalIds.length; idx++) {
--- a/accessible/tests/mochitest/tree/test_aria_grid.html
+++ b/accessible/tests/mochitest/tree/test_aria_grid.html
@@ -18,19 +18,19 @@
       // ////////////////////////////////////////////////////////////////////////
       // grid having rowgroups
 
       var accTree =
         { TABLE: [
           { GROUPING: [
             { ROW: [
               { GRID_CELL: [
-                { TEXT_LEAF: [ ] }
-              ] }
-            ] }
+                { TEXT_LEAF: [ ] },
+              ] },
+            ] },
           ] },
         ] };
 
       testAccessibleTree("grid", accTree);
 
       // ////////////////////////////////////////////////////////////////////////
       // crazy grids (mad mix of ARIA and HTML tables)
 
@@ -39,64 +39,64 @@
         children: [
           { // div@role="row"
             role: ROLE_ROW,
             tagName: "DIV",
             children: [
               { // caption text leaf
                 role: ROLE_TEXT_LEAF,
                 name: "caption",
-                children: [ ]
+                children: [ ],
               },
               { // th generic accessible
                 role: ROLE_TEXT_CONTAINER,
                 children: [
                   { // th text leaf
                     role: ROLE_TEXT_LEAF,
                     name: "header1",
-                    children: [ ]
-                  }
-                ]
+                    children: [ ],
+                  },
+                ],
               },
               { // td@role="columnheader"
                 role: ROLE_COLUMNHEADER,
                 name: "header2",
-                children: [ { TEXT_LEAF: [ ] } ]
-              }
-            ]
-          }
-        ]
+                children: [ { TEXT_LEAF: [ ] } ],
+              },
+            ],
+          },
+        ],
       };
       testAccessibleTree("crazy_grid1", accTree);
 
       accTree = {
         role: ROLE_TABLE,
         children: [
           { // tr@role="row"
             role: ROLE_ROW,
             tagName: "TR",
             children: [
               { // td generic cell accessible
                 role: ROLE_CELL,
                 children: [
                   { // td text leaf
                     role: ROLE_TEXT_LEAF,
                     name: "cell1",
-                    children: [ ]
-                  }
-                ]
+                    children: [ ],
+                  },
+                ],
               },
               { // td@role="gridcell"
                 role: ROLE_GRID_CELL,
                 name: "cell2",
-                children: [ { TEXT_LEAF: [ ] } ]
-              }
-            ]
-          }
-        ]
+                children: [ { TEXT_LEAF: [ ] } ],
+              },
+            ],
+          },
+        ],
       };
       testAccessibleTree("crazy_grid2", accTree);
 
       accTree = {
         role: ROLE_TABLE,
         children: [
           { // div@role="row"
             role: ROLE_ROW,
@@ -105,25 +105,25 @@
                 role: ROLE_GRID_CELL,
                 children: [
                   { // td generic accessible
                     role: ROLE_TEXT_CONTAINER,
                     children: [
                       { // text leaf from presentational table
                         role: ROLE_TEXT_LEAF,
                         name: "cell3",
-                        children: [ ]
-                      }
-                    ]
+                        children: [ ],
+                      },
+                    ],
                   },
-                ]
-              }
-            ]
-          }
-        ]
+                ],
+              },
+            ],
+          },
+        ],
       };
       testAccessibleTree("crazy_grid3", accTree);
 
       accTree = {
         role: ROLE_TABLE,
         children: [
           { // div@role="row"
             role: ROLE_ROW,
@@ -138,58 +138,58 @@
                         role: ROLE_ROW,
                         children: [
                           { // td
                             role: ROLE_CELL,
                             children: [
                               { // caption text leaf of presentational table
                                  role: ROLE_TEXT_LEAF,
                                  name: "caption",
-                                 children: [ ]
+                                 children: [ ],
                               },
                               { // td generic accessible
                                 role: ROLE_TEXT_CONTAINER,
                                 children: [
                                   { // td text leaf of presentational table
                                     role: ROLE_TEXT_LEAF,
                                     name: "cell4",
-                                    children: [ ]
-                                  }
-                                ]
-                              }
-                            ]
-                          }
-                        ]
-                      }
-                    ]
-                  }
-                ]
-              }
-            ]
-          }
-        ]
+                                    children: [ ],
+                                  },
+                                ],
+                              },
+                            ],
+                          },
+                        ],
+                      },
+                    ],
+                  },
+                ],
+              },
+            ],
+          },
+        ],
       };
 
       testAccessibleTree("crazy_grid4", accTree);
 
       // ////////////////////////////////////////////////////////////////////////
       // grids that could contain whitespace accessibles but shouldn't.
 
       accTree =
         { TREE_TABLE: [
           { ROW: [
             { GRID_CELL: [
-              { TEXT_LEAF: [ ] }
+              { TEXT_LEAF: [ ] },
             ] },
             { GRID_CELL: [
-              { TEXT_LEAF: [ ] }
+              { TEXT_LEAF: [ ] },
             ] },
             { GRID_CELL: [
-              { TEXT_LEAF: [ ] }
-            ] }
+              { TEXT_LEAF: [ ] },
+            ] },
           ] },
         ] };
 
       testAccessibleTree("whitespaces-grid", accTree);
 
       SimpleTest.finish();
     }
 
--- a/accessible/tests/mochitest/tree/test_aria_imgmap.html
+++ b/accessible/tests/mochitest/tree/test_aria_imgmap.html
@@ -25,51 +25,51 @@
   }
 
   function doTest() {
     var accTree = {
       role: ROLE_IMAGE_MAP,
       children: [
         {
           role: ROLE_ENTRY,
-          name: "first name"
+          name: "first name",
         },
         {
           role: ROLE_ENTRY,
-          name: "last name"
+          name: "last name",
         },
         {
           role: ROLE_RADIOBUTTON,
-          name: "male"
+          name: "male",
         },
         {
           role: ROLE_RADIOBUTTON,
-          name: "female"
+          name: "female",
         },
         {
           role: ROLE_CHECKBUTTON,
-          name: "have bike"
+          name: "have bike",
         },
         {
           role: ROLE_EDITCOMBOBOX,
-          name: "bike model"
+          name: "bike model",
         },
         {
           role: ROLE_CHECKBUTTON,
-          name: "have car"
+          name: "have car",
         },
         {
           role: ROLE_CHECKBUTTON,
-          name: "have airplane"
+          name: "have airplane",
         },
         {
           role: ROLE_PUSHBUTTON,
-          name: "submit"
-        }
-      ]
+          name: "submit",
+        },
+      ],
     };
 
     // Test image map tree structure, roles, and names.
     testAccessibleTree("imagemap", accTree);
 
     SimpleTest.finish();
   }
 
--- a/accessible/tests/mochitest/tree/test_aria_list.html
+++ b/accessible/tests/mochitest/tree/test_aria_list.html
@@ -16,49 +16,49 @@
   <script type="application/javascript">
     function doTest() {
       // ////////////////////////////////////////////////////////////////////////
       // list
 
       var accTree =
         { LIST: [
           { LISTITEM: [
-            { TEXT_LEAF: [ ] }
-          ] }
+            { TEXT_LEAF: [ ] },
+          ] },
         ] };
 
       testAccessibleTree("list", accTree);
 
       // ////////////////////////////////////////////////////////////////////////
       // crazy list (mad mix of ARIA and HTML)
 
       accTree = { // div@role="list"
         role: ROLE_LIST,
         children: [
           { // li
             role: ROLE_TEXT_CONTAINER,
             children: [
               { // li text leaf
                 role: ROLE_TEXT_LEAF,
                 name: "item1",
-                children: [ ]
-              }
-            ]
+                children: [ ],
+              },
+            ],
           },
           { // li@role="listitem"
             role: ROLE_LISTITEM,
             children: [
               { // text leaf
                 role: ROLE_TEXT_LEAF,
                 name: "item2",
-                children: [ ]
-              }
-            ]
-          }
-        ]
+                children: [ ],
+              },
+            ],
+          },
+        ],
       };
 
       testAccessibleTree("crazy_list", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/tree/test_aria_menu.html
+++ b/accessible/tests/mochitest/tree/test_aria_menu.html
@@ -16,43 +16,43 @@
   <script type="application/javascript">
   function doTest() {
     // Menuitem with no popup.
     tree =
       { SECTION: [ // container
         { MENUPOPUP: [ // menu
           { MENUITEM: [
             { STATICTEXT: [] }, // bullet
-            { TEXT_LEAF: [] }
-          ] }
-        ] }
+            { TEXT_LEAF: [] },
+          ] },
+        ] },
       ] };
     testAccessibleTree("menu", tree);
 
     // Menuitem with explicit no popup.
     tree =
       { SECTION: [ // container
         { MENUPOPUP: [ // menu
           { MENUITEM: [
             { STATICTEXT: [] }, // bullet
-            { TEXT_LEAF: [] }
-          ] }
-        ] }
+            { TEXT_LEAF: [] },
+          ] },
+        ] },
       ] };
     testAccessibleTree("menu_nopopup", tree);
 
     // Menuitem with popup.
     tree =
       { SECTION: [ // container
         { MENUPOPUP: [ // menu
           { PARENT_MENUITEM: [ // menuitem with aria-haspopup="true"
             { STATICTEXT: [] }, // bullet
-            { TEXT_LEAF: [] }
-          ] }
-        ] }
+            { TEXT_LEAF: [] },
+          ] },
+        ] },
       ] };
     testAccessibleTree("menu_popup", tree);
 
     SimpleTest.finish();
   }
 
   SimpleTest.waitForExplicitFinish();
   addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_aria_owns.html
+++ b/accessible/tests/mochitest/tree/test_aria_owns.html
@@ -24,101 +24,101 @@
 
     var gQueue = null;
 
     function doTest() {
       var tree =
         { SECTION: [ // t1_1
           { HEADING: [ // t1_2
             // no kids, no loop
-          ] }
+          ] },
         ] };
       testAccessibleTree("t1_1", tree);
 
       tree =
         { SECTION: [ // t2_1
           { GROUPING: [ // t2_2
             { HEADING: [ // t2_3
               // no kids, no loop
-            ] }
-          ] }
+            ] },
+          ] },
         ] };
       testAccessibleTree("t2_1", tree);
 
       tree =
         { SECTION: [ // t3_3
           { GROUPING: [ // t3_1
             { NOTE: [ // t3_2
               { HEADING: [ // DOM child of t3_2
                 // no kids, no loop
-              ] }
-            ] }
-          ] }
+              ] },
+            ] },
+          ] },
         ] };
       testAccessibleTree("t3_3", tree);
 
       tree =
         { SECTION: [ // t4_1
           { GROUPING: [ // DOM child of t4_1, aria-owns ignored
             // no kids, no loop
-          ] }
+          ] },
         ] };
       testAccessibleTree("t4_1", tree);
 
       tree =
         { SECTION: [ // t5_1
           { GROUPING: [ // DOM child of t5_1
             { NOTE: [ // t5_2
               { HEADING: [ // DOM child of t5_2
                 { FORM: [ // t5_3
                   { TOOLTIP: [ // DOM child of t5_3
                     // no kids, no loop
-                  ]}
-                ]}
-              ]}
-            ] }
-          ] }
+                  ]},
+                ]},
+              ]},
+            ] },
+          ] },
         ] };
       testAccessibleTree("t5_1", tree);
 
       tree =
         { SECTION: [ // t6_1
           { RADIOBUTTON: [ ] },
           { CHECKBUTTON: [ ] }, // t6_3, rearranged by aria-owns
           { PUSHBUTTON: [ ] }, // t6_2, rearranged by aria-owns
         ] };
       testAccessibleTree("t6_1", tree);
 
       tree =
         { SECTION: [ // ariaowns_container
           { SECTION: [ // ariaowns_self
             { SECTION: [ // ariaowns_uncle
-            ] }
-          ] }
+            ] },
+          ] },
         ] };
       testAccessibleTree("ariaowns_container", tree);
 
       tree =
         { TABLE: [
           { ROW: [
             { GRID_CELL: [
-              { TEXT_LEAF: [] }
+              { TEXT_LEAF: [] },
             ] },
             { GRID_CELL: [
-              { TEXT_LEAF: [] }
-            ] }
+              { TEXT_LEAF: [] },
+            ] },
           ] },
           { ROW: [
             { GRID_CELL: [
-              { TEXT_LEAF: [] }
+              { TEXT_LEAF: [] },
             ] },
             { GRID_CELL: [
-              { TEXT_LEAF: [] }
-            ] }
-          ] }
+              { TEXT_LEAF: [] },
+            ] },
+          ] },
         ] };
       testAccessibleTree("grid", tree);
 
       tree =
         { SECTION: [ // presentation_owner
           // Can't own ancestor, so no children.
         ] };
       testAccessibleTree("presentation_owner", tree);
--- a/accessible/tests/mochitest/tree/test_aria_presentation.html
+++ b/accessible/tests/mochitest/tree/test_aria_presentation.html
@@ -16,92 +16,92 @@
           src="../role.js"></script>
 
   <script type="application/javascript">
   function doTest() {
     // Presentation role don't allow accessible.
     var tree =
       { SECTION: [ // container
         { TEXT_LEAF: [ ] }, // child text of 'presentation' node
-        { TEXT_LEAF: [ ] } // child text of 'none' node
+        { TEXT_LEAF: [ ] }, // child text of 'none' node
       ] };
     testAccessibleTree("div_cnt", tree);
 
     // Focusable element, 'presentation' and 'none' roles are ignored.
     tree =
       { SECTION: [ // container
         { PUSHBUTTON: [ // button having 'presentation' role
-          { TEXT_LEAF: [ ] }
+          { TEXT_LEAF: [ ] },
         ] },
         { PUSHBUTTON: [ // button having 'none' role
-          { TEXT_LEAF: [ ] }
-        ] }
+          { TEXT_LEAF: [ ] },
+        ] },
       ] };
     testAccessibleTree("btn_cnt", tree);
 
     // Presentation table, no table structure is exposed.
     tree =
       { SECTION: [ // container
         { TEXT_CONTAINER: [ // td generic accessible inside 'presentation' table
-          { TEXT_LEAF: [ ] } // cell text
+          { TEXT_LEAF: [ ] }, // cell text
         ] },
         { TEXT_CONTAINER: [ // td generic accessible inside 'none' table
-          { TEXT_LEAF: [ ] } // cell text
-        ] }
+          { TEXT_LEAF: [ ] }, // cell text
+        ] },
       ] };
     testAccessibleTree("tbl_cnt", tree);
 
     // Focusable table, 'presentation' and 'none' roles are ignored.
     tree =
       { SECTION: [ // container
         { TABLE: [ // table having 'presentation' role
           { ROW: [ // tr
             { CELL: [ // td
-              { TEXT_LEAF: [ ] }
-            ] }
-          ] }
+              { TEXT_LEAF: [ ] },
+            ] },
+          ] },
         ] },
         { TABLE: [ // table having 'none' role
           { ROW: [ // tr
             { CELL: [ // td
-              { TEXT_LEAF: [ ] }
-            ] }
-          ] }
-        ] }
+              { TEXT_LEAF: [ ] },
+            ] },
+          ] },
+        ] },
       ] };
     testAccessibleTree("tblfocusable_cnt", tree);
 
     // Presentation list, expose generic accesisble for list items.
     tree =
       { SECTION: [ // container
         { TEXT_CONTAINER: [ // li generic accessible inside 'presentation' role
-          { TEXT_LEAF: [ ] } // li text
+          { TEXT_LEAF: [ ] }, // li text
         ] },
         { TEXT_CONTAINER: [ // li generic accessible inside 'none' role
-          { TEXT_LEAF: [ ] } // li text
-        ] }
+          { TEXT_LEAF: [ ] }, // li text
+        ] },
       ] };
     testAccessibleTree("list_cnt", tree);
 
     // Has ARIA globals or referred by ARIA relationship, role='presentation'
     // and role='none' are ignored.
     tree =
       { SECTION: [ // container
         { LABEL: [ // label, has aria-owns
           { TEXT_LEAF: [ ] },
           { LABEL: [ // label, referenced by aria-owns
-            { TEXT_LEAF: [ ] }
+            { TEXT_LEAF: [ ] },
           ] },
         ] },
         { LABEL: [ // label, has aria-owns
           { TEXT_LEAF: [ ] },
           { LABEL: [ // label, referenced by aria-owns
-            { TEXT_LEAF: [ ] }
-          ] }
-        ] }
+            { TEXT_LEAF: [ ] },
+          ] },
+        ] },
       ] };
     testAccessibleTree("airaglobalprop_cnt", tree);
 
     SimpleTest.finish();
   }
 
   SimpleTest.waitForExplicitFinish();
   addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_aria_table.html
+++ b/accessible/tests/mochitest/tree/test_aria_table.html
@@ -18,19 +18,19 @@
       // ////////////////////////////////////////////////////////////////////////
       // table having rowgroups
 
       var accTree =
         { TABLE: [
           { GROUPING: [
             { ROW: [
               { CELL: [
-                { TEXT_LEAF: [ ] }
-              ] }
-            ] }
+                { TEXT_LEAF: [ ] },
+              ] },
+            ] },
           ] },
         ] };
 
       testAccessibleTree("table", accTree);
 
       SimpleTest.finish();
     }
 
--- a/accessible/tests/mochitest/tree/test_brokencontext.html
+++ b/accessible/tests/mochitest/tree/test_brokencontext.html
@@ -39,22 +39,22 @@
     checkIfTDGeneric("th_in_presentation_table");
     checkIfTDGeneric("td_in_presentation_table");
 
     // HTML table role="button"
     var tree =
       { PUSHBUTTON: [ // table
           { NOTHING: [ // tr
             { NOTHING: [ // th
-              { TEXT_LEAF: [ ] }
+              { TEXT_LEAF: [ ] },
             ] },
             { NOTHING: [ // td
-              { TEXT_LEAF: [ ] }
-            ] }
-          ] }
+              { TEXT_LEAF: [ ] },
+            ] },
+          ] },
       ] };
     testAccessibleTree("button_table", tree);
 
     // //////////////////////////////////////////////////////////////////////////
     // HTML list elements outside list context.
 
     ok(!isAccessible("presentation_ul"),
                      "presentational ul shouldn't be accessible");
@@ -74,57 +74,57 @@
                      "dt in presentational dl shouldn't be accessible");
     ok(!isAccessible("dd_in_presentation_dl"),
                      "dd in presentational dl shouldn't be accessible");
 
     tree =
       { PUSHBUTTON: [ // ul
         { NOTHING: [ // li
           { STATICTEXT: [ ] },
-          { TEXT_LEAF: [ ] }
+          { TEXT_LEAF: [ ] },
         ] },
         { NOTHING: [ // span styled as a list
           { STATICTEXT: [ ] },
-          { TEXT_LEAF: [ ] }
-        ] }
+          { TEXT_LEAF: [ ] },
+        ] },
       ] };
     testAccessibleTree("button_ul", tree);
 
     tree =
       { PUSHBUTTON: [ // ol
         { NOTHING: [ // li
           { STATICTEXT: [ ] },
-          { TEXT_LEAF: [ ] }
-        ] }
+          { TEXT_LEAF: [ ] },
+        ] },
       ] };
     testAccessibleTree("button_ol", tree);
 
     tree =
       { PUSHBUTTON: [ // dl
         { NOTHING: [ // dt
-          { TEXT_LEAF: [ ] }
+          { TEXT_LEAF: [ ] },
         ] },
         { NOTHING: [ // dd
-          { TEXT_LEAF: [ ] }
-        ] }
+          { TEXT_LEAF: [ ] },
+        ] },
       ] };
     testAccessibleTree("button_dl", tree);
 
     // //////////////////////////////////////////////////////////////////////////
     // Styled as HTML table elements, accessible is created by tag name
 
     tree =
       { LINK: [ // a
-        { TEXT_LEAF: [ ] }
+        { TEXT_LEAF: [ ] },
       ] };
     testAccessibleTree("a_as_td", tree);
 
     tree =
       { HEADING: [
-        { TEXT_LEAF: [ ] }
+        { TEXT_LEAF: [ ] },
       ] };
     testAccessibleTree("h1_as_td", tree);
     testAccessibleTree("h2_as_td", tree);
     testAccessibleTree("h3_as_td", tree);
     testAccessibleTree("h4_as_td", tree);
     testAccessibleTree("h5_as_td", tree);
     testAccessibleTree("h6_as_td", tree);
 
--- a/accessible/tests/mochitest/tree/test_canvas.html
+++ b/accessible/tests/mochitest/tree/test_canvas.html
@@ -15,17 +15,17 @@ https://bugzilla.mozilla.org/show_bug.cg
   <script type="application/javascript"
           src="../role.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       var accTree =
         { CANVAS: [
           { CHECKBUTTON: [] },
-          { ENTRY: [] }
+          { ENTRY: [] },
         ] };
 
       testAccessibleTree("canvas", accTree);
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_cssflexbox.html
+++ b/accessible/tests/mochitest/tree/test_cssflexbox.html
@@ -19,39 +19,39 @@
       // Ensure that flexbox ordering and absolute positioning do not affect
       // the accessibility tree.
       // Note that there is no accessible for a div with display:flex style.
       var accTree = {
         role: ROLE_SECTION,
         children: [
           { // Bug 1277559. Button outside the flexed content
             role: ROLE_PUSHBUTTON,
-            name: "Button"
+            name: "Button",
           },
           { // Visually first button in the 3 button row
             role: ROLE_PUSHBUTTON,
-            name: "First"
+            name: "First",
           },
           { // Flushed right third button in the 3 button row
             role: ROLE_PUSHBUTTON,
-            name: "Second"
+            name: "Second",
           },
           { // Middle button in the 3 button row
             role: ROLE_PUSHBUTTON,
-            name: "Third"
+            name: "Third",
           }, // end bug 1277559
           { // Bug 962558: DOM first, Order 2.
             role: ROLE_PUSHBUTTON,
-            name: "two, tab first"
+            name: "two, tab first",
           },
           { // DOM order second, flex order 1
             role: ROLE_PUSHBUTTON,
-            name: "one, tab second"
-          } // end bug 962558
-        ]
+            name: "one, tab second",
+          }, // end bug 962558
+        ],
       };
       testAccessibleTree("flex_elements", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_cssoverflow.html
+++ b/accessible/tests/mochitest/tree/test_cssoverflow.html
@@ -26,17 +26,17 @@
     // //////////////////////////////////////////////////////////////////////////
     // Invokers
 
     function focusAnchor(aID) {
       this.linkNode = getNode(aID);
       this.link = getAccessible(this.linkNode);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_FOCUS, getAccessible, this.linkNode)
+        new invokerChecker(EVENT_FOCUS, getAccessible, this.linkNode),
       ];
 
       this.invoke = function focusAnchor_invoke() {
         this.linkNode.focus();
       };
 
       this.check = function focusAnchor_check(aEvent) {
         todo_is(this.link, aEvent.accessible,
@@ -48,17 +48,17 @@
       };
     }
 
     function tabAnchor(aID) {
       this.linkNode = getNode(aID);
       this.link = getAccessible(this.linkNode);
 
       this.eventSeq = [
-        new invokerChecker(EVENT_FOCUS, getAccessible, this.linkNode)
+        new invokerChecker(EVENT_FOCUS, getAccessible, this.linkNode),
       ];
 
       this.invoke = function tabAnchor_invoke() {
         synthesizeKey("VK_TAB", { shiftKey: false });
       };
 
       this.check = function tabAnchor_check(aEvent) {
         todo_is(this.link, aEvent.accessible,
--- a/accessible/tests/mochitest/tree/test_display_contents.html
+++ b/accessible/tests/mochitest/tree/test_display_contents.html
@@ -15,21 +15,21 @@
         src="../role.js"></script>
 
 <script type="application/javascript">
 function doTest() {
   let tree =
     { LIST: [
       { LISTITEM: [
         { STATICTEXT: [] },
-        { TEXT_LEAF: [] }
+        { TEXT_LEAF: [] },
       ]},
       { LISTITEM: [
         { STATICTEXT: [] },
-        { TEXT_LEAF: [] }
+        { TEXT_LEAF: [] },
       ]},
     ] };
   testAccessibleTree("ul", tree);
 
   SimpleTest.finish();
 }
 
 SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/tree/test_dockids.html
+++ b/accessible/tests/mochitest/tree/test_dockids.html
@@ -19,28 +19,28 @@
   // gA11yEventDumpToConsole = true;
   // enableLogging("tree,verbose");
   function doTest() {
     var tree =
      { DOCUMENT: [
        { TEXT_CONTAINER: [ // head
          { TEXT_CONTAINER: [ // link
            { STATICTEXT: [] }, // generated content
-           { STATICTEXT: [] } // generated content
-         ] }
+           { STATICTEXT: [] }, // generated content
+         ] },
        ] },
        { TEXT_LEAF: [ ] }, // body text
        { ENTRY: [ ] }, // input under document element
        { TEXT_CONTAINER: [ // link under document element
          { TEXT_LEAF: [ ] }, // link content
          { STATICTEXT: [ ] }, // generated content
-         { STATICTEXT: [ ] } // generated content
+         { STATICTEXT: [ ] }, // generated content
        ] },
        { LINK: [ // anchor under document element
-         { TEXT_LEAF: [ ] } // anchor content
+         { TEXT_LEAF: [ ] }, // anchor content
        ] },
      ] };
     testAccessibleTree(getNode("iframe").contentDocument, tree);
 
     SimpleTest.finish();
   }
 
   SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/tree/test_filectrl.html
+++ b/accessible/tests/mochitest/tree/test_filectrl.html
@@ -16,27 +16,27 @@ https://bugzilla.mozilla.org/show_bug.cg
           src="../role.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       var accTree = {
         role: ROLE_TEXT_CONTAINER,
         children: [
           {
-            role: ROLE_PUSHBUTTON
+            role: ROLE_PUSHBUTTON,
           },
           {
             role: ROLE_LABEL,
             children: [
               {
                 role: ROLE_TEXT_LEAF,
-              }
+              },
             ],
           },
-        ]
+        ],
       };
       testAccessibleTree("filectrl", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_formctrl.html
+++ b/accessible/tests/mochitest/tree/test_formctrl.html
@@ -14,76 +14,76 @@
   <script type="application/javascript"
           src="../role.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       // input@type="checkbox"
       var accTree = {
         role: ROLE_CHECKBUTTON,
-        children: [ ]
+        children: [ ],
       };
 
       testAccessibleTree("checkbox", accTree);
 
       // input@type="radio"
       accTree = {
         role: ROLE_RADIOBUTTON,
-        children: [ ]
+        children: [ ],
       };
 
       testAccessibleTree("radio", accTree);
 
       // input@type="button" and input@type="submit"
       // button
       accTree = {
         role: ROLE_PUSHBUTTON,
         children: [
           {
-            role: ROLE_TEXT_LEAF // XXX Bug 567203
-          }
-        ]
+            role: ROLE_TEXT_LEAF, // XXX Bug 567203
+          },
+        ],
       };
 
       testAccessibleTree("btn1", accTree);
       testAccessibleTree("submit", accTree);
       testAccessibleTree("btn2", accTree);
 
       // input@type="image"
       accTree = {
         role: ROLE_PUSHBUTTON,
         children: [
           {
-            role: ROLE_STATICTEXT
-          }
-        ]
+            role: ROLE_STATICTEXT,
+          },
+        ],
       };
       testAccessibleTree("image_submit", accTree);
 
       // input@type="range"
       accTree = { SLIDER: [ ] };
       testAccessibleTree("range", accTree);
 
       // input@type="number"
       accTree =
         { SPINBUTTON: [
           { ENTRY: [ ] },
           { PUSHBUTTON: [ ] },
-          { PUSHBUTTON: [ ] }
+          { PUSHBUTTON: [ ] },
         ] };
       testAccessibleTree("number", accTree);
 
       // output
       accTree = {
         role: ROLE_SECTION,
         children: [
           {
-            role: ROLE_TEXT_LEAF
-          }
-        ]
+            role: ROLE_TEXT_LEAF,
+          },
+        ],
       };
       testAccessibleTree("output", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_gencontent.html
+++ b/accessible/tests/mochitest/tree/test_gencontent.html
@@ -26,27 +26,27 @@
   <script type="application/javascript">
     function doTest() {
       // :before and :after pseudo styles
       var accTree = {
         role: ROLE_SECTION,
         children: [
           {
             role: ROLE_STATICTEXT,
-            name: "START"
+            name: "START",
           },
           {
             role: ROLE_TEXT_LEAF,
-            name: "MIDDLE"
+            name: "MIDDLE",
           },
           {
             role: ROLE_STATICTEXT,
-            name: "END"
-          }
-        ]
+            name: "END",
+          },
+        ],
       };
 
       testAccessibleTree("gentext", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/tree/test_iframe.html
+++ b/accessible/tests/mochitest/tree/test_iframe.html
@@ -14,19 +14,19 @@
           src="../role.js"></script>
 
   <script type="application/javascript">
     function doTest() {
       var accTree = {
         role: ROLE_INTERNAL_FRAME,
         children: [
           {
-            role: ROLE_DOCUMENT
-          }
-        ]
+            role: ROLE_DOCUMENT,
+          },
+        ],
       };
 
       testAccessibleTree("iframe", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/tree/test_img.html
+++ b/accessible/tests/mochitest/tree/test_img.html
@@ -25,31 +25,31 @@
 
     function doTest() {
       // image map
       var accTree = {
         role: ROLE_IMAGE_MAP,
         children: [
           {
             role: ROLE_LINK,
-            children: []
+            children: [],
           },
           {
             role: ROLE_LINK,
-            children: []
-          }
-        ]
+            children: [],
+          },
+        ],
       };
 
       testAccessibleTree("imgmap", accTree);
 
       // img
       accTree = {
         role: ROLE_GRAPHIC,
-        children: []
+        children: [],
       };
 
       testAccessibleTree("img", accTree);
 
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
--- a/accessible/tests/mochitest/tree/test_invalid_img.xhtml
+++ b/accessible/tests/mochitest/tree/test_invalid_img.xhtml
@@ -15,17 +15,17 @@
 
   <script>
   <![CDATA[
     function doTest() {
       document.getElementsByTagName("img")[0].firstChild.data = "2";
 
       var accTree = {
         role: ROLE_TEXT,
-        children: [ { role: ROLE_TEXT_LEAF } ]
+        children: [ { role: ROLE_TEXT_LEAF } ],
       };
       testAccessibleTree("the_img", accTree);
       SimpleTest.finish();
     }
 
     SimpleTest.waitForExplicitFinish();
     addA11yLoadEvent(doTest);
   ]]>
--- a/accessible/tests/mochitest/tree/test_invalidationlist.html
+++ b/accessible/tests/mochitest/tree/test_invalidationlist.html
@@ -15,22 +15,22 @@
   <script type="application/javascript"
           src="../states.js"></script>
 
   <script type="application/javascript">
   function doTest() {
     var tree =
      { SECTION: [
        { SECTION: [ // div
-         { LABEL: [ ] } // link
+         { LABEL: [ ] }, // link
        ] },
        { SECTION: [ // div table-cell referred by label
          { TEXT_LEAF: [ ] }, // 'Z'
-         { TEXT_LEAF: [ ] } // ' '
-       ] }
+         { TEXT_LEAF: [ ] }, // ' '
+       ] },
      ] };
     testAccessibleTree("container", tree);
 
     SimpleTest.finish();
   }
 
   SimpleTest.waitForExplicitFinish();
   addA11yLoadEvent(doTest);
--- a/accessible/tests/mochitest/tree/test_list.html
+++ b/accessible/tests/mochitest/tree/test_list.html
@@ -15,163 +15,163 @@
 
   <script type="application/javascript">
     function listItemTree(aBulletText, aName, aSubtree) {
       var obj = {
         role: ROLE_LISTITEM,
         children: [
           {
             role: ROLE_STATICTEXT,
-            name: aBulletText
+            name: aBulletText,
           },
           {
             role: ROLE_TEXT_LEAF,
-            name: aName
-          }
-        ]