Merge mozilla-inbound to mozilla-central. a=merge
authorDaniel Varga <dvarga@mozilla.com>
Sat, 20 Oct 2018 13:10:23 +0300
changeset 500739 f88ebf2720c875520d2de1cf4104a3b550c73ad8
parent 500738 f3bb47ac5f014dd6d8cc0747e0f57f76858d04c2 (current diff)
parent 500733 d0f1450799b56b9960ad6df2da432a5fd5849417 (diff)
child 500740 5d4fb7fef7d0383e4244bdd221ec61018bff1662
child 500741 345543cd804524463207a7c674e82e21e7dcffba
child 500753 8784cdbf16d36c6e10a969bfaf47725ecec3b080
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
f88ebf2720c8 / 64.0a1 / 20181020102231 / files
nightly linux64
f88ebf2720c8 / 64.0a1 / 20181020102231 / files
nightly mac
f88ebf2720c8 / 64.0a1 / 20181020102231 / files
nightly win32
f88ebf2720c8 / 64.0a1 / 20181020102231 / files
nightly win64
f88ebf2720c8 / 64.0a1 / 20181020102231 / files
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
releases
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-inbound to mozilla-central. a=merge
devtools/client/shared/css-angle.js
devtools/client/shared/output-parser.js
devtools/server/actors/css-properties.js
devtools/shared/css/color.js
devtools/shared/css/parsing-utils.js
devtools/shared/css/properties-db.js
devtools/shared/fronts/css-properties.js
testing/talos/talos/tests/tart/addon/content/framescript.js
testing/talos/talos/tests/tart/addon/content/tart.html
testing/talos/talos/tests/tart/addon/content/tart.js
--- 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
-          }
-        ]
+            name: aName,
+          },
+        ],
       };
 
       if (aSubtree)
         obj.children.push(aSubtree);
 
       return obj;
     }
 
     function doTest() {
       // list1
       var discAccTree = {
         role: ROLE_LIST,
         children: [
           new listItemTree(kDiscBulletText, "Oranges"),
           new listItemTree(kDiscBulletText, "Apples"),
-          new listItemTree(kDiscBulletText, "Bananas")
-        ]
+          new listItemTree(kDiscBulletText, "Bananas"),
+        ],
       };
 
       testAccessibleTree("list1", discAccTree);
 
       // list2
       var circleAccTree = {
         role: ROLE_LIST,
         children: [
           new listItemTree(kCircleBulletText, "Oranges"),
           new listItemTree(kCircleBulletText, "Apples"),
-          new listItemTree(kCircleBulletText, "Bananas")
-        ]
+          new listItemTree(kCircleBulletText, "Bananas"),
+        ],
       };
 
       testAccessibleTree("list2", circleAccTree);
 
       // list3
       var squareAccTree = {
         role: ROLE_LIST,
         children: [
           new listItemTr