Merge mozilla-central to inbound a=merge on a CLOSED TREE
authorCoroiu Cristina <ccoroiu@mozilla.com>
Fri, 31 Aug 2018 19:35:06 +0300
changeset 492090 68c32b51f9bc022f3fea83befd1d07b90d48db5b
parent 492089 c47e4fa9dba85dda068c71555b7e8c7cf7a6400b (current diff)
parent 492011 016e135dee84c8ce2bc30aa5cd0f13830415d5c8 (diff)
child 492091 be6a30c44b959056e51e970ebe99a03829df32b5
push id1815
push userffxbld-merge
push dateMon, 15 Oct 2018 10:40:45 +0000
treeherdermozilla-release@18d4c09e9378 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone63.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Merge mozilla-central to inbound a=merge on a CLOSED TREE
browser/base/content/test/sanitize/browser_sanitize-timespans.js
browser/components/migration/.eslintrc.js
browser/components/places/.eslintrc.js
browser/modules/AsyncTabSwitcher.jsm
devtools/.eslintrc.js
devtools/client/aboutdebugging/test/test_addon_path.js
devtools/client/aboutdebugging/test/xpcshell-head.js
devtools/client/aboutdebugging/test/xpcshell.ini
netwerk/protocol/http/nsHttpChannel.cpp
services/sync/tests/unit/test_syncengine.js
toolkit/components/alerts/test/test_alerts_requireinteraction.html
toolkit/components/narrate/.eslintrc.js
toolkit/components/osfile/modules/osfile_async_front.jsm
toolkit/components/osfile/modules/osfile_async_worker.js
toolkit/components/osfile/modules/osfile_win_front.jsm
toolkit/components/places/.eslintrc.js
toolkit/modules/Preferences.jsm
tools/lint/eslint/eslint-plugin-mozilla/lib/configs/recommended.js
tools/lint/eslint/eslint-plugin-mozilla/package-lock.json
tools/lint/eslint/eslint-plugin-mozilla/package.json
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -34,10 +34,32 @@ 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/browser/actors/BrowserTabChild.jsm
+++ b/browser/actors/BrowserTabChild.jsm
@@ -22,17 +22,17 @@ class BrowserTabChild extends ActorChild
       break;
 
     case "MozAfterPaint":
       this.mm.sendAsyncMessage("Browser:FirstPaint");
       break;
 
     case "MozDOMPointerLock:Entered":
       this.mm.sendAsyncMessage("PointerLock:Entered", {
-        originNoSuffix: event.target.nodePrincipal.originNoSuffix
+        originNoSuffix: event.target.nodePrincipal.originNoSuffix,
       });
       break;
 
     case "MozDOMPointerLock:Exited":
       this.mm.sendAsyncMessage("PointerLock:Exited");
       break;
     }
   }
--- a/browser/actors/ContextMenuChild.jsm
+++ b/browser/actors/ContextMenuChild.jsm
@@ -492,17 +492,17 @@ class ContextMenuChild extends ActorChil
     }
 
     let doc = aEvent.composedTarget.ownerDocument;
     let {
       mozDocumentURIIfNotForErrorPages: docLocation,
       characterSet: charSet,
       baseURI,
       referrer,
-      referrerPolicy
+      referrerPolicy,
     } = doc;
     docLocation = docLocation && docLocation.spec;
     let frameOuterWindowID = WebNavigationFrames.getFrameId(doc.defaultView);
     let loginFillInfo = LoginManagerContent.getFieldContext(aEvent.composedTarget);
 
     // The same-origin check will be done in nsContextMenu.openLinkInTab.
     let parentAllowsMixedContent = !!this.docShell.mixedContentChannel;
 
@@ -818,17 +818,17 @@ class ContextMenuChild extends ActorChil
     if (context.target instanceof Ci.nsIImageLoadingContent &&
         (context.target.currentRequestFinalURI || context.target.currentURI)) {
       context.onImage = true;
 
       context.imageInfo = {
         currentSrc: context.target.currentSrc,
         width: context.target.width,
         height: context.target.height,
-        imageText: context.target.title || context.target.alt
+        imageText: context.target.title || context.target.alt,
       };
 
       const request = context.target.getRequest(Ci.nsIImageLoadingContent.CURRENT_REQUEST);
 
       if (request && (request.imageStatus & request.STATUS_SIZE_AVAILABLE)) {
         context.onLoadedImage = true;
       }
 
--- a/browser/actors/LightweightThemeChild.jsm
+++ b/browser/actors/LightweightThemeChild.jsm
@@ -60,15 +60,15 @@ class LightweightThemeChild extends Acto
   /**
    * Forward the theme data to the page.
    * @param {Object} outerWindowID The outerWindowID the parent process window has.
    * @param {Object} content The receiving global
    */
   update(outerWindowID, content) {
     const event = Cu.cloneInto({
       detail: {
-        data: Services.cpmm.sharedData.get(`theme/${outerWindowID}`)
+        data: Services.cpmm.sharedData.get(`theme/${outerWindowID}`),
       },
     }, content);
     content.dispatchEvent(new content.CustomEvent("LightweightTheme:Set",
                                                   event));
   }
 }
--- a/browser/actors/NetErrorChild.jsm
+++ b/browser/actors/NetErrorChild.jsm
@@ -418,17 +418,17 @@ class NetErrorChild extends ActorChild {
 
         let approximateDate = now - difference * 1000;
         // If the difference is more than a day, we last fetched the date in the last 5 days,
         // and adjusting the date per the interval would make the cert valid, warn the user:
         if (Math.abs(difference) > 60 * 60 * 24 && (now - lastFetched) <= 60 * 60 * 24 * 5 &&
             certRange.notBefore < approximateDate && certRange.notAfter > approximateDate) {
           clockSkew = true;
           let formatter = new Services.intl.DateTimeFormat(undefined, {
-            dateStyle: "short"
+            dateStyle: "short",
           });
           let systemDate = formatter.format(new Date());
           // negative difference means local time is behind server time
           approximateDate = formatter.format(new Date(approximateDate));
 
           doc.getElementById("wrongSystemTime_URL").textContent = doc.location.hostname;
           doc.getElementById("wrongSystemTime_systemDate").textContent = systemDate;
           doc.getElementById("wrongSystemTime_actualDate").textContent = approximateDate;
@@ -450,17 +450,17 @@ class NetErrorChild extends ActorChild {
 
           // We don't check the notBefore of the cert with the build date,
           // as it is of course almost certain that it is now later than the build date,
           // so we shouldn't exclude the possibility that the cert has become valid
           // since the build date.
           if (buildDate > systemDate && new Date(certRange.notAfter) > buildDate) {
             clockSkew = true;
             let formatter = new Services.intl.DateTimeFormat(undefined, {
-              dateStyle: "short"
+              dateStyle: "short",
             });
 
             doc.getElementById("wrongSystemTimeWithoutReference_URL")
               .textContent = doc.location.hostname;
             doc.getElementById("wrongSystemTimeWithoutReference_systemDate")
               .textContent = formatter.format(systemDate);
           }
         }
@@ -645,17 +645,17 @@ class NetErrorChild extends ActorChild {
 
     let automatic = Services.prefs.getBoolPref("security.ssl.errorReporting.automatic");
     win.dispatchEvent(new win.CustomEvent("AboutNetErrorOptions", {
       detail: JSON.stringify({
         enabled: Services.prefs.getBoolPref("security.ssl.errorReporting.enabled"),
         changedCertPrefs: this.changedCertPrefs(),
         automatic,
         hideAddExceptionButton,
-      })
+      }),
     }));
 
     this.mm.sendAsyncMessage("Browser:SSLErrorReportTelemetry",
                             {reportStatus: TLS_ERROR_REPORT_TELEMETRY_UI_SHOWN});
   }
 
   openCaptivePortalPage(evt) {
     this.mm.sendAsyncMessage("Browser:OpenCaptivePortalPage");
@@ -663,17 +663,17 @@ class NetErrorChild extends ActorChild {
 
 
   onResetPreferences(evt) {
     this.mm.sendAsyncMessage("Browser:ResetSSLPreferences");
   }
 
   onSetAutomatic(evt) {
     this.mm.sendAsyncMessage("Browser:SetSSLErrorReportAuto", {
-      automatic: evt.detail
+      automatic: evt.detail,
     });
 
     // If we're enabling reports, send a report for this failure.
     if (evt.detail) {
       let win = evt.originalTarget.ownerGlobal;
       let docShell = win.docShell;
 
       let {securityInfo} = docShell.failedChannel;
--- a/browser/actors/PageInfoChild.jsm
+++ b/browser/actors/PageInfoChild.jsm
@@ -7,17 +7,17 @@ var EXPORTED_SYMBOLS = ["PageInfoChild"]
 ChromeUtils.import("resource://gre/modules/Services.jsm");
 ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
 
 ChromeUtils.import("resource://gre/modules/ActorChild.jsm");
 
 XPCOMUtils.defineLazyModuleGetters(this, {
   Feeds: "resource:///modules/Feeds.jsm",
   PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.jsm",
-  setTimeout: "resource://gre/modules/Timer.jsm"
+  setTimeout: "resource://gre/modules/Timer.jsm",
 });
 
 class PageInfoChild extends ActorChild {
   /* nsIMessageListener */
   receiveMessage(message) {
     let strings = message.data.strings;
     let window;
 
--- a/browser/actors/PageStyleChild.jsm
+++ b/browser/actors/PageStyleChild.jsm
@@ -15,17 +15,17 @@ class PageStyleChild extends ActorChild 
 
   sendStyleSheetInfo(mm) {
     let content = mm.content;
     let filteredStyleSheets = this._filterStyleSheets(this.getAllStyleSheets(content), content);
 
     mm.sendAsyncMessage("PageStyle:StyleSheets", {
       filteredStyleSheets,
       authorStyleDisabled: this.getViewer(content).authorStyleDisabled,
-      preferredStyleSheetSet: content.document.preferredStyleSheetSet
+      preferredStyleSheetSet: content.document.preferredStyleSheetSet,
     });
   }
 
   getAllStyleSheets(frameset) {
     let selfSheets = Array.slice(frameset.document.styleSheets);
     let subSheets = Array.map(frameset.frames, frame => this.getAllStyleSheets(frame));
     return selfSheets.concat(...subSheets);
   }
--- a/browser/actors/WebRTCChild.jsm
+++ b/browser/actors/WebRTCChild.jsm
@@ -227,17 +227,17 @@ function prompt(aContentWindow, aWindowI
     documentURI: aContentWindow.document.documentURI,
     secure: aSecure,
     isHandlingUserInput: aIsHandlingUserInput,
     isThirdPartyOrigin,
     requestTypes,
     sharingScreen,
     sharingAudio,
     audioDevices,
-    videoDevices
+    videoDevices,
   };
 
   let mm = getMessageManagerForWindow(aContentWindow);
   mm.sendAsyncMessage("webrtc:Request", request);
 }
 
 function denyGUMRequest(aData) {
   Services.obs.notifyObservers(null, "getUserMedia:response:deny", aData.callID);
@@ -287,17 +287,17 @@ function updateIndicators(aSubject, aTop
 
   let contentWindowArray = MediaManagerService.activeMediaCaptureWindows;
   let count = contentWindowArray.length;
 
   let state = {
     showGlobalIndicator: count > 0,
     showCameraIndicator: false,
     showMicrophoneIndicator: false,
-    showScreenSharingIndicator: ""
+    showScreenSharingIndicator: "",
   };
 
   Services.cpmm.sendAsyncMessage("webrtc:UpdatingIndicators");
 
   // If several iframes in the same page use media streams, it's possible to
   // have the same top level window several times. We use a Set to avoid
   // sending duplicate notifications.
   let contentWindows = new Set();
--- a/browser/base/content/aboutNetError.js
+++ b/browser/base/content/aboutNetError.js
@@ -48,17 +48,17 @@ function retryThis(buttonEl) {
 
   buttonEl.disabled = true;
 }
 
 function toggleDisplay(node) {
   const toggle = {
     "": "block",
     "none": "block",
-    "block": "none"
+    "block": "none",
   };
   return (node.style.display = toggle[node.style.display]);
 }
 
 function showCertificateErrorReporting() {
   // Display error reporting UI
   document.getElementById("certificateErrorReporting").style.display = "block";
 }
@@ -265,17 +265,17 @@ function initPage() {
             document.dispatchEvent(event);
           });
       }
       const hasPrefStyleError = [
         "interrupted", // This happens with subresources that are above the max tls
         "SSL_ERROR_PROTOCOL_VERSION_ALERT",
         "SSL_ERROR_UNSUPPORTED_VERSION",
         "SSL_ERROR_NO_CYPHER_OVERLAP",
-        "SSL_ERROR_NO_CIPHERS_SUPPORTED"
+        "SSL_ERROR_NO_CIPHERS_SUPPORTED",
       ].some((substring) => shortDesc.includes(substring));
       // If it looks like an error that is user config based
       if (getErrorCode() == "nssFailure2" && hasPrefStyleError && options && options.changedCertPrefs) {
         showPrefChangeContainer();
       }
     }
     if (getErrorCode() == "sslv3Used") {
       document.getElementById("advancedButton").style.display = "none";
@@ -331,17 +331,17 @@ function initPageCertError() {
   setupAdvancedButton();
 
   document.getElementById("learnMoreContainer").style.display = "block";
 
   let checkbox = document.getElementById("automaticallyReportInFuture");
   checkbox.addEventListener("change", function({target: {checked}}) {
     document.dispatchEvent(new CustomEvent("AboutNetErrorSetAutomatic", {
       detail: checked,
-      bubbles: true
+      bubbles: true,
     }));
   });
 
   addEventListener("AboutNetErrorOptions", function(event) {
     var options = JSON.parse(event.detail);
     if (options && options.enabled) {
       // Display error reporting UI
       document.getElementById("certificateErrorReporting").style.display = "block";
--- a/browser/base/content/blockedSite.js
+++ b/browser/base/content/blockedSite.js
@@ -136,18 +136,18 @@ function initPage() {
   document.title = document.getElementById("errorTitleText_" + error).textContent;
 
   // Inform the test harness that we're done loading the page.
   var event = new CustomEvent("AboutBlockedLoaded",
     {
       bubbles: true,
       detail: {
         url: this.getURL(),
-        err: error
-      }
+        err: error,
+      },
     });
   document.dispatchEvent(event);
 }
 
 let seeDetailsButton = document.getElementById("seeDetailsButton");
 seeDetailsButton.addEventListener("click", onClickSeeDetails);
 // Note: It is important to run the script this way, instead of using
 // an onload handler. This is because error pages are loaded as
--- a/browser/base/content/browser-addons.js
+++ b/browser/base/content/browser-addons.js
@@ -22,17 +22,17 @@ function removeNotificationOnEnd(notific
     }
   }
 
   for (let install of installs) {
     install.addListener({
       onDownloadCancelled: maybeRemove,
       onDownloadFailed: maybeRemove,
       onInstallFailed: maybeRemove,
-      onInstallEnded: maybeRemove
+      onInstallEnded: maybeRemove,
     });
   }
 }
 
 var gXPInstallObserver = {
   _findChildShell(aDocShell, aSoughtShell) {
     if (aDocShell == aSoughtShell)
       return aDocShell;
@@ -249,17 +249,17 @@ var gXPInstallObserver = {
       } else {
         messageString = gNavigatorBundle.getString("xpinstallDisabledMessage");
 
         action = {
           label: gNavigatorBundle.getString("xpinstallDisabledButton"),
           accessKey: gNavigatorBundle.getString("xpinstallDisabledButton.accesskey"),
           callback: function editPrefs() {
             Services.prefs.setBoolPref("xpinstall.enabled", true);
-          }
+          },
         };
 
         secondaryActions = [{
           label: gNavigatorBundle.getString("addonInstall.cancelButton.label"),
           accessKey: gNavigatorBundle.getString("addonInstall.cancelButton.accesskey"),
           callback: () => {},
         }];
       }
@@ -287,17 +287,17 @@ var gXPInstallObserver = {
 
       let secHistogram = Services.telemetry.getHistogramById("SECURITY_UI");
       action = {
         label: gNavigatorBundle.getString("xpinstallPromptAllowButton"),
         accessKey: gNavigatorBundle.getString("xpinstallPromptAllowButton.accesskey"),
         callback() {
           secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_ADDON_ASKING_PREVENTED_CLICK_THROUGH);
           installInfo.install();
-        }
+        },
       };
       let secondaryAction = {
         label: gNavigatorBundle.getString("xpinstallPromptMessage.dontAllow"),
         accessKey: gNavigatorBundle.getString("xpinstallPromptMessage.dontAllow.accesskey"),
         callback: () => {},
       };
 
       secHistogram.add(Ci.nsISecurityUITelemetry.WARNING_ADDON_ASKING_PREVENTED);
@@ -456,17 +456,17 @@ var gXPInstallObserver = {
                               action, secondaryActions, options);
       break; }
     }
   },
   _removeProgressNotification(aBrowser) {
     let notification = PopupNotifications.getNotification("addon-progress", aBrowser);
     if (notification)
       notification.remove();
-  }
+  },
 };
 
 var gExtensionsNotifications = {
   initialized: false,
   init() {
     this.updateAlerts();
     this.boundUpdate = this.updateAlerts.bind(this);
     ExtensionsUI.on("change", this.boundUpdate);
@@ -614,33 +614,33 @@ var LightWeightThemeWebInstaller = {
       header: gNavigatorBundle.getFormattedString("webextPerms.header", ["<>"]),
       addonName: data.name,
       text: gNavigatorBundle.getFormattedString("lwthemeInstallRequest.message2",
                                                 [principal.URI.host]),
       acceptText: gNavigatorBundle.getString("lwthemeInstallRequest.allowButton2"),
       acceptKey: gNavigatorBundle.getString("lwthemeInstallRequest.allowButton.accesskey2"),
       cancelText: gNavigatorBundle.getString("webextPerms.cancel.label"),
       cancelKey: gNavigatorBundle.getString("webextPerms.cancel.accessKey"),
-      msgs: []
+      msgs: [],
     };
     ExtensionsUI.showPermissionsPrompt(gBrowser.selectedBrowser, strings, null,
       "installWeb").then(answer => {
       if (answer) {
         LightWeightThemeWebInstaller._install(data, notify);
       }
     });
   },
 
   _install(newLWTheme, notify) {
     let listener = {
       onEnabled(aAddon) {
         if (notify) {
           ExtensionsUI.showInstallNotification(gBrowser.selectedBrowser, newLWTheme);
         }
-      }
+      },
     };
 
     AddonManager.addAddonListener(listener);
     this._manager.currentTheme = newLWTheme;
     AddonManager.removeAddonListener(listener);
   },
 
   _preview(dataString, principal, baseURI) {
--- a/browser/base/content/browser-compacttheme.js
+++ b/browser/base/content/browser-compacttheme.js
@@ -59,10 +59,10 @@ var CompactTheme = {
     } else if (!enabled && wasEnabled) {
       this.styleSheet.disabled = true;
     }
   },
 
   uninit() {
     Services.obs.removeObserver(this, "lightweight-theme-styling-update");
     this.styleSheet = null;
-  }
+  },
 };
--- a/browser/base/content/browser-ctrlTab.js
+++ b/browser/base/content/browser-ctrlTab.js
@@ -95,17 +95,17 @@ var tabPreviewPanelHelper = {
       host._prevFocus = null;
     } else
       gBrowser.selectedBrowser.focus();
 
     if (host.tabToSelect) {
       gBrowser.selectedTab = host.tabToSelect;
       host.tabToSelect = null;
     }
-  }
+  },
 };
 
 /**
  * Ctrl-Tab panel
  */
 var ctrlTab = {
   maxTabPreviews: 6,
   get panel() {
@@ -595,10 +595,10 @@ var ctrlTab = {
 
     // Also disable the <key> to ensure Shift+Ctrl+Tab never triggers
     // Show All Tabs.
     var key_showAllTabs = document.getElementById("key_showAllTabs");
     if (enable)
       key_showAllTabs.removeAttribute("disabled");
     else
       key_showAllTabs.setAttribute("disabled", "true");
-  }
+  },
 };
--- a/browser/base/content/browser-customization.js
+++ b/browser/base/content/browser-customization.js
@@ -70,10 +70,10 @@ var CustomizationHandler = {
     // Re-enable parts of the UI we disabled during the dialog
     let menubar = document.getElementById("main-menubar");
     for (let childNode of menubar.children)
       childNode.setAttribute("disabled", false);
     let cmd = document.getElementById("cmd_CustomizeToolbars");
     cmd.removeAttribute("disabled");
 
     gBrowser.selectedBrowser.focus();
-  }
+  },
 };
--- a/browser/base/content/browser-feeds.js
+++ b/browser/base/content/browser-feeds.js
@@ -27,23 +27,23 @@ const PREF_AUDIO_SELECTED_READER = "brow
 const PREF_UPDATE_DELAY = 2000;
 
 const SETTABLE_PREFS = new Set([
   PREF_VIDEO_SELECTED_ACTION,
   PREF_AUDIO_SELECTED_ACTION,
   PREF_SELECTED_ACTION,
   PREF_VIDEO_SELECTED_READER,
   PREF_AUDIO_SELECTED_READER,
-  PREF_SELECTED_READER
+  PREF_SELECTED_READER,
 ]);
 
 const EXECUTABLE_PREFS = new Set([
   PREF_SELECTED_APP,
   PREF_VIDEO_SELECTED_APP,
-  PREF_AUDIO_SELECTED_APP
+  PREF_AUDIO_SELECTED_APP,
 ]);
 
 const VALID_ACTIONS = new Set(["ask", "reader", "bookmarks"]);
 const VALID_READERS = new Set(["client", "default", "bookmarks"]);
 
 XPCOMUtils.defineLazyPreferenceGetter(this, "SHOULD_LOG",
                                       "feeds.log", false);
 
@@ -445,17 +445,17 @@ var FeedHandler = {
       case PREF_VIDEO_SELECTED_READER:
       case PREF_AUDIO_SELECTED_READER:
       case PREF_SELECTED_ACTION:
       case PREF_VIDEO_SELECTED_ACTION:
       case PREF_AUDIO_SELECTED_ACTION:
         const response = {
          default: this._getReaderForType(Ci.nsIFeed.TYPE_FEED),
          [Ci.nsIFeed.TYPE_AUDIO]: this._getReaderForType(Ci.nsIFeed.TYPE_AUDIO),
-         [Ci.nsIFeed.TYPE_VIDEO]: this._getReaderForType(Ci.nsIFeed.TYPE_VIDEO)
+         [Ci.nsIFeed.TYPE_VIDEO]: this._getReaderForType(Ci.nsIFeed.TYPE_VIDEO),
         };
         Services.mm.broadcastAsyncMessage("FeedWriter:PreferenceUpdated",
                                           response);
         break;
     }
   },
 
   _initSubscriptionUIResponse(feedType) {
--- a/browser/base/content/browser-fullScreenAndPointerLock.js
+++ b/browser/base/content/browser-fullScreenAndPointerLock.js
@@ -216,17 +216,17 @@ var PointerlockFsWarning = {
     }
     case "transitionend": {
       if (this._state == "hiding") {
         this._element.setAttribute("hidden", true);
       }
       break;
     }
     }
-  }
+  },
 };
 
 var PointerLock = {
 
   init() {
     window.messageManager.addMessageListener("PointerLock:Entered", this);
     window.messageManager.addMessageListener("PointerLock:Exited", this);
   },
@@ -237,17 +237,17 @@ var PointerLock = {
         PointerlockFsWarning.showPointerLock(aMessage.data.originNoSuffix);
         break;
       }
       case "PointerLock:Exited": {
         PointerlockFsWarning.close();
         break;
       }
     }
-  }
+  },
 };
 
 var FullScreen = {
   _MESSAGES: [
     "DOMFullscreen:Request",
     "DOMFullscreen:NewOrigin",
     "DOMFullscreen:Exit",
     "DOMFullscreen:Painted",
@@ -581,17 +581,17 @@ var FullScreen = {
 
     // Track whether mouse is near the toolbox
     if (trackMouse && !this.useLionFullScreen) {
       let rect = gBrowser.tabpanels.getBoundingClientRect();
       this._mouseTargetRect = {
         top: rect.top + 50,
         bottom: rect.bottom,
         left: rect.left,
-        right: rect.right
+        right: rect.right,
       };
       MousePosTracker.addListener(this);
     }
 
     this._isChromeCollapsed = false;
     Services.obs.notifyObservers(null, "fullscreen-nav-toolbox", "shown");
   },
 
@@ -661,17 +661,17 @@ var FullScreen = {
     if (fullscreenctls.parentNode == navbar && ctlsOnTabbar) {
       fullscreenctls.removeAttribute("flex");
       document.getElementById("TabsToolbar").appendChild(fullscreenctls);
     } else if (fullscreenctls.parentNode.id == "TabsToolbar" && !ctlsOnTabbar) {
       fullscreenctls.setAttribute("flex", "1");
       navbar.appendChild(fullscreenctls);
     }
     fullscreenctls.hidden = !aEnterFS;
-  }
+  },
 };
 XPCOMUtils.defineLazyGetter(FullScreen, "useLionFullScreen", function() {
   // We'll only use OS X Lion full screen if we're
   // * on OS X
   // * on Lion or higher (Darwin 11+)
   // * have fullscreenbutton="true"
   return AppConstants.isPlatformAndVersionAtLeast("macosx", 11) &&
          document.documentElement.getAttribute("fullscreenbutton") == "true";
--- a/browser/base/content/browser-fullZoom.js
+++ b/browser/base/content/browser-fullZoom.js
@@ -163,17 +163,17 @@ var FullZoom = {
     // preference has changed.
     let hasPref = false;
     let token = this._getBrowserToken(browser);
     this._cps2.getByDomainAndName(browser.currentURI.spec, this.name, ctxt, {
       handleResult() { hasPref = true; },
       handleCompletion: () => {
         if (!hasPref && token.isCurrent)
           this._applyPrefToZoom(undefined, browser);
-      }
+      },
     });
   },
 
   // location change observer
 
   /**
    * Called when the location of a tab changes.
    * When that happens, we need to update the current zoom level if appropriate.
@@ -247,17 +247,17 @@ var FullZoom = {
       handleResult(resultPref) { value = resultPref.value; },
       handleCompletion: () => {
         if (!token.isCurrent) {
           this._notifyOnLocationChange(browser);
           return;
         }
         this._applyPrefToZoom(value, browser,
                               this._notifyOnLocationChange.bind(this, browser));
-      }
+      },
     });
   },
 
   // update state of zoom type menu item
 
   updateMenu: function FullZoom_updateMenu() {
     var menuItem = document.getElementById("toggle_zoom");
 
@@ -507,17 +507,17 @@ var FullZoom = {
         return;
       }
       let value = undefined;
       this._cps2.getGlobal(this.name, this._loadContextFromBrowser(browser), {
         handleResult(pref) { value = pref.value; },
         handleCompletion: (reason) => {
           this._globalValue = this._ensureValid(value);
           resolve(this._globalValue);
-        }
+        },
       });
     });
   },
 
   /**
    * Gets the load context from the given Browser.
    *
    * @param Browser  The Browser whose load context will be returned.
--- a/browser/base/content/browser-media.js
+++ b/browser/base/content/browser-media.js
@@ -119,17 +119,17 @@ var gEMEHandler = {
     let iconURL = "chrome://browser/skin/drm-icon.svg";
     box.appendNotification(notificationMessage, notificationId, iconURL, box.PRIORITY_WARNING_MEDIUM,
                            buttons);
   },
   showPopupNotificationForSuccess(browser, keySystem) {
     // We're playing EME content! Remove any "we can't play because..." messages.
     var box = gBrowser.getNotificationBox(browser);
     ["drmContentDisabled",
-     "drmContentCDMInstalling"
+     "drmContentCDMInstalling",
      ].forEach(function(value) {
         var notification = box.getNotificationWithValue(value);
         if (notification)
           box.removeNotification(notification);
       });
 
     // Don't bother creating it if it's already there:
     if (PopupNotifications.getNotification("drmContentPlaying", browser)) {
@@ -153,17 +153,17 @@ var gEMEHandler = {
     }
 
     let mainAction = {
       label: gNavigatorBundle.getString(btnLabelId),
       accessKey: gNavigatorBundle.getString(btnAccessKeyId),
       callback() {
         openPreferences("general-drm", {origin: "browserMedia"});
       },
-      dismiss: true
+      dismiss: true,
     };
     let options = {
       dismissed: true,
       eventCallback: aTopic => aTopic == "swapping",
       learnMoreURL: Services.urlFormatter.formatURLPref("app.support.baseURL") + "drm-content",
     };
     PopupNotifications.show(browser, "drmContentPlaying", message, anchorId, mainAction, null, options);
   },
@@ -311,17 +311,17 @@ let gDecoderDoctorHandler = {
             if (!clickedInPref) {
               Services.prefs.setBoolPref(buttonClickedPref, true);
               histogram.add(decoderDoctorReportId, TELEMETRY_DDSTAT_CLICKED_FIRST);
             }
             histogram.add(decoderDoctorReportId, TELEMETRY_DDSTAT_CLICKED);
 
             let baseURL = Services.urlFormatter.formatURLPref("app.support.baseURL");
             openTrustedLinkIn(baseURL + sumo, "tab");
-          }
+          },
         });
       }
       let endpoint = gDecoderDoctorHandler.getEndpointForReportIssueButton(type);
       if (endpoint) {
         buttons.push({
           label: gNavigatorBundle.getString("decoder.decodeError.button"),
           accessKey: gNavigatorBundle.getString("decoder.decodeError.accesskey"),
           callback() {
@@ -341,17 +341,17 @@ let gDecoderDoctorHandler = {
 
             let details = {"Technical Information:": decodeIssue};
             if (resourceURL) {
               details["Resource:"] = resourceURL;
             }
 
             params.append("details", JSON.stringify(details));
             openTrustedLinkIn(endpoint + "?" + params.toString(), "tab");
-          }
+          },
         });
       }
 
       box.appendNotification(
           title,
           notificationId,
           "", // This uses the info icon as specified below.
           box.PRIORITY_INFO_LOW,
--- a/browser/base/content/browser-pageActions.js
+++ b/browser/base/content/browser-pageActions.js
@@ -1242,16 +1242,16 @@ BrowserPageActions.shareURL = {
     item.addEventListener("command", onCommand);
     fragment.appendChild(item);
 
     while (bodyNode.firstChild) {
       bodyNode.firstChild.remove();
     }
     bodyNode.appendChild(fragment);
     this._cached = true;
-  }
+  },
 };
 
 // Attach sharingService here so tests can override the implementation
 XPCOMUtils.defineLazyServiceGetter(BrowserPageActions.shareURL,
                                    "_sharingService",
                                    "@mozilla.org/widget/macsharingservice;1",
                                    "nsIMacSharingService");
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -346,17 +346,17 @@ var StarUI = {
           break;
         }
       }
     }
     if (!anchor) {
       anchor = document.getElementById("PanelUI-menu-button");
     }
     ConfirmationHint.show(anchor, "pageBookmarked");
-  }
+  },
 };
 
 var PlacesCommandHook = {
   /**
    * Adds a bookmark to the page loaded in the current browser.
    */
   async bookmarkPage() {
     let browser = gBrowser.selectedBrowser;
@@ -430,24 +430,24 @@ var PlacesCommandHook = {
     if (bm) {
       let node = await PlacesUIUtils.promiseNodeLikeFromFetchInfo(bm);
       PlacesUIUtils.showBookmarkDialog({ action: "edit", node }, window.top);
       return;
     }
 
     let defaultInsertionPoint = new PlacesInsertionPoint({
       parentId: PlacesUtils.bookmarksMenuFolderId,
-      parentGuid: PlacesUtils.bookmarks.menuGuid
+      parentGuid: PlacesUtils.bookmarks.menuGuid,
     });
     PlacesUIUtils.showBookmarkDialog({ action: "add",
                                        type: "bookmark",
                                        uri: makeURI(url),
                                        title,
                                        defaultInsertionPoint,
-                                       hiddenRows: [ "location", "keyword" ]
+                                       hiddenRows: [ "location", "keyword" ],
                                      }, window.top);
   },
 
   /**
    * List of nsIURI objects characterizing tabs given in param.
    * Duplicates are discarded.
   */
   getUniquePages(tabs) {
@@ -518,30 +518,30 @@ var PlacesCommandHook = {
    * @param     url
    *            The nsIURI of the page the feed was attached to
    * @title     title
    *            The title of the feed. Optional.
    */
   async addLiveBookmark(url, feedTitle) {
     let toolbarIP = new PlacesInsertionPoint({
       parentId: PlacesUtils.toolbarFolderId,
-      parentGuid: PlacesUtils.bookmarks.toolbarGuid
+      parentGuid: PlacesUtils.bookmarks.toolbarGuid,
     });
 
     let feedURI = makeURI(url);
     let title = feedTitle || gBrowser.contentTitle;
 
     PlacesUIUtils.showBookmarkDialog({ action: "add",
                                        type: "livemark",
                                        feedURI,
                                        siteURI: gBrowser.currentURI,
                                        title,
                                        defaultInsertionPoint: toolbarIP,
                                        hiddenRows: [ "feedLocation",
-                                                     "siteLocation" ]
+                                                     "siteLocation" ],
                                      }, window);
   },
 
   /**
    * Opens the Places Organizer.
    * @param {String} item The item to select in the organizer window,
    *                      options are (case sensitive):
    *                      BookmarksMenu, BookmarksToolbar, UnfiledBookmarks,
@@ -562,20 +562,20 @@ var PlacesCommandHook = {
 
   searchBookmarks() {
     focusAndSelectUrlBar();
     for (let char of ["*", " "]) {
       let code = char.charCodeAt(0);
       gURLBar.inputField.dispatchEvent(new KeyboardEvent("keypress", {
         keyCode: code,
         charCode: code,
-        bubbles: true
+        bubbles: true,
       }));
     }
-  }
+  },
 };
 
 ChromeUtils.defineModuleGetter(this, "RecentlyClosedTabsAndWindowsMenuUtils",
   "resource:///modules/sessionstore/RecentlyClosedTabsAndWindowsMenuUtils.jsm");
 
 // View for the history menu.
 function HistoryMenu(aPopupShowingEvent) {
   // Workaround for Bug 610187.  The sidebar does not include all the Places
@@ -714,17 +714,17 @@ HistoryMenu.prototype = {
     if (placesNode) {
       if (!PrivateBrowsingUtils.isWindowPrivate(window))
         PlacesUIUtils.markPageAsTyped(placesNode.uri);
       openUILink(placesNode.uri, aEvent, {
         ignoreAlt: true,
         triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
       });
     }
-  }
+  },
 };
 
 /**
  * Functions for handling events in the Bookmarks Toolbar and menu.
  */
 var BookmarksEventHandler = {
   /**
    * Handler for click event for an item in the bookmarks toolbar or menu.
@@ -852,17 +852,17 @@ var BookmarksEventHandler = {
 
     var tooltipUrl = aDocument.getElementById("bhtUrlText");
     tooltipUrl.hidden = !url;
     if (!tooltipUrl.hidden)
       tooltipUrl.value = url;
 
     // Show tooltip.
     return true;
-  }
+  },
 };
 
 // Handles special drag and drop functionality for Places menus that are not
 // part of a Places view (e.g. the bookmarks menu in the menubar).
 var PlacesMenuDNDHandler = {
   _springLoadDelayMs: 350,
   _closeDelayMs: 500,
   _loadTimer: null,
@@ -959,39 +959,39 @@ var PlacesMenuDNDHandler = {
   /**
    * Called when the user drags over the <menu> element.
    * @param   event
    *          The DragOver event.
    */
   onDragOver: function PMDH_onDragOver(event) {
     let ip = new PlacesInsertionPoint({
       parentId: PlacesUtils.bookmarksMenuFolderId,
-      parentGuid: PlacesUtils.bookmarks.menuGuid
+      parentGuid: PlacesUtils.bookmarks.menuGuid,
     });
     if (ip && PlacesControllerDragHelper.canDrop(ip, event.dataTransfer))
       event.preventDefault();
 
     event.stopPropagation();
   },
 
   /**
    * Called when the user drops on the <menu> element.
    * @param   event
    *          The Drop event.
    */
   onDrop: function PMDH_onDrop(event) {
     // Put the item at the end of bookmark menu.
     let ip = new PlacesInsertionPoint({
       parentId: PlacesUtils.bookmarksMenuFolderId,
-      parentGuid: PlacesUtils.bookmarks.menuGuid
+      parentGuid: PlacesUtils.bookmarks.menuGuid,
     });
     PlacesControllerDragHelper.onDrop(ip, event.dataTransfer);
     PlacesControllerDragHelper.currentDropTarget = null;
     event.stopPropagation();
-  }
+  },
 };
 
 /**
  * This object handles the initialization and uninitialization of the bookmarks
  * toolbar.
  */
 var PlacesToolbarHelper = {
   get _viewElt() {
@@ -1325,19 +1325,19 @@ var BookmarkingUI = {
   attachPlacesView(event, node) {
     // If the view is already there, bail out early.
     if (node.parentNode._placesView)
       return;
 
     new PlacesMenu(event, `place:parent=${PlacesUtils.bookmarks.menuGuid}`, {
       extraClasses: {
         entry: "subviewbutton",
-        footer: "panel-subview-footer"
+        footer: "panel-subview-footer",
       },
-      insertionPoint: ".panel-subview-footer"
+      insertionPoint: ".panel-subview-footer",
     });
   },
 
   // Set by sync after syncing bookmarks successfully once.
   MOBILE_BOOKMARKS_PREF: "browser.bookmarks.showMobileBookmarks",
 
   _shouldShowMobileBookmarks() {
     return Services.prefs.getBoolPref(this.MOBILE_BOOKMARKS_PREF, false);
@@ -1782,18 +1782,18 @@ var BookmarkingUI = {
       return;
 
     // The view gets broken by being removed and reinserted. Uninit
     // here so popupshowing will generate a new one:
     this._uninitView();
   },
 
   QueryInterface: ChromeUtils.generateQI([
-    Ci.nsINavBookmarkObserver
-  ])
+    Ci.nsINavBookmarkObserver,
+  ]),
 };
 
 var AutoShowBookmarksToolbar = {
   init() {
     Services.obs.addObserver(this, "autoshow-bookmarks-toolbar");
   },
 
   uninit() {
@@ -1806,10 +1806,10 @@ var AutoShowBookmarksToolbar = {
       return;
 
     let placement = CustomizableUI.getPlacementOfWidget("personal-bookmarks");
     let area = placement && placement.area;
     if (area != CustomizableUI.AREA_BOOKMARKS)
       return;
 
     setToolbarVisibility(toolbar, true);
-  }
+  },
 };
--- a/browser/base/content/browser-plugins.js
+++ b/browser/base/content/browser-plugins.js
@@ -498,33 +498,33 @@ var gPluginHandler = {
           accessKey: gNavigatorBundle.getString("pluginContinueBlocking.accesskey"),
           callback() {
             Services.telemetry.getHistogramById("PLUGINS_INFOBAR_BLOCK").
               add(true);
 
             Services.perms.addFromPrincipal(principal,
                                             "plugin-hidden-notification",
                                             Services.perms.DENY_ACTION);
-          }
+          },
         },
         {
           label: gNavigatorBundle.getString("pluginActivateTrigger.label"),
           accessKey: gNavigatorBundle.getString("pluginActivateTrigger.accesskey"),
           callback() {
             Services.telemetry.getHistogramById("PLUGINS_INFOBAR_ALLOW").
               add(true);
 
             let curNotification =
               PopupNotifications.getNotification("click-to-play-plugins",
                                                  browser);
             if (curNotification) {
               curNotification.reshow();
             }
-          }
-        }
+          },
+        },
       ];
       function notificationCallback(type) {
         if (type == "dismissed") {
           Services.telemetry.getHistogramById("PLUGINS_INFOBAR_DISMISSED").
             add(true);
           if (Services.prefs.getBoolPref(gPluginHandler.PREF_INFOBAR_DISMISSAL_PERMANENT, false)) {
             Services.perms.addFromPrincipal(principal,
                                             "plugin-hidden-notification",
--- a/browser/base/content/browser-safebrowsing.js
+++ b/browser/base/content/browser-safebrowsing.js
@@ -64,10 +64,10 @@ var gSafeBrowsing = {
         pageUri = pageUri.mutate()
                          .setQuery("")
                          .finalize();
       }
 
       reportInfo = { uri: pageUri.asciiSpec };
     }
     return SafeBrowsing.getReportURL(name, reportInfo);
-  }
+  },
 };
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -1011,17 +1011,17 @@ var gIdentityHandler = {
     let nameLabel = document.createXULElement("label");
     nameLabel.setAttribute("flex", "1");
     nameLabel.setAttribute("class", "identity-popup-permission-label");
     nameLabel.textContent = SitePermissions.getPermissionLabel(aPermission.id);
     let nameLabelId = "identity-popup-permission-label-" + aPermission.id;
     nameLabel.setAttribute("id", nameLabelId);
 
     let isPolicyPermission = [
-      SitePermissions.SCOPE_POLICY, SitePermissions.SCOPE_GLOBAL
+      SitePermissions.SCOPE_POLICY, SitePermissions.SCOPE_GLOBAL,
     ].includes(aPermission.scope);
 
     if (aPermission.id == "popup" && !isPolicyPermission) {
       let menulist = document.createXULElement("menulist");
       let menupopup = document.createXULElement("menupopup");
       let block = document.createXULElement("vbox");
       block.setAttribute("id", "identity-popup-popup-container");
       menulist.setAttribute("sizetopopup", "none");
--- a/browser/base/content/browser-sync.js
+++ b/browser/base/content/browser-sync.js
@@ -21,17 +21,17 @@ var gSync = {
   // The last sync start time. Used to calculate the leftover animation time
   // once syncing completes (bug 1239042).
   _syncStartTime: 0,
   _syncAnimationTimer: 0,
 
   _obs: [
     "weave:engine:sync:finish",
     "quit-application",
-    UIState.ON_UPDATE
+    UIState.ON_UPDATE,
   ],
 
   get fxaStrings() {
     delete this.fxaStrings;
     return this.fxaStrings = Services.strings.createBundle(
       "chrome://browser/locale/accounts.properties"
     );
   },
@@ -719,11 +719,11 @@ var gSync = {
     const toHide = [...document.querySelectorAll(".sync-ui-item")];
     for (const item of toHide) {
       item.hidden = true;
     }
   },
 
   QueryInterface: ChromeUtils.generateQI([
     Ci.nsIObserver,
-    Ci.nsISupportsWeakReference
-  ])
+    Ci.nsISupportsWeakReference,
+  ]),
 };
--- a/browser/base/content/browser-tabsintitlebar.js
+++ b/browser/base/content/browser-tabsintitlebar.js
@@ -297,17 +297,17 @@ var TabsInTitlebar = {
                   function(node) { node.style.width = width + "px"; });
   },
 
   uninit() {
     Services.prefs.removeObserver(this._prefName, this);
     this._menuObserver.disconnect();
     CustomizableUI.removeListener(this);
     gDragSpaceObserver.uninit();
-  }
+  },
 };
 
 function onTitlebarMaxClick() {
   if (window.windowState == window.STATE_MAXIMIZED)
     window.restore();
   else
     window.maximize();
 }
--- a/browser/base/content/browser-thumbnails.js
+++ b/browser/base/content/browser-thumbnails.js
@@ -139,17 +139,17 @@ var gBrowserThumbnails = {
       this._cancelDelayedCapture(aBrowser);
       this._capture(aBrowser);
     };
 
     // setTimeout to set a guarantee lower bound for the requestIdleCallback
     // (and therefore the delayed capture)
     let timeoutId = setTimeout(() => {
       let idleCallbackId = requestIdleCallback(idleCallback, {
-        timeout: this._captureDelayMS * 30
+        timeout: this._captureDelayMS * 30,
       });
       this._timeouts.set(aBrowser, { isTimeout: false, id: idleCallbackId });
     }, this._captureDelayMS);
 
     this._timeouts.set(aBrowser, { isTimeout: true, id: timeoutId });
   },
 
   _shouldCapture: function Thumbnails_shouldCapture(aBrowser, aCallback) {
@@ -174,17 +174,17 @@ var gBrowserThumbnails = {
     let timeoutData = this._timeouts.get(aBrowser);
 
     if (timeoutData.isTimeout) {
       clearTimeout(timeoutData.id);
     } else {
       // idle callback dispatched
       window.cancelIdleCallback(timeoutData.id);
     }
-  }
+  },
 };
 
 async function getTopSiteURLs() {
   // The _topSiteURLs getter can be expensive to run, but its return value can
   // change frequently on new profiles, so as a compromise we cache its return
   // value as a lazy getter for 1 minute every time it's called.
   gBrowserThumbnails._topSiteURLsRefreshTimer =
     Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer);
--- a/browser/base/content/browser-webrender.js
+++ b/browser/base/content/browser-webrender.js
@@ -9,10 +9,10 @@
  * Global browser interface with the WebRender backend.
  */
 var gWebRender = {
   /**
    * Trigger a WebRender capture of the current state into a local folder.
    */
   capture() {
     window.windowUtils.wrCapture();
-  }
+  },
 };
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -159,17 +159,17 @@ XPCOMUtils.defineLazyGetter(this, "gNavi
   // This is a stringbundle-like interface to gBrowserBundle, formerly a getter for
   // the "bundle_browser" element.
   return {
     getString(key) {
       return gBrowserBundle.GetStringFromName(key);
     },
     getFormattedString(key, array) {
       return gBrowserBundle.formatStringFromName(key, array, array.length);
-    }
+    },
   };
 });
 XPCOMUtils.defineLazyGetter(this, "gTabBrowserBundle", function() {
   return Services.strings.createBundle("chrome://browser/locale/tabbrowser.properties");
 });
 
 XPCOMUtils.defineLazyGetter(this, "gCustomizeMode", function() {
   let scope = {};
@@ -325,17 +325,17 @@ Object.defineProperty(this, "AddonManage
 
 var gInitialPages = [
   "about:blank",
   "about:newtab",
   "about:home",
   "about:privatebrowsing",
   "about:welcomeback",
   "about:sessionrestore",
-  "about:welcome"
+  "about:welcome",
 ];
 
 function isInitialPage(url) {
   return gInitialPages.includes(url) || url == BROWSER_NEW_TAB_URL;
 }
 
 function browserWindows() {
   return Services.wm.getEnumerator("navigator:browser");
@@ -474,32 +474,32 @@ const gClickAndHoldListenersOnElement = 
     aButton.removeEventListener("click", this, true);
   },
 
   add(aElm) {
     this._timers.delete(aElm);
 
     aElm.addEventListener("mousedown", this, true);
     aElm.addEventListener("click", this, true);
-  }
+  },
 };
 
 const gSessionHistoryObserver = {
   observe(subject, topic, data) {
     if (topic != "browser:purge-session-history")
       return;
 
     var backCommand = document.getElementById("Browser:Back");
     backCommand.setAttribute("disabled", "true");
     var fwdCommand = document.getElementById("Browser:Forward");
     fwdCommand.setAttribute("disabled", "true");
 
     // Clear undo history of the URL bar
     gURLBar.editor.transactionManager.clear();
-  }
+  },
 };
 
 const gStoragePressureObserver = {
   _lastNotificationTime: -1,
 
   observe(subject, topic, data) {
     if (topic != "QuotaManager::StoragePressure") {
       return;
@@ -535,28 +535,28 @@ const gStoragePressureObserver = {
     let brandShortName = document.getElementById("bundle_brand").getString("brandShortName");
     buttons.push({
       label: prefStrBundle.getString("spaceAlert.learnMoreButton.label"),
       accessKey: prefStrBundle.getString("spaceAlert.learnMoreButton.accesskey"),
       callback(notificationBar, button) {
         let learnMoreURL = Services.urlFormatter.formatURLPref("app.support.baseURL") + "storage-permissions";
         // This is a content URL, loaded from trusted UX.
         gBrowser.selectedTab = gBrowser.addTrustedTab(learnMoreURL);
-      }
+      },
     });
     if (usage < USAGE_THRESHOLD_BYTES) {
       // The firefox-used space < 5GB, then warn user to free some disk space.
       // This is because this usage is small and not the main cause for space issue.
       // In order to avoid the bad and wrong impression among users that
       // firefox eats disk space a lot, indicate users to clean up other disk space.
       msg = prefStrBundle.getFormattedString("spaceAlert.under5GB.message", [brandShortName]);
       buttons.push({
         label: prefStrBundle.getString("spaceAlert.under5GB.okButton.label"),
         accessKey: prefStrBundle.getString("spaceAlert.under5GB.okButton.accesskey"),
-        callback() {}
+        callback() {},
       });
     } else {
       // The firefox-used space >= 5GB, then guide users to about:preferences
       // to clear some data stored on firefox by websites.
       let descriptionStringID = "spaceAlert.over5GB.message1";
       let prefButtonLabelStringID = "spaceAlert.over5GB.prefButton.label";
       let prefButtonAccesskeyStringID = "spaceAlert.over5GB.prefButton.accesskey";
       if (AppConstants.platform == "win") {
@@ -568,23 +568,23 @@ const gStoragePressureObserver = {
       buttons.push({
         label: prefStrBundle.getString(prefButtonLabelStringID),
         accessKey: prefStrBundle.getString(prefButtonAccesskeyStringID),
         callback(notificationBar, button) {
           // The advanced subpanes are only supported in the old organization, which will
           // be removed by bug 1349689.
           let win = gBrowser.ownerGlobal;
           win.openPreferences("privacy-sitedata", { origin: "storagePressure" });
-        }
+        },
       });
     }
 
     notificationBox.appendNotification(
       msg, NOTIFICATION_VALUE, null, notificationBox.PRIORITY_WARNING_HIGH, buttons, null);
-  }
+  },
 };
 
 var gPopupBlockerObserver = {
   handleEvent(aEvent) {
     if (aEvent.originalTarget != gBrowser.selectedBrowser)
       return;
 
     gIdentityHandler.refreshIdentityBlock();
@@ -625,17 +625,17 @@ var gPopupBlockerObserver = {
         let notification = notificationBox.getNotificationWithValue("popup-blocked");
         if (notification) {
           notification.label = message;
         } else {
           var buttons = [{
             label: popupButtonText,
             accessKey: popupButtonAccesskey,
             popup: "blockedPopupOptions",
-            callback: null
+            callback: null,
           }];
 
           const priority = notificationBox.PRIORITY_WARNING_MEDIUM;
           notificationBox.appendNotification(message, "popup-blocked",
                                              "chrome://browser/skin/notification-icons/popup.svg",
                                              priority, buttons);
         }
       }
@@ -812,17 +812,17 @@ var gPopupBlockerObserver = {
       window.openDialog("chrome://browser/content/preferences/permissions.xul",
                         "_blank", "resizable,dialog=no,centerscreen", params);
   },
 
   dontShowMessage() {
     var showMessage = Services.prefs.getBoolPref("privacy.popups.showBrowserMessage");
     Services.prefs.setBoolPref("privacy.popups.showBrowserMessage", !showMessage);
     gBrowser.getNotificationBox().removeCurrentNotification();
-  }
+  },
 };
 
 function gKeywordURIFixup({ target: browser, data: fixupInfo }) {
   let deserializeURI = (spec) => spec ? makeURI(spec) : null;
 
   // We get called irrespective of whether we did a keyword search, or
   // whether the original input would be vaguely interpretable as a URL,
   // so figure that out first.
@@ -911,26 +911,26 @@ function gKeywordURIFixup({ target: brow
         accessKey: gNavigatorBundle.getString("keywordURIFixup.goTo.accesskey"),
         callback() {
           // Do not set this preference while in private browsing.
           if (!PrivateBrowsingUtils.isWindowPrivate(window)) {
             let pref = "browser.fixup.domainwhitelist." + asciiHost;
             Services.prefs.setBoolPref(pref, true);
           }
           openTrustedLinkIn(alternativeURI.spec, "current");
-        }
+        },
       },
       {
         label: gNavigatorBundle.getString("keywordURIFixup.dismiss"),
         accessKey: gNavigatorBundle.getString("keywordURIFixup.dismiss.accesskey"),
         callback() {
           let notification = notificationBox.getNotificationWithValue("keyword-uri-fixup");
           notificationBox.removeNotification(notification, true);
-        }
-      }
+        },
+      },
     ];
     let notification =
       notificationBox.appendNotification(message, "keyword-uri-fixup", null,
                                          notificationBox.PRIORITY_INFO_HIGH,
                                          buttons);
     notification.persistence = 1;
   };
 
@@ -1257,17 +1257,17 @@ var gBrowserInit = {
         remoteType = linkedBrowser.remoteType;
         isRemote = remoteType != E10SUtils.NOT_REMOTE;
         sameProcessAsFrameLoader = linkedBrowser.frameLoader;
       }
       initBrowser.removeAttribute("blank");
     }
 
     gBrowser.updateBrowserRemoteness(initBrowser, isRemote, {
-      remoteType, sameProcessAsFrameLoader
+      remoteType, sameProcessAsFrameLoader,
     });
 
     BrowserSearch.initPlaceHolder();
 
     // Hack to ensure that the about:home favicon is loaded
     // instantaneously, to avoid flickering and improve perceived performance.
     this._callWithURIToLoad(uriToLoad => {
       if (uriToLoad == "about:home" || uriToLoad == "about:newtab" || uriToLoad == "about:welcome") {
@@ -2268,19 +2268,19 @@ function BrowserOpenTab(event) {
   // Note 1: This notification gets notified with a promise that resolves
   //         with the linked browser when the tab gets created
   // Note 2: This is also used to notify a user that an extension has changed
   //         the New Tab page.
   Services.obs.notifyObservers({
     wrappedJSObject: new Promise(resolve => {
       openTrustedLinkIn(BROWSER_NEW_TAB_URL, where, {
         relatedToCurrent,
-        resolveOnNewTabCreated: resolve
+        resolveOnNewTabCreated: resolve,
       });
-    })
+    }),
   }, "browser-open-newtab-start");
 }
 
 var gLastOpenDirectory = {
   _lastDir: null,
   get path() {
     if (!this._lastDir || !this._lastDir.exists()) {
       try {
@@ -2303,17 +2303,17 @@ var gLastOpenDirectory = {
 
     // Don't save the last open directory pref inside the Private Browsing mode
     if (!PrivateBrowsingUtils.isWindowPrivate(window))
       Services.prefs.setComplexValue("browser.open.lastDir", Ci.nsIFile,
                                      this._lastDir);
   },
   reset() {
     this._lastDir = null;
-  }
+  },
 };
 
 function BrowserOpenFileWindow() {
   // Get filepicker component.
   try {
     const nsIFilePicker = Ci.nsIFilePicker;
     let fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
     let fpCallback = function fpCallback_done(aResult) {
@@ -3048,17 +3048,17 @@ var BrowserOnClick = {
             info: errorInfo,
             codeString: securityInfo.errorCodeString,
             certIsUntrusted: sslStatus.isUntrusted,
             certSubjectAltNames: sslStatus.serverCert.subjectAltNames,
             validity: validityInfo,
             url: location,
             isDomainMismatch: sslStatus.isDomainMismatch,
             isNotValidAtThisTime: sslStatus.isNotValidAtThisTime,
-            frameId
+            frameId,
         });
         break;
 
       case "copyToClipboard":
         const gClipboardHelper = Cc["@mozilla.org/widget/clipboardhelper;1"]
                                     .getService(Ci.nsIClipboardHelper);
         securityInfo = getSecurityInfo(securityInfoAsString);
         let detailedInfo = getDetailedCertErrorInfo(location,
@@ -3119,46 +3119,46 @@ var BrowserOnClick = {
 
     Services.perms.add(gBrowser.currentURI, "safe-browsing",
                        Ci.nsIPermissionManager.ALLOW_ACTION,
                        Ci.nsIPermissionManager.EXPIRE_SESSION);
 
     let buttons = [{
       label: gNavigatorBundle.getString("safebrowsing.getMeOutOfHereButton.label"),
       accessKey: gNavigatorBundle.getString("safebrowsing.getMeOutOfHereButton.accessKey"),
-      callback() { getMeOutOfHere(); }
+      callback() { getMeOutOfHere(); },
     }];
 
     let title;
     if (reason === "malware") {
       let reportUrl = gSafeBrowsing.getReportURL("MalwareMistake", blockedInfo);
       title = gNavigatorBundle.getString("safebrowsing.reportedAttackSite");
       // There's no button if we can not get report url, for example if the provider
       // of blockedInfo is not Google
       if (reportUrl) {
         buttons[1] = {
           label: gNavigatorBundle.getString("safebrowsing.notAnAttackButton.label"),
           accessKey: gNavigatorBundle.getString("safebrowsing.notAnAttackButton.accessKey"),
           callback() {
             openTrustedLinkIn(reportUrl, "tab");
-          }
+          },
         };
       }
     } else if (reason === "phishing") {
       let reportUrl = gSafeBrowsing.getReportURL("PhishMistake", blockedInfo);
       title = gNavigatorBundle.getString("safebrowsing.deceptiveSite");
       // There's no button if we can not get report url, for example if the provider
       // of blockedInfo is not Google
       if (reportUrl) {
         buttons[1] = {
           label: gNavigatorBundle.getString("safebrowsing.notADeceptiveSiteButton.label"),
           accessKey: gNavigatorBundle.getString("safebrowsing.notADeceptiveSiteButton.accessKey"),
           callback() {
             openTrustedLinkIn(reportUrl, "tab");
-          }
+          },
         };
       }
     } else if (reason === "unwanted") {
       title = gNavigatorBundle.getString("safebrowsing.reportedUnwantedSite");
       // There is no button for reporting errors since Google doesn't currently
       // provide a URL endpoint for these reports.
     } else if (reason === "harmful") {
       title = gNavigatorBundle.getString("safebrowsing.reportedHarmfulSite");
@@ -3493,17 +3493,17 @@ var browserDragAndDrop = {
   validateURIsForDrop(aEvent, aURIsCount, aURIs) {
     return Services.droppedLinkHandler.validateURIsForDrop(aEvent,
                                                            aURIsCount,
                                                            aURIs);
   },
 
   dropLinks(aEvent, aDisallowInherit) {
     return Services.droppedLinkHandler.dropLinks(aEvent, aDisallowInherit);
-  }
+  },
 };
 
 var homeButtonObserver = {
   onDrop(aEvent) {
       // disallow setting home pages that inherit the principal
       let links = browserDragAndDrop.dropLinks(aEvent, true);
       if (links.length) {
         let urls = [];
@@ -3528,17 +3528,17 @@ var homeButtonObserver = {
   onDragOver(aEvent) {
       if (Services.prefs.prefIsLocked("browser.startup.homepage")) {
         return;
       }
       browserDragAndDrop.dragOver(aEvent);
       aEvent.dropEffect = "link";
     },
   onDragExit(aEvent) {
-    }
+    },
 };
 
 function openHomeDialog(aURL) {
   var promptTitle = gNavigatorBundle.getString("droponhometitle");
   var promptMsg;
   if (aURL.includes("|")) {
     promptMsg = gNavigatorBundle.getString("droponhomemsgMultiple");
   } else {
@@ -3586,17 +3586,17 @@ var newTabButtonObserver = {
           // (this is required by javascript: drop to the new window) Bug 1475201
           allowInheritPrincipal: true,
           postData: data.postData,
           allowThirdPartyFixup: true,
           triggeringPrincipal,
         });
       }
     }
-  }
+  },
 };
 
 var newWindowButtonObserver = {
   onDragOver(aEvent) {
     browserDragAndDrop.dragOver(aEvent);
   },
   onDragExit(aEvent) {},
   async onDrop(aEvent) {
@@ -3621,17 +3621,17 @@ var newWindowButtonObserver = {
           // (this is required by javascript: drop to the new window) Bug 1475201
           allowInheritPrincipal: true,
           postData: data.postData,
           allowThirdPartyFixup: true,
           triggeringPrincipal,
         });
       }
     }
-  }
+  },
 };
 const DOMEventHandler = {
   init() {
     let mm = window.messageManager;
     mm.addMessageListener("Link:AddFeed", this);
     mm.addMessageListener("Link:LoadingIcon", this);
     mm.addMessageListener("Link:SetIcon", this);
     mm.addMessageListener("Link:SetFailedIcon", this);
@@ -3913,17 +3913,17 @@ const BrowserSearch = {
     // see bug 335102.
     if (Services.search.getEngineByName(engine.title))
       hidden = true;
 
     var engines = (hidden ? browser.hiddenEngines : browser.engines) || [];
 
     engines.push({ uri: engine.href,
                    title: engine.title,
-                   get icon() { return browser.mIconURL; }
+                   get icon() { return browser.mIconURL; },
                  });
 
     if (hidden)
       browser.hiddenEngines = engines;
     else {
       browser.engines = engines;
       if (browser == gBrowser.selectedBrowser)
         this.updateOpenSearchBadge();
@@ -4136,17 +4136,17 @@ const BrowserSearch = {
    */
   recordOneoffSearchInTelemetry(engine, source, type, where) {
     try {
       const details = {type, isOneOff: true};
       BrowserUsageTelemetry.recordSearch(engine, source, details);
     } catch (ex) {
       Cu.reportError(ex);
     }
-  }
+  },
 };
 
 XPCOMUtils.defineConstant(this, "BrowserSearch", BrowserSearch);
 
 function FillHistoryMenu(aParent) {
   // Lazily add the hover listeners on first showing and never remove them
   if (!aParent.hasStatusListener) {
     // Show history item's uri in the status bar when hovering, and clear on exit
@@ -4968,17 +4968,17 @@ var XULBrowserWindow = {
     let tab = gBrowser.getTabForBrowser(aBrowser);
     if (tab) {
       SessionStore.navigateAndRestore(tab, {}, aIndex);
       return;
     }
 
     throw new Error("Trying to navigateAndRestore a browser which was " +
                     "not attached to this tabbrowser is unsupported");
-  }
+  },
 };
 
 var LinkTargetDisplay = {
   get DELAY_SHOW() {
      delete this.DELAY_SHOW;
      return this.DELAY_SHOW = Services.prefs.getIntPref("browser.overlink-delay");
   },
 
@@ -5022,17 +5022,17 @@ var LinkTargetDisplay = {
       window.removeEventListener("mousemove", self, true);
     }, this.DELAY_SHOW, this);
   },
 
   _hide() {
     clearTimeout(this._timer);
 
     StatusPanel.update();
-  }
+  },
 };
 
 var CombinedStopReload = {
   // Try to initialize. Returns whether initialization was successful, which
   // may mean we had already initialized.
   ensureInitialized() {
     if (this._initialized)
       return true;
@@ -5230,17 +5230,17 @@ var CombinedStopReload = {
     return true;
   },
 
   _cancelTransition() {
     if (this._timer) {
       clearTimeout(this._timer);
       this._timer = 0;
     }
-  }
+  },
 };
 
 // This helper only cares about loading the frame
 // script if the pref is seen as true.
 // After the frame script is loaded, it takes over
 // the responsibility of watching the pref and
 // enabling/disabling itself.
 const AccessibilityRefreshBlocker = {
@@ -5268,17 +5268,17 @@ const AccessibilityRefreshBlocker = {
   },
 
   loadFrameScript() {
     if (!this._loaded) {
       this._loaded = true;
       let mm = window.getGroupMessageManager("browsers");
       mm.loadFrameScript("chrome://browser/content/content-refreshblocker.js", true, true);
     }
-  }
+  },
 };
 
 var TabsProgressListener = {
   onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
     // Collect telemetry data about tab load times.
     if (aWebProgress.isTopLevel && (!aRequest.originalURI || aRequest.originalURI.spec.scheme != "about")) {
       let stopwatchRunning = TelemetryStopwatch.running("FX_PAGE_LOAD_MS", aBrowser);
 
@@ -5701,19 +5701,19 @@ function setToolbarVisibility(toolbar, i
 
   toolbar.setAttribute(hidingAttribute, !isVisible);
   if (persist) {
     Services.xulStore.persist(toolbar, hidingAttribute);
   }
 
   let eventParams = {
     detail: {
-      visible: isVisible
+      visible: isVisible,
     },
-    bubbles: true
+    bubbles: true,
   };
   let event = new CustomEvent("toolbarvisibilitychange", eventParams);
   toolbar.dispatchEvent(event);
 
   if (toolbar.getAttribute("type") == "menubar" && CustomizationHandler.isCustomizing()) {
     gCustomizeMode._updateDragSpaceCheckbox();
   }
 }
@@ -6392,17 +6392,17 @@ var gPageStyleMenu = {
   },
 
   _getStyleSheetInfo(browser) {
     let data = this._pageStyleSheets.get(browser.permanentKey);
     if (!data) {
       return {
         filteredStyleSheets: [],
         authorStyleDisabled: false,
-        preferredStyleSheetSet: true
+        preferredStyleSheetSet: true,
       };
     }
 
     return data;
   },
 
   fillPopup(menuPopup) {
     let styleSheetInfo = this._getStyleSheetInfo(gBrowser.selectedBrowser);
@@ -6459,17 +6459,17 @@ var gPageStyleMenu = {
   },
 };
 
 var LanguageDetectionListener = {
   init() {
     window.messageManager.addMessageListener("Translation:DocumentState", msg => {
       Translation.documentStateReceived(msg.target, msg.data);
     });
-  }
+  },
 };
 
 // Note that this is also called from non-browser windows on OSX, which do
 // share menu items but not much else. See nonbrowser-mac.js.
 var BrowserOffline = {
   _inited: false,
 
   // BrowserOffline Public Methods
@@ -6528,28 +6528,28 @@ var BrowserOffline = {
 
   _uiElement: null,
   _updateOfflineUI(aOffline) {
     var offlineLocked = Services.prefs.prefIsLocked("network.online");
     if (offlineLocked)
       this._uiElement.setAttribute("disabled", "true");
 
     this._uiElement.setAttribute("checked", aOffline);
-  }
+  },
 };
 
 var OfflineApps = {
   warnUsage(browser, uri) {
     if (!browser)
       return;
 
     let mainAction = {
       label: gNavigatorBundle.getString("offlineApps.manageUsage"),
       accessKey: gNavigatorBundle.getString("offlineApps.manageUsageAccessKey"),
-      callback: this.manage
+      callback: this.manage,
     };
 
     let warnQuotaKB = Services.prefs.getIntPref("offline-apps.quota.warn");
     // This message shows the quota in MB, and so we divide the quota (in kb) by 1024.
     let message = gNavigatorBundle.getFormattedString("offlineApps.usage",
                                                       [ uri.host,
                                                         warnQuotaKB / 1024 ]);
 
@@ -6609,44 +6609,44 @@ var OfflineApps = {
 
   requestPermission(browser, docId, uri) {
     let host = uri.asciiHost;
     let notificationID = "offline-app-requested-" + host;
     let notification = PopupNotifications.getNotification(notificationID, browser);
 
     if (notification) {
       notification.options.controlledItems.push([
-        Cu.getWeakReference(browser), docId, uri
+        Cu.getWeakReference(browser), docId, uri,
       ]);
     } else {
       let mainAction = {
         label: gNavigatorBundle.getString("offlineApps.allowStoring.label"),
         accessKey: gNavigatorBundle.getString("offlineApps.allowStoring.accesskey"),
         callback() {
           for (let [ciBrowser, ciDocId, ciUri] of notification.options.controlledItems) {
             OfflineApps.allowSite(ciBrowser, ciDocId, ciUri);
           }
-        }
+        },
       };
       let secondaryActions = [{
         label: gNavigatorBundle.getString("offlineApps.dontAllow.label"),
         accessKey: gNavigatorBundle.getString("offlineApps.dontAllow.accesskey"),
         callback() {
           for (let [, , ciUri] of notification.options.controlledItems) {
             OfflineApps.disallowSite(ciUri);
           }
-        }
+        },
       }];
       let message = gNavigatorBundle.getFormattedString("offlineApps.available2",
                                                         [host]);
       let anchorID = "indexedDB-notification-icon";
       let options = {
         persistent: true,
         hideClose: true,
-        controlledItems: [[Cu.getWeakReference(browser), docId, uri]]
+        controlledItems: [[Cu.getWeakReference(browser), docId, uri]],
       };
       notification = PopupNotifications.show(browser, notificationID, message,
                                              anchorID, mainAction,
                                              secondaryActions, options);
     }
   },
 
   disallowSite(uri) {
@@ -6736,37 +6736,37 @@ var IndexedDBPromptHelper = {
     var observer = request.responseObserver;
 
     var mainAction = {
       label: gNavigatorBundle.getString("offlineApps.allowStoring.label"),
       accessKey: gNavigatorBundle.getString("offlineApps.allowStoring.accesskey"),
       callback() {
         observer.observe(null, responseTopic,
                          Ci.nsIPermissionManager.ALLOW_ACTION);
-      }
+      },
     };
 
     var secondaryActions = [
       {
         label: gNavigatorBundle.getString("offlineApps.dontAllow.label"),
         accessKey: gNavigatorBundle.getString("offlineApps.dontAllow.accesskey"),
         callback() {
           observer.observe(null, responseTopic,
                            Ci.nsIPermissionManager.DENY_ACTION);
-        }
-      }
+        },
+      },
     ];
 
     PopupNotifications.show(
       browser, topic, message, this._notificationIcon, mainAction, secondaryActions,
       {
         persistent: true,
         hideClose: !Services.prefs.getBoolPref("privacy.permissionPrompts.showCloseButton"),
       });
-  }
+  },
 };
 
 var CanvasPermissionPromptHelper = {
   _permissionsPrompt: "canvas-permissions-prompt",
   _notificationIcon: "canvas-notification-icon",
 
   init() {
     Services.obs.addObserver(this, this._permissionsPrompt);
@@ -6806,45 +6806,45 @@ var CanvasPermissionPromptHelper = {
     }
 
     let mainAction = {
       label: gNavigatorBundle.getString("canvas.allow"),
       accessKey: gNavigatorBundle.getString("canvas.allow.accesskey"),
       callback(state) {
         setCanvasPermission(uri, Ci.nsIPermissionManager.ALLOW_ACTION,
                             state && state.checkboxChecked);
-      }
+      },
     };
 
     let secondaryActions = [{
       label: gNavigatorBundle.getString("canvas.notAllow"),
       accessKey: gNavigatorBundle.getString("canvas.notAllow.accesskey"),
       callback(state) {
         setCanvasPermission(uri, Ci.nsIPermissionManager.DENY_ACTION,
                             state && state.checkboxChecked);
-      }
+      },
     }];
 
     let checkbox = {
       // In PB mode, we don't want the "always remember" checkbox
-      show: !PrivateBrowsingUtils.isWindowPrivate(window)
+      show: !PrivateBrowsingUtils.isWindowPrivate(window),
     };
     if (checkbox.show) {
       checkbox.checked = true;
       checkbox.label = gBrowserBundle.GetStringFromName("canvas.remember");
     }
 
     let options = {
       checkbox,
       name: uri.asciiHost,
       learnMoreURL: Services.urlFormatter.formatURLPref("app.support.baseURL") + "fingerprint-permission",
     };
     PopupNotifications.show(browser, aTopic, message, this._notificationIcon,
                             mainAction, secondaryActions, options);
-  }
+  },
 };
 
 var WebAuthnPromptHelper = {
   _icon: "webauthn-notification-icon",
   _topic: "webauthn-prompt",
 
   // The current notification, if any. The U2F manager is a singleton, we will
   // never allow more than one active request. And thus we'll never have more
@@ -6889,18 +6889,18 @@ var WebAuthnPromptHelper = {
 
     let learnMoreURL =
       Services.urlFormatter.formatURLPref("app.support.baseURL") +
       "webauthn-direct-attestation";
 
     let options = {
       learnMoreURL,
       checkbox: {
-        label: gNavigatorBundle.getString("webauthn.anonymize")
-      }
+        label: gNavigatorBundle.getString("webauthn.anonymize"),
+      },
     };
 
     this.show(tid, "register-direct", "webauthn.registerDirectPrompt2",
               origin, mainAction, secondaryActions, options);
   },
 
   sign(mgr, {origin, tid}) {
     let mainAction = this.buildCancelAction(mgr, tid);
@@ -6949,27 +6949,27 @@ var WebAuthnPromptHelper = {
   },
 
   buildProceedAction(mgr, tid) {
     return {
       label: gNavigatorBundle.getString("webauthn.proceed"),
       accessKey: gNavigatorBundle.getString("webauthn.proceed.accesskey"),
       callback(state) {
         mgr.resumeRegister(tid, state.checkboxChecked);
-      }
+      },
     };
   },
 
   buildCancelAction(mgr, tid) {
     return {
       label: gNavigatorBundle.getString("webauthn.cancel"),
       accessKey: gNavigatorBundle.getString("webauthn.cancel.accesskey"),
       callback() {
         mgr.cancel(tid);
-      }
+      },
     };
   },
 };
 
 function CanCloseWindow() {
   // Avoid redundant calls to canClose from showing multiple
   // PermitUnload dialogs.
   if (Services.startup.shuttingDown || window.skipNextCanClose) {
@@ -7112,17 +7112,17 @@ var MailIntegration = {
   // system.
   // aURL --> a nsIURI which represents the url to launch
   _launchExternalUrl(aURL) {
     var extProtocolSvc =
        Cc["@mozilla.org/uriloader/external-protocol-service;1"]
          .getService(Ci.nsIExternalProtocolService);
     if (extProtocolSvc)
       extProtocolSvc.loadURI(aURL);
-  }
+  },
 };
 
 function BrowserOpenAddonsMgr(aView) {
   return new Promise(resolve => {
     let emWindow;
     let browserWindow;
 
     var receivePong = function(aSubject, aTopic, aData) {
@@ -7206,17 +7206,17 @@ function AddKeywordForSearchField() {
                                                     [bookmarkData.title]);
     PlacesUIUtils.showBookmarkDialog({ action: "add",
                                        type: "bookmark",
                                        uri: makeURI(bookmarkData.spec),
                                        title,
                                        keyword: "",
                                        postData: bookmarkData.postData,
                                        charSet: bookmarkData.charset,
-                                       hiddenRows: [ "location", "tags" ]
+                                       hiddenRows: [ "location", "tags" ],
                                      }, window);
   };
   mm.addMessageListener("ContextMenu:SearchFieldBookmarkData:Result", onMessage);
 
   mm.sendAsyncMessage("ContextMenu:SearchFieldBookmarkData", {}, { target: gContextMenu.target });
 }
 
 /**
@@ -7460,17 +7460,17 @@ const gAccessibilityServiceIndicator = {
       Services.telemetry.scalarSet("a11y.indicator_acted_on", true);
     }
   },
 
   uninit() {
     Services.prefs.removeObserver("accessibility.indicator.enabled", this);
     Services.obs.removeObserver(this, "a11y-init-or-shutdown");
     this.update();
-  }
+  },
 };
 
 // Note that this is also called from non-browser windows on OSX, which do
 // share menu items but not much else. See nonbrowser-mac.js.
 var gPrivateBrowsingUI = {
   init: function PBUI_init() {
     // Do nothing for normal windows
     if (!PrivateBrowsingUtils.isWindowPrivate(window)) {
@@ -7517,17 +7517,17 @@ var gPrivateBrowsingUI = {
       // Disable switch to tab autocompletion for private windows.
       // We leave it enabled for permanent private browsing mode though.
       urlBarSearchParam += " disable-private-actions";
     }
     if (!urlBarSearchParam.includes("private-window")) {
       urlBarSearchParam += " private-window";
     }
     gURLBar.setAttribute("autocompletesearchparam", urlBarSearchParam);
-  }
+  },
 };
 
 /**
  * Switch to a tab that has a given URI, and focuses its browser window.
  * If a matching tab is in this window, it will be switched to. Otherwise, other
  * windows will be searched.
  *
  * @param aURI
@@ -7686,17 +7686,17 @@ var RestoreLastSessionObserver = {
   observe() {
     // The last session can only be restored once so there's
     // no way we need to re-enable our menu item.
     Services.obs.removeObserver(this, "sessionstore-last-session-cleared");
     goSetCommandEnabled("Browser:RestoreLastSession", false);
   },
 
   QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-                                          Ci.nsISupportsWeakReference])
+                                          Ci.nsISupportsWeakReference]),
 };
 
 /* Observes menus and adjusts their size for better
  * usability when opened via a touch screen. */
 var MenuTouchModeObserver = {
   init() {
     window.addEventListener("popupshowing", this, true);
   },
@@ -7903,17 +7903,17 @@ var MousePosTracker = {
     });
   },
 };
 
 var ToolbarIconColor = {
   _windowState: {
     "active": false,
     "fullscreen": false,
-    "tabsintitlebar": false
+    "tabsintitlebar": false,
   },
   init() {
     this._initialized = true;
 
     window.addEventListener("activate", this);
     window.addEventListener("deactivate", this);
     window.addEventListener("toolbarvisibilitychange", this);
     Services.obs.addObserver(this, "lightweight-theme-styling-update");
@@ -8016,17 +8016,17 @@ var ToolbarIconColor = {
     }
 
     for (let [toolbar, luminance] of luminances) {
       if (luminance <= 110)
         toolbar.removeAttribute("brighttext");
       else
         toolbar.setAttribute("brighttext", "true");
     }
-  }
+  },
 };
 
 var PanicButtonNotifier = {
   init() {
     this._initialized = true;
     if (window.PanicButtonNotifierShouldNotify) {
       delete window.PanicButtonNotifierShouldNotify;
       this.notify();
@@ -8117,17 +8117,17 @@ const SafeBrowsingNotificationBox = {
       let notificationBox = gBrowser.getNotificationBox();
       let notification = notificationBox.getNotificationWithValue("blocked-badware-page");
       if (notification) {
         notificationBox.removeNotification(notification, false);
       }
 
       this._currentURIBaseDomain = null;
     }
-  }
+  },
 };
 
 function TabModalPromptBox(browser) {
   this._weakBrowserRef = Cu.getWeakReference(browser);
 }
 
 TabModalPromptBox.prototype = {
   _promptCloseCallback(onCloseCallback, principalToAllowFocusFor, allowFocusCheckbox, ...args) {
--- a/browser/base/content/contentTheme.js
+++ b/browser/base/content/contentTheme.js
@@ -7,17 +7,17 @@
 {
 
 function _isTextColorDark(r, g, b) {
   return (0.2125 * r + 0.7154 * g + 0.0721 * b) <= 110;
 }
 
 const inContentVariableMap = [
   ["--newtab-background-color", {
-    lwtProperty: "ntp_background"
+    lwtProperty: "ntp_background",
   }],
   ["--newtab-text-primary-color", {
     lwtProperty: "ntp_text",
     processColor(rgbaChannels, element) {
       if (!rgbaChannels) {
         element.removeAttribute("lwt-newtab");
         element.removeAttribute("lwt-newtab-brighttext");
         return null;
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -1133,43 +1133,43 @@ nsContextMenu.prototype = {
           this.extListener.onStopRequest(aRequest, aContext, aStatusCode);
       },
 
       onDataAvailable: function saveLinkAs_onDataAvailable(aRequest, aContext,
                                                            aInputStream,
                                                            aOffset, aCount) {
         this.extListener.onDataAvailable(aRequest, aContext, aInputStream,
                                          aOffset, aCount);
-      }
+      },
     };
 
     function callbacks() {}
     callbacks.prototype = {
       getInterface: function sLA_callbacks_getInterface(aIID) {
         if (aIID.equals(Ci.nsIAuthPrompt) || aIID.equals(Ci.nsIAuthPrompt2)) {
           // If the channel demands authentication prompt, we must cancel it
           // because the save-as-timer would expire and cancel the channel
           // before we get credentials from user.  Both authentication dialog
           // and save as dialog would appear on the screen as we fall back to
           // the old fashioned way after the timeout.
           timer.cancel();
           channel.cancel(NS_ERROR_SAVE_LINK_AS_TIMEOUT);
         }
         throw Cr.NS_ERROR_NO_INTERFACE;
-      }
+      },
     };
 
     // if it we don't have the headers after a short time, the user
     // won't have received any feedback from their click.  that's bad.  so
     // we give up waiting for the filename.
     function timerCallback() {}
     timerCallback.prototype = {
       notify: function sLA_timer_notify(aTimer) {
         channel.cancel(NS_ERROR_SAVE_LINK_AS_TIMEOUT);
-      }
+      },
     };
 
     // setting up a new channel for 'right click - save link as ...'
     var channel = NetUtil.newChannel({
                     uri: makeURI(linkURL),
                     loadingPrincipal: this.principal,
                     contentPolicyType: Ci.nsIContentPolicy.TYPE_SAVEAS_DOWNLOAD,
                     securityFlags: Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_DATA_INHERITS,
--- a/browser/base/content/pageinfo/pageInfo.js
+++ b/browser/base/content/pageinfo/pageInfo.js
@@ -130,17 +130,17 @@ pageInfoTreeView.prototype = {
   getCellValue(row, column) { },
   toggleOpenState(index) { },
   cycleHeader(col) { },
   selectionChanged() { },
   cycleCell(row, column) { },
   isEditable(row, column) { return false; },
   isSelectable(row, column) { return false; },
   performAction(action) { },
-  performActionOnCell(action, row, column) { }
+  performActionOnCell(action, row, column) { },
 };
 
 // mmm, yummy. global variables.
 var gDocInfo = null;
 var gImageElement = null;
 
 // column number to help using the data array
 const COL_IMAGE_ADDRESS = 0;
@@ -432,17 +432,17 @@ function onUnloadPageInfo() {
 }
 
 function doHelpButton() {
   const helpTopics = {
     "generalPanel":  "pageinfo_general",
     "mediaPanel":    "pageinfo_media",
     "feedPanel":     "pageinfo_feed",
     "permPanel":     "pageinfo_permissions",
-    "securityPanel": "pageinfo_security"
+    "securityPanel": "pageinfo_security",
   };
 
   var deck  = document.getElementById("mainDeck");
   var helpdoc = helpTopics[deck.selectedPanel.id] || "pageinfo_general";
   openHelpLink(helpdoc);
 }
 
 function showTab(id) {
@@ -471,17 +471,17 @@ function loadTab(args) {
 
 function openCacheEntry(key, cb) {
   var checkCacheListener = {
     onCacheEntryCheck(entry, appCache) {
       return Ci.nsICacheEntryOpenCallback.ENTRY_WANTED;
     },
     onCacheEntryAvailable(entry, isNew, appCache, status) {
       cb(entry);
-    }
+    },
   };
   diskStorage.asyncOpenURI(Services.io.newURI(key), "", nsICacheStorage.OPEN_READONLY, checkCacheListener);
 }
 
 function makeGeneralTab(metaViewRows, docInfo) {
   var title = (docInfo.title) ? docInfo.title : gBundle.getString("noPageTitle");
   document.getElementById("titletext").value = title;
 
@@ -960,17 +960,17 @@ var imagePermissionObserver = {
         var imageTree = document.getElementById("imagetree");
         var row = getSelectedRow(imageTree);
         var url = gImageView.data[row][COL_IMAGE_ADDRESS];
         if (permission.matchesURI(Services.io.newURI(url), true)) {
           makeBlockImage(url);
         }
       }
     }
-  }
+  },
 };
 
 function getContentTypeFromHeaders(cacheEntryDescriptor) {
   if (!cacheEntryDescriptor)
     return null;
 
   let headers = cacheEntryDescriptor.getMetaDataElement("response-head");
   let type = /^Content-Type:\s*(.*?)\s*(?:\;|$)/mi.exec(headers);
@@ -991,17 +991,17 @@ function formatNumber(number) {
 }
 
 function formatDate(datestr, unknown) {
   var date = new Date(datestr);
   if (!date.valueOf())
     return unknown;
 
   const dateTimeFormatter = new Services.intl.DateTimeFormat(undefined, {
-    dateStyle: "long", timeStyle: "long"
+    dateStyle: "long", timeStyle: "long",
   });
   return dateTimeFormatter.format(date);
 }
 
 function doCopy() {
   if (!gClipboardHelper)
     return;
 
--- a/browser/base/content/pageinfo/permissions.js
+++ b/browser/base/content/pageinfo/permissions.js
@@ -21,17 +21,17 @@ var gPermissions = SitePermissions.listP
 var permissionObserver = {
   observe(aSubject, aTopic, aData) {
     if (aTopic == "perm-changed") {
       var permission = aSubject.QueryInterface(Ci.nsIPermission);
       if (permission.matchesURI(gPermURI, true) && gPermissions.includes(permission.type)) {
           initRow(permission.type);
       }
     }
-  }
+  },
 };
 
 function onLoadPermission(uri, principal) {
   var permTab = document.getElementById("permTab");
   if (SitePermissions.isSupportedURI(uri)) {
     gPermURI = uri;
     gPermPrincipal = principal;
     var hostText = document.getElementById("hostText");
--- a/browser/base/content/pageinfo/security.js
+++ b/browser/base/content/pageinfo/security.js
@@ -60,17 +60,17 @@ var security = {
         cAName: issuerName,
         encryptionAlgorithm: undefined,
         encryptionStrength: undefined,
         version: undefined,
         isBroken,
         isMixed,
         isEV,
         cert,
-        certificateTransparency: undefined
+        certificateTransparency: undefined,
       };
 
       var version;
       try {
         retval.encryptionAlgorithm = status.cipherName;
         retval.encryptionStrength = status.secretKeyLength;
         version = status.protocolVersion;
       } catch (e) {
@@ -116,17 +116,17 @@ var security = {
       cAName: "",
       encryptionAlgorithm: "",
       encryptionStrength: 0,
       version: "",
       isBroken,
       isMixed,
       isEV,
       cert: null,
-      certificateTransparency: null
+      certificateTransparency: null,
     };
   },
 
   // Find the secureBrowserUI object (if present)
   _getSecurityUI() {
     if (window.opener.gBrowser)
       return window.opener.gBrowser.securityUI;
     return null;
@@ -181,17 +181,17 @@ var security = {
 
   /**
    * Open the login manager window
    */
   viewPasswords() {
     LoginHelper.openPasswordManager(window, this._getSecurityInfo().hostName);
   },
 
-  _cert: null
+  _cert: null,
 };
 
 function securityOnLoad(uri, windowInfo) {
   security.init(uri, windowInfo);
 
   var info = security._getSecurityInfo();
   if (!info || uri.scheme === "about") {
     document.getElementById("securityTab").hidden = true;
--- a/browser/base/content/tab-content.js
+++ b/browser/base/content/tab-content.js
@@ -47,17 +47,17 @@ var WebBrowserChrome = {
   shouldLoadURIInThisProcess(aURI) {
     return E10SUtils.shouldLoadURIInThisProcess(aURI);
   },
 
   // Try to reload the currently active or currently loading page in a new process.
   reloadInFreshProcess(aDocShell, aURI, aReferrer, aTriggeringPrincipal, aLoadFlags) {
     E10SUtils.redirectLoad(aDocShell, aURI, aReferrer, aTriggeringPrincipal, true, aLoadFlags);
     return true;
-  }
+  },
 };
 
 if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) {
   let tabchild = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
                          .getInterface(Ci.nsITabChild);
   tabchild.webBrowserChrome = WebBrowserChrome;
 }
 
--- a/browser/base/content/tabbrowser.js
+++ b/browser/base/content/tabbrowser.js
@@ -133,17 +133,17 @@ window._gBrowser = {
     "preferences", "imageDocument", "isRemoteBrowser", "messageManager",
     "getTabBrowser", "finder", "fastFind", "sessionHistory", "contentTitle",
     "characterSet", "fullZoom", "textZoom", "webProgress",
     "addProgressListener", "removeProgressListener", "audioPlaybackStarted",
     "audioPlaybackStopped", "pauseMedia", "stopMedia",
     "resumeMedia", "mute", "unmute", "blockedPopups", "lastURI",
     "purgeSessionHistory", "stopScroll", "startScroll",
     "userTypedValue", "userTypedClear",
-    "didStartLoadSinceLastUserTyping", "audioMuted"
+    "didStartLoadSinceLastUserTyping", "audioMuted",
   ],
 
   _removingTabs: [],
 
   _multiSelectedTabsSet: new WeakSet(),
 
   _lastMultiSelectedTabRef: null,
 
@@ -182,17 +182,17 @@ window._gBrowser = {
       }
       if (typeof name == "string" && Number.isInteger(parseInt(name))) {
         if (!(name in gBrowser.tabs)) {
           return undefined;
         }
         return gBrowser.tabs[name].linkedBrowser;
       }
       return target[name];
-    }
+    },
   }),
 
   /**
    * List of browsers whose docshells must be active in order for print preview
    * to work.
    */
   _printPreviewBrowsers: new Set(),
 
@@ -996,18 +996,18 @@ window._gBrowser = {
     // that might rely upon the other changes suppressed.
     // Focus is suppressed in the event that the main browser window is minimized - focusing a tab would restore the window
     if (!this._previewMode) {
       // We've selected the new tab, so go ahead and notify listeners.
       let event = new CustomEvent("TabSelect", {
         bubbles: true,
         cancelable: false,
         detail: {
-          previousTab: oldTab
-        }
+          previousTab: oldTab,
+        },
       });
       newTab.dispatchEvent(event);
 
       this._tabAttrModified(oldTab, ["selected"]);
       this._tabAttrModified(newTab, ["selected"]);
 
       if (oldBrowser != newBrowser &&
           oldBrowser.getInPermitUnload) {
@@ -1052,17 +1052,17 @@ window._gBrowser = {
 
     if (!gMultiProcessBrowser) {
       this.tabContainer._setPositionalAttributes();
 
       document.commandDispatcher.unlock();
 
       let event = new CustomEvent("TabSwitchDone", {
         bubbles: true,
-        cancelable: true
+        cancelable: true,
       });
       this.dispatchEvent(event);
     }
 
     if (!aForceUpdate)
       TelemetryStopwatch.finish("FX_TAB_SWITCH_UPDATE_MS");
   },
 
@@ -1173,17 +1173,17 @@ window._gBrowser = {
     if (aTab.closing)
       return;
 
     let event = new CustomEvent("TabAttrModified", {
       bubbles: true,
       cancelable: false,
       detail: {
         changed: aChanged,
-      }
+      },
     });
     aTab.dispatchEvent(event);
   },
 
   setBrowserSharing(aBrowser, aState) {
     let tab = this.getTabForBrowser(aBrowser);
     if (!tab)
       return;
@@ -1405,17 +1405,17 @@ window._gBrowser = {
       noReferrer: aNoReferrer,
       userContextId: aUserContextId,
       originPrincipal: aOriginPrincipal,
       sameProcessAsFrameLoader: aSameProcessAsFrameLoader,
       opener: aOpener,
       openerBrowser: aOpenerBrowser,
       nextTabParentId: aNextTabParentId,
       focusUrlBar: aFocusUrlBar,
-      name: aName
+      name: aName,
     });
     if (!bgLoad)
       this.selectedTab = tab;
 
     return tab;
   },
 
   loadTabs(aURIs, {
@@ -2000,17 +2000,17 @@ window._gBrowser = {
             this._insertBrowser(aTab);
             return browser[name] = value;
           };
       }
       Object.defineProperty(browser, name, {
         get: getter,
         set: setter,
         configurable: true,
-        enumerable: true
+        enumerable: true,
       });
     }
   },
 
   _insertBrowser(aTab, aInsertedOnTabCreation) {
     "use strict";
 
     // If browser is already inserted or window is closed don't do anything.
@@ -2121,17 +2121,17 @@ window._gBrowser = {
     webrtcUI.forgetStreamsFromBrowser(aBrowser);
 
     // Set browser parameters for when browser is restored.  Also remove
     // listeners and set up lazy restore data in SessionStore. This must
     // be done before aBrowser is destroyed and removed from the document.
     tab._browserParams = {
       uriIsAboutBlank: aBrowser.currentURI.spec == "about:blank",
       remoteType: aBrowser.remoteType,
-      usingPreloadedContent: false
+      usingPreloadedContent: false,
     };
 
     SessionStore.resetBrowserToLazyState(tab);
 
     this._outerWindowIDBrowserMap.delete(aBrowser.outerWindowID);
 
     // Remove the tab's filter and progress listener.
     let filter = this._tabFilters.get(tab);
@@ -4286,17 +4286,17 @@ window._gBrowser = {
 
           let buttons = [{
             label: refreshButtonText,
             accessKey: refreshButtonAccesskey,
             callback() {
               if (browser.messageManager) {
                 browser.messageManager.sendAsyncMessage("RefreshBlocker:Refresh", data);
               }
-            }
+            },
           }];
 
           notificationBox.appendNotification(message, "refresh-blocked",
             "chrome://browser/skin/notification-icons/popup.svg",
             notificationBox.PRIORITY_INFO_MEDIUM,
             buttons);
         }
         break;
@@ -5165,32 +5165,32 @@ var StatusPanel = {
     let alignRight = (getComputedStyle(container).direction == "rtl");
     let panelRect = this.panel.getBoundingClientRect();
     let containerRect = container.getBoundingClientRect();
 
     this._mouseTargetRect = {
       top:    panelRect.top,
       bottom: panelRect.bottom,
       left:   alignRight ? containerRect.right - panelRect.width : containerRect.left,
-      right:  alignRight ? containerRect.right : containerRect.left + panelRect.width
+      right:  alignRight ? containerRect.right : containerRect.left + panelRect.width,
     };
   },
 
   _mirror() {
     if (this.panel.hasAttribute("mirror")) {
       this.panel.removeAttribute("mirror");
     } else {
       this.panel.setAttribute("mirror", "true");
     }
 
     if (!this.panel.hasAttribute("sizelimit")) {
       this.panel.setAttribute("sizelimit", "true");
       this._mouseTargetRect = null;
     }
-  }
+  },
 };
 
 var TabBarVisibility = {
   _initialUpdateDone: false,
 
   update() {
     let toolbar = document.getElementById("TabsToolbar");
     let collapse = false;
@@ -5206,17 +5206,17 @@ var TabBarVisibility = {
 
     toolbar.collapsed = collapse;
 
     document.getElementById("menu_closeWindow").hidden = collapse;
     document.getElementById("menu_close").setAttribute("label",
       gTabBrowserBundle.GetStringFromName(collapse ? "tabs.close" : "tabs.closeTab"));
 
     TabsInTitlebar.allowedBy("tabs-visible", !collapse);
-  }
+  },
 };
 
 var TabContextMenu = {
   contextTab: null,
   _updateToggleMuteMenuItems(aTab, aConditionFn) {
     ["muted", "soundplaying"].forEach(attr => {
       if (!aConditionFn || aConditionFn(attr)) {
         if (aTab.hasAttribute(attr)) {
@@ -5384,11 +5384,11 @@ var TabContextMenu = {
     if (gBrowser.selectedTab == this.contextTab) {
       gBrowser.selectedTab = newTab;
     }
     if (this.contextTab.muted) {
       if (!newTab.muted) {
         newTab.toggleMuteAudio(this.contextTab.muteReason);
       }
     }
-  }
+  },
 };
 
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -232,17 +232,17 @@
                   } else {
                     popup.setAttribute("anonid", "newtab-popup");
                   }
                   popup.className = "new-tab-popup";
                   popup.setAttribute("position", "after_end");
                   popup.addEventListener("popupshowing", event => {
                     createUserContextMenu(event, {
                       useAccessKeys: false,
-                      showDefaultTab: Services.prefs.getIntPref("privacy.userContext.longPressBehavior") == 1
+                      showDefaultTab: Services.prefs.getIntPref("privacy.userContext.longPressBehavior") == 1,
                     });
                   });
                   parent.appendChild(popup);
 
                   // longPressBehavior == 2 means that the menu is shown after X
                   // millisecs. Otherwise, with 1, the menu is open immediatelly.
                   if (longPressBehavior == 2) {
                     gClickAndHoldListenersOnElement.add(parent);
@@ -540,17 +540,17 @@
             let layoutData = this._pinnedTabsLayoutCache;
             let uiDensity = document.documentElement.getAttribute("uidensity");
             if (!layoutData ||
                 layoutData.uiDensity != uiDensity) {
               let arrowScrollbox = this.arrowScrollbox;
               layoutData = this._pinnedTabsLayoutCache = {
                 uiDensity,
                 pinnedTabWidth: this.children[0].getBoundingClientRect().width,
-                scrollButtonWidth: arrowScrollbox._scrollButtonDown.getBoundingClientRect().width
+                scrollButtonWidth: arrowScrollbox._scrollButtonDown.getBoundingClientRect().width,
               };
             }
 
             let width = 0;
             for (let i = numPinned - 1; i >= 0; i--) {
               let tab = this.children[i];
               width += layoutData.pinnedTabWidth;
               tab.style.setProperty("margin-inline-start",
@@ -1308,17 +1308,17 @@
         }
         let tabOffsetX = clientX(tab) - clientX(this);
         tab._dragData = {
           offsetX: event.screenX - window.screenX - tabOffsetX,
           offsetY: event.screenY - window.screenY,
           scrollX: this.arrowScrollbox._scrollbox.scrollLeft,
           screenX: event.screenX,
           movingTabs: (tab.multiselected ? gBrowser.selectedTabs : [tab])
-                      .filter(t => t.pinned == tab.pinned)
+                      .filter(t => t.pinned == tab.pinned),
         };
 
         event.stopPropagation();
       ]]></handler>
 
       <handler event="dragover"><![CDATA[
         var effects = this._getDropEffectForTabDrag(event);
 
--- a/browser/base/content/test/about/browser_aboutCertError.js
+++ b/browser/base/content/test/about/browser_aboutCertError.js
@@ -232,23 +232,23 @@ add_task(async function checkWrongSystem
       let actualDateDiv = doc.getElementById("wrongSystemTime_actualDate");
       let learnMoreLink = doc.getElementById("learnMoreLink");
 
       return {
         divDisplay: content.getComputedStyle(div).display,
         text: div.textContent,
         systemDate: systemDateDiv.textContent,
         actualDate: actualDateDiv.textContent,
-        learnMoreLink: learnMoreLink.href
+        learnMoreLink: learnMoreLink.href,
       };
     });
   }
 
   let formatter = new Services.intl.DateTimeFormat(undefined, {
-    dateStyle: "short"
+    dateStyle: "short",
   });
 
   // pretend we have a positively skewed (ahead) system time
   let serverDate = new Date("2015/10/27");
   let serverDateFmt = formatter.format(serverDate);
   let localDateFmt = formatter.format(new Date());
 
   let skew = Math.floor((Date.now() - serverDate.getTime()) / 1000);
@@ -349,17 +349,17 @@ add_task(async function checkAdvancedDet
                        .getService(Ci.nsISerializationHelper);
       let serializable =  win.docShell.failedChannel.securityInfo
                                       .QueryInterface(Ci.nsITransportSecurityInfo)
                                       .QueryInterface(Ci.nsISerializable);
       let serializedSecurityInfo = serhelper.serializeToString(serializable);
       return {
         divDisplay: content.getComputedStyle(div).display,
         text: text.textContent,
-        securityInfoAsString: serializedSecurityInfo
+        securityInfoAsString: serializedSecurityInfo,
       };
     });
     isnot(message.divDisplay, "none", "Debug information is visible");
     ok(message.text.includes(BAD_CERT), "Correct URL found");
     ok(message.text.includes("Certificate has expired"),
        "Correct error message found");
     ok(message.text.includes("HTTP Strict Transport Security: false"),
        "Correct HSTS value found");
@@ -419,17 +419,17 @@ add_task(async function checkAdvancedDet
       let advancedButton = doc.getElementById("advancedButton");
       advancedButton.click();
       let ec = doc.getElementById("errorCode");
       let cdl = doc.getElementById("cert_domain_link");
       return {
         ecTextContent: ec.textContent,
         ecTagName: ec.tagName,
         cdlTextContent: cdl.textContent,
-        cdlTagName: cdl.tagName
+        cdlTagName: cdl.tagName,
       };
     });
 
     const badStsUri = Services.io.newURI(BAD_STS_CERT);
     is(message.ecTextContent, "SSL_ERROR_BAD_CERT_DOMAIN",
        "Correct error message found");
     is(message.ecTagName, "a", "Error message is a link");
     const url = badStsUri.prePath.slice(badStsUri.prePath.indexOf(".") + 1);
@@ -450,17 +450,17 @@ add_task(async function checkAdvancedDet
                        .getService(Ci.nsISerializationHelper);
       let serializable =  win.docShell.failedChannel.securityInfo
                                       .QueryInterface(Ci.nsITransportSecurityInfo)
                                       .QueryInterface(Ci.nsISerializable);
       let serializedSecurityInfo = serhelper.serializeToString(serializable);
       return {
         divDisplay: content.getComputedStyle(div).display,
         text: text.textContent,
-        securityInfoAsString: serializedSecurityInfo
+        securityInfoAsString: serializedSecurityInfo,
       };
     });
     isnot(message.divDisplay, "none", "Debug information is visible");
     ok(message.text.includes(badStsUri.spec), "Correct URL found");
     ok(message.text.includes("requested domain name does not match the server\u2019s certificate"),
        "Correct error message found");
     ok(message.text.includes("HTTP Strict Transport Security: false"),
        "Correct HSTS value found");
--- a/browser/base/content/test/about/browser_aboutHome_search_composing.js
+++ b/browser/base/content/test/about/browser_aboutHome_search_composing.js
@@ -53,31 +53,31 @@ add_task(async function() {
       searchController.selectedIndex = 1;
     });
 
     // FYI: "compositionstart" will be dispatched automatically.
     await BrowserTestUtils.synthesizeCompositionChange({
       composition: {
         string: "x",
         clauses: [
-          { length: 1, attr: Ci.nsITextInputProcessor.ATTR_RAW_CLAUSE }
-        ]
+          { length: 1, attr: Ci.nsITextInputProcessor.ATTR_RAW_CLAUSE },
+        ],
       },
-      caret: { start: 1, length: 0 }
+      caret: { start: 1, length: 0 },
     }, browser);
 
     info("Waiting for search suggestion table unhidden");
     await mutationPromise;
 
     // Click the second suggestion.
     let expectedURL = Services.search.currentEngine
       .getSubmission("xbar", null, "homepage").uri.spec;
     let loadPromise = waitForDocLoadAndStopIt(expectedURL);
     await BrowserTestUtils.synthesizeMouseAtCenter("#TEMPID", {
-      button: 0
+      button: 0,
     }, browser);
     await loadPromise;
 
     Services.search.currentEngine = currEngine;
     try {
       Services.search.removeEngine(engine);
     } catch (ex) { }
   });
--- a/browser/base/content/test/about/head.js
+++ b/browser/base/content/test/about/head.js
@@ -108,17 +108,17 @@ function waitForDocLoadAndStopIt(aExpect
           wp.removeProgressListener(progressListener);
 
           let chan = req.QueryInterface(Ci.nsIChannel);
           dump(`waitForDocLoadAndStopIt: Document start: ${chan.URI.spec}\n`);
 
           stopContent(contentStopFromProgressListener, chan.originalURI.spec);
         }
       },
-      QueryInterface: ChromeUtils.generateQI(["nsISupportsWeakReference"])
+      QueryInterface: ChromeUtils.generateQI(["nsISupportsWeakReference"]),
     };
     wp.addProgressListener(progressListener, wp.NOTIFY_STATE_WINDOW);
 
     /**
      * As |this| is undefined and we can't extend |docShell|, adding an unload
      * event handler is the easiest way to ensure the weakly referenced
      * progress listener is kept alive as long as necessary.
      */
--- a/browser/base/content/test/alerts/browser_notification_close.js
+++ b/browser/base/content/test/alerts/browser_notification_close.js
@@ -20,17 +20,17 @@ add_task(async function test_notificatio
     PlacesUtils.favicons.setAndFetchFaviconForPage(notificationURI, uri,
       true, PlacesUtils.favicons.FAVICON_LOAD_NON_PRIVATE,
       (uriResult) => resolve(uriResult),
       Services.scriptSecurityManager.getSystemPrincipal());
   });
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: notificationURL
+    url: notificationURL,
   }, async function dummyTabTask(aBrowser) {
     await openNotification(aBrowser, "showNotification2");
 
     info("Notification alert showing");
 
     let alertWindow = Services.wm.getMostRecentWindow("alert:alert");
     if (!alertWindow) {
       ok(true, "Notifications don't use XUL windows on all platforms.");
--- a/browser/base/content/test/alerts/browser_notification_open_settings.js
+++ b/browser/base/content/test/alerts/browser_notification_open_settings.js
@@ -2,17 +2,17 @@
 
 var notificationURL = "http://example.org/browser/browser/base/content/test/alerts/file_dom_notifications.html";
 var expectedURL = "about:preferences#privacy";
 
 add_task(async function test_settingsOpen_observer() {
   info("Opening a dummy tab so openPreferences=>switchToTabHavingURI doesn't use the blank tab.");
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: "about:robots"
+    url: "about:robots",
   }, async function dummyTabTask(aBrowser) {
     // Ensure preferences is loaded before removing the tab.
     let syncPaneLoadedPromise = TestUtils.topicObserved("sync-pane-loaded", () => true);
     let tabPromise = BrowserTestUtils.waitForNewTab(gBrowser, expectedURL);
     info("simulate a notifications-open-settings notification");
     let uri = NetUtil.newURI("https://example.com");
     let principal = Services.scriptSecurityManager.createCodebasePrincipal(uri, {});
     Services.obs.notifyObservers(principal, "notifications-open-settings");
@@ -24,17 +24,17 @@ add_task(async function test_settingsOpe
 });
 
 add_task(async function test_settingsOpen_button() {
   info("Adding notification permission");
   await addNotificationPermission(notificationURL);
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: notificationURL
+    url: notificationURL,
   }, async function tabTask(aBrowser) {
     // Ensure preferences is loaded before removing the tab.
     let syncPaneLoadedPromise = TestUtils.topicObserved("sync-pane-loaded", () => true);
 
     info("Waiting for notification");
     await openNotification(aBrowser, "showNotification2");
 
     let alertWindow = Services.wm.getMostRecentWindow("alert:alert");
--- a/browser/base/content/test/alerts/browser_notification_replace.js
+++ b/browser/base/content/test/alerts/browser_notification_replace.js
@@ -2,17 +2,17 @@
 
 let notificationURL = "http://example.org/browser/browser/base/content/test/alerts/file_dom_notifications.html";
 
 add_task(async function test_notificationReplace() {
   await addNotificationPermission(notificationURL);
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: notificationURL
+    url: notificationURL,
   }, async function dummyTabTask(aBrowser) {
     await ContentTask.spawn(aBrowser, {}, async function() {
       let win = content.window.wrappedJSObject;
       let notification = win.showNotification1();
       let promiseCloseEvent = ContentTaskUtils.waitForEvent(notification, "close");
 
       let showEvent = await ContentTaskUtils.waitForEvent(notification, "show");
       Assert.equal(showEvent.target.body, "Test body 1", "Showed tagged notification");
--- a/browser/base/content/test/alerts/browser_notification_tab_switching.js
+++ b/browser/base/content/test/alerts/browser_notification_tab_switching.js
@@ -10,17 +10,17 @@ var notificationURL = "http://example.or
 var newWindowOpenedFromTab;
 
 add_task(async function test_notificationPreventDefaultAndSwitchTabs() {
   await addNotificationPermission(notificationURL);
 
   let originalTab = gBrowser.selectedTab;
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: notificationURL
+    url: notificationURL,
   }, async function dummyTabTask(aBrowser) {
     // Put new tab in background so it is obvious when it is re-focused.
     await BrowserTestUtils.switchTab(gBrowser, originalTab);
     isnot(gBrowser.selectedBrowser, aBrowser, "Notification page loaded as a background tab");
 
     // First, show a notification that will be have the tab-switching prevented.
     function promiseNotificationEvent(evt) {
       return ContentTask.spawn(aBrowser, evt, async function(contentEvt) {
--- a/browser/base/content/test/contextMenu/browser_contextmenu_touch.js
+++ b/browser/base/content/test/contextMenu/browser_contextmenu_touch.js
@@ -27,18 +27,18 @@ async function openAndCheckContextMenu(c
   contextMenu.hidePopup();
 }
 
 // Ensure that we can run touch events properly for windows [10]
 add_task(async function setup() {
   let isWindows = AppConstants.isPlatformAndVersionAtLeast("win", "10.0");
   await SpecialPowers.pushPrefEnv({
     set: [
-      ["apz.test.fails_with_native_injection", isWindows]
-    ]
+      ["apz.test.fails_with_native_injection", isWindows],
+    ],
   });
 });
 
 // Test the content area context menu.
 add_task(async function test_contentarea_contextmenu_touch() {
   await BrowserTestUtils.withNewTab("about:blank", async function(browser) {
     let contextMenu = document.getElementById("contentAreaContextMenu");
     await openAndCheckContextMenu(contextMenu, browser);
--- a/browser/base/content/test/favicons/browser_favicon_load.js
+++ b/browser/base/content/test/favicons/browser_favicon_load.js
@@ -83,17 +83,17 @@ FaviconObserver.prototype = {
   reset(aPageURI, aFaviconURL, aTailingEnabled) {
     this._faviconURL = aFaviconURL;
     this._faviconLoaded = PromiseUtils.defer();
     this._tailingEnabled = aTailingEnabled;
   },
 
   get promise() {
     return this._faviconLoaded.promise;
-  }
+  },
 };
 
 function waitOnFaviconLoaded(aFaviconURL) {
   return PlacesTestUtils.waitForNotification(
     "onPageChanged",
     (uri, attr, value, id) => attr === Ci.nsINavHistoryObserver.ATTRIBUTE_FAVICON &&
                               value === aFaviconURL,
     "history");
@@ -120,17 +120,17 @@ async function doTest(aTestPage, aFavico
   Services.obs.removeObserver(observer, "http-on-modify-request");
 
   // Close the tab.
   BrowserTestUtils.removeTab(tab);
 }
 
 async function setupTailingPreference(aTailingEnabled) {
   await SpecialPowers.pushPrefEnv({"set": [
-      ["network.http.tailing.enabled", aTailingEnabled]
+      ["network.http.tailing.enabled", aTailingEnabled],
   ]});
 }
 
 async function cleanup() {
   // Clear all cookies.
   Services.cookies.removeAll();
   // Clear cache.
   Services.cache2.clear();
--- a/browser/base/content/test/favicons/browser_icon_discovery.js
+++ b/browser/base/content/test/favicons/browser_icon_discovery.js
@@ -5,17 +5,17 @@
 
 const ROOTURI = "http://mochi.test:8888/browser/browser/base/content/test/favicons/";
 const ICON = "moz.png";
 const DATAURL = "data:image/x-icon;base64,AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEAAAABAAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAwMDAAMDcwADwyqYABAQEAAgICAAMDAwAERERABYWFgAcHBwAIiIiACkpKQBVVVUATU1NAEJCQgA5OTkAgHz/AFBQ/wCTANYA/+zMAMbW7wDW5+cAkKmtAAAAMwAAAGYAAACZAAAAzAAAMwAAADMzAAAzZgAAM5kAADPMAAAz/wAAZgAAAGYzAABmZgAAZpkAAGbMAABm/wAAmQAAAJkzAACZZgAAmZkAAJnMAACZ/wAAzAAAAMwzAADMZgAAzJkAAMzMAADM/wAA/2YAAP+ZAAD/zAAzAAAAMwAzADMAZgAzAJkAMwDMADMA/wAzMwAAMzMzADMzZgAzM5kAMzPMADMz/wAzZgAAM2YzADNmZgAzZpkAM2bMADNm/wAzmQAAM5kzADOZZgAzmZkAM5nMADOZ/wAzzAAAM8wzADPMZgAzzJkAM8zMADPM/wAz/zMAM/9mADP/mQAz/8wAM///AGYAAABmADMAZgBmAGYAmQBmAMwAZgD/AGYzAABmMzMAZjNmAGYzmQBmM8wAZjP/AGZmAABmZjMAZmZmAGZmmQBmZswAZpkAAGaZMwBmmWYAZpmZAGaZzABmmf8AZswAAGbMMwBmzJkAZszMAGbM/wBm/wAAZv8zAGb/mQBm/8wAzAD/AP8AzACZmQAAmTOZAJkAmQCZAMwAmQAAAJkzMwCZAGYAmTPMAJkA/wCZZgAAmWYzAJkzZgCZZpkAmWbMAJkz/wCZmTMAmZlmAJmZmQCZmcwAmZn/AJnMAACZzDMAZsxmAJnMmQCZzMwAmcz/AJn/AACZ/zMAmcxmAJn/mQCZ/8wAmf//AMwAAACZADMAzABmAMwAmQDMAMwAmTMAAMwzMwDMM2YAzDOZAMwzzADMM/8AzGYAAMxmMwCZZmYAzGaZAMxmzACZZv8AzJkAAMyZMwDMmWYAzJmZAMyZzADMmf8AzMwAAMzMMwDMzGYAzMyZAMzMzADMzP8AzP8AAMz/MwCZ/2YAzP+ZAMz/zADM//8AzAAzAP8AZgD/AJkAzDMAAP8zMwD/M2YA/zOZAP8zzAD/M/8A/2YAAP9mMwDMZmYA/2aZAP9mzADMZv8A/5kAAP+ZMwD/mWYA/5mZAP+ZzAD/mf8A/8wAAP/MMwD/zGYA/8yZAP/MzAD/zP8A//8zAMz/ZgD//5kA///MAGZm/wBm/2YAZv//AP9mZgD/Zv8A//9mACEApQBfX18Ad3d3AIaGhgCWlpYAy8vLALKysgDX19cA3d3dAOPj4wDq6uoA8fHxAPj4+ADw+/8ApKCgAICAgAAAAP8AAP8AAAD//wD/AAAA/wD/AP//AAD///8ACgoKCgoKCgoKCgoKCgoKCgoKCgoHAQEMbQoKCgoKCgoAAAdDH/kgHRIAAAAAAAAAAADrHfn5ASQQAAAAAAAAAArsBx0B+fkgHesAAAAAAAD/Cgwf+fn5IA4dEus/IvcACgcMAfkg+QEB+SABHushbf8QHR/5HQH5+QEdHetEHx4K7B/5+QH5+fkdDBL5+SBE/wwdJfkf+fn5AR8g+fkfEArsCh/5+QEeJR/5+SAeBwAACgoe+SAlHwFAEhAfAAAAAPcKHh8eASYBHhAMAAAAAAAA9EMdIB8gHh0dBwAAAAAAAAAA7BAdQ+wHAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AADwfwAAwH8AAMB/AAAAPwAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAgAcAAIAPAADADwAA8D8AAP//AAA=";
 
 let iconDiscoveryTests = [
   {
     text: "rel icon discovered",
-    icons: [{}]
+    icons: [{}],
   }, {
     text: "rel may contain additional rels separated by spaces",
     icons: [{ rel: "abcdefg icon qwerty" }],
   }, {
     text: "rel is case insensitive",
     icons: [{ rel: "ICON" }],
   }, {
     text: "rel shortcut-icon not discovered",
--- a/browser/base/content/test/favicons/browser_preferred_icons.js
+++ b/browser/base/content/test/favicons/browser_preferred_icons.js
@@ -34,88 +34,88 @@ add_task(async function setup() {
     BrowserTestUtils.removeTab(tab);
   });
 });
 
 add_task(async function prefer_svg() {
   let promise = waitIcon(ROOT + "icon.svg");
   await createLinks([
     { href: ROOT + "icon.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
     { href: ROOT + "icon.svg",
-      type: "image/svg+xml"
+      type: "image/svg+xml",
     },
     { href: ROOT + "icon.png",
       type: "image/png",
-      size: 16 * Math.ceil(window.devicePixelRatio)
+      size: 16 * Math.ceil(window.devicePixelRatio),
     },
   ]);
   await promise;
 });
 
 add_task(async function prefer_sized() {
   let promise = waitIcon(ROOT + "moz.png");
   await createLinks([
     { href: ROOT + "icon.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
     { href: ROOT + "moz.png",
       type: "image/png",
-      size: 16 * Math.ceil(window.devicePixelRatio)
+      size: 16 * Math.ceil(window.devicePixelRatio),
     },
     { href: ROOT + "icon2.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
   ]);
   await promise;
 });
 
 add_task(async function prefer_last_ico() {
   let promise = waitIcon(ROOT + "file_generic_favicon.ico");
   await createLinks([
     { href: ROOT + "icon.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
     { href: ROOT + "icon.png",
       type: "image/png",
     },
     { href: ROOT + "file_generic_favicon.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
   ]);
   await promise;
 });
 
 add_task(async function fuzzy_ico() {
   let promise = waitIcon(ROOT + "file_generic_favicon.ico");
   await createLinks([
     { href: ROOT + "icon.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
     { href: ROOT + "icon.png",
       type: "image/png",
     },
     { href: ROOT + "file_generic_favicon.ico",
-      type: "image/vnd.microsoft.icon"
+      type: "image/vnd.microsoft.icon",
     },
   ]);
   await promise;
 });
 
 add_task(async function guess_svg() {
   let promise = waitIcon(ROOT + "icon.svg");
   await createLinks([
     { href: ROOT + "icon.svg" },
     { href: ROOT + "icon.png",
       type: "image/png",
-      size: 16 * Math.ceil(window.devicePixelRatio)
+      size: 16 * Math.ceil(window.devicePixelRatio),
     },
     { href: ROOT + "icon.ico",
-      type: "image/x-icon"
+      type: "image/x-icon",
     },
   ]);
   await promise;
 });
 
 add_task(async function guess_ico() {
   let promise = waitIcon(ROOT + "file_generic_favicon.ico");
   await createLinks([
@@ -143,24 +143,24 @@ add_task(async function guess_invalid() 
 });
 
 add_task(async function guess_bestSized() {
   let preferredWidth = 16 * Math.ceil(window.devicePixelRatio);
   let promise = waitIcon(ROOT + "moz.png");
   await createLinks([
     { href: ROOT + "icon.png",
       type: "image/png",
-      size: preferredWidth - 1
+      size: preferredWidth - 1,
     },
     { href: ROOT + "icon2.png",
       type: "image/png",
     },
     { href: ROOT + "moz.png",
       type: "image/png",
-      size: preferredWidth + 1
+      size: preferredWidth + 1,
     },
     { href: ROOT + "icon4.png",
       type: "image/png",
-      size: preferredWidth + 2
+      size: preferredWidth + 2,
     },
   ]);
   await promise;
 });
--- a/browser/base/content/test/favicons/head.js
+++ b/browser/base/content/test/favicons/head.js
@@ -48,17 +48,17 @@ function waitForFavicon(browser, url) {
     let listener = {
       onLinkIconAvailable(b, dataURI, iconURI) {
         if (b !== browser || iconURI != url) {
           return;
         }
 
         gBrowser.removeTabsProgressListener(listener);
         resolve();
-      }
+      },
     };
 
     gBrowser.addTabsProgressListener(listener);
   });
 }
 
 function waitForLinkAvailable(browser) {
   let resolve, reject;
@@ -67,17 +67,17 @@ function waitForLinkAvailable(browser) {
     onLinkIconAvailable(b, dataURI, iconURI) {
       // Ignore icons for other browsers or empty icons.
       if (browser !== b || !iconURI) {
         return;
       }
 
       gBrowser.removeTabsProgressListener(listener);
       resolve(iconURI);
-    }
+    },
   };
 
   let promise = new Promise((res, rej) => {
     resolve = res;
     reject = rej;
 
     gBrowser.addTabsProgressListener(listener);
   });
--- a/browser/base/content/test/forms/browser_selectpopup.js
+++ b/browser/base/content/test/forms/browser_selectpopup.js
@@ -221,18 +221,18 @@ async function doSelectTests(contentType
 
   BrowserTestUtils.removeTab(tab);
 }
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     "set": [
       ["dom.select_popup_in_parent.enabled", true],
-      ["dom.forms.select.customstyling", true]
-    ]
+      ["dom.forms.select.customstyling", true],
+    ],
   });
 });
 
 add_task(async function() {
   await doSelectTests("text/html", PAGECONTENT);
 });
 
 add_task(async function() {
@@ -508,17 +508,17 @@ async function performLargePopupTests(wi
   EventUtils.synthesizeMouseAtPoint(popupRect.left + 20, popupRect.bottom + 20, { type: "mousemove" }, win);
   is(selectPopup.scrollBox.scrollTop, scrollPos, "scroll position at mousemove after mouseup should not change");
 
   await hideSelectPopup(selectPopup, "escape", win);
 
   let positions = [
     "margin-top: 300px;",
     "position: fixed; bottom: 200px;",
-    "width: 100%; height: 9999px;"
+    "width: 100%; height: 9999px;",
   ];
 
   let position;
   while (positions.length) {
     await openSelectPopup(selectPopup, "key", "select", win);
 
     let rect = selectPopup.getBoundingClientRect();
     ok(rect.top >= browserRect.top, "Popup top position in within browser area");
--- a/browser/base/content/test/forms/browser_selectpopup_colors.js
+++ b/browser/base/content/test/forms/browser_selectpopup_colors.js
@@ -297,55 +297,55 @@ async function testSelectColors(select, 
     BrowserTestUtils.removeTab(tab);
   }
 }
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     "set": [
       ["dom.select_popup_in_parent.enabled", true],
-      ["dom.forms.select.customstyling", true]
-    ]
+      ["dom.forms.select.customstyling", true],
+    ],
   });
 });
 
 // This test checks when a <select> element has styles applied to <option>s within it.
 add_task(async function test_colors_applied_to_popup_items() {
   await testSelectColors(PAGECONTENT_COLORS, 7,
                          {skipSelectColorTest: true});
 });
 
 // This test checks when a <select> element has styles applied to itself.
 add_task(async function test_colors_applied_to_popup() {
   let options = {
     selectColor: "rgb(255, 255, 255)",
-    selectBgColor: "rgb(126, 58, 58)"
+    selectBgColor: "rgb(126, 58, 58)",
   };
   await testSelectColors(PAGECONTENT_COLORS_ON_SELECT, 4, options);
 });
 
 // This test checks when a <select> element has a transparent background applied to itself.
 add_task(async function test_transparent_applied_to_popup() {
   let options = {
     selectColor: getSystemColor("-moz-ComboboxText"),
-    selectBgColor: getSystemColor("-moz-Combobox")
+    selectBgColor: getSystemColor("-moz-Combobox"),
   };
   await testSelectColors(TRANSPARENT_SELECT, 2, options);
 });
 
 // This test checks when a <select> element has a background set, and the
 // options have their own background set which is equal to the default
 // user-agent background color, but should be used because the select
 // background color has been changed.
 add_task(async function test_options_inverted_from_select_background() {
   // The popup has a black background and white text, but the
   // options inside of it have flipped the colors.
   let options = {
     selectColor: "rgb(255, 255, 255)",
-    selectBgColor: "rgb(0, 0, 0)"
+    selectBgColor: "rgb(0, 0, 0)",
   };
   await testSelectColors(OPTION_COLOR_EQUAL_TO_UABACKGROUND_COLOR_SELECT,
                          2, options);
 });
 
 // This test checks when a <select> element has a background set using !important,
 // which was affecting how we calculated the user-agent styling.
 add_task(async function test_select_background_using_important() {
@@ -357,30 +357,30 @@ add_task(async function test_select_back
 // options have their own background set which is equal to the default
 // user-agent background color, but should be used because the select
 // background color has been changed.
 add_task(async function test_translucent_select_becomes_opaque() {
   // The popup is requested to show a translucent background
   // but we apply the requested background color on the system's base color.
   let options = {
     selectColor: "rgb(0, 0, 0)",
-    selectBgColor: "rgb(255, 255, 255)"
+    selectBgColor: "rgb(255, 255, 255)",
   };
   await testSelectColors(TRANSLUCENT_SELECT_BECOMES_OPAQUE, 2, options);
 });
 
 // This test checks when a popup has a translucent background color,
 // and that the color painted to the screen of the translucent background
 // matches what the user expects.
 add_task(async function test_translucent_select_applies_on_base_color() {
   // The popup is requested to show a translucent background
   // but we apply the requested background color on the system's base color.
   let options = {
     selectColor: "rgb(0, 0, 0)",
-    selectBgColor: "rgb(255, 115, 115)"
+    selectBgColor: "rgb(255, 115, 115)",
   };
   await testSelectColors(TRANSLUCENT_SELECT_APPLIES_ON_BASE_COLOR, 2, options);
 });
 
 add_task(async function test_disabled_optgroup_and_options() {
   // The colors used by this test are platform-specific.
   if (AppConstants.platform != "win") {
     return;
@@ -388,95 +388,95 @@ add_task(async function test_disabled_op
 
   await testSelectColors(DISABLED_OPTGROUP_AND_OPTIONS, 17,
                          {skipSelectColorTest: true});
 });
 
 add_task(async function test_disabled_optgroup_and_options() {
   let options = {
     selectColor: "rgb(0, 0, 0)",
-    selectBgColor: "rgb(255, 165, 0)"
+    selectBgColor: "rgb(255, 165, 0)",
   };
 
   await testSelectColors(SELECT_CHANGES_COLOR_ON_FOCUS, 2, options);
 });
 
 add_task(async function test_bgcolor_on_select_color_on_options() {
   let options = {
     selectColor: "rgb(0, 0, 0)",
-    selectBgColor: "rgb(0, 0, 0)"
+    selectBgColor: "rgb(0, 0, 0)",
   };
 
   await testSelectColors(SELECT_BGCOLOR_ON_SELECT_COLOR_ON_OPTIONS, 2, options);
 });
 
 add_task(async function test_style_of_options_is_dependent_on_focus_of_select() {
   let options = {
     selectColor: "rgb(0, 0, 0)",
-    selectBgColor: "rgb(58, 150, 221)"
+    selectBgColor: "rgb(58, 150, 221)",
   };
 
   await testSelectColors(SELECT_STYLE_OF_OPTION_IS_BASED_ON_FOCUS_OF_SELECT, 2, options);
 });
 
 add_task(async function test_style_of_options_is_dependent_on_focus_of_select_after_event() {
   let options = {
     skipSelectColorTest: true,
     waitForComputedStyle: {
       property: "color",
-      value: "rgb(255, 0, 0)"
-    }
+      value: "rgb(255, 0, 0)",
+    },
   };
   await testSelectColors(SELECT_STYLE_OF_OPTION_CHANGES_AFTER_FOCUS_EVENT, 2, options);
 });
 
 add_task(async function test_color_of_options_is_dependent_on_transitionend() {
   let options = {
     selectColor: "rgb(0, 0, 0)",
     selectBgColor: "rgb(255, 165, 0)",
     waitForComputedStyle: {
       property: "background-image",
-      value: "linear-gradient(rgb(255, 165, 0), rgb(255, 165, 0))"
-    }
+      value: "linear-gradient(rgb(255, 165, 0), rgb(255, 165, 0))",
+    },
   };
 
   await testSelectColors(SELECT_COLOR_OF_OPTION_CHANGES_AFTER_TRANSITIONEND, 2, options);
 });
 
 add_task(async function test_textshadow_of_options_is_dependent_on_transitionend() {
   let options = {
     skipSelectColorTest: true,
     waitForComputedStyle: {
       property: "text-shadow",
-      value: "rgb(48, 48, 48) 0px 0px 0px"
-    }
+      value: "rgb(48, 48, 48) 0px 0px 0px",
+    },
   };
 
   await testSelectColors(SELECT_TEXTSHADOW_OF_OPTION_CHANGES_AFTER_TRANSITIONEND, 2, options);
 });
 
 add_task(async function test_transparent_color_with_text_shadow() {
   let options = {
     selectColor: "rgba(0, 0, 0, 0)",
     selectTextShadow: "rgb(48, 48, 48) 0px 0px 0px",
-    selectBgColor: "rgb(255, 255, 255)"
+    selectBgColor: "rgb(255, 255, 255)",
   };
 
   await testSelectColors(SELECT_TRANSPARENT_COLOR_WITH_TEXT_SHADOW, 2, options);
 });
 
 add_task(async function test_select_with_transition_doesnt_lose_scroll_position() {
   let options = {
     selectColor: "rgb(128, 0, 128)",
     selectBgColor: "rgb(255, 255, 255)",
     waitForComputedStyle: {
       property: "color",
-      value: "rgb(128, 0, 128)"
+      value: "rgb(128, 0, 128)",
     },
-    leaveOpen: true
+    leaveOpen: true,
   };
 
   await testSelectColors(SELECT_LONG_WITH_TRANSITION, 76, options);
 
   let menulist = document.getElementById("ContentSelectDropdown");
   let selectPopup = menulist.menupopup;
   let scrollBox = selectPopup.scrollBox;
   is(scrollBox.scrollTop, scrollBox.scrollTopMax,
@@ -486,17 +486,17 @@ add_task(async function test_select_with
   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 });
 
 add_task(async function test_select_inherited_colors_on_options_dont_get_unique_rules_if_rule_set_on_select() {
   let options = {
     selectColor: "rgb(0, 0, 255)",
     selectBgColor: "rgb(255, 255, 255)",
     selectTextShadow: "rgb(0, 0, 255) 1px 1px 2px",
-    leaveOpen: true
+    leaveOpen: true,
   };
 
   await testSelectColors(SELECT_INHERITED_COLORS_ON_OPTIONS_DONT_GET_UNIQUE_RULES_IF_RULE_SET_ON_SELECT, 4, options);
 
   let stylesheetEl = document.getElementById("ContentSelectDropdownStylesheet");
   let sheet = stylesheetEl.sheet;
   /* Check that there are no rulesets for the first option, but that
      one exists for the second option and sets the color of that
@@ -512,20 +512,20 @@ add_task(async function test_select_inhe
       }
     }
     return false;
   }
 
   is(hasMatchingRuleForOption(sheet.cssRules, 1), false,
     "There should be no rules specific to option1");
   is(hasMatchingRuleForOption(sheet.cssRules, 2, {
-    color: "rgb(255, 0, 0)"
+    color: "rgb(255, 0, 0)",
   }), true, "There should be a rule specific to option2 and it should have color: red");
   is(hasMatchingRuleForOption(sheet.cssRules, 3, {
-    "text-shadow": "rgb(0, 0, 0) 1px 1px 2px"
+    "text-shadow": "rgb(0, 0, 0) 1px 1px 2px",
   }), true, "There should be a rule specific to option3 and it should have text-shadow: rgb(0, 0, 0) 1px 1px 2px");
 
 
   let menulist = document.getElementById("ContentSelectDropdown");
   let selectPopup = menulist.menupopup;
 
   await hideSelectPopup(selectPopup, "escape");
   BrowserTestUtils.removeTab(gBrowser.selectedTab);
--- a/browser/base/content/test/forms/browser_selectpopup_searchfocus.js
+++ b/browser/base/content/test/forms/browser_selectpopup_searchfocus.js
@@ -7,18 +7,18 @@ for (let i = 0; i < 75; i++) {
 SELECT +=
     '  <option selected="true">{"end": "true"}</option>' +
   "</select></body></html>";
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     "set": [
       ["dom.select_popup_in_parent.enabled", true],
-      ["dom.forms.selectSearch", true]
-    ]
+      ["dom.forms.selectSearch", true],
+    ],
   });
 });
 
 add_task(async function test_focus_on_search_shouldnt_close_popup() {
   const pageUrl = "data:text/html," + escape(SELECT);
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, pageUrl);
 
   let menulist = document.getElementById("ContentSelectDropdown");
--- a/browser/base/content/test/general/browser_alltabslistener.js
+++ b/browser/base/content/test/general/browser_alltabslistener.js
@@ -27,17 +27,17 @@ var gFrontProgressListener = {
   },
 
   onSecurityChange(aWebProgress, aRequest, aState) {
     var state = "onSecurityChange";
     info("FrontProgress: " + state + " 0x" + aState.toString(16));
     ok(gFrontNotificationsPos < gFrontNotifications.length, "Got an expected notification for the front notifications listener");
     is(state, gFrontNotifications[gFrontNotificationsPos], "Got a notification for the front notifications listener");
     gFrontNotificationsPos++;
-  }
+  },
 };
 
 var gAllProgressListener = {
   onStateChange(aBrowser, aWebProgress, aRequest, aStateFlags, aStatus) {
     var state = "onStateChange";
     info("AllProgress: " + state + " 0x" + aStateFlags.toString(16));
     ok(aBrowser == gTestBrowser, state + " notification came from the correct browser");
     ok(gAllNotificationsPos < gAllNotifications.length, "Got an expected notification for the all notifications listener");
@@ -68,17 +68,17 @@ var gAllProgressListener = {
 
   onSecurityChange(aBrowser, aWebProgress, aRequest, aState) {
     var state = "onSecurityChange";
     info("AllProgress: " + state + " 0x" + aState.toString(16));
     ok(aBrowser == gTestBrowser, state + " notification came from the correct browser");
     ok(gAllNotificationsPos < gAllNotifications.length, "Got an expected notification for the all notifications listener");
     is(state, gAllNotifications[gAllNotificationsPos], "Got a notification for the all notifications listener");
     gAllNotificationsPos++;
-  }
+  },
 };
 
 var gFrontNotifications, gAllNotifications, gFrontNotificationsPos, gAllNotificationsPos;
 var gBackgroundTab, gForegroundTab, gBackgroundBrowser, gForegroundBrowser, gTestBrowser;
 var gTestPage = "/browser/browser/base/content/test/general/alltabslistener.html";
 const kBasePage = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
 var gNextTest;
 
@@ -90,17 +90,17 @@ function test() {
   gBackgroundBrowser = gBrowser.getBrowserForTab(gBackgroundTab);
   gForegroundBrowser = gBrowser.getBrowserForTab(gForegroundTab);
   gBrowser.selectedTab = gForegroundTab;
 
   // We must wait until a page has completed loading before
   // starting tests or we get notifications from that
   let promises = [
     BrowserTestUtils.browserStopped(gBackgroundBrowser, kBasePage),
-    BrowserTestUtils.browserStopped(gForegroundBrowser, kBasePage)
+    BrowserTestUtils.browserStopped(gForegroundBrowser, kBasePage),
   ];
   gBackgroundBrowser.loadURI(kBasePage);
   gForegroundBrowser.loadURI(kBasePage);
   Promise.all(promises).then(startTest1);
 }
 
 function runTest(browser, url, next) {
   gFrontNotificationsPos = 0;
@@ -114,55 +114,55 @@ function startTest1() {
   info("\nTest 1");
   gBrowser.addProgressListener(gFrontProgressListener);
   gBrowser.addTabsProgressListener(gAllProgressListener);
 
   gAllNotifications = [
     "onStateChange",
     "onLocationChange",
     "onSecurityChange",
-    "onStateChange"
+    "onStateChange",
   ];
   gFrontNotifications = gAllNotifications;
   runTest(gForegroundBrowser, "http://example.org" + gTestPage, startTest2);
 }
 
 function startTest2() {
   info("\nTest 2");
   gAllNotifications = [
     "onStateChange",
     "onLocationChange",
     "onSecurityChange",
     "onSecurityChange",
-    "onStateChange"
+    "onStateChange",
   ];
   gFrontNotifications = gAllNotifications;
   runTest(gForegroundBrowser, "https://example.com" + gTestPage, startTest3);
 }
 
 function startTest3() {
   info("\nTest 3");
   gAllNotifications = [
     "onStateChange",
     "onLocationChange",
     "onSecurityChange",
-    "onStateChange"
+    "onStateChange",
   ];
   gFrontNotifications = [];
   runTest(gBackgroundBrowser, "http://example.org" + gTestPage, startTest4);
 }
 
 function startTest4() {
   info("\nTest 4");
   gAllNotifications = [
     "onStateChange",
     "onLocationChange",
     "onSecurityChange",
     "onSecurityChange",
-    "onStateChange"
+    "onStateChange",
   ];
   gFrontNotifications = [];
   runTest(gBackgroundBrowser, "https://example.com" + gTestPage, startTest5);
 }
 
 function startTest5() {
   info("\nTest 5");
   // Switch the foreground browser
@@ -172,29 +172,29 @@ function startTest5() {
   gBrowser.removeProgressListener(gFrontProgressListener);
   gBrowser.selectedTab = gForegroundTab;
   gBrowser.addProgressListener(gFrontProgressListener);
 
   gAllNotifications = [
     "onStateChange",
     "onLocationChange",
     "onSecurityChange",
-    "onStateChange"
+    "onStateChange",
   ];
   gFrontNotifications = gAllNotifications;
   runTest(gForegroundBrowser, "http://example.org" + gTestPage, startTest6);
 }
 
 function startTest6() {
   info("\nTest 6");
   gAllNotifications = [
     "onStateChange",
     "onLocationChange",
     "onSecurityChange",
-    "onStateChange"
+    "onStateChange",
   ];
   gFrontNotifications = [];
   runTest(gBackgroundBrowser, "http://example.org" + gTestPage, finishTest);
 }
 
 function finishTest() {
   gBrowser.removeProgressListener(gFrontProgressListener);
   gBrowser.removeTabsProgressListener(gAllProgressListener);
--- a/browser/base/content/test/general/browser_blockHPKP.js
+++ b/browser/base/content/test/general/browser_blockHPKP.js
@@ -55,17 +55,17 @@ function loadPinningPage() {
 
 // After the site is pinned try to load with a subdomain site that should
 // fail to validate
 var successfulPinningPageListener = {
   handleEvent() {
     BrowserTestUtils.loadURI(gBrowser.selectedBrowser, "https://" + kBadPinningDomain).then(function() {
       return BrowserTestUtils.waitForErrorPage(gBrowser.selectedBrowser);
     }).then(errorPageLoaded);
-  }
+  },
 };
 
 // The browser should load about:neterror, when this happens, proceed
 // to load the pinning domain again, this time removing the pinning information
 function errorPageLoaded() {
   ContentTask.spawn(gBrowser.selectedBrowser, null, async function() {
     let textElement = content.document.getElementById("errorShortDescText");
     let text = textElement.innerHTML;
--- a/browser/base/content/test/general/browser_bookmark_popup.js
+++ b/browser/base/content/test/general/browser_bookmark_popup.js
@@ -37,17 +37,17 @@ function mouseout() {
 async function test_bookmarks_popup({isNewBookmark, popupShowFn, popupEditFn,
                                 shouldAutoClose, popupHideFn, isBookmarkRemoved}) {
   await BrowserTestUtils.withNewTab({gBrowser, url: TEST_URL}, async function(browser) {
     try {
       if (!isNewBookmark) {
         await PlacesUtils.bookmarks.insert({
           parentGuid: PlacesUtils.bookmarks.unfiledGuid,
           url: TEST_URL,
-          title: "Home Page"
+          title: "Home Page",
         });
       }
 
       info(`BookmarkingUI.status is ${BookmarkingUI.status}`);
       await BrowserTestUtils.waitForCondition(
         () => BookmarkingUI.status != BookmarkingUI.STATUS_UPDATING,
         "BookmarkingUI should not be updating");
 
@@ -314,17 +314,17 @@ add_task(async function contextmenu_new_
     async popupShowFn(browser) {
       let contextMenu = document.getElementById("contentAreaContextMenu");
       let awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu,
                                                           "popupshown");
       let awaitPopupHidden = BrowserTestUtils.waitForEvent(contextMenu,
                                                            "popuphidden");
       await BrowserTestUtils.synthesizeMouseAtCenter("body", {
         type: "contextmenu",
-        button: 2
+        button: 2,
       }, browser);
       await awaitPopupShown;
       document.getElementById("context-bookmarkpage").click();
       contextMenu.hidePopup();
       await awaitPopupHidden;
     },
     popupEditFn() {
       EventUtils.sendChar("VK_TAB", window);
--- a/browser/base/content/test/general/browser_bookmark_titles.js
+++ b/browser/base/content/test/general/browser_bookmark_titles.js
@@ -11,17 +11,17 @@ var tests = [
   // Data URI.
   ["data:text/html;charset=utf-8,<title>test%20data:%20url</title>",
    "test data: url"],
   // about:neterror
   ["data:application/vnd.mozilla.xul+xml,",
    "data:application/vnd.mozilla.xul+xml,"],
   // about:certerror
   ["https://untrusted.example.com/somepage.html",
-   "https://untrusted.example.com/somepage.html"]
+   "https://untrusted.example.com/somepage.html"],
 ];
 
 SpecialPowers.pushPrefEnv({"set": [["browser.bookmarks.editDialog.showForNewBookmarks", false]]});
 
 add_task(async function check_default_bookmark_title() {
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
   let browser = tab.linkedBrowser;
 
--- a/browser/base/content/test/general/browser_bug1015721.js
+++ b/browser/base/content/test/general/browser_bug1015721.js
@@ -23,17 +23,17 @@ function test() {
 function zoomTab1() {
   (async function() {
     is(gBrowser.selectedTab, gTab1, "Tab 1 is selected");
     FullZoomHelper.zoomTest(gTab1, 1, "Initial zoom of tab 1 should be 1");
     FullZoomHelper.zoomTest(gTab2, 1, "Initial zoom of tab 2 should be 1");
 
     let browser1 = gBrowser.getBrowserForTab(gTab1);
     await BrowserTestUtils.synthesizeMouse(null, 10, 10, {
-      wheel: true, ctrlKey: true, deltaY: -1, deltaMode: WheelEvent.DOM_DELTA_LINE
+      wheel: true, ctrlKey: true, deltaY: -1, deltaMode: WheelEvent.DOM_DELTA_LINE,
     }, browser1);
 
     info("Waiting for tab 1 to be zoomed");
     await promiseWaitForCondition(() => {
       gLevel1 = ZoomManager.getZoomForBrowser(browser1);
       return gLevel1 > 1;
     });
 
--- a/browser/base/content/test/general/browser_bug321000.js
+++ b/browser/base/content/test/general/browser_bug321000.js
@@ -5,22 +5,22 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const kTestString = "  hello hello  \n  world\nworld  ";
 
 var gTests = [
 
   { desc: "Urlbar strips newlines and surrounding whitespace",
     element: gURLBar,
-    expected: kTestString.replace(/\s*\n\s*/g, "")
+    expected: kTestString.replace(/\s*\n\s*/g, ""),
   },
 
   { desc: "Searchbar replaces newlines with spaces",
     element: document.getElementById("searchbar"),
-    expected: kTestString.replace(/\n/g, " ")
+    expected: kTestString.replace(/\n/g, " "),
   },
 
 ];
 
 // Test for bug 23485 and bug 321000.
 // Urlbar should strip newlines,
 // search bar should replace newlines with spaces.
 function test() {
@@ -52,17 +52,17 @@ function test_paste(aCurrentTest) {
     handleEvent(event) {
       element.removeEventListener(event.type, this);
 
       is(element.value, this.test.expected, this.test.desc);
 
       // Clear the field and go to next test.
       element.value = "";
       setTimeout(next_test, 0);
-    }
+    },
   };
   element.addEventListener("input", inputListener);
 
   // Focus the window.
   window.focus();
   gBrowser.selectedBrowser.focus();
 
   // Focus the element and wait for focus event.
--- a/browser/base/content/test/general/browser_bug356571.js
+++ b/browser/base/content/test/general/browser_bug356571.js
@@ -13,24 +13,24 @@ const kPromptServiceContractID = "@mozil
 const kPromptServiceFactory = Cm.getClassObject(Cc[kPromptServiceContractID],
                                                 Ci.nsIFactory);
 
 var fakePromptServiceFactory = {
   createInstance(aOuter, aIid) {
     if (aOuter != null)
       throw Cr.NS_ERROR_NO_AGGREGATION;
     return promptService.QueryInterface(aIid);
-  }
+  },
 };
 
 var promptService = {
   QueryInterface: ChromeUtils.generateQI([Ci.nsIPromptService]),
   alert() {
     didFail = true;
-  }
+  },
 };
 
 /* FIXME
 Cm.QueryInterface(Ci.nsIComponentRegistrar)
   .registerFactory(Components.ID(kPromptServiceUUID), "Prompt Service",
                    kPromptServiceContractID, fakePromptServiceFactory);
 */
 
@@ -51,17 +51,17 @@ var gProgressListener = {
       if (++this._runCount != kURIs.length)
         return;
       // Check we failed on unknown protocol (received an alert from docShell)
       ok(didFail, "Correctly failed on unknown protocol");
       // Check we opened all tabs
       ok(gBrowser.tabs.length == kURIs.length, "Correctly opened all expected tabs");
       finishTest();
     }
-  }
+  },
 };
 
 function test() {
   todo(false, "temp. disabled");
   /* FIXME */
   /*
   waitForExplicitFinish();
   // Wait for all tabs to finish loading
--- a/browser/base/content/test/general/browser_bug413915.js
+++ b/browser/base/content/test/general/browser_bug413915.js
@@ -6,18 +6,18 @@ function test() {
   var principal = Services.scriptSecurityManager.createCodebasePrincipal(exampleUri, {});
 
   function testIsFeed(aTitle, aHref, aType, aKnown) {
     var link = {
       title: aTitle,
       href: aHref,
       type: aType,
       ownerDocument: {
-        characterSet: "UTF-8"
-      }
+        characterSet: "UTF-8",
+      },
     };
     return Feeds.isValidFeed(link, principal, aKnown);
   }
 
   var href = "http://example.com/feed/";
   var atomType = "application/atom+xml";
   var funkyAtomType = " aPPLICAtion/Atom+XML ";
   var rssType = "application/rss+xml";
--- a/browser/base/content/test/general/browser_bug424101.js
+++ b/browser/base/content/test/general/browser_bug424101.js
@@ -12,17 +12,17 @@ add_task(async function() {
     { element: "input", type: "button" },
     { element: "input", type: "submit" },
     { element: "input", type: "reset" },
     { element: "input", type: "checkbox" },
     { element: "input", type: "radio" },
     { element: "button" },
     { element: "select" },
     { element: "option" },
-    { element: "optgroup" }
+    { element: "optgroup" },
   ];
 
   for (let index = 0; index < tests.length; index++) {
     let test = tests[index];
 
     await ContentTask.spawn(gBrowser.selectedBrowser,
                             { element: test.element, type: test.type, index },
                             async function(arg) {
--- a/browser/base/content/test/general/browser_bug432599.js
+++ b/browser/base/content/test/general/browser_bug432599.js
@@ -46,17 +46,17 @@ add_task(async function() {
   // for it to be in a stable state before proceeding.
   await TestUtils.waitForCondition(
     () => BookmarkingUI.status == BookmarkingUI.STATUS_UNSTARRED
   );
 
   await PlacesUtils.bookmarks.insert({
     parentGuid: PlacesUtils.bookmarks.unfiledGuid,
     url: TEST_URL,
-    title: "Bug 432599 Test"
+    title: "Bug 432599 Test",
   });
   Assert.equal(BookmarkingUI.status, BookmarkingUI.STATUS_STARRED,
                "The star state should be starred");
 
   for (let invoker of [invokeUsingStarButton, invokeUsingCtrlD]) {
     for (let phase = 1; phase < 5; ++phase) {
       let promise = checkBookmarksPanel(phase);
       invoker(phase);
--- a/browser/base/content/test/general/browser_bug519216.js
+++ b/browser/base/content/test/general/browser_bug519216.js
@@ -6,40 +6,40 @@ function test() {
   gBrowser.loadURI("data:text/plain,bug519216");
 }
 
 var calledListener1 = false;
 var progressListener1 = {
   onLocationChange: function onLocationChange() {
     calledListener1 = true;
     gBrowser.removeProgressListener(this);
-  }
+  },
 };
 
 var calledListener2 = false;
 var progressListener2 = {
   onLocationChange: function onLocationChange() {
     ok(calledListener1, "called progressListener1 before progressListener2");
     calledListener2 = true;
     gBrowser.removeProgressListener(this);
-  }
+  },
 };
 
 var progressListener3 = {
   onLocationChange: function onLocationChange() {
     ok(calledListener2, "called progressListener2 before progressListener3");
     gBrowser.removeProgressListener(this);
     gBrowser.addProgressListener(progressListener4);
     executeSoon(function() {
       expectListener4 = true;
       gBrowser.reload();
     });
-  }
+  },
 };
 
 var expectListener4 = false;
 var progressListener4 = {
   onLocationChange: function onLocationChange() {
     ok(expectListener4, "didn't call progressListener4 for the first location change");
     gBrowser.removeProgressListener(this);
     executeSoon(finish);
-  }
+  },
 };
--- a/browser/base/content/test/general/browser_bug521216.js
+++ b/browser/base/content/test/general/browser_bug521216.js
@@ -41,10 +41,10 @@ var progressListener = {
   },
   onStateChange: function onStateChange(aBrowser) {
     if (aBrowser == tab.linkedBrowser)
       record("onStateChange");
   },
   onLinkIconAvailable: function onLinkIconAvailable(aBrowser) {
     if (aBrowser == tab.linkedBrowser)
       record("onLinkIconAvailable");
-  }
+  },
 };
--- a/browser/base/content/test/general/browser_bug537013.js
+++ b/browser/base/content/test/general/browser_bug537013.js
@@ -3,17 +3,17 @@
 
 /* Tests for bug 537013 to ensure proper tab-sequestration of find bar. */
 
 var tabs = [];
 var texts = [
   "This side up.",
   "The world is coming to an end. Please log off.",
   "Klein bottle for sale. Inquire within.",
-  "To err is human; to forgive is not company policy."
+  "To err is human; to forgive is not company policy.",
 ];
 
 var HasFindClipboard = Services.clipboard.supportsFindClipboard();
 
 function addTabWithText(aText, aCallback) {
   let newTab = BrowserTestUtils.addTab(gBrowser, "data:text/html;charset=utf-8,<h1 id='h1'>" +
                                        aText + "</h1>");
   tabs.push(newTab);
--- a/browser/base/content/test/general/browser_bug575561.js
+++ b/browser/base/content/test/general/browser_bug575561.js
@@ -2,17 +2,17 @@ requestLongerTimeout(2);
 
 const TEST_URL = "http://example.com/browser/browser/base/content/test/general/app_bug575561.html";
 
 add_task(async function() {
   SimpleTest.requestCompleteLog();
 
   // allow top level data: URI navigations, otherwise clicking data: link fails
   await SpecialPowers.pushPrefEnv({
-    "set": [["security.data_uri.block_toplevel_data_uri_navigations", false]]
+    "set": [["security.data_uri.block_toplevel_data_uri_navigations", false]],
   });
 
   // Pinned: Link to the same domain should not open a new tab
   // Tests link to http://example.com/browser/browser/base/content/test/general/dummy_page.html
   await testLink(0, true, false);
   // Pinned: Link to a different subdomain should open a new tab
   // Tests link to http://test1.example.com/browser/browser/base/content/test/general/dummy_page.html
   await testLink(1, true, true);
--- a/browser/base/content/test/general/browser_bug734076.js
+++ b/browser/base/content/test/general/browser_bug734076.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 add_task(async function() {
 
   // allow top level data: URI navigations, otherwise loading data: URIs
   // in toplevel windows fail.
   await SpecialPowers.pushPrefEnv({
-    "set": [["security.data_uri.block_toplevel_data_uri_navigations", false]]
+    "set": [["security.data_uri.block_toplevel_data_uri_navigations", false]],
   });
 
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, null, false);
 
   let browser = tab.linkedBrowser;
   browser.stop(); // stop the about:blank load
 
   let writeDomainURL = encodeURI("data:text/html,<script>document.write(document.domain);</script>");
@@ -29,17 +29,17 @@ add_task(async function() {
           return "context-viewbgimage";
         });
       },
       verify() {
         return ContentTask.spawn(gBrowser.selectedBrowser, null, async function(arg) {
           Assert.ok(!content.document.body.textContent,
             "no domain was inherited for view background image");
         });
-      }
+      },
     },
     {
       name: "view image",
       url: "http://mochi.test:8888/",
       element: "img",
       go() {
         return ContentTask.spawn(gBrowser.selectedBrowser, { writeDomainURL }, async function(arg) {
           let doc = content.document;
@@ -52,17 +52,17 @@ add_task(async function() {
           return "context-viewimage";
         });
       },
       verify() {
         return ContentTask.spawn(gBrowser.selectedBrowser, null, async function(arg) {
           Assert.ok(!content.document.body.textContent,
             "no domain was inherited for view image");
         });
-      }
+      },
     },
     {
       name: "show only this frame",
       url: "http://mochi.test:8888/",
       element: "iframe",
       go() {
         return ContentTask.spawn(gBrowser.selectedBrowser, { writeDomainURL }, async function(arg) {
           let doc = content.document;
@@ -78,18 +78,18 @@ add_task(async function() {
           });
         });
       },
       verify() {
         return ContentTask.spawn(gBrowser.selectedBrowser, null, async function(arg) {
           Assert.ok(!content.document.body.textContent,
             "no domain was inherited for 'show only this frame'");
         });
-      }
-    }
+      },
+    },
   ];
 
   let contentAreaContextMenu = document.getElementById("contentAreaContextMenu");
 
   for (let test of tests) {
     let loadedPromise = BrowserTestUtils.browserLoaded(gBrowser.selectedBrowser);
     gBrowser.loadURI(test.url);
     await loadedPromise;
--- a/browser/base/content/test/general/browser_bug882977.js
+++ b/browser/base/content/test/general/browser_bug882977.js
@@ -5,17 +5,17 @@
  * when viewing such a page in a new window.
  */
 add_task(async function() {
   let homepage = "about:preferences";
   await SpecialPowers.pushPrefEnv({
     "set": [
       ["browser.startup.homepage", homepage],
       ["browser.startup.page", 1],
-    ]
+    ],
   });
 
   let win = OpenBrowserWindow();
   await BrowserTestUtils.firstBrowserLoaded(win, false);
 
   let browser = win.gBrowser.selectedBrowser;
   is(browser.currentURI.spec, homepage, "Loaded the correct homepage");
   checkIdentityMode(win);
--- a/browser/base/content/test/general/browser_bug970746.js
+++ b/browser/base/content/test/general/browser_bug970746.js
@@ -77,17 +77,17 @@ add_task(async function() {
       shouldBeShown: true,
       expectedLabelContents: "A partial link " + ellipsis,
     },
     {
       id: "surrogatePair",
       isSelected: true,
       shouldBeShown: true,
       expectedLabelContents: "This character\uD83D\uDD25" + ellipsis,
-    }
+    },
   ];
 
   for (let test of tests) {
     await ContentTask.spawn(gBrowser.selectedBrowser,
                             { selectElement: test.isSelected ? test.id : null },
                             async function(arg) {
       let selection = content.getSelection();
       selection.removeAllRanges();
--- a/browser/base/content/test/general/browser_compacttheme.js
+++ b/browser/base/content/test/general/browser_compacttheme.js
@@ -53,17 +53,17 @@ add_task(async function startTests() {
 });
 
 function dummyLightweightTheme(id) {
   return {
     id,
     name: id,
     iconURL: "resource:///chrome/browser/content/browser/defaultthemes/light.icon.svg",
     textcolor: "red",
-    accentcolor: "blue"
+    accentcolor: "blue",
   };
 }
 
 add_task(async function testLightweightThemePreview() {
   info("Setting compact to current and previewing others");
   LightweightThemeManager.currentTheme = LightweightThemeManager.getUsedTheme(COMPACT_LIGHT_ID);
   await tick();
   ok(CompactTheme.isStyleSheetEnabled, "The compact stylesheet is enabled.");
--- a/browser/base/content/test/general/browser_contentAreaClick.js
+++ b/browser/base/content/test/general/browser_contentAreaClick.js
@@ -220,17 +220,17 @@ var gClickHandler = {
       ok(false, "Wrong number of invoked methods");
       gInvokedMethods.forEach(method => info(method + " was invoked"));
     }
 
     event.preventDefault();
     event.stopPropagation();
 
     executeSoon(runNextTest);
-  }
+  },
 };
 
 // Wraps around the methods' replacement mock function.
 function wrapperMethod(aInvokedMethods, aMethodName) {
   return function() {
     aInvokedMethods.push(aMethodName);
     // At least getShortcutOrURIAndPostData requires to return url
     return (aMethodName == "getShortcutOrURIAndPostData") ? arguments.url : arguments[0];
--- a/browser/base/content/test/general/browser_contextmenu.js
+++ b/browser/base/content/test/general/browser_contextmenu.js
@@ -2,17 +2,17 @@
 
 let contextMenu;
 let LOGIN_FILL_ITEMS = [
   "---", null,
   "fill-login", null,
     [
       "fill-login-no-logins", false,
       "---", null,
-      "fill-login-saved-passwords", true
+      "fill-login-saved-passwords", true,
     ], null,
 ];
 let hasPocket = Services.prefs.getBoolPref("extensions.pocket.enabled");
 let hasContainers = Services.prefs.getBoolPref("privacy.userContext.enabled");
 
 const example_base = "http://example.com/browser/browser/base/content/test/general/";
 const chrome_base = "chrome://mochitests/content/browser/browser/base/content/test/general/";
 
@@ -100,20 +100,20 @@ add_task(async function test_plaintext()
                     ...(hasPocket ? ["context-pocket", true] : []),
                     "---", null,
                     "context-sendpagetodevice", true, [], null,
                     "---",                  null,
                     "context-viewbgimage",  false,
                     "context-selectall",    true,
                     "---",                  null,
                     "context-viewsource",   true,
-                    "context-viewinfo",     true
+                    "context-viewinfo",     true,
                    ];
   await test_contextmenu("#test-text", plainTextItems, {
-    maybeScreenshotsPresent: true
+    maybeScreenshotsPresent: true,
   });
 });
 
 add_task(async function test_link() {
   await test_contextmenu("#test-link",
     ["context-openlinkintab", true,
      ...(hasContainers ? ["context-openlinkinusercontext-menu", true] : []),
      // We need a blank entry here because the containers submenu is
@@ -148,50 +148,50 @@ add_task(async function test_link_in_sha
      ...(hasPocket ? ["context-savelinktopocket", true] : []),
      "context-copylink",      true,
      "context-searchselect",  true,
      "---", null,
      "context-sendlinktodevice", true, [], null,
     ],
     {
       offsetX: 6,
-      offsetY: 6
+      offsetY: 6,
     }
   );
 });
 
 add_task(async function test_mailto() {
   await test_contextmenu("#test-mailto",
     ["context-copyemail", true,
-     "context-searchselect", true
+     "context-searchselect", true,
     ]
   );
 });
 
 add_task(async function test_image() {
   await test_contextmenu("#test-image",
     ["context-viewimage",            true,
      "context-copyimage-contents",   true,
      "context-copyimage",            true,
      "---",                          null,
      "context-saveimage",            true,
      "context-sendimage",            true,
      "context-setDesktopBackground", true,
-     "context-viewimageinfo",        true
+     "context-viewimageinfo",        true,
     ]
   );
 });
 
 add_task(async function test_canvas() {
   await test_contextmenu("#test-canvas",
     ["context-viewimage",    true,
      "context-saveimage",    true,
-     "context-selectall",    true
+     "context-selectall",    true,
     ], {
-      maybeScreenshotsPresent: true
+      maybeScreenshotsPresent: true,
     }
   );
 });
 
 add_task(async function test_video_ok() {
   await test_contextmenu("#test-video-ok",
     ["context-media-play",         true,
      "context-media-mute",         true,
@@ -226,17 +226,17 @@ add_task(async function test_audio_in_vi
           "context-media-playbackrate-150x", true,
           "context-media-playbackrate-200x", true], null,
      "context-media-loop",         true,
      "context-media-showcontrols", true,
      "---",                        null,
      "context-copyaudiourl",       true,
      "---",                        null,
      "context-saveaudio",          true,
-     "context-sendaudio",          true
+     "context-sendaudio",          true,
     ]
   );
 });
 
 add_task(async function test_video_bad() {
   await test_contextmenu("#test-video-bad",
     ["context-media-play",         false,
      "context-media-mute",         false,
@@ -310,17 +310,17 @@ add_task(async function test_iframe() {
           "context-saveframe",         true,
           "---",                       null,
           "context-printframe",        true,
           "---",                       null,
           "context-viewframesource",   true,
           "context-viewframeinfo",     true], null,
      "---",                  null,
      "context-viewsource",   true,
-     "context-viewinfo",     true
+     "context-viewinfo",     true,
     ]
   );
 });
 
 add_task(async function test_video_in_iframe() {
   await test_contextmenu("#test-video-in-iframe",
     ["context-media-play",         true,
      "context-media-mute",         true,
@@ -471,17 +471,17 @@ add_task(async function test_textarea_sp
       }
     }
   );
   */
 });
 
 add_task(async function test_plaintext2() {
   await test_contextmenu("#test-text", plainTextItems, {
-    maybeScreenshotsPresent: true
+    maybeScreenshotsPresent: true,
   });
 });
 
 add_task(async function test_undo_add_to_dictionary() {
   todo(false, "spell checker tests are failing, bug 1246296");
 
   /*
   yield test_contextmenu("#test-textarea",
@@ -559,17 +559,17 @@ add_task(async function test_copylinkcom
       document.commandDispatcher
               .getControllerForCommand("cmd_paste")
               .doCommand("cmd_paste");
       await ContentTask.spawn(gBrowser.selectedBrowser, null, async function() {
         let doc = content.document;
         let input = doc.getElementById("test-input");
         Assert.equal(input.value, "http://mozilla.com/", "paste for command cmd_paste");
       });
-    }
+    },
   });
 });
 
 add_task(async function test_pagemenu() {
   await test_contextmenu("#test-pagemenu",
     ["context-navigation",   null,
          ["context-back",         false,
           "context-forward",      false,
@@ -600,28 +600,28 @@ add_task(async function test_pagemenu() 
      ...(hasPocket ? ["context-pocket", true] : []),
      "---", null,
      "context-sendpagetodevice", true, [], null,
      "---",                  null,
      "context-viewbgimage",  false,
      "context-selectall",    true,
      "---",                  null,
      "context-viewsource",   true,
-     "context-viewinfo",     true
+     "context-viewinfo",     true,
     ],
     {async postCheckContextMenuFn() {
       let item = contextMenu.getElementsByAttribute("generateditemid", "1")[0];
       ok(item, "Got generated XUL menu item");
       item.doCommand();
       await ContentTask.spawn(gBrowser.selectedBrowser, null, async function() {
         let pagemenu = content.document.getElementById("test-pagemenu");
         Assert.ok(!pagemenu.hasAttribute("hopeless"), "attribute got removed");
       });
     },
-    maybeScreenshotsPresent: true
+    maybeScreenshotsPresent: true,
   });
 });
 
 add_task(async function test_dom_full_screen() {
   await test_contextmenu("#test-dom-full-screen",
     ["context-navigation",           null,
          ["context-back",            false,
           "context-forward",         false,
@@ -634,17 +634,17 @@ add_task(async function test_dom_full_sc
      ...(hasPocket ? ["context-pocket", true] : []),
      "---", null,
      "context-sendpagetodevice", true, [], null,
      "---",                          null,
      "context-viewbgimage",          false,
      "context-selectall",            true,
      "---",                          null,
      "context-viewsource",           true,
-     "context-viewinfo",             true
+     "context-viewinfo",             true,
     ],
     {
       maybeScreenshotsPresent: true,
       shiftkey: true,
       async preCheckContextMenuFn() {
         await pushPrefs(["full-screen-api.allow-trusted-requests-only", false],
                         ["full-screen-api.transition-duration.enter", "0 0"],
                         ["full-screen-api.transition-duration.leave", "0 0"]);
@@ -661,17 +661,17 @@ add_task(async function test_dom_full_sc
       async postCheckContextMenuFn() {
         await ContentTask.spawn(gBrowser.selectedBrowser, null, async function() {
           let win = content.document.defaultView;
           let awaitFullScreenChange =
             ContentTaskUtils.waitForEvent(win, "fullscreenchange");
           content.document.exitFullscreen();
           await awaitFullScreenChange;
         });
-      }
+      },
     }
   );
 });
 
 add_task(async function test_pagemenu2() {
   await test_contextmenu("#test-text",
     ["context-navigation", null,
          ["context-back",         false,
@@ -683,37 +683,37 @@ add_task(async function test_pagemenu2()
      ...(hasPocket ? ["context-pocket", true] : []),
      "---",                  null,
      "context-sendpagetodevice", true, [], null,
      "---",                  null,
      "context-viewbgimage",  false,
      "context-selectall",    true,
      "---",                  null,
      "context-viewsource",   true,
-     "context-viewinfo",     true
+     "context-viewinfo",     true,
     ],
     {maybeScreenshotsPresent: true,
      shiftkey: true}
   );
 });
 
 add_task(async function test_select_text() {
   await test_contextmenu("#test-select-text",
     ["context-copy",                        true,
      "context-selectall",                   true,
      "---",                                 null,
      "context-searchselect",                true,
-     "context-viewpartialsource-selection", true
+     "context-viewpartialsource-selection", true,
     ],
     {
       offsetX: 6,
       offsetY: 6,
       async preCheckContextMenuFn() {
         await selectText("#test-select-text");
-      }
+      },
     }
   );
 });
 
 add_task(async function test_select_text_link() {
   await test_contextmenu("#test-select-text-link",
     ["context-openlinkincurrent",           true,
      "context-openlinkintab",               true,
@@ -727,30 +727,30 @@ add_task(async function test_select_text
      "context-bookmarklink",                true,
      "context-savelink",                    true,
      "context-copy",                        true,
      "context-selectall",                   true,
      "---",                                 null,
      "context-searchselect",                true,
      "---",                                 null,
      "context-sendlinktodevice", true, [],  null,
-     "context-viewpartialsource-selection", true
+     "context-viewpartialsource-selection", true,
     ],
     {
       offsetX: 6,
       offsetY: 6,
       async preCheckContextMenuFn() {
         await selectText("#test-select-text-link");
       },
       async postCheckContextMenuFn() {
         await ContentTask.spawn(gBrowser.selectedBrowser, null, async function() {
           let win = content.document.defaultView;
           win.getSelection().removeAllRanges();
         });
-      }
+      },
     }
   );
 });
 
 add_task(async function test_imagelink() {
   await test_contextmenu("#test-image-link",
     ["context-openlinkintab", true,
      ...(hasContainers ? ["context-openlinkinusercontext-menu", true] : []),
@@ -868,42 +868,42 @@ add_task(async function test_click_to_pl
      ...(hasPocket ? ["context-pocket", true] : []),
      "---",                  null,
      "context-sendpagetodevice", true, [], null,
      "---",                  null,
      "context-viewbgimage",  false,
      "context-selectall",    true,
      "---",                  null,
      "context-viewsource",   true,
-     "context-viewinfo",     true
+     "context-viewinfo",     true,
     ],
     {
       maybeScreenshotsPresent: true,
       preCheckContextMenuFn() {
         pushPrefs(["plugins.click_to_play", true]);
         setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY);
       },
       postCheckContextMenuFn() {
         getTestPlugin().enabledState = Ci.nsIPluginTag.STATE_ENABLED;
-      }
+      },
     }
   );
 });
 
 add_task(async function test_longdesc() {
   await test_contextmenu("#test-longdesc",
     ["context-viewimage",            true,
      "context-copyimage-contents",   true,
      "context-copyimage",            true,
      "---",                          null,
      "context-saveimage",            true,
      "context-sendimage",            true,
      "context-setDesktopBackground", true,
      "context-viewimageinfo",        true,
-     "context-viewimagedesc",        true
+     "context-viewimagedesc",        true,
     ]
   );
 });
 
 add_task(async function test_srcdoc() {
   await test_contextmenu("#test-srcdoc",
     ["context-navigation", null,
          ["context-back",         false,
@@ -924,17 +924,17 @@ add_task(async function test_srcdoc() {
           "context-saveframe",         true,
           "---",                       null,
           "context-printframe",        true,
           "---",                       null,
           "context-viewframesource",   true,
           "context-viewframeinfo",     true], null,
      "---",                  null,
      "context-viewsource",   true,
-     "context-viewinfo",     true
+     "context-viewinfo",     true,
     ]
   );
 });
 
 add_task(async function test_input_spell_false() {
   todo(false, "spell checker tests are failing, bug 1246296");
 
   /*
--- a/browser/base/content/test/general/browser_contextmenu_childprocess.js
+++ b/browser/base/content/test/general/browser_contextmenu_childprocess.js
@@ -69,12 +69,12 @@ function checkMenu(contextMenu) {
                 "Item w/ icon",        {type: "", icon: "favicon.ico", checked: false, disabled: false},
                 "Item w/ bad icon",    {type: "", icon: "", checked: false, disabled: false},
                 "---",                  null,
                 "Submenu",  { children:
                   ["Radio1",             {type: "checkbox", icon: "", checked: false, disabled: false},
                    "Radio2",             {type: "checkbox", icon: "", checked: true, disabled: false},
                    "Radio3",             {type: "checkbox", icon: "", checked: false, disabled: false},
                    "---",                 null,
-                   "Checkbox",           {type: "checkbox", icon: "", checked: false, disabled: false}] }
+                   "Checkbox",           {type: "checkbox", icon: "", checked: false, disabled: false}] },
                ];
   checkItems(contextMenu.children[2], items);
 }
--- a/browser/base/content/test/general/browser_contextmenu_input.js
+++ b/browser/base/content/test/general/browser_contextmenu_input.js
@@ -174,17 +174,17 @@ add_task(async function test_tel_email_u
        "context-paste",       null, // ignore clipboard state
        "context-delete",      false,
        "---",                 null,
        "context-selectall",   null], {
       // XXX Bug 1345081. Currently the Screenshots menu option is shown for
       // various text elements even though it is set to type "page". That bug
       // should remove the need for next line.
       maybeScreenshotsPresent: true,
-      skipFocusChange: true
+      skipFocusChange: true,
     });
   }
 });
 
 add_task(async function test_date_time_color_range_month_week_datetimelocal_input() {
   for (let selector of ["#input_date", "#input_time", "#input_color",
                         "#input_range", "#input_month", "#input_week",
                         "#input_datetime-local"]) {
@@ -204,17 +204,17 @@ add_task(async function test_date_time_c
        "context-selectall",    null,
        "---",                  null,
        "context-viewsource",   true,
        "context-viewinfo",     true], {
       // XXX Bug 1345081. Currently the Screenshots menu option is shown for
       // various text elements even though it is set to type "page". That bug
       // should remove the need for next line.
       maybeScreenshotsPresent: true,
-      skipFocusChange: true
+      skipFocusChange: true,
     });
   }
 });
 
 add_task(async function test_search_input() {
   todo(false, "context-selectall is enabled on osx-e10s, and windows when" +
               " it should be disabled");
   await test_contextmenu("#input_search",
@@ -244,15 +244,15 @@ add_task(async function test_text_input_
      "context-paste",       null, // ignore clipboard state
      "context-delete",      false,
      "---",                 null,
      "context-selectall",   null], {
     // XXX Bug 1345081. Currently the Screenshots menu option is shown for
     // various text elements even though it is set to type "page". That bug
     // should remove the need for next line.
     maybeScreenshotsPresent: true,
-    skipFocusChange: true
+    skipFocusChange: true,
   });
 });
 
 add_task(async function test_cleanup() {
   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 });
--- a/browser/base/content/test/general/browser_datachoices_notification.js
+++ b/browser/base/content/test/general/browser_datachoices_notification.js
@@ -166,42 +166,42 @@ add_task(async function test_multiple_wi
 
   // Ensure we see the notification on all windows and that action on one window
   // results in dismiss on every window.
   let otherWindow = await BrowserTestUtils.openNewBrowserWindow();
 
   // Get the notification box for both windows.
   let notificationBoxes = [
     document.getElementById("global-notificationbox"),
-    otherWindow.document.getElementById("global-notificationbox")
+    otherWindow.document.getElementById("global-notificationbox"),
   ];
 
   Assert.ok(notificationBoxes[1], "2nd window has a global notification box.");
 
   // Make sure that we have a coherent initial state.
   Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_VERSION, 0), 0, "No version should be set on init.");
   Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_DATE, 0), 0, "No date should be set on init.");
   Assert.ok(!TelemetryReportingPolicy.testIsUserNotified(), "User not notified about datareporting policy.");
 
   let showAlertPromises = [
     promiseWaitForAlertActive(notificationBoxes[0]),
-    promiseWaitForAlertActive(notificationBoxes[1])
+    promiseWaitForAlertActive(notificationBoxes[1]),
   ];
 
   Assert.ok(!TelemetryReportingPolicy.canUpload(),
             "User should not be allowed to upload.");
 
   // Wait for the infobars.
   triggerInfoBar(10 * 1000);
   await Promise.all(showAlertPromises);
 
   // Both notification were displayed. Close one and check that both gets closed.
   let closeAlertPromises = [
     promiseWaitForNotificationClose(notificationBoxes[0].currentNotification),
-    promiseWaitForNotificationClose(notificationBoxes[1].currentNotification)
+    promiseWaitForNotificationClose(notificationBoxes[1].currentNotification),
   ];
   notificationBoxes[0].currentNotification.close();
   await Promise.all(closeAlertPromises);
 
   // Close the second window we opened.
   await BrowserTestUtils.closeWindow(otherWindow);
 
   // Check that we are clear to upload and that the policy data us saved.
--- a/browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js
+++ b/browser/base/content/test/general/browser_domFullscreen_fullscreenMode.js
@@ -10,26 +10,26 @@ function frameScript() {
     content.document.body.requestFullscreen();
   });
   addMessageListener("Test:ExitFullscreen", () => {
     content.document.exitFullscreen();
   });
   addMessageListener("Test:QueryFullscreenState", () => {
     sendAsyncMessage("Test:FullscreenState", {
       inDOMFullscreen: !!content.document.fullscreenElement,
-      inFullscreen: content.fullScreen
+      inFullscreen: content.fullScreen,
     });
   });
   addMessageListener("Test:WaitActivated", () => {
     waitUntilActive();
   });
   content.document.addEventListener("fullscreenchange", () => {
     sendAsyncMessage("Test:FullscreenChanged", {
       inDOMFullscreen: !!content.document.fullscreenElement,
-      inFullscreen: content.fullScreen
+      inFullscreen: content.fullScreen,
     });
   });
   function waitUntilActive() {
     if (docShell.isActive && content.document.hasFocus()) {
       sendAsyncMessage("Test:Activated");
     } else {
       setTimeout(waitUntilActive, 10);
     }
@@ -116,32 +116,32 @@ function waitForFullscreenChanges(aFlags
 }
 
 var gTests = [
   {
     desc: "document method",
     affectsFullscreenMode: false,
     exitFunc: () => {
       gMessageManager.sendAsyncMessage("Test:ExitFullscreen");
-    }
+    },
   },
   {
     desc: "escape key",
     affectsFullscreenMode: false,
     exitFunc: () => {
       executeSoon(() => EventUtils.synthesizeKey("KEY_Escape"));
-    }
+    },
   },
   {
     desc: "F11 key",
     affectsFullscreenMode: true,
     exitFunc() {
       executeSoon(() => EventUtils.synthesizeKey("KEY_F11"));
-    }
-  }
+    },
+  },
 ];
 
 function checkState(expectedStates, contentStates) {
   is(contentStates.inDOMFullscreen, expectedStates.inDOMFullscreen,
      "The DOM fullscreen state of the content should match");
   // TODO window.fullScreen is not updated as soon as the fullscreen
   //      state flips in child process, hence checking it could cause
   //      anonying intermittent failure. As we just want to confirm the
@@ -218,17 +218,17 @@ add_task(async function() {
     checkState({inDOMFullscreen: true, inFullscreen: true}, contentStates);
 
     info("> Exit DOM fullscreen in fullscreen mode");
     test.exitFunc();
     contentStates = await waitForFullscreenChanges(
       test.affectsFullscreenMode ? FS_CHANGE_BOTH : FS_CHANGE_DOM);
     checkState({
       inDOMFullscreen: false,
-      inFullscreen: !test.affectsFullscreenMode
+      inFullscreen: !test.affectsFullscreenMode,
     }, contentStates);
 
     /* Cleanup */
 
     // Exit fullscreen mode if we are still in
     if (window.fullScreen) {
       info("> Cleanup");
       executeSoon(() => BrowserFullScreen());
--- a/browser/base/content/test/general/browser_drag.js
+++ b/browser/base/content/test/general/browser_drag.js
@@ -11,17 +11,17 @@ function test() {
   var expected = [ [
     { type: "text/x-moz-url",
       data: urlString },
     { type: "text/uri-list",
       data: value },
     { type: "text/plain",
       data: value },
     { type: "text/html",
-      data: htmlString }
+      data: htmlString },
   ] ];
   // set the valid attribute so dropping is allowed
   var oldstate = gURLBar.getAttribute("pageproxystate");
   gURLBar.setAttribute("pageproxystate", "valid");
   var dt = EventUtils.synthesizeDragStart(document.getElementById("identity-box"), expected);
   is(dt, null, "drag on proxy icon");
   gURLBar.setAttribute("pageproxystate", oldstate);
   // Now, the identity information panel is opened by the proxy icon click.
--- a/browser/base/content/test/general/browser_e10s_about_page_triggeringprincipal.js
+++ b/browser/base/content/test/general/browser_e10s_about_page_triggeringprincipal.js
@@ -4,17 +4,17 @@ const kChildPage = getRootDirectory(gTes
 const kParentPage = getRootDirectory(gTestPath) + "file_about_parent.html";
 
 const kAboutPagesRegistered = Promise.all([
   BrowserTestUtils.registerAboutPage(
     registerCleanupFunction, "test-about-principal-child", kChildPage,
     Ci.nsIAboutModule.URI_MUST_LOAD_IN_CHILD | Ci.nsIAboutModule.ALLOW_SCRIPT),
   BrowserTestUtils.registerAboutPage(
     registerCleanupFunction, "test-about-principal-parent", kParentPage,
-    Ci.nsIAboutModule.ALLOW_SCRIPT)
+    Ci.nsIAboutModule.ALLOW_SCRIPT),
 ]);
 
 add_task(async function test_principal_click() {
   await kAboutPagesRegistered;
   await BrowserTestUtils.withNewTab("about:test-about-principal-parent", async function(browser) {
     let loadPromise = BrowserTestUtils.browserLoaded(browser, false, "about:test-about-principal-child");
     let myLink = browser.contentDocument.getElementById("aboutchildprincipal");
     myLink.click();
--- a/browser/base/content/test/general/browser_e10s_about_process.js
+++ b/browser/base/content/test/general/browser_e10s_about_process.js
@@ -15,17 +15,17 @@ const MUSTREMOTE = {
   id: "f849cee5-e13e-44d2-981d-0fb3884aaead",
   path: "test-mustremote",
   flags: Ci.nsIAboutModule.URI_MUST_LOAD_IN_CHILD,
 };
 
 const TEST_MODULES = [
   CHROME,
   CANREMOTE,
-  MUSTREMOTE
+  MUSTREMOTE,
 ];
 
 function AboutModule() {
 }
 
 AboutModule.prototype = {
   newChannel(aURI, aLoadInfo) {
     throw Cr.NS_ERROR_NOT_IMPLEMENTED;
@@ -41,31 +41,31 @@ AboutModule.prototype = {
     ok(false, "Called getURIFlags for an unknown page " + aURI.spec);
     return 0;
   },
 
   getIndexedDBOriginPostfix(aURI) {
     return null;
   },
 
-  QueryInterface: ChromeUtils.generateQI([Ci.nsIAboutModule])
+  QueryInterface: ChromeUtils.generateQI([Ci.nsIAboutModule]),
 };
 
 var AboutModuleFactory = {
   createInstance(aOuter, aIID) {
     if (aOuter)
       throw Cr.NS_ERROR_NO_AGGREGATION;
     return new AboutModule().QueryInterface(aIID);
   },
 
   lockFactory(aLock) {
     throw Cr.NS_ERROR_NOT_IMPLEMENTED;
   },
 
-  QueryInterface: ChromeUtils.generateQI([Ci.nsIFactory])
+  QueryInterface: ChromeUtils.generateQI([Ci.nsIFactory]),
 };
 
 add_task(async function init() {
   let registrar = Components.manager.QueryInterface(Ci.nsIComponentRegistrar);
   for (let module of TEST_MODULES) {
     registrar.registerFactory(Components.ID(module.id), "",
                               "@mozilla.org/network/protocol/about;1?what=" + module.path,
                               AboutModuleFactory);
--- a/browser/base/content/test/general/browser_e10s_switchbrowser.js
+++ b/browser/base/content/test/general/browser_e10s_switchbrowser.js
@@ -1,33 +1,33 @@
 /* eslint-env mozilla/frame-script */
 
 requestLongerTimeout(2);
 
 const DUMMY_PATH = "browser/browser/base/content/test/general/dummy_page.html";
 
 const gExpectedHistory = {
   index: -1,
-  entries: []
+  entries: [],
 };
 
 function get_remote_history(browser) {
   function frame_script() {
     let webNav = docShell.QueryInterface(Ci.nsIWebNavigation);
     let sessionHistory = webNav.sessionHistory;
     let result = {
       index: sessionHistory.index,
-      entries: []
+      entries: [],
     };
 
     for (let i = 0; i < sessionHistory.count; i++) {
       let entry = sessionHistory.legacySHistory.getEntryAtIndex(i, false);
       result.entries.push({
         uri: entry.URI.spec,
-        title: entry.title
+        title: entry.title,
       });
     }
 
     sendAsyncMessage("Test:History", result);
   }
 
   return new Promise(resolve => {
     browser.messageManager.addMessageListener("Test:History", function listener({data}) {
@@ -65,17 +65,17 @@ var waitForLoad = async function(uri) {
   gBrowser.selectedBrowser.webNavigation.loadURI(uri, Ci.nsIWebNavigation.LOAD_FLAGS_NONE,
                                                  null, null, null,
                                                  Services.scriptSecurityManager.getSystemPrincipal());
 
   await BrowserTestUtils.browserStopped(gBrowser);
   gExpectedHistory.index++;
   gExpectedHistory.entries.push({
     uri: gBrowser.currentURI.spec,
-    title: gBrowser.contentTitle
+    title: gBrowser.contentTitle,
   });
 };
 
 // Waits for a load and updates the known history
 var waitForLoadWithFlags = async function(uri, flags = Ci.nsIWebNavigation.LOAD_FLAGS_NONE) {
   info("Loading " + uri + " flags = " + flags);
   gBrowser.selectedBrowser.loadURI(uri, { flags });
 
@@ -85,17 +85,17 @@ var waitForLoadWithFlags = async functio
     if (flags & Ci.nsIWebNavigation.LOAD_FLAGS_REPLACE_HISTORY) {
       gExpectedHistory.entries.pop();
     } else {
       gExpectedHistory.index++;
     }
 
     gExpectedHistory.entries.push({
       uri: gBrowser.currentURI.spec,
-      title: gBrowser.contentTitle
+      title: gBrowser.contentTitle,
     });
   }
 };
 
 var back = async function() {
   info("Going back");
   gBrowser.goBack();
   await BrowserTestUtils.browserStopped(gBrowser);
--- a/browser/base/content/test/general/browser_fullscreen-window-open.js
+++ b/browser/base/content/test/general/browser_fullscreen-window-open.js
@@ -174,17 +174,17 @@ function test_open_with_pref_to_disable_
 
 // Test for window.open() called from chrome context.
 function test_open_from_chrome() {
   waitForWindowOpenFromChrome({
     message: {
       title: "test_open_from_chrome",
       param: "",
     },
-    finalizeFn() {}
+    finalizeFn() {},
   });
 }
 
 function waitForTabOpen(aOptions) {
   let message = aOptions.message;
 
   if (!message.title) {
     ok(false, "Can't get message.title.");
--- a/browser/base/content/test/general/browser_getshortcutoruri.js
+++ b/browser/base/content/test/general/browser_getshortcutoruri.js
@@ -21,17 +21,17 @@ function keyWordData() {}
 keyWordData.prototype = {
   init(aKeyWord, aURL, aPostData, aSearchWord) {
     this.keyword = aKeyWord;
     this.uri = makeURI(aURL);
     this.postData = aPostData;
     this.searchWord = aSearchWord;
 
     this.method = (this.postData ? "POST" : "GET");
-  }
+  },
 };
 
 function bmKeywordData(aKeyWord, aURL, aPostData, aSearchWord) {
   this.init(aKeyWord, aURL, aPostData, aSearchWord);
 }
 bmKeywordData.prototype = new keyWordData();
 
 function searchKeywordData(aKeyWord, aURL, aPostData, aSearchWord) {
@@ -83,17 +83,17 @@ var testData = [
   // Explicitly-defined ISO-8859-1
   [new bmKeywordData("bmget-escaping2", "http://bmget/?esc=%s&raw=%S&mozcharset=ISO-8859-1", null, "+/@"),
    new keywordResult("http://bmget/?esc=%2B%2F%40&raw=+/@", null)],
 
   // Test using a non-bmKeywordData object, to test the behavior of
   // getShortcutOrURIAndPostData for non-keywords (setupKeywords only adds keywords for
   // bmKeywordData objects)
   [{keyword: "http://gavinsharp.com"},
-   new keywordResult(null, null, true)]
+   new keywordResult(null, null, true)],
 ];
 
 add_task(async function test_getshortcutoruri() {
   await setupKeywords();
 
   for (let item of testData) {
     let [data, result] = item;
 
--- a/browser/base/content/test/general/browser_homeDrop.js
+++ b/browser/base/content/test/general/browser_homeDrop.js
@@ -32,17 +32,17 @@ add_task(async function() {
           is(data, HOMEPAGE_PREF, "observed correct data");
           let modified = Services.prefs.getStringPref(HOMEPAGE_PREF);
           is(modified, homepage, "homepage is set correctly");
           Services.prefs.removeObserver(HOMEPAGE_PREF, observer);
 
           Services.prefs.setStringPref(HOMEPAGE_PREF, "about:mozilla;");
 
           resolve();
-        }
+        },
       };
       Services.prefs.addObserver(HOMEPAGE_PREF, observer);
     });
 
     setHomepageDialog.document.documentElement.acceptDialog();
 
     await setHomepagePromise;
   }
@@ -50,17 +50,17 @@ add_task(async function() {
   function dropInvalidURI() {
     return new Promise(resolve => {
       let consoleListener = {
         observe(m) {
           if (m.message.includes("NS_ERROR_DOM_BAD_URI")) {
             ok(true, "drop was blocked");
             resolve();
           }
-        }
+        },
       };
       Services.console.registerListener(consoleListener);
       registerCleanupFunction(function() {
         Services.console.unregisterListener(consoleListener);
       });
 
       executeSoon(function() {
         info("Attempting second drop, of a javascript: URI");
--- a/browser/base/content/test/general/browser_keywordBookmarklets.js
+++ b/browser/base/content/test/general/browser_keywordBookmarklets.js
@@ -3,17 +3,17 @@
 
 "use strict";
 
 add_task(async function test_keyword_bookmarklet() {
   let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser);
   let bm = await PlacesUtils.bookmarks.insert({
     parentGuid: PlacesUtils.bookmarks.unfiledGuid,
     title: "bookmarklet",
-    url: "javascript:'1';"
+    url: "javascript:'1';",
   });
 
   registerCleanupFunction(async function() {
     BrowserTestUtils.removeTab(tab);
     await PlacesUtils.bookmarks.remove(bm);
   });
 
   let originalPrincipal = gBrowser.contentPrincipal;
--- a/browser/base/content/test/general/browser_keywordSearch.js
+++ b/browser/base/content/test/general/browser_keywordSearch.js
@@ -2,39 +2,39 @@
  * Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  **/
 
 var gTests = [
   {
     name: "normal search (search service)",
     testText: "test search",
-    searchURL: Services.search.defaultEngine.getSubmission("test search", null, "keyword").uri.spec
+    searchURL: Services.search.defaultEngine.getSubmission("test search", null, "keyword").uri.spec,
   },
   {
     name: "?-prefixed search (search service)",
     testText: "?   foo  ",
-    searchURL: Services.search.defaultEngine.getSubmission("foo", null, "keyword").uri.spec
-  }
+    searchURL: Services.search.defaultEngine.getSubmission("foo", null, "keyword").uri.spec,
+  },
 ];
 
 function test() {
   waitForExplicitFinish();
 
   let windowObserver = {
     observe(aSubject, aTopic, aData) {
       if (aTopic == "domwindowopened") {
         ok(false, "Alert window opened");
         let win = aSubject;
         win.addEventListener("load", function() {
           win.close();
         }, {once: true});
         executeSoon(finish);
       }
-    }
+    },
   };
 
   Services.ww.registerNotification(windowObserver);
 
   let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
 
   // We use a web progress listener in the content process to cancel
   // the request. For everything else, we can do the work in the
@@ -46,17 +46,17 @@ function test() {
                        Ci.nsIWebProgressListener.STATE_START;
         if (!(flags & docStart)) {
           return;
         }
 
         req.cancel(Cr.NS_ERROR_FAILURE);
       },
 
-      QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener", "nsIWebProgressListener2", "nsISupportsWeakReference"])
+      QueryInterface: ChromeUtils.generateQI(["nsIWebProgressListener", "nsIWebProgressListener2", "nsISupportsWeakReference"]),
     };
 
     let webProgress = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
         .getInterface(Ci.nsIWebProgress);
     webProgress.addProgressListener(listener,
                                     Ci.nsIWebProgress.NOTIFY_STATE_DOCUMENT);
 
     addEventListener("unload", () => {
@@ -74,17 +74,17 @@ function test() {
 
       info("received document start");
 
       ok(req instanceof Ci.nsIChannel, "req is a channel");
       is(req.originalURI.spec, gCurrTest.searchURL, "search URL was loaded");
       info("Actual URI: " + req.URI.spec);
 
       executeSoon(nextTest);
-    }
+    },
   };
 
   gBrowser.addProgressListener(listener);
 
   registerCleanupFunction(function() {
     Services.ww.unregisterNotification(windowObserver);
 
     gBrowser.removeProgressListener(listener);
--- a/browser/base/content/test/general/browser_keywordSearch_postData.js
+++ b/browser/base/content/test/general/browser_keywordSearch_postData.js
@@ -2,23 +2,23 @@
  * Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/
  **/
 
 var gTests = [
   {
     name: "normal search (search service)",
     testText: "test search",
-    expectText: "test+search"
+    expectText: "test+search",
   },
   {
     name: "?-prefixed search (search service)",
     testText: "?   foo  ",
-    expectText: "foo"
-  }
+    expectText: "foo",
+  },
 ];
 
 function test() {
   waitForExplicitFinish();
 
   let tab = gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
 
   let searchObserver = function search_observer(aSubject, aTopic, aData) {
--- a/browser/base/content/test/general/browser_newTabDrop.js
+++ b/browser/base/content/test/general/browser_newTabDrop.js
@@ -177,17 +177,17 @@ add_task(async function multiple_urls() 
 
 // Open single search if there's no URL.
 add_task(async function multiple_text() {
   await dropText(`
     non url0
     non url1
     non url2
 `, [
-  ANY_URL
+  ANY_URL,
 ]);
 });
 
 function dropText(text, expectedURLs) {
   return drop([[{type: "text/plain", data: text}]], expectedURLs);
 }
 
 async function drop(dragData, expectedURLs) {
--- a/browser/base/content/test/general/browser_plainTextLinks.js
+++ b/browser/base/content/test/general/browser_plainTextLinks.js
@@ -81,17 +81,17 @@ add_task(async function() {
       () => {
         selection.selectAllChildren(span4);
         return selection.getRangeAt(0);
       },
       () => {
         mainDiv.innerHTML = "(open-suse.ru)";
         return setSelection(mainDiv, mainDiv, 1, 13);
       },
-      () => setSelection(mainDiv, mainDiv, 1, 14)
+      () => setSelection(mainDiv, mainDiv, 1, 14),
     ];
   });
 
   let checks = [
     () => testExpected(false, "The link context menu should show for http://www.example.com"),
     () => testExpected(false, "The link context menu should show for www.example.com"),
     () => testExpected(true, "The link context menu should not show for ww.example.com"),
     () => {
@@ -109,17 +109,17 @@ add_task(async function() {
     },
     () => testExpected(false, "Link options should show for www.example.com  "),
     () => testExpected(false, "Link options should show for triple-click selections"),
     () => testLinkExpected("http://www.example.com/", "Linkified text should open the correct link"),
     () => {
       testExpected(false, "Link options should show for open-suse.ru");
       testLinkExpected("http://open-suse.ru/", "Linkified text should open the correct link");
     },
-    () => testExpected(true, "Link options should not show for 'open-suse.ru)'")
+    () => testExpected(true, "Link options should not show for 'open-suse.ru)'"),
   ];
 
   let contentAreaContextMenu = document.getElementById("contentAreaContextMenu");
 
   for (let testid = 0; testid < checks.length; testid++) {
     let menuPosition = await ContentTask.spawn(gBrowser.selectedBrowser, { testid }, async function(arg) {
       let range = content.tests[arg.testid]();
 
--- a/browser/base/content/test/general/browser_save_link_when_window_navigates.js
+++ b/browser/base/content/test/general/browser_save_link_when_window_navigates.js
@@ -105,17 +105,17 @@ var windowObserver = {
             windowObserver._callback(win);
             delete windowObserver._callback;
           } else {
             ok(false, "Unexpected UCT dialog!");
           }
         });
       }
     }, {once: true});
-  }
+  },
 };
 
 Services.ww.registerNotification(windowObserver);
 
 function test() {
   waitForExplicitFinish();
 
   function testOnWindow(options, callback) {
--- a/browser/base/content/test/general/browser_save_private_link_perwindowpb.js
+++ b/browser/base/content/test/general/browser_save_private_link_perwindowpb.js
@@ -18,17 +18,17 @@ function promiseNoCacheEntry(filename) {
       },
       onCacheEntryInfo(uri) {
         let urispec = uri.asciiSpec;
         info(urispec);
         is(urispec.includes(filename), false, "web content present in disk cache");
       },
       onCacheEntryVisitCompleted() {
         resolve();
-      }
+      },
     };
     function Visitor() {}
 
     let storage = Services.cache2.diskCacheStorage(Services.loadContextInfo.default, false);
     storage.asyncVisitStorage(new Visitor(), true /* Do walk entries */);
   });
 }
 
@@ -75,17 +75,17 @@ add_task(async function() {
   let privateWindow = await BrowserTestUtils.openNewBrowserWindow({private: true});
   let tab = await BrowserTestUtils.openNewForegroundTab(privateWindow.gBrowser, testURI);
 
   let contextMenu = privateWindow.document.getElementById("contentAreaContextMenu");
   let popupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
   let popupHidden = BrowserTestUtils.waitForEvent(contextMenu, "popuphidden");
   await BrowserTestUtils.synthesizeMouseAtCenter("#img", {
     type: "contextmenu",
-    button: 2
+    button: 2,
   }, tab.linkedBrowser);
   await popupShown;
 
   Services.cache2.clear();
 
   let imageDownloaded = promiseImageDownloaded();
   // Select "Save Image As" option from context menu
   privateWindow.document.getElementById("context-saveimage").doCommand();
--- a/browser/base/content/test/general/browser_search_discovery.js
+++ b/browser/base/content/test/general/browser_search_discovery.js
@@ -15,17 +15,17 @@ let searchDiscoveryTests = [
   { href: "https://not.mozilla.com", text: "HTTPS ok" },
   { href: "ftp://not.mozilla.com", text: "FTP ok" },
   { href: "data:text/foo,foo", pass: false, text: "data URI not permitted" },
   { href: "javascript:alert(0)", pass: false, text: "JS URI not permitted" },
   { type: "APPLICATION/OPENSEARCHDESCRIPTION+XML", text: "type is case insensitve" },
   { type: " application/opensearchdescription+xml ", text: "type may contain extra whitespace" },
   { type: "application/opensearchdescription+xml; charset=utf-8", text: "type may have optional parameters (RFC2046)" },
   { type: "aapplication/opensearchdescription+xml", pass: false, text: "type should not be loosely matched" },
-  { rel: "search search search", count: 1, text: "only one engine should be added" }
+  { rel: "search search search", count: 1, text: "only one engine should be added" },
 ];
 
 async function searchDiscovery() {
   let browser = gBrowser.selectedBrowser;
 
   for (let testCase of searchDiscoveryTests) {
     if (testCase.pass == undefined)
       testCase.pass = true;
--- a/browser/base/content/test/general/browser_storagePressure_notification.js
+++ b/browser/base/content/test/general/browser_storagePressure_notification.js
@@ -10,17 +10,17 @@ function notifyStoragePressure(usage = 1
   usageWrapper.data = usage;
   Services.obs.notifyObservers(usageWrapper, "QuotaManager::StoragePressure");
   return notifyPromise;
 }
 
 function openAboutPrefPromise() {
   let promises = [
     BrowserTestUtils.waitForLocationChange(gBrowser, "about:preferences#privacy"),
-    TestUtils.topicObserved("privacy-pane-loaded", () => true)
+    TestUtils.topicObserved("privacy-pane-loaded", () => true),
   ];
   return Promise.all(promises);
 }
 
 // Test only displaying notification once within the given interval
 add_task(async function() {
   const TEST_NOTIFICATION_INTERVAL_MS = 2000;
   await SpecialPowers.pushPrefEnv({set: [["browser.storageManager.pressureNotification.minIntervalMS", TEST_NOTIFICATION_INTERVAL_MS]]});
--- a/browser/base/content/test/general/browser_tab_dragdrop.js
+++ b/browser/base/content/test/general/browser_tab_dragdrop.js
@@ -49,17 +49,17 @@ async function cacheObjectValue(browser)
       try {
         result = plugin.checkObjectValue(win.objectValue);
       } catch (e) {
         exception = e.toString();
       }
       info(`sending plugin.checkObjectValue(objectValue): ${result}`);
       sendAsyncMessage("Test:CheckObjectValueResult", {
         result,
-        exception
+        exception,
       });
     };
 
     addMessageListener("Test:CheckObjectValue", win.checkObjectValueListener);
   });
 }
 
 // Note, can't run this via registerCleanupFunction because it needs the
@@ -103,17 +103,17 @@ add_task(async function() {
   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED);
 
   // create a few tabs
   let tabs = [
     gBrowser.tabs[0],
     BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true}),
     BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true}),
     BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true}),
-    BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true})
+    BrowserTestUtils.addTab(gBrowser, "about:blank", {skipAnimation: true}),
   ];
 
   // Initially 0 1 2 3 4
   await loadURI(tabs[1], "data:text/html;charset=utf-8,<title>tab1</title><body>tab1<iframe>");
   await loadURI(tabs[2], "data:text/plain;charset=utf-8,tab2");
   await loadURI(tabs[3], "data:text/html;charset=utf-8,<title>tab3</title><body>tab3<iframe>");
   await loadURI(tabs[4], "http://example.com/browser/browser/base/content/test/general/browser_tab_dragdrop_embed.html");
   await BrowserTestUtils.switchTab(gBrowser, tabs[3]);
--- a/browser/base/content/test/general/browser_tabfocus.js
+++ b/browser/base/content/test/general/browser_tabfocus.js
@@ -20,17 +20,17 @@ EventStore.prototype = {
   "push": function(event) {
     if (event.indexOf("1") > -1) {
       this.window1.push(event);
     } else if (event.indexOf("2") > -1) {
       this.window2.push(event);
     } else {
       this["main-window"].push(event);
     }
-  }
+  },
 };
 
 var tab1 = null;
 var tab2 = null;
 var browser1 = null;
 var browser2 = null;
 var _lastfocus;
 var _lastfocuswindow = null;
--- a/browser/base/content/test/general/browser_testOpenNewRemoteTabsFromNonRemoteBrowsers.js
+++ b/browser/base/content/test/general/browser_testOpenNewRemoteTabsFromNonRemoteBrowsers.js
@@ -76,17 +76,17 @@ add_task(async function test_new_tab() {
 
 /**
  * Test that if we open a new window from a link in a non-remote
  * browser in an e10s window, that the new window is not an e10s
  * window. Also tests with a private browsing window.
  */
 add_task(async function test_new_window() {
   let normalWindow = await BrowserTestUtils.openNewBrowserWindow({
-    remote: true
+    remote: true,
   }, true);
   let privateWindow = await BrowserTestUtils.openNewBrowserWindow({
     remote: true,
     private: true,
   }, true);
 
   // Fiddle with the prefs so that we open target="_blank" links
   // in new windows instead of new tabs.
--- a/browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js
+++ b/browser/base/content/test/general/browser_viewSourceInTabOnViewSource.js
@@ -1,17 +1,17 @@
 function wait_while_tab_is_busy() {
   return new Promise(resolve => {
     let progressListener = {
       onStateChange(aWebProgress, aRequest, aStateFlags, aStatus) {
         if (aStateFlags & Ci.nsIWebProgressListener.STATE_STOP) {
           gBrowser.removeProgressListener(this);
           setTimeout(resolve, 0);
         }
-      }
+      },
     };
     gBrowser.addProgressListener(progressListener);
   });
 }
 
 // This function waits for the tab to stop being busy instead of waiting for it
 // to load, since the elementsForViewSource change happens at that time.
 var with_new_tab_opened = async function(options, taskFn) {
--- a/browser/base/content/test/general/browser_web_channel.html
+++ b/browser/base/content/test/general/browser_web_channel.html
@@ -50,31 +50,31 @@
   function test_generic() {
     var event = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "generic",
         message: {
           something: {
             nested: "hello",
           },
-        }
-      })
+        },
+      }),
     });
 
     window.dispatchEvent(event);
   }
 
   function test_twoWay() {
     var firstMessage = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "twoway",
         message: {
           command: "one",
         },
-      })
+      }),
     });
 
     window.addEventListener("WebChannelMessageToContent", function(e) {
       var secondMessage = new window.CustomEvent("WebChannelMessageToChrome", {
         detail: JSON.stringify({
           id: "twoway",
           message: {
             command: "two",
@@ -91,24 +91,24 @@
     window.dispatchEvent(firstMessage);
   }
 
   function test_multichannel() {
     var event1 = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "wrongchannel",
         message: {},
-      })
+      }),
     });
 
     var event2 = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "multichannel",
         message: {},
-      })
+      }),
     });
 
     window.dispatchEvent(event1);
     window.dispatchEvent(event2);
   }
 
   function test_iframe() {
     // Note that this message is the response to the message sent
@@ -138,95 +138,95 @@
     }, true);
   }
 
   function test_bubbles() {
     var event = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "not_a_window",
         message: {
-          command: "start"
-        }
-      })
+          command: "start",
+        },
+      }),
     });
 
     var nonWindowTarget = document.getElementById("not_a_window");
 
     nonWindowTarget.addEventListener("WebChannelMessageToContent", function(e) {
       echoEventToChannel(e, "not_a_window");
     }, true);
 
 
     nonWindowTarget.dispatchEvent(event);
   }
 
   function test_object() {
     let objectMessage = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: {
         id: "objects",
-        message: { type: "object" }
-      }
+        message: { type: "object" },
+      },
     });
 
     let stringMessage = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "objects",
-        message: { type: "string" }
-      })
+        message: { type: "string" },
+      }),
     });
     // Test fails if objectMessage is received, we send stringMessage to know
     // when we should stop listening for objectMessage
     window.dispatchEvent(objectMessage);
     window.dispatchEvent(stringMessage);
   }
 
   function test_error_thrown() {
    var event = new window.CustomEvent("WebChannelMessageToChrome", {
      detail: JSON.stringify({
        id: "error",
        message: {
-         command: "oops"
-       }
-     })
+         command: "oops",
+       },
+     }),
    });
 
    // echo the response back to chrome - chrome will check it is the
    // expected error.
    window.addEventListener("WebChannelMessageToContent", function(e) {
      echoEventToChannel(e, "echo");
    }, true);
 
    window.dispatchEvent(event);
   }
 
   function test_error_invalid_channel() {
    var event = new window.CustomEvent("WebChannelMessageToChrome", {
      detail: JSON.stringify({
        id: "invalid-channel",
        message: {
-         command: "oops"
-       }
-     })
+         command: "oops",
+       },
+     }),
    });
 
    // echo the response back to chrome - chrome will check it is the
    // expected error.
    window.addEventListener("WebChannelMessageToContent", function(e) {
      echoEventToChannel(e, "echo");
    }, true);
 
    window.dispatchEvent(event);
   }
 
   function echoEventToChannel(e, channelId) {
     var echoedEvent = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: channelId,
         message: e.detail.message,
-      })
+      }),
     });
 
     e.target.dispatchEvent(echoedEvent);
   }
 </script>
 
 <div id="not_a_window"></div>
 </body>
--- a/browser/base/content/test/general/browser_web_channel.js
+++ b/browser/base/content/test/general/browser_web_channel.js
@@ -29,17 +29,17 @@ var gTests = [
           is(message.something.nested, "hello");
           channel.stopListening();
           gBrowser.removeTab(tab);
           resolve();
         });
 
         tab = BrowserTestUtils.addTab(gBrowser, HTTP_PATH + HTTP_ENDPOINT + "?generic");
       });
-    }
+    },
   },
   {
     desc: "WebChannel generic message in a private window.",
     async run() {
       let promiseTestDone = new Promise(function(resolve, reject) {
         let channel = new WebChannel("generic", Services.io.newURI(HTTP_PATH));
         channel.listen(function(id, message, target) {
           is(id, "generic");
@@ -49,17 +49,17 @@ var gTests = [
         });
       });
 
       const url = HTTP_PATH + HTTP_ENDPOINT + "?generic";
       let privateWindow = await BrowserTestUtils.openNewBrowserWindow({private: true});
       await BrowserTestUtils.openNewForegroundTab(privateWindow.gBrowser, url);
       await promiseTestDone;
       await BrowserTestUtils.closeWindow(privateWindow);
-    }
+    },
   },
   {
     desc: "WebChannel two way communication",
     run() {
       return new Promise(function(resolve, reject) {
         let tab;
         let channel = new WebChannel("twoway", Services.io.newURI(HTTP_PATH));
 
@@ -76,17 +76,17 @@ var gTests = [
             channel.stopListening();
             gBrowser.removeTab(tab);
             resolve();
           }
         });
 
         tab = BrowserTestUtils.addTab(gBrowser, HTTP_PATH + HTTP_ENDPOINT + "?twoway");
       });
-    }
+    },
   },
   {
     desc: "WebChannel two way communication in an iframe",
     async run() {
       let parentChannel = new WebChannel("echo", Services.io.newURI(HTTP_PATH));
       let iframeChannel = new WebChannel("twoway", Services.io.newURI(HTTP_IFRAME_PATH));
       let promiseTestDone = new Promise(function(resolve, reject) {
         parentChannel.listen(function(id, message, sender) {
@@ -104,23 +104,23 @@ var gTests = [
           if (message.command === "two") {
             is(message.detail.data.nested, true);
             resolve();
           }
         });
       });
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?iframe"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?iframe",
       }, async function() {
         await promiseTestDone;
         parentChannel.stopListening();
         iframeChannel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel response to a redirected iframe",
     async run() {
       /**
        * This test checks that WebChannel responses are only sent
        * to an iframe if the iframe has not redirected to another origin.
        * Test flow:
@@ -168,40 +168,40 @@ var gTests = [
           } else {
             reject(new Error(`Unexpected command ${message.command}`));
           }
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?iframe_pre_redirect"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?iframe_pre_redirect",
       }, async function() {
         await promiseTestDone;
         preRedirectChannel.stopListening();
         postRedirectChannel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel multichannel",
     run() {
       return new Promise(function(resolve, reject) {
         let tab;
         let channel = new WebChannel("multichannel", Services.io.newURI(HTTP_PATH));
 
         channel.listen(function(id, message, sender) {
           is(id, "multichannel");
           gBrowser.removeTab(tab);
           resolve();
         });
 
         tab = BrowserTestUtils.addTab(gBrowser, HTTP_PATH + HTTP_ENDPOINT + "?multichannel");
       });
-    }
+    },
   },
   {
     desc: "WebChannel unsolicited send, using system principal",
     async run() {
       let channel = new WebChannel("echo", Services.io.newURI(HTTP_PATH));
 
       // an unsolicted message is sent from Chrome->Content which is then
       // echoed back. If the echo is received here, then the content
@@ -212,26 +212,26 @@ var gTests = [
           is(message.command, "unsolicited");
 
           resolve();
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?unsolicited"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?unsolicited",
       }, async function(targetBrowser) {
         channel.send({ command: "unsolicited" }, {
           browser: targetBrowser,
-          principal: Services.scriptSecurityManager.getSystemPrincipal()
+          principal: Services.scriptSecurityManager.getSystemPrincipal(),
         });
         await messagePromise;
         channel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel unsolicited send, using target origin's principal",
     async run() {
       let targetURI = Services.io.newURI(HTTP_PATH);
       let channel = new WebChannel("echo", targetURI);
 
       // an unsolicted message is sent from Chrome->Content which is then
@@ -243,28 +243,28 @@ var gTests = [
           is(message.command, "unsolicited");
 
           resolve();
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?unsolicited"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?unsolicited",
       }, async function(targetBrowser) {
 
         channel.send({ command: "unsolicited" }, {
           browser: targetBrowser,
           principal: Services.scriptSecurityManager.createCodebasePrincipal(targetURI, {}),
         });
 
         await messagePromise;
         channel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel unsolicited send with principal mismatch",
     async run() {
       let targetURI = Services.io.newURI(HTTP_PATH);
       let channel = new WebChannel("echo", targetURI);
 
       // two unsolicited messages are sent from Chrome->Content. The first,
@@ -280,42 +280,42 @@ var gTests = [
           } else {
             reject(new Error(`Unexpected command ${message.command}`));
           }
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?unsolicited"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?unsolicited",
       }, async function(targetBrowser) {
 
         let mismatchURI = Services.io.newURI(HTTP_MISMATCH_PATH);
         let mismatchPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(mismatchURI, {});
 
         // send a message to the wrong principal. It should not be delivered
         // to content, and should not be echoed back.
         channel.send({ command: "unsolicited_no_response_expected" }, {
           browser: targetBrowser,
-          principal: mismatchPrincipal
+          principal: mismatchPrincipal,
         });
 
         let targetPrincipal = Services.scriptSecurityManager.createCodebasePrincipal(targetURI, {});
 
         // send the `done` message to the correct principal. It
         // should be echoed back.
         channel.send({ command: "done" }, {
           browser: targetBrowser,
-          principal: targetPrincipal
+          principal: targetPrincipal,
         });
 
         await messagePromise;
         channel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel non-window target",
     async run() {
       /**
        * This test ensures messages can be received from and responses
        * sent to non-window elements.
        *
@@ -336,22 +336,22 @@ var gTests = [
           } else {
             reject(new Error(`Unexpected command ${message.command}`));
           }
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?bubbles"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?bubbles",
       }, async function() {
         await testDonePromise;
         channel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel disallows non-string message from non-whitelisted origin",
     async run() {
       /**
        * This test ensures that non-string messages can't be sent via WebChannels.
        * We create a page (on a non-whitelisted origin) which should send us two
        * messages immediately. The first message has an object for it's detail,
@@ -363,22 +363,22 @@ var gTests = [
         channel.listen((id, message, sender) => {
           is(id, "objects");
           is(message.type, "string");
           resolve();
         });
       });
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?object"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?object",
       }, async function() {
         await testDonePromise;
         channel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel allows both string and non-string message from whitelisted origin",
     async run() {
       /**
        * Same process as above, but we whitelist the origin before loading the page,
        * and expect to get *both* messages back (each exactly once).
        */
@@ -404,23 +404,23 @@ var gTests = [
         });
       });
       const webchannelWhitelistPref = "webchannel.allowObject.urlWhitelist";
       let origWhitelist = Services.prefs.getCharPref(webchannelWhitelistPref);
       let newWhitelist = origWhitelist + " " + HTTP_PATH;
       Services.prefs.setCharPref(webchannelWhitelistPref, newWhitelist);
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?object"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?object",
       }, async function() {
         await testDonePromise;
         Services.prefs.setCharPref(webchannelWhitelistPref, origWhitelist);
         channel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel errors handling the message are delivered back to content",
     async run() {
       const ERRNO_UNKNOWN_ERROR              = 999; // WebChannel.jsm doesn't export this.
 
       // The channel where we purposely fail responding to a command.
       let channel = new WebChannel("error", Services.io.newURI(HTTP_PATH));
@@ -440,23 +440,23 @@ var gTests = [
         channel.listen((id, message, sender) => {
           is(id, "error");
           is(message.command, "oops");
           throw new Error("oh no");
         });
       });
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?error_thrown"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?error_thrown",
       }, async function() {
         await testDonePromise;
         channel.stopListening();
         echoChannel.stopListening();
       });
-    }
+    },
   },
   {
     desc: "WebChannel errors due to an invalid channel are delivered back to content",
     async run() {
       const ERRNO_NO_SUCH_CHANNEL            = 2; // WebChannel.jsm doesn't export this.
       // The channel where we see the response when the content sees the error
       let echoChannel = new WebChannel("echo", Services.io.newURI(HTTP_PATH));
 
@@ -466,22 +466,22 @@ var gTests = [
           is(id, "echo");
           is(message.error, "No Such Channel");
           is(message.errno, ERRNO_NO_SUCH_CHANNEL);
           resolve();
         });
       });
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: HTTP_PATH + HTTP_ENDPOINT + "?error_invalid_channel"
+        url: HTTP_PATH + HTTP_ENDPOINT + "?error_invalid_channel",
       }, async function() {
         await testDonePromise;
         echoChannel.stopListening();
       });
-    }
+    },
   },
 ]; // gTests
 
 function test() {
   waitForExplicitFinish();
 
   (async function() {
     for (let testCase of gTests) {
--- a/browser/base/content/test/general/browser_web_channel_iframe.html
+++ b/browser/base/content/test/general/browser_web_channel_iframe.html
@@ -27,17 +27,17 @@
 
   function test_iframe() {
     var firstMessage = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: "twoway",
         message: {
           command: "one",
         },
-      })
+      }),
     });
 
     window.addEventListener("WebChannelMessageToContent", function(e) {
       var secondMessage = new window.CustomEvent("WebChannelMessageToChrome", {
         detail: JSON.stringify({
           id: "twoway",
           message: {
             command: "two",
--- a/browser/base/content/test/general/bug592338.html
+++ b/browser/base/content/test/general/bug592338.html
@@ -1,17 +1,17 @@
 <html>
 <head>
 <script type="text/javascript">
 var theme = {
   id: "test",
   name: "Test Background",
   headerURL: "http://example.com/firefox/personas/01/header.jpg",
   textcolor: "#fff",
-  accentcolor: "#6b6b6b"
+  accentcolor: "#6b6b6b",
 };
 
 function setTheme(node) {
   node.setAttribute("data-browsertheme", JSON.stringify(theme));
   var event = document.createEvent("Events");
   event.initEvent("InstallBrowserTheme", true, false);
   node.dispatchEvent(event);
 }
--- a/browser/base/content/test/general/contentSearchUI.js
+++ b/browser/base/content/test/general/contentSearchUI.js
@@ -44,20 +44,20 @@ var messageHandlers = {
   },
 
   changeComposition(arg) {
     let data = typeof(arg) == "string" ? arg : arg.data;
     content.synthesizeCompositionChange({
       composition: {
         string: data,
         clauses: [
-          { length: data.length, attr: content.COMPOSITION_ATTR_RAW_CLAUSE }
-        ]
+          { length: data.length, attr: content.COMPOSITION_ATTR_RAW_CLAUSE },
+        ],
       },
-      caret: { start: data.length, length: 0 }
+      caret: { start: data.length, length: 0 },
     });
     let wait = arg.waitForSuggestions ? waitForSuggestions : cb => cb();
     wait(ack.bind(null, "changeComposition"));
   },
 
   commitComposition() {
     content.synthesizeComposition({ type: "compositioncommitasis" });
     ack("commitComposition");
--- a/browser/base/content/test/general/contextmenu_common.js
+++ b/browser/base/content/test/general/contextmenu_common.js
@@ -298,17 +298,17 @@ async function test_contextmenu(selector
     });
   }
 
   let awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
   await BrowserTestUtils.synthesizeMouse(selector, options.offsetX || 0, options.offsetY || 0, {
       type: "contextmenu",
       button: 2,
       shiftkey: options.shiftkey,
-      centered: options.centered
+      centered: options.centered,
     },
     gBrowser.selectedBrowser);
   await awaitPopupShown;
   info("Popup Shown");
 
   if (options.onContextMenuShown) {
     await options.onContextMenuShown();
     info("Completed onContextMenuShown");
@@ -326,17 +326,17 @@ async function test_contextmenu(selector
       let inspectA11YItems = ["context-inspect-a11y", true];
       menuItems = menuItems.concat(inspectA11YItems);
     }
 
     if (options.maybeScreenshotsPresent &&
         !Services.prefs.getBoolPref("extensions.screenshots.disabled", false)) {
       let screenshotItems = [
         "---", null,
-        "screenshots_mozilla_org_create-screenshot", true
+        "screenshots_mozilla_org_create-screenshot", true,
       ];
 
       menuItems = menuItems.concat(screenshotItems);
     }
 
     checkContextMenu(menuItems);
   }
 
--- a/browser/base/content/test/general/head.js
+++ b/browser/base/content/test/general/head.js
@@ -482,17 +482,17 @@ function promiseOnBookmarkItemAdded(aExp
       onBeginUpdateBatch() {},
       onEndUpdateBatch() {},
       onItemRemoved() {},
       onItemChanged() {},
       onItemVisited() {},
       onItemMoved() {},
       QueryInterface: ChromeUtils.generateQI([
         Ci.nsINavBookmarkObserver,
-      ])
+      ]),
     };
     info("Waiting for a bookmark to be added");
     PlacesUtils.bookmarks.addObserver(bookmarksObserver);
   });
 }
 
 async function loadBadCertPage(url) {
   const EXCEPTION_DIALOG_URI = "chrome://pippki/content/exceptionDialog.xul";
@@ -505,17 +505,17 @@ async function loadBadCertPage(url) {
           Services.obs.removeObserver(this, "cert-exception-ui-ready");
           let certExceptionDialog = getCertExceptionDialog(EXCEPTION_DIALOG_URI);
           ok(certExceptionDialog, "found exception dialog");
           executeSoon(function() {
             certExceptionDialog.documentElement.getButton("extra1").click();
             resolve();
           });
         }
-      }
+      },
     };
 
     Services.obs.addObserver(certExceptionDialogObserver,
                              "cert-exception-ui-ready");
   });
 
   let loaded = BrowserTestUtils.waitForErrorPage(gBrowser.selectedBrowser);
   await BrowserTestUtils.loadURI(gBrowser.selectedBrowser, url);
--- a/browser/base/content/test/general/offlineByDefault.js
+++ b/browser/base/content/test/general/offlineByDefault.js
@@ -1,12 +1,12 @@
 var offlineByDefault = {
   defaultValue: false,
   set(allow) {
     this.defaultValue = SpecialPowers.Services.prefs.getBoolPref("offline-apps.allow_by_default", false);
     SpecialPowers.Services.prefs.setBoolPref("offline-apps.allow_by_default", allow);
   },
   reset() {
     SpecialPowers.Services.prefs.setBoolPref("offline-apps.allow_by_default", this.defaultValue);
-  }
+  },
 };
 
 offlineByDefault.set(false);
--- a/browser/base/content/test/pageinfo/browser_pageinfo_image_info.js
+++ b/browser/base/content/test/pageinfo/browser_pageinfo_image_info.js
@@ -1,15 +1,15 @@
 /* Make sure that "View Image Info" loads the correct image data */
 function getImageInfo(imageElement) {
   return {
     currentSrc: imageElement.currentSrc,
     width: imageElement.width,
     height: imageElement.height,
-    imageText: imageElement.title || imageElement.alt
+    imageText: imageElement.title || imageElement.alt,
   };
 }
 
 const URI =
   "data:text/html," +
   "<style type='text/css'>%23test-image,%23not-test-image {background-image: url('about:logo?c');}</style>" +
   "<img src='about:logo?b' height=300 width=350 alt=2 id='not-test-image'>" +
   "<img src='about:logo?b' height=300 width=350 alt=2>" +
--- a/browser/base/content/test/performance/browser_appmenu.js
+++ b/browser/base/content/test/performance/browser_appmenu.js
@@ -53,19 +53,19 @@ add_task(async function() {
       r.x1 >= menuButtonRect.left && r.x2 <= menuButtonRect.right
       // XXX For some reason the menu panel isn't in our screenshots,
       // but that's where we actually expect many changes.
     )),
     exceptions: [
       {name: "the urlbar placeolder moves up and down by a few pixels",
        condition: r =>
          r.x1 >= textBoxRect.left && r.x2 <= textBoxRect.right &&
-         r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom
-      }
-    ]
+         r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom,
+      },
+    ],
   };
 
   // First, open the appmenu.
   await withPerfObserver(() => gCUITestUtils.openMainMenu(), {
     expectedReflows: EXPECTED_APPMENU_OPEN_REFLOWS,
     frames: frameExpectations,
   });
 
--- a/browser/base/content/test/performance/browser_startup.js
+++ b/browser/base/content/test/performance/browser_startup.js
@@ -35,25 +35,25 @@ const startupPhases = {
     ]),
     modules: new Set([
       "resource://gre/modules/AppConstants.jsm",
       "resource://gre/modules/ActorManagerParent.jsm",
       "resource://gre/modules/CustomElementsListener.jsm",
       "resource://gre/modules/ExtensionUtils.jsm",
       "resource://gre/modules/XPCOMUtils.jsm",
       "resource://gre/modules/Services.jsm",
-    ])
+    ]),
   }},
 
   // For the following phases of startup we have only a black list for now
 
   // We are at this phase after creating the first browser window (ie. after final-ui-startup).
   "before opening first browser window": {blacklist: {
     modules: new Set([
-    ])
+    ]),
   }},
 
   // We reach this phase right after showing the first browser window.
   // This means that anything already loaded at this point has been loaded
   // before first paint and delayed it.
   "before first paint": {blacklist: {
     components: new Set([
       "nsSearchService.js",
@@ -69,17 +69,17 @@ const startupPhases = {
       "resource://gre/modules/NewTabUtils.jsm",
       "resource://gre/modules/PageThumbs.jsm",
       "resource://gre/modules/PlacesUtils.jsm",
       "resource://gre/modules/Promise.jsm", // imported by devtools during _delayedStartup
       "resource://gre/modules/Preferences.jsm",
     ]),
     services: new Set([
       "@mozilla.org/browser/search-service;1",
-    ])
+    ]),
   }},
 
   // We are at this phase once we are ready to handle user events.
   // Anything loaded at this phase or before gets in the way of the user
   // interacting with the first browser window.
   "before handling user events": {blacklist: {
     components: new Set([
       "PageIconProtocolHandler.js",
@@ -97,17 +97,17 @@ const startupPhases = {
       "resource://gre/modules/FxAccountsStorage.jsm",
       "resource://gre/modules/PlacesBackups.jsm",
       "resource://gre/modules/PlacesSyncUtils.jsm",
       "resource://gre/modules/Sqlite.jsm",
     ]),
     services: new Set([
       "@mozilla.org/browser/annotation-service;1",
       "@mozilla.org/browser/nav-bookmarks-service;1",
-    ])
+    ]),
   }},
 
   // Things that are expected to be completely out of the startup path
   // and loaded lazily when used for the first time by the user should
   // be blacklisted here.
   "before becoming idle": {blacklist: {
     components: new Set([
       "UnifiedComplete.js",
--- a/browser/base/content/test/performance/browser_startup_content.js
+++ b/browser/base/content/test/performance/browser_startup_content.js
@@ -86,17 +86,17 @@ const intermittently_loaded_whitelist = 
   ]),
 };
 
 const blacklist = {
   services: new Set([
     "@mozilla.org/base/telemetry-startup;1",
     "@mozilla.org/embedcomp/default-tooltiptextprovider;1",
     "@mozilla.org/push/Service;1",
-  ])
+  ]),
 };
 
 add_task(async function() {
   SimpleTest.requestCompleteLog();
 
   let tab = await BrowserTestUtils.openNewForegroundTab({gBrowser,
                                                          forceNewProcess: true});
 
--- a/browser/base/content/test/performance/browser_tabclose.js
+++ b/browser/base/content/test/performance/browser_tabclose.js
@@ -61,21 +61,21 @@ add_task(async function() {
         exceptions: [
           {name: "bug 1444886 - the next tab should be selected at the same time" +
                  " as the closed one disappears",
            condition: r =>
              // In tab strip
              r.y1 >= tabStripRect.top && r.y2 <= tabStripRect.bottom &&
              r.x1 >= tabStripRect.left && r.x2 <= tabStripRect.right &&
              // Width of one tab plus tab separator(s)
-             inRange(gBrowser.selectedTab.clientWidth - r.w, 0, 2)
+             inRange(gBrowser.selectedTab.clientWidth - r.w, 0, 2),
           },
           {name: "bug 1446449 - spurious tab switch spinner",
            condition: r =>
              AppConstants.DEBUG &&
              // In the content area
-             r.y1 >= document.getElementById("appcontent").getBoundingClientRect().top
+             r.y1 >= document.getElementById("appcontent").getBoundingClientRect().top,
           },
-        ]
-      }
+        ],
+      },
      });
   is(EXPECTED_REFLOWS.length, 0, "No reflows are expected when closing a tab");
 });
--- a/browser/base/content/test/performance/browser_tabclose_grow.js
+++ b/browser/base/content/test/performance/browser_tabclose_grow.js
@@ -54,14 +54,14 @@ add_task(async function() {
           // We expect plenty of changed rects within the tab strip.
           r.y1 >= tabStripRect.top && r.y2 <= tabStripRect.bottom &&
           r.x1 >= tabStripRect.left && r.x2 <= tabStripRect.right &&
           // It would make sense for each rect to have a width smaller than
           // a tab (ie. tabstrip.width / tabcount), but tabs are small enough
           // that they sometimes get reported in the same rect.
           // So we accept up to the width of n-1 tabs.
           r.w <= (gBrowser.tabs.length - 1) * Math.ceil(tabStripRect.width / gBrowser.tabs.length)
-        ))
-      }
+        )),
+      },
      });
 
   await removeAllButFirstTab();
 });
--- a/browser/base/content/test/performance/browser_tabopen.js
+++ b/browser/base/content/test/performance/browser_tabopen.js
@@ -74,31 +74,31 @@ add_task(async function() {
           {name: "bug 1446452 - the new tab should appear at the same time as the" +
                  " previous one gets deselected",
            condition: r =>
              // In tab strip
              r.y1 >= tabStripRect.top && r.y2 <= tabStripRect.bottom &&
              // Position and size of the first tab.
              r.x1 == firstTabRect.left &&
              inRange(r.w, firstTabRect.width - 1, // -1 as the border doesn't change
-                     firstTabRect.width)
+                     firstTabRect.width),
           },
           {name: "the urlbar placeolder moves up and down by a few pixels",
            // This seems to only happen on the second run in --verify
            condition: r =>
              r.x1 >= textBoxRect.left && r.x2 <= textBoxRect.right &&
-             r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom
+             r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom,
           },
           {name: "bug 1477966 - the name of a deselected tab should appear immediately",
            condition: r => AppConstants.platform == "macosx" &&
                            r.x1 >= firstTabLabelRect.x &&
                            r.x2 <= firstTabLabelRect.right &&
                            r.y1 >= firstTabLabelRect.y &&
-                           r.y2 <= firstTabLabelRect.bottom
-          }
-        ]
-      }
+                           r.y2 <= firstTabLabelRect.bottom,
+          },
+        ],
+      },
      });
 
   let switchDone = BrowserTestUtils.waitForEvent(window, "TabSwitchDone");
   BrowserTestUtils.removeTab(gBrowser.selectedTab);
   await switchDone;
 });
--- a/browser/base/content/test/performance/browser_tabopen_squeeze.js
+++ b/browser/base/content/test/performance/browser_tabopen_squeeze.js
@@ -54,16 +54,16 @@ add_task(async function() {
           // that they sometimes get reported in the same rect.
           // So we accept up to the width of n-1 tabs.
           r.w <= (gBrowser.tabs.length - 1) * Math.ceil(tabStripRect.width / gBrowser.tabs.length)
         )),
         exceptions: [
           {name: "the urlbar placeolder moves up and down by a few pixels",
            condition: r =>
              r.x1 >= textBoxRect.left && r.x2 <= textBoxRect.right &&
-             r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom
-          }
-        ]
-      }
+             r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom,
+          },
+        ],
+      },
      });
 
   await removeAllButFirstTab();
 });
--- a/browser/base/content/test/performance/browser_tabstrip_overflow_underflow.js
+++ b/browser/base/content/test/performance/browser_tabstrip_overflow_underflow.js
@@ -45,25 +45,25 @@ add_task(async function() {
       // We expect plenty of changed rects within the tab strip.
       r.y1 >= tabStripRect.top && r.y2 <= tabStripRect.bottom &&
       r.x1 >= tabStripRect.left && r.x2 <= tabStripRect.right
     )),
     exceptions: [
       {name: "the urlbar placeolder moves up and down by a few pixels",
        condition: r =>
          r.x1 >= textBoxRect.left && r.x2 <= textBoxRect.right &&
-         r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom
+         r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom,
       },
       {name: "bug 1446449 - spurious tab switch spinner",
        condition: r =>
          AppConstants.DEBUG &&
          // In the content area
-         r.y1 >= document.getElementById("appcontent").getBoundingClientRect().top
+         r.y1 >= document.getElementById("appcontent").getBoundingClientRect().top,
       },
-    ]
+    ],
   };
 
   await withPerfObserver(async function() {
     let switchDone = BrowserTestUtils.waitForEvent(window, "TabSwitchDone");
     BrowserOpenTab();
     await BrowserTestUtils.waitForEvent(gBrowser.selectedTab, "transitionend",
         false, e => e.propertyName === "max-width");
     await switchDone;
--- a/browser/base/content/test/performance/browser_tabswitch.js
+++ b/browser/base/content/test/performance/browser_tabswitch.js
@@ -59,22 +59,22 @@ add_task(async function() {
         )),
         exceptions: [
           {name: "bug 1446454 - the border between tabs should be painted at" +
                  " the same time as the tab switch",
            condition: r =>
              // In tab strip
              r.y1 >= tabStripRect.top && r.y2 <= tabStripRect.bottom &&
              // 1px border, 1px before the end of the first tab.
-             r.w == 1 && r.x1 == firstTabRect.right - 1
+             r.w == 1 && r.x1 == firstTabRect.right - 1,
           },
           {name: "bug 1446449 - spurious tab switch spinner",
            condition: r =>
              AppConstants.DEBUG &&
              // In the content area
-             r.y1 >= document.getElementById("appcontent").getBoundingClientRect().top
+             r.y1 >= document.getElementById("appcontent").getBoundingClientRect().top,
           },
-        ]
-      }
+        ],
+      },
      });
 
   BrowserTestUtils.removeTab(otherTab);
 });
--- a/browser/base/content/test/performance/browser_toolbariconcolor_restyles.js
+++ b/browser/base/content/test/performance/browser_toolbariconcolor_restyles.js
@@ -1,17 +1,17 @@
 "use strict";
 
 /**
  * Ensure redundant style flushes are not triggered when switching between windows
  */
 add_task(async function test_toolbar_element_restyles_on_activation() {
   let restyles = {
     win1:  {},
-    win2:  {}
+    win2:  {},
   };
 
   // create a window and snapshot the elementsStyled
   let win1 = await BrowserTestUtils.openNewBrowserWindow();
   await new Promise(resolve => waitForFocus(resolve, win1));
 
   // create a 2nd window and snapshot the elementsStyled
   let win2 = await BrowserTestUtils.openNewBrowserWindow();
--- a/browser/base/content/test/performance/browser_urlbar_keyed_search.js
+++ b/browser/base/content/test/performance/browser_urlbar_keyed_search.js
@@ -21,28 +21,28 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [
       "_rebuild@chrome://browser/content/search/search.xml",
       "set_popup@chrome://browser/content/search/search.xml",
       "set_oneOffSearchesEnabled@chrome://browser/content/urlbarBindings.xml",
       "_enableOrDisableOneOffSearches@chrome://browser/content/urlbarBindings.xml",
       "urlbar_XBL_Constructor/<@chrome://browser/content/urlbarBindings.xml",
       "_openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
       "openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
       "openPopup@chrome://global/content/bindings/autocomplete.xml",
-      "set_popupOpen@chrome://global/content/bindings/autocomplete.xml"
+      "set_popupOpen@chrome://global/content/bindings/autocomplete.xml",
     ],
   },
 
   {
     stack: [
       "_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
       "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
       "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml",
       "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml",
       "_invalidate@chrome://global/content/bindings/autocomplete.xml",
-      "invalidate@chrome://global/content/bindings/autocomplete.xml"
+      "invalidate@chrome://global/content/bindings/autocomplete.xml",
     ],
     maxCount: 60, // This number should only ever go down - never up.
   },
 
   {
     stack: [
       "_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
       "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
--- a/browser/base/content/test/performance/browser_urlbar_search.js
+++ b/browser/base/content/test/performance/browser_urlbar_search.js
@@ -21,28 +21,28 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [
       "_rebuild@chrome://browser/content/search/search.xml",
       "set_popup@chrome://browser/content/search/search.xml",
       "set_oneOffSearchesEnabled@chrome://browser/content/urlbarBindings.xml",
       "_enableOrDisableOneOffSearches@chrome://browser/content/urlbarBindings.xml",
       "urlbar_XBL_Constructor/<@chrome://browser/content/urlbarBindings.xml",
       "_openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
       "openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
       "openPopup@chrome://global/content/bindings/autocomplete.xml",
-      "set_popupOpen@chrome://global/content/bindings/autocomplete.xml"
+      "set_popupOpen@chrome://global/content/bindings/autocomplete.xml",
     ],
   },
 
   {
     stack: [
       "_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
       "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
       "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml",
       "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml",
       "_invalidate@chrome://global/content/bindings/autocomplete.xml",
-      "invalidate@chrome://global/content/bindings/autocomplete.xml"
+      "invalidate@chrome://global/content/bindings/autocomplete.xml",
     ],
     maxCount: 36, // This number should only ever go down - never up.
   },
 
   {
     stack: [
       "_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
       "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
@@ -69,17 +69,17 @@ const EXPECTED_REFLOWS_FIRST_OPEN = [
 const EXPECTED_REFLOWS_SECOND_OPEN = [
   {
     stack: [
       "_handleOverflow@chrome://global/content/bindings/autocomplete.xml",
       "handleOverUnderflow@chrome://global/content/bindings/autocomplete.xml",
       "_reuseAcItem@chrome://global/content/bindings/autocomplete.xml",
       "_appendCurrentResult@chrome://global/content/bindings/autocomplete.xml",
       "_invalidate@chrome://global/content/bindings/autocomplete.xml",
-      "invalidate@chrome://global/content/bindings/autocomplete.xml"
+      "invalidate@chrome://global/content/bindings/autocomplete.xml",
     ],
     maxCount: 24, // This number should only ever go down - never up.
   },
 
   // Bug 1359989
   {
     stack: [
       "_openAutocompletePopup@chrome://browser/content/urlbarBindings.xml",
@@ -170,17 +170,17 @@ add_task(async function() {
       (r.x1 >= textBoxRect.left && r.x2 <= textBoxRect.right &&
        r.y1 >= textBoxRect.top && r.y2 <= textBoxRect.bottom) ||
       // The dropmarker is displayed as active during some of the test.
       // dropmarkerRect.left isn't always an integer, hence the - 1 and + 1
       (r.x1 >= dropmarkerRect.left - 1 && r.x2 <= dropmarkerRect.right + 1 &&
        r.y1 >= dropmarkerRect.top && r.y2 <= dropmarkerRect.bottom)
       // XXX For some reason the awesomebar panel isn't in our screenshots,
       // but that's where we actually expect many changes.
-    ))
+    )),
   };
 
   info("First opening");
   await withPerfObserver(testFn, {expectedReflows: EXPECTED_REFLOWS_FIRST_OPEN,
                                   frames: expectedRects}, win);
 
   info("Second opening");
   await withPerfObserver(testFn, {expectedReflows: EXPECTED_REFLOWS_SECOND_OPEN,
--- a/browser/base/content/test/performance/browser_window_resize.js
+++ b/browser/base/content/test/performance/browser_window_resize.js
@@ -74,17 +74,17 @@ add_task(async function() {
   const SMALL_HEIGHT = 150;
 
   await PlacesUtils.bookmarks.eraseEverything();
 
   // Add a bunch of bookmarks to display in the Bookmarks toolbar
   await PlacesUtils.bookmarks.insertTree({
     guid: PlacesUtils.bookmarks.toolbarGuid,
     children: Array(BOOKMARKS_COUNT).fill("")
-                                    .map((_, i) => ({ url: `http://test.places.${i}/`}))
+                                    .map((_, i) => ({ url: `http://test.places.${i}/`})),
   });
 
   let wasCollapsed = gToolbar.collapsed;
   Assert.ok(wasCollapsed, "The toolbar is collapsed by default");
   if (wasCollapsed) {
     let promiseReady =
       BrowserTestUtils.waitForEvent(gToolbar, "BookmarksToolbarVisibilityUpdated");
     await toggleBookmarksToolbar(true);
--- a/browser/base/content/test/performance/browser_windowclose.js
+++ b/browser/base/content/test/performance/browser_windowclose.js
@@ -50,11 +50,11 @@ add_task(async function() {
     await BrowserTestUtils.closeWindow(win);
     await promiseOrigBrowserFocused;
   }, {expectedReflows: EXPECTED_REFLOWS, frames: {
     filter: rects => rects.filter(r => !(
       // The dropmarker is visible when the window opens and sometimes hasn't
       // finished its transition to opacity: 0 by the time waitForFocus resolves.
       (r.x1 >= dropmarkerRect.left - 1 && r.x2 <= dropmarkerRect.right + 1 &&
        r.y1 >= dropmarkerRect.top && r.y2 <= dropmarkerRect.bottom)
-    ))
+    )),
   }}, win);
 });
--- a/browser/base/content/test/performance/browser_windowopen.js
+++ b/browser/base/content/test/performance/browser_windowopen.js
@@ -88,20 +88,20 @@ add_task(async function() {
       exceptions: [
         {name: "bug 1421463 - reload toolbar icon shouldn't flicker",
          condition: r => inRange(r.h, 13, 14) && inRange(r.w, 14, 16) && // icon size
                          inRange(r.y1, 40, 80) && // in the toolbar
                          // near the left side of the screen
                          // The reload icon is shifted on devedition builds
                          // where there's an additional devtools toolbar icon.
                          AppConstants.MOZ_DEV_EDITION ? inRange(r.x1, 100, 120) :
-                                                        inRange(r.x1, 65, 100)
+                                                        inRange(r.x1, 65, 100),
         },
-      ]
-    }
+      ],
+    },
   };
 
   await withPerfObserver(async function() {
     // Avoid showing the remotecontrol UI.
     await new Promise(resolve => {
       win.addEventListener("DOMContentLoaded", () => {
         delete win.Marionette;
         win.Marionette = {running: false};
--- a/browser/base/content/test/performance/head.js
+++ b/browser/base/content/test/performance/head.js
@@ -49,17 +49,17 @@ async function recordReflows(testPromise
     },
 
     reflowInterruptible(start, end) {
       // Interruptible reflows are the reflows caused by the refresh
       // driver ticking. These are fine.
     },
 
     QueryInterface: ChromeUtils.generateQI([Ci.nsIReflowObserver,
-                                            Ci.nsISupportsWeakReference])
+                                            Ci.nsISupportsWeakReference]),
   };
 
   let docShell = win.docShell;
   docShell.addWeakReflowObserver(observer);
 
   let dirtyFrameFn = event => {
     if (event.type != "MozAfterPaint") {
       dirtyFrame(win);
--- a/browser/base/content/test/permissions/browser_canvas_fingerprinting_resistance.js
+++ b/browser/base/content/test/permissions/browser_canvas_fingerprinting_resistance.js
@@ -45,18 +45,18 @@ function initTab() {
   isnot(canvas.toDataURL(), contentWindow.kPlaceholderData,
       "privacy.resistFingerprinting = false, canvas data != placeholder data");
 }
 
 function enableResistFingerprinting(autoDeclineNoInput) {
   return SpecialPowers.pushPrefEnv({
     set: [
       ["privacy.resistFingerprinting", true],
-      ["privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", autoDeclineNoInput]
-    ]
+      ["privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts", autoDeclineNoInput],
+    ],
   });
 }
 
 function promisePopupShown() {
   return BrowserTestUtils.waitForEvent(PopupNotifications.panel, "popupshown");
 }
 
 function promisePopupHidden() {
--- a/browser/base/content/test/plugins/browser_CTP_crashreporting.js
+++ b/browser/base/content/test/plugins/browser_CTP_crashreporting.js
@@ -133,17 +133,17 @@ add_task(async function() {
       // And wait for the parent to say that the crash report was submitted
       // successfully. This can take time on debug builds.
       await ContentTaskUtils.waitForCondition(() => {
         return statusDiv.getAttribute("status") == "success";
       }, "Timed out waiting for plugin binding to be in success state",
       100, 200);
     });
 
-    let [subject, ] = await crashReportPromise;
+    let [subject ] = await crashReportPromise;
 
     ok(subject instanceof Ci.nsIPropertyBag,
        "The crash report subject should be an nsIPropertyBag.");
 
     let crashData = convertPropertyBag(subject);
     ok(crashData.serverCrashID, "Should have a serverCrashID set.");
 
     // Remove the submitted report file after ensuring it exists.
@@ -205,17 +205,17 @@ add_task(async function() {
     // Then click the button to submit the crash report.
     let buttons = notification.querySelectorAll(".notification-button");
     is(buttons.length, 2, "Should have two buttons.");
 
     // The "Submit Crash Report" button should be the second one.
     let submitButton = buttons[1];
     submitButton.click();
 
-    let [subject, ] = await crashReportPromise;
+    let [subject ] = await crashReportPromise;
 
     ok(subject instanceof Ci.nsIPropertyBag,
        "The crash report subject should be an nsIPropertyBag.");
 
     let crashData = convertPropertyBag(subject);
     ok(crashData.serverCrashID, "Should have a serverCrashID set.");
 
     // Remove the submitted report file after ensuring it exists.
--- a/browser/base/content/test/plugins/browser_bug797677.js
+++ b/browser/base/content/test/plugins/browser_bug797677.js
@@ -15,17 +15,17 @@ add_task(async function() {
 
   gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
   gTestBrowser = gBrowser.selectedBrowser;
 
   let errorListener = {
     observe(aMessage) {
       if (aMessage.message.includes("NS_ERROR_FAILURE"))
         gConsoleErrors++;
-    }
+    },
   };
   Services.console.registerListener(errorListener);
 
   await promiseTabLoadEvent(gBrowser.selectedTab, gTestRoot + "plugin_bug797677.html");
 
   let pluginInfo = await promiseForPluginInfo("plugin");
   is(pluginInfo.pluginFallbackType, Ci.nsIObjectLoadingContent.PLUGIN_UNSUPPORTED, "plugin should not have been found.");
 
--- a/browser/base/content/test/plugins/browser_iterate_hidden_plugins.js
+++ b/browser/base/content/test/plugins/browser_iterate_hidden_plugins.js
@@ -33,17 +33,17 @@ add_task(async function setup() {
  * HIDDEN_CTP_PLUGIN_PREF list, then it shouldn't be visible
  * when iterating navigator.plugins.
  */
 add_task(async function test_plugin_is_hidden_on_iteration() {
   // The plugin should not be visible when we iterate
   // navigator.plugins.
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: "http://example.com"
+    url: "http://example.com",
   }, async function(browser) {
     await ContentTask.spawn(browser, TEST_PLUGIN_NAME, async function(pluginName) {
       let plugins = Array.from(content.navigator.plugins);
       Assert.ok(plugins.every(p => p.name != pluginName),
                 "Should not find Test Plugin");
     });
   });
 
@@ -52,17 +52,17 @@ add_task(async function test_plugin_is_h
   await SpecialPowers.pushPrefEnv({
     set: [[HIDDEN_CTP_PLUGIN_PREF, ""]],
   });
 
   // Note that I have to do this in a new tab since navigator
   // caches navigator.plugins after an initial read.
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: "http://example.com"
+    url: "http://example.com",
   }, async function(browser) {
     await ContentTask.spawn(browser, TEST_PLUGIN_NAME, async function(pluginName) {
       let plugins = Array.from(content.navigator.plugins);
       Assert.ok(plugins.some(p => p.name == pluginName),
                 "Should have found the Test Plugin");
     });
   });
 
@@ -72,17 +72,17 @@ add_task(async function test_plugin_is_h
 /**
  * Tests that if a click-to-play plugin is hidden, that we show the
  * Hidden Plugin notification bar when accessed directly by name
  * via navigator.plugins.
  */
 add_task(async function test_plugin_shows_hidden_notification_on_access() {
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: "http://example.com"
+    url: "http://example.com",
   }, async function(browser) {
     let notificationPromise = waitForNotificationBar("plugin-hidden", gBrowser.selectedBrowser);
 
     await ContentTask.spawn(browser, TEST_PLUGIN_NAME, async function(pluginName) {
       let plugins = content.navigator.plugins;
       // Just accessing the plugin should be enough to trigger the notification.
       // We'll also do a sanity check and make sure that the HiddenPlugin event
       // is firing (which is the event that triggers the notification bar).
@@ -102,17 +102,17 @@ add_task(async function test_plugin_show
   // Make sure that if the plugin wasn't hidden that touching it
   // does _NOT_ show the notification bar.
   await SpecialPowers.pushPrefEnv({
     set: [[HIDDEN_CTP_PLUGIN_PREF, ""]],
   });
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: "http://example.com"
+    url: "http://example.com",
   }, async function(browser) {
     await ContentTask.spawn(browser, TEST_PLUGIN_NAME, async function(pluginName) {
       let plugins = content.navigator.plugins;
       // Instead of waiting for a notification bar that should never come,
       // we'll make sure that the HiddenPlugin event never fires in content
       // (which is the event that triggers the notification bar).
       let sawEvent = false;
       addEventListener("HiddenPlugin", function onHiddenPlugin(e) {
--- a/browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js
+++ b/browser/base/content/test/plugins/browser_pluginCrashCommentAndURL.js
@@ -37,17 +37,17 @@ add_task(async function() {
     window.focus();
   });
 });
 
 add_task(async function() {
   config = {
     shouldSubmissionUIBeVisible: true,
     comment: "",
-    urlOptIn: false
+    urlOptIn: false,
   };
 
   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED);
 
   let pluginCrashed = promisePluginCrashed();
 
   await promiseTabLoadEvent(gBrowser.selectedTab, gTestRoot + "plugin_crashCommentAndURL.html");
 
@@ -74,17 +74,17 @@ add_task(async function() {
 
   await crashReportStatus;
 });
 
 add_task(async function() {
   config = {
     shouldSubmissionUIBeVisible: true,
     comment: "a test comment",
-    urlOptIn: true
+    urlOptIn: true,
   };
 
   setTestPluginEnabledState(Ci.nsIPluginTag.STATE_ENABLED);
 
   let pluginCrashed = promisePluginCrashed();
 
   await promiseTabLoadEvent(gBrowser.selectedTab, gTestRoot + "plugin_crashCommentAndURL.html");
 
@@ -112,17 +112,17 @@ add_task(async function() {
 
   await crashReportStatus;
 });
 
 add_task(async function() {
   config = {
     shouldSubmissionUIBeVisible: false,
     comment: "",
-    urlOptIn: true
+    urlOptIn: true,
   };
 
   // Deferred promise object used by the test to wait for the crash handler
   let crashDeferred = PromiseUtils.defer();
 
   // Clear out any minidumps we create from plugin crashes, this is needed
   // because we do not submit the crash otherwise the submission process would
   // have deleted the crash dump files for us.
--- a/browser/base/content/test/plugins/browser_pluginCrashReportNonDeterminism.js
+++ b/browser/base/content/test/plugins/browser_pluginCrashReportNonDeterminism.js
@@ -67,17 +67,17 @@ function preparePlugin(browser, pluginFa
 
     // "Rewind", by wiping out the status attribute...
     statusDiv.removeAttribute("status");
     // Somehow, I'm able to get away with overriding the getter for
     // this XPCOM object. Probably because I've got chrome privledges.
     Object.defineProperty(plugin, "pluginFallbackType", {
       get() {
         return contentPluginFallbackState;
-      }
+      },
     });
     return plugin.runID;
   }).then((runID) => {
     browser.messageManager.sendAsyncMessage("BrowserPlugins:Test:ClearCrashData");
     return runID;
   });
 }
 
--- a/browser/base/content/test/plugins/browser_subframe_access_hidden_plugins.js
+++ b/browser/base/content/test/plugins/browser_subframe_access_hidden_plugins.js
@@ -38,17 +38,17 @@ add_task(async function test_plugin_acce
   let permString = pluginHost.getPermissionStringForType("application/x-test");
   Services.perms.addFromPrincipal(principal, permString,
                                   Ci.nsIPermissionManager.ALLOW_ACTION,
                                   Ci.nsIPermissionManager.EXPIRE_NEVER,
                                   0 /* expireTime */);
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: DOMAIN_1
+    url: DOMAIN_1,
   }, async function(browser) {
     await ContentTask.spawn(browser, [TEST_PLUGIN_NAME, DOMAIN_2],
                             async function([pluginName, domain2]) {
       Assert.ok(content.navigator.plugins[pluginName],
                 "Top-level document should find Test Plugin");
 
       // Now manually create a subframe hosted at domain2...
       let subframe = content.document.createElement("iframe");
--- a/browser/base/content/test/popupNotifications/browser_popupNotification.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification.js
@@ -26,34 +26,34 @@ var tests = [
       triggerMainCommand(popup);
     },
     onHidden(popup) {
       ok(this.notifyObj.mainActionClicked, "mainAction was clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
       is(this.notifyObj.mainActionSource, "button", "main action should have been triggered by button.");
       is(this.notifyObj.secondaryActionSource, undefined, "shouldn't have a secondary action source.");
-    }
+    },
   },
   { id: "Test#2",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       triggerSecondaryCommand(popup, 0);
     },
     onHidden(popup) {
       ok(this.notifyObj.secondaryActionClicked, "secondaryAction was clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
       is(this.notifyObj.mainActionSource, undefined, "shouldn't have a main action source.");
       is(this.notifyObj.secondaryActionSource, "button", "secondary action should have been triggered by button.");
-    }
+    },
   },
   { id: "Test#2b",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.secondaryActions.push({
         label: "Extra Secondary Action",
         accessKey: "E",
         callback: () => this.extraSecondaryActionClicked = true,
@@ -63,17 +63,17 @@ var tests = [
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       triggerSecondaryCommand(popup, 1);
     },
     onHidden(popup) {
       ok(this.extraSecondaryActionClicked, "extra secondary action was clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   { id: "Test#2c",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.secondaryActions.push({
         label: "Extra Secondary Action",
         accessKey: "E",
         callback: () => ok(false, "unexpected callback invocation"),
@@ -87,32 +87,32 @@ var tests = [
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       triggerSecondaryCommand(popup, 2);
     },
     onHidden(popup) {
       ok(this.extraSecondaryActionClicked, "extra secondary action was clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   { id: "Test#3",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
     onHidden(popup) {
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback triggered");
       this.notification.remove();
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // test opening a notification for a background browser
   // Note: test 4 to 6 share a tab.
   { id: "Test#4",
     async run() {
       let tab = BrowserTestUtils.addTab(gBrowser, "http://example.com/");
       await BrowserTestUtils.browserLoaded(tab.linkedBrowser);
       isnot(gBrowser.selectedTab, tab, "new tab isn't selected");
@@ -120,17 +120,17 @@ var tests = [
       let promiseTopic = TestUtils.topicObserved("PopupNotifications-backgroundShow");
       wrongBrowserNotification = showNotification(wrongBrowserNotificationObject);
       await promiseTopic;
       is(PopupNotifications.isPanelOpen, false, "panel isn't open");
       ok(!wrongBrowserNotificationObject.mainActionClicked, "main action wasn't clicked");
       ok(!wrongBrowserNotificationObject.secondaryActionClicked, "secondary action wasn't clicked");
       ok(!wrongBrowserNotificationObject.dismissalCallbackTriggered, "dismissal callback wasn't called");
       goNext();
-    }
+    },
   },
   // now select that browser and test to see that the notification appeared
   { id: "Test#5",
     run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       gBrowser.selectedTab = gBrowser.tabs[gBrowser.tabs.length - 1];
     },
     onShown(popup) {
@@ -141,28 +141,28 @@ var tests = [
       gBrowser.selectedTab = this.oldSelectedTab;
     },
     onHidden(popup) {
       // actually remove the notification to prevent it from reappearing
       ok(wrongBrowserNotificationObject.dismissalCallbackTriggered, "dismissal callback triggered due to tab switch");
       wrongBrowserNotification.remove();
       ok(wrongBrowserNotificationObject.removedCallbackTriggered, "removed callback triggered");
       wrongBrowserNotification = null;
-    }
+    },
   },
   // test that the removed notification isn't shown on browser re-select
   { id: "Test#6",
     async run() {
       let promiseTopic = TestUtils.topicObserved("PopupNotifications-updateNotShowing");
       gBrowser.selectedTab = gBrowser.tabs[gBrowser.tabs.length - 1];
       await promiseTopic;
       is(PopupNotifications.isPanelOpen, false, "panel isn't open");
       gBrowser.removeTab(gBrowser.selectedTab);
       goNext();
-    }
+    },
   },
   // Test that two notifications with the same ID result in a single displayed
   // notification.
   { id: "Test#7",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       // Show the same notification twice
       this.notification1 = showNotification(this.notifyObj);
@@ -170,17 +170,17 @@ var tests = [
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       this.notification2.remove();
     },
     onHidden(popup) {
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test that two notifications with different IDs are displayed
   { id: "Test#8",
     run() {
       this.testNotif1 = new BasicNotification(this.id);
       this.testNotif1.message += " 1";
       showNotification(this.testNotif1);
       this.testNotif2 = new BasicNotification(this.id);
@@ -200,17 +200,17 @@ var tests = [
     onHidden(popup) {
       ok(this.testNotif1.mainActionClicked, "main action #1 was clicked");
       ok(!this.testNotif1.secondaryActionClicked, "secondary action #1 wasn't clicked");
       ok(!this.testNotif1.dismissalCallbackTriggered, "dismissal callback #1 wasn't called");
 
       ok(!this.testNotif2.mainActionClicked, "main action #2 wasn't clicked");
       ok(this.testNotif2.secondaryActionClicked, "secondary action #2 was clicked");
       ok(!this.testNotif2.dismissalCallbackTriggered, "dismissal callback #2 wasn't called");
-    }
+    },
   },
   // Test notification without mainAction or secondaryActions, it should fall back
   // to a default button that dismisses the notification in place of the main action.
   { id: "Test#9",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.mainAction = null;
       this.notifyObj.secondaryActions = null;
@@ -220,17 +220,17 @@ var tests = [
       let notification = popup.children[0];
       is(notification.getAttribute("buttonhighlight"), "true", "default action is highlighted");
       triggerMainCommand(popup);
     },
     onHidden(popup) {
       ok(!this.notifyObj.mainActionClicked, "mainAction was not clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test notification without mainAction but with secondaryActions, it should fall back
   // to a default button that dismisses the notification in place of the main action
   // and ignore the passed secondaryActions.
   { id: "Test#10",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.mainAction = null;
@@ -241,17 +241,17 @@ var tests = [
       is(notification.getAttribute("secondarybuttonhidden"), "true", "secondary button is hidden");
       is(notification.getAttribute("buttonhighlight"), "true", "default action is highlighted");
       triggerMainCommand(popup);
     },
     onHidden(popup) {
       ok(!this.notifyObj.mainActionClicked, "mainAction was not clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test two notifications with different anchors
   { id: "Test#11",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.firstNotification = showNotification(this.notifyObj);
       this.notifyObj2 = new BasicNotification(this.id);
       this.notifyObj2.id += "-2";
@@ -267,11 +267,11 @@ var tests = [
       dismissNotification(popup);
     },
     onHidden(popup) {
       // Remove the notifications
       this.firstNotification.remove();
       this.secondNotification.remove();
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
       ok(this.notifyObj2.removedCallbackTriggered, "removed callback triggered");
-    }
-  }
+    },
+  },
 ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_2.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_2.js
@@ -22,17 +22,17 @@ var tests = [
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
     onHidden(popup) {
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback triggered");
       this.notification.remove();
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test that icons appear
   { id: "Test#2",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.id = "geolocation";
       this.notifyObj.anchorID = "geo-notification-icon";
       this.notification = showNotification(this.notifyObj);
@@ -45,54 +45,54 @@ var tests = [
     },
     onHidden(popup) {
       let icon = document.getElementById("geo-notification-icon");
       isnot(icon.boxObject.width, 0,
             "geo anchor should be visible after dismissal");
       this.notification.remove();
       is(icon.boxObject.width, 0,
          "geo anchor should not be visible after removal");
-    }
+    },
   },
 
   // Test that persistence allows the notification to persist across reloads
   { id: "Test#3",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.addOptions({
-        persistence: 2
+        persistence: 2,
       });
       this.notification = showNotification(this.notifyObj);
     },
     async onShown(popup) {
       this.complete = false;
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.org/");
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
       // Next load will remove the notification
       this.complete = true;
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.org/");
     },
     onHidden(popup) {
       ok(this.complete, "Should only have hidden the notification after 3 page loads");
       ok(this.notifyObj.removedCallbackTriggered, "removal callback triggered");
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that a timeout allows the notification to persist across reloads
   { id: "Test#4",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       this.notifyObj = new BasicNotification(this.id);
       // Set a timeout of 10 minutes that should never be hit
       this.notifyObj.addOptions({
-        timeout: Date.now() + 600000
+        timeout: Date.now() + 600000,
       });
       this.notification = showNotification(this.notifyObj);
     },
     async onShown(popup) {
       this.complete = false;
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.org/");
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
       // Next load will hide the notification
@@ -100,27 +100,27 @@ var tests = [
       this.complete = true;
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.org/");
     },
     onHidden(popup) {
       ok(this.complete, "Should only have hidden the notification after the timeout was passed");
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that setting persistWhileVisible allows a visible notification to
   // persist across location changes
   { id: "Test#5",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.addOptions({
-        persistWhileVisible: true
+        persistWhileVisible: true,
       });
       this.notification = showNotification(this.notifyObj);
     },
     async onShown(popup) {
       this.complete = false;
 
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.org/");
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
@@ -128,17 +128,17 @@ var tests = [
       this.complete = true;
       dismissNotification(popup);
     },
     onHidden(popup) {
       ok(this.complete, "Should only have hidden the notification after it was dismissed");
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
 
   // Test that nested icon nodes correctly activate popups
   { id: "Test#6",
     run() {
       // Add a temporary box as the anchor with a button
       this.box = document.createXULElement("box");
       PopupNotifications.iconBox.appendChild(this.box);
@@ -162,45 +162,45 @@ var tests = [
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification.remove();
       this.box.remove();
-    }
+    },
   },
   // Test that popupnotifications without popups have anchor icons shown
   { id: "Test#7",
     async run() {
       let notifyObj = new BasicNotification(this.id);
       notifyObj.anchorID = "geo-notification-icon";
       notifyObj.addOptions({neverShow: true});
       let promiseTopic = TestUtils.topicObserved("PopupNotifications-updateNotShowing");
       showNotification(notifyObj);
       await promiseTopic;
       isnot(document.getElementById("geo-notification-icon").boxObject.width, 0,
             "geo anchor should be visible");
       goNext();
-    }
+    },
   },
   // Test that autoplay media icon is shown
   { id: "Test#8",
     async run() {
       let notifyObj = new BasicNotification(this.id);
       notifyObj.anchorID = "autoplay-media-notification-icon";
       notifyObj.addOptions({neverShow: true});
       let promiseTopic = TestUtils.topicObserved("PopupNotifications-updateNotShowing");
       showNotification(notifyObj);
       await promiseTopic;
       isnot(document.getElementById("autoplay-media-notification-icon").boxObject.width, 0,
             "autoplay media icon should be visible");
       goNext();
-    }
+    },
   },
   // Test notification close button
   { id: "Test#9",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notification = showNotification(this.notifyObj);
     },
     onShown(popup) {
@@ -208,17 +208,17 @@ var tests = [
       let notification = popup.children[0];
       EventUtils.synthesizeMouseAtCenter(notification.closebutton, {});
     },
     onHidden(popup) {
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback triggered");
       this.notification.remove();
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
       ok(!this.notifyObj.secondaryActionClicked, "secondary action not clicked");
-    }
+    },
   },
   // Test that notification close button calls secondary action instead of
   // dismissal callback if privacy.permissionPrompts.showCloseButton is set.
   { id: "Test#10",
     run() {
       Services.prefs.setBoolPref("privacy.permissionPrompts.showCloseButton", true);
       this.notifyObj = new BasicNotification(this.id);
       this.notification = showNotification(this.notifyObj);
@@ -229,17 +229,17 @@ var tests = [
       EventUtils.synthesizeMouseAtCenter(notification.closebutton, {});
     },
     onHidden(popup) {
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback not triggered");
       ok(this.notifyObj.secondaryActionClicked, "secondary action clicked");
       Services.prefs.clearUserPref("privacy.permissionPrompts.showCloseButton");
       this.notification.remove();
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test notification when chrome is hidden
   { id: "Test#11",
     run() {
       window.locationbar.visible = false;
       this.notifyObj = new BasicNotification(this.id);
       this.notification = showNotification(this.notifyObj);
     },
@@ -248,11 +248,11 @@ var tests = [
       is(popup.anchorNode.className, "tabbrowser-tab", "notification anchored to tab");
       dismissNotification(popup);
     },
     onHidden(popup) {
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback triggered");
       this.notification.remove();
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
       window.locationbar.visible = true;
-    }
+    },
   },
 ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_3.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_3.js
@@ -13,28 +13,28 @@ function test() {
 }
 
 var tests = [
   // Test notification is removed when dismissed if removeOnDismissal is true
   { id: "Test#1",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.addOptions({
-        removeOnDismissal: true
+        removeOnDismissal: true,
       });
       this.notification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
     onHidden(popup) {
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test multiple notification icons are shown
   { id: "Test#2",
     run() {
       this.notifyObj1 = new BasicNotification(this.id);
       this.notifyObj1.id += "_1";
       this.notifyObj1.anchorID = "default-notification-icon";
       this.notification1 = showNotification(this.notifyObj1);
@@ -57,17 +57,17 @@ var tests = [
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification1.remove();
       ok(this.notifyObj1.removedCallbackTriggered, "removed callback triggered");
 
       this.notification2.remove();
       ok(this.notifyObj2.removedCallbackTriggered, "removed callback triggered");
-    }
+    },
   },
   // Test that multiple notification icons are removed when switching tabs
   { id: "Test#3",
     async run() {
       // show the notification on old tab.
       this.notifyObjOld = new BasicNotification(this.id);
       this.notifyObjOld.anchorID = "default-notification-icon";
       this.notificationOld = showNotification(this.notifyObjOld);
@@ -94,17 +94,17 @@ var tests = [
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notificationNew.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
 
       gBrowser.selectedTab = this.oldSelectedTab;
       this.notificationOld.remove();
-    }
+    },
   },
   // test security delay - too early
   { id: "Test#4",
     run() {
       // Set the security delay to 100s
       PopupNotifications.buttonDelay = 100000;
 
       this.notifyObj = new BasicNotification(this.id);
@@ -118,17 +118,17 @@ var tests = [
       executeSoon(function delayedDismissal() {
         dismissNotification(popup);
       });
 
     },
     onHidden(popup) {
       ok(!this.notifyObj.mainActionClicked, "mainAction was not clicked because it was too soon");
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback was triggered");
-    }
+    },
   },
   // test security delay - after delay
   { id: "Test#5",
     run() {
       // Set the security delay to 10ms
       PopupNotifications.buttonDelay = 10;
 
       this.notifyObj = new BasicNotification(this.id);
@@ -142,34 +142,34 @@ var tests = [
         triggerMainCommand(popup);
       }, 500);
 
     },
     onHidden(popup) {
       ok(this.notifyObj.mainActionClicked, "mainAction was clicked after the delay");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback was not triggered");
       PopupNotifications.buttonDelay = PREF_SECURITY_DELAY_INITIAL;
-    }
+    },
   },
   // reload removes notification
   { id: "Test#6",
     async run() {
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
       let notifyObj = new BasicNotification(this.id);
       notifyObj.options.eventCallback = function(eventName) {
         if (eventName == "removed") {
           ok(true, "Notification removed in background tab after reloading");
           goNext();
         }
       };
       showNotification(notifyObj);
       executeSoon(function() {
         gBrowser.selectedBrowser.reload();
       });
-    }
+    },
   },
   // location change in background tab removes notification
   { id: "Test#7",
     async run() {
       let oldSelectedTab = gBrowser.selectedTab;
       let newTab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       gBrowser.selectedTab = oldSelectedTab;
       let browser = gBrowser.getBrowserForTab(newTab);
@@ -184,17 +184,17 @@ var tests = [
             goNext();
           });
         }
       };
       showNotification(notifyObj);
       executeSoon(function() {
         browser.reload();
       });
-    }
+    },
   },
   // Popup notification anchor shouldn't disappear when a notification with the same ID is re-added in a background tab
   { id: "Test#8",
     async run() {
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
       let originalTab = gBrowser.selectedTab;
       let bgTab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       let anchor = document.createXULElement("box");
@@ -219,17 +219,17 @@ var tests = [
 
       ok(fgNotification.id, "notification has id");
       is(fgNotification.id, bgNotification.id, "notification ids are the same");
       is(anchor.getAttribute("showing"), "true", "anchor still showing");
 
       fgNotification.remove();
       gBrowser.removeTab(bgTab);
       goNext();
-    }
+    },
   },
   // location change in an embedded frame should not remove a notification
   { id: "Test#9",
     async run() {
       await promiseTabLoadEvent(gBrowser.selectedTab, "data:text/html;charset=utf8,<iframe%20id='iframe'%20src='http://example.com/'>");
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.options.eventCallback = function(eventName) {
         if (eventName == "removed") {
@@ -257,17 +257,17 @@ var tests = [
 
       info("Adding progress listener and performing navigation");
       gBrowser.addProgressListener(progressListener);
       ContentTask.spawn(gBrowser.selectedBrowser, null, function() {
         content.document.getElementById("iframe")
                         .setAttribute("src", "http://example.org/");
       });
     },
-    onHidden() {}
+    onHidden() {},
   },
   // Popup Notifications should catch exceptions from callbacks
   { id: "Test#10",
     run() {
       this.testNotif1 = new BasicNotification(this.id);
       this.testNotif1.message += " 1";
       this.notification1 = showNotification(this.testNotif1);
       this.testNotif1.options.eventCallback = function(eventName) {
@@ -290,11 +290,11 @@ var tests = [
     },
     onShown(popup) {
       is(popup.children.length, 2, "two notifications are shown");
       dismissNotification(popup);
     },
     onHidden() {
       this.notification1.remove();
       this.notification2.remove();
-    }
-  }
+    },
+  },
 ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_4.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_4.js
@@ -19,31 +19,31 @@ var tests = [
       showNotification(this.testNotif);
     },
     onShown(popup) {
       checkPopup(popup, this.testNotif);
       triggerMainCommand(popup);
     },
     onHidden(popup) {
       ok(this.testNotif.mainActionClicked, "main action has been triggered");
-    }
+    },
   },
   // Popup Notifications secondary actions should catch exceptions from callbacks
   { id: "Test#2",
     run() {
       this.testNotif = new ErrorNotification(this.id);
       showNotification(this.testNotif);
     },
     onShown(popup) {
       checkPopup(popup, this.testNotif);
       triggerSecondaryCommand(popup, 0);
     },
     onHidden(popup) {
       ok(this.testNotif.secondaryActionClicked, "secondary action has been triggered");
-    }
+    },
   },
   // Existing popup notification shouldn't disappear when adding a dismissed notification
   { id: "Test#3",
     run() {
       this.notifyObj1 = new BasicNotification(this.id);
       this.notifyObj1.id += "_1";
       this.notifyObj1.anchorID = "default-notification-icon";
       this.notification1 = showNotification(this.notifyObj1);
@@ -65,17 +65,17 @@ var tests = [
       is(document.getElementById("geo-notification-icon").getAttribute("showing"), "true",
          "notification2 anchor should be visible");
 
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification1.remove();
       this.notification2.remove();
-    }
+    },
   },
   // Showing should be able to modify the popup data
   { id: "Test#4",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       let normalCallback = this.notifyObj.options.eventCallback;
       this.notifyObj.options.eventCallback = function(eventName) {
         if (eventName == "showing") {
@@ -87,17 +87,17 @@ var tests = [
     },
     onShown(popup) {
       // checkPopup checks for the matching label. Note that this assumes that
       // this.notifyObj.mainAction is the same as notification.mainAction,
       // which could be a problem if we ever decided to deep-copy.
       checkPopup(popup, this.notifyObj);
       triggerMainCommand(popup);
     },
-    onHidden() { }
+    onHidden() { },
   },
   // Moving a tab to a new window should remove non-swappable notifications.
   { id: "Test#5",
     async run() {
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
 
       let notifyObj = new BasicNotification(this.id);
 
@@ -115,17 +115,17 @@ var tests = [
          "no notification displayed in new window");
       ok(notifyObj.swappingCallbackTriggered, "the swapping callback was triggered");
       ok(notifyObj.removedCallbackTriggered, "the removed callback was triggered");
 
       await BrowserTestUtils.closeWindow(win);
       await waitForWindowReadyForPopupNotifications(window);
 
       goNext();
-    }
+    },
   },
   // Moving a tab to a new window should preserve swappable notifications.
   { id: "Test#6",
     async run() {
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       let notifyObj = new BasicNotification(this.id);
       let originalCallback = notifyObj.options.eventCallback;
       notifyObj.options.eventCallback = function(eventName) {
@@ -156,76 +156,76 @@ var tests = [
 
       checkPopup(win.PopupNotifications.panel, notifyObj);
       ok(notifyObj.swappingCallbackTriggered, "the swapping callback was triggered");
 
       await BrowserTestUtils.closeWindow(win);
       await waitForWindowReadyForPopupNotifications(window);
 
       goNext();
-    }
+    },
   },
   // the main action callback can keep the notification.
   { id: "Test#8",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.mainAction.dismiss = true;
       this.notification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       triggerMainCommand(popup);
     },
     onHidden(popup) {
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback was triggered");
       ok(!this.notifyObj.removedCallbackTriggered, "removed callback wasn't triggered");
       this.notification.remove();
-    }
+    },
   },
   // a secondary action callback can keep the notification.
   { id: "Test#9",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.secondaryActions[0].dismiss = true;
       this.notification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       triggerSecondaryCommand(popup, 0);
     },
     onHidden(popup) {
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback was triggered");
       ok(!this.notifyObj.removedCallbackTriggered, "removed callback wasn't triggered");
       this.notification.remove();
-    }
+    },
   },
   // returning true in the showing callback should dismiss the notification.
   { id: "Test#10",
     run() {
       let notifyObj = new BasicNotification(this.id);
       let originalCallback = notifyObj.options.eventCallback;
       notifyObj.options.eventCallback = function(eventName) {
         originalCallback(eventName);
         return eventName == "showing";
       };
 
       let notification = showNotification(notifyObj);
       ok(notifyObj.showingCallbackTriggered, "the showing callback was triggered");
       ok(!notifyObj.shownCallbackTriggered, "the shown callback wasn't triggered");
       notification.remove();
       goNext();
-    }
+    },
   },
   // the main action button should apply non-default(no highlight) style.
   { id: "Test#11",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.mainAction.disableHighlight = true;
       this.notifyObj.secondaryActions = undefined;
       this.notification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
-    onHidden() { }
+    onHidden() { },
   },
 ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_5.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_5.js
@@ -30,17 +30,17 @@ var tests = [
       // automatically when receiving 'activate' or 'TabSelect' events,
       // but from a setTimeout, which is inconvenient for the test.
       PopupNotifications._update();
 
       checkPopup(popup, this.notifyObj);
 
       this.notification.remove();
     },
-    onHidden() { }
+    onHidden() { },
   },
   // A first dismissed notification shouldn't stop _update from showing a second notification
   { id: "Test#2",
     run() {
       this.notifyObj1 = new BasicNotification(this.id);
       this.notifyObj1.id += "_1";
       this.notifyObj1.anchorID = "default-notification-icon";
       this.notifyObj1.options.dismissed = true;
@@ -55,17 +55,17 @@ var tests = [
       this.notification2.dismissed = false;
       PopupNotifications._update();
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj2);
       this.notification1.remove();
       this.notification2.remove();
     },
-    onHidden(popup) { }
+    onHidden(popup) { },
   },
   // The anchor icon should be shown for notifications in background windows.
   { id: "Test#3",
     async run() {
       let notifyObj = new BasicNotification(this.id);
       notifyObj.options.dismissed = true;
 
       let win = await BrowserTestUtils.openNewBrowserWindow();
@@ -75,27 +75,27 @@ var tests = [
       let anchor = document.getElementById("default-notification-icon");
       is(anchor.getAttribute("showing"), "true", "the anchor is shown");
       notification.remove();
 
       await BrowserTestUtils.closeWindow(win);
       await waitForWindowReadyForPopupNotifications(window);
 
       goNext();
-    }
+    },
   },
   // Test that persistent doesn't allow the notification to persist after
   // navigation.
   { id: "Test#4",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.addOptions({
-        persistent: true
+        persistent: true,
       });
       this.notification = showNotification(this.notifyObj);
     },
     async onShown(popup) {
       this.complete = false;
 
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.org/");
       await promiseTabLoadEvent(gBrowser.selectedTab, "http://example.com/");
@@ -106,27 +106,27 @@ var tests = [
       this.complete = true;
       triggerSecondaryCommand(popup, 0);
     },
     onHidden(popup) {
       ok(!this.complete, "Should have hidden the notification after navigation");
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that persistent allows the notification to persist until explicitly
   // dismissed.
   { id: "Test#5",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.addOptions({
-        persistent: true
+        persistent: true,
       });
       this.notification = showNotification(this.notifyObj);
     },
     async onShown(popup) {
       this.complete = false;
 
       // Notification should persist after attempt to dismiss by clicking on the
       // content area.
@@ -137,17 +137,17 @@ var tests = [
       this.complete = true;
       triggerSecondaryCommand(popup, 0);
     },
     onHidden(popup) {
       ok(this.complete, "Should have hidden the notification after clicking Not Now");
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that persistent panels are still open after switching to another tab
   // and back.
   { id: "Test#6a",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.options.persistent = true;
       gNotification = showNotification(this.notifyObj);
@@ -155,29 +155,29 @@ var tests = [
     async onShown(popup) {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
     },
     onHidden(popup) {
       ok(true, "Should have hidden the notification after tab switch");
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Second part of the previous test that compensates for the limitation in
   // runNextTest that expects a single onShown/onHidden invocation per test.
   { id: "Test#6b",
     run() {
       let id = PopupNotifications.panel.firstElementChild.getAttribute("popupid");
       ok(id.endsWith("Test#6a"), "Should have found the notification from Test6a");
       ok(PopupNotifications.isPanelOpen, "Should have shown the popup again after getting back to the tab");
       gNotification.remove();
       gNotification = null;
       goNext();
-    }
+    },
   },
   // Test that persistent panels are still open after switching to another
   // window and back.
   { id: "Test#7",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
       let firstTab = gBrowser.selectedTab;
@@ -222,17 +222,17 @@ var tests = [
       ok(this.notification.timeShown > timeShown,
          "should have updated timeShown to restart the security delay");
 
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
 
       goNext();
-    }
+    },
   },
   // Test that only the first persistent notification is shown on update
   { id: "Test#8",
     run() {
       this.notifyObj1 = new BasicNotification(this.id);
       this.notifyObj1.id += "_1";
       this.notifyObj1.anchorID = "default-notification-icon";
       this.notifyObj1.options.persistent = true;
@@ -246,17 +246,17 @@ var tests = [
 
       PopupNotifications._update();
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj1);
       this.notification1.remove();
       this.notification2.remove();
     },
-    onHidden(popup) { }
+    onHidden(popup) { },
   },
   // Test that persistent notifications are shown stacked by anchor on update
   { id: "Test#9",
     run() {
       this.notifyObj1 = new BasicNotification(this.id);
       this.notifyObj1.id += "_1";
       this.notifyObj1.anchorID = "default-notification-icon";
       this.notifyObj1.options.persistent = true;
@@ -282,17 +282,17 @@ var tests = [
       let [notification1, notification2] = notifications;
       is(notification1.id, this.notifyObj1.id + "-notification", "id 1 matches");
       is(notification2.id, this.notifyObj3.id + "-notification", "id 2 matches");
 
       this.notification1.remove();
       this.notification2.remove();
       this.notification3.remove();
     },
-    onHidden(popup) { }
+    onHidden(popup) { },
   },
   // Test that on closebutton click, only the persistent notification
   // that contained the closebutton loses its persistent status.
   { id: "Test#10",
     run() {
       this.notifyObj1 = new BasicNotification(this.id);
       this.notifyObj1.id += "_1";
       this.notifyObj1.anchorID = "geo-notification-icon";
@@ -327,17 +327,17 @@ var tests = [
 
       ok(this.notification1.options.persistent, "notification 1 is persistent");
       ok(!this.notification2.options.persistent, "notification 2 is not persistent");
       ok(this.notification3.options.persistent, "notification 3 is persistent");
 
       this.notification1.remove();
       this.notification2.remove();
       this.notification3.remove();
-    }
+    },
   },
   // Test clicking the anchor icon.
   // Clicking the anchor of an already visible persistent notification should
   // focus the main action button, but not cause additional showing/shown event
   // callback calls.
   // Clicking the anchor of a dismissed notification should show it, even when
   // the currently displayed notification is a persistent one.
   { id: "Test#11",
@@ -399,11 +399,11 @@ var tests = [
       checkPopup(popup, notifyObj1);
       ok(notifyObj2.dismissalCallbackTriggered,
          "Should have dismissed the second notification");
 
       // Cleanup.
       notification1.remove();
       notification2.remove();
       goNext();
-    }
+    },
   },
 ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_accesskey.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_accesskey.js
@@ -33,11 +33,11 @@ var tests = [
 
       // If bug xxx was present, then the popup would be in the
       // process of being hidden right now.
       isnot(popup.state, "hiding", "popup is not hiding");
     },
     onHidden(popup) {
       window.removeEventListener("command", commandTriggered, true);
       ok(buttonPressed, "button pressed");
-    }
-  }
+    },
+  },
  ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js
@@ -45,17 +45,17 @@ var tests = [
       gNotification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       let notification = popup.children[0];
       checkCheckbox(notification.checkbox, "This is a checkbox");
       triggerMainCommand(popup);
     },
-    onHidden() { }
+    onHidden() { },
   },
 
   // Test checkbox being checked by default
   { id: "checkbox_checked",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.options.checkbox = {
         label: "Check this",
@@ -64,17 +64,17 @@ var tests = [
       gNotification = showNotification(this.notifyObj);
     },
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       let notification = popup.children[0];
       checkCheckbox(notification.checkbox, "Check this", true);
       triggerMainCommand(popup);
     },
-    onHidden() { }
+    onHidden() { },
   },
 
   // Test checkbox passing the checkbox state on mainAction
   { id: "checkbox_passCheckboxChecked_mainAction",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.mainAction.callback = ({checkboxChecked}) => this.mainActionChecked = checkboxChecked;
       this.notifyObj.options.checkbox = {
@@ -89,17 +89,17 @@ var tests = [
       checkCheckbox(checkbox, "This is a checkbox");
       await promiseElementVisible(checkbox);
       EventUtils.synthesizeMouseAtCenter(checkbox, {});
       checkCheckbox(checkbox, "This is a checkbox", true);
       triggerMainCommand(popup);
     },
     onHidden() {
       is(this.mainActionChecked, true, "mainAction callback is passed the correct checkbox value");
-    }
+    },
   },
 
   // Test checkbox passing the checkbox state on secondaryAction
   { id: "checkbox_passCheckboxChecked_secondaryAction",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.secondaryActions = [{
         label: "Test Secondary",
@@ -118,17 +118,17 @@ var tests = [
       checkCheckbox(checkbox, "This is a checkbox");
       await promiseElementVisible(checkbox);
       EventUtils.synthesizeMouseAtCenter(checkbox, {});
       checkCheckbox(checkbox, "This is a checkbox", true);
       triggerSecondaryCommand(popup, 0);
     },
     onHidden() {
       is(this.secondaryActionChecked, true, "secondaryAction callback is passed the correct checkbox value");
-    }
+    },
   },
 
   // Test checkbox preserving its state through re-opening the doorhanger
   { id: "checkbox_reopen",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.options.checkbox = {
         label: "This is a checkbox",
@@ -153,17 +153,17 @@ var tests = [
       let shown = waitForNotificationPanel();
       EventUtils.synthesizeMouseAtCenter(icon, {});
       await shown;
       let notification = popup.children[0];
       let checkbox = notification.checkbox;
       checkCheckbox(checkbox, "This is a checkbox", true);
       checkMainAction(notification, true);
       gNotification.remove();
-    }
+    },
   },
 
   // Test no checkbox hides warning label
   { id: "no_checkbox",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.options.checkbox = null;
       gNotification = showNotification(this.notifyObj);
@@ -214,14 +214,14 @@ var tests = [
           checkMainAction(notification, disabled);
 
           // Unblock the main command if it's currently disabled.
           if (disabled) {
             EventUtils.synthesizeMouseAtCenter(checkbox, {});
           }
           triggerMainCommand(popup);
         },
-        onHidden() { }
+        onHidden() { },
       }
     );
   });
 });
 
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_keyboard.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_keyboard.js
@@ -27,17 +27,17 @@ var tests = [
     },
     onHidden(popup) {
       ok(!this.notifyObj.mainActionClicked, "mainAction was not clicked");
       ok(this.notifyObj.secondaryActionClicked, "secondaryAction was clicked");
       ok(!this.notifyObj.dismissalCallbackTriggered, "dismissal callback wasn't triggered");
       ok(this.notifyObj.removedCallbackTriggered, "removed callback triggered");
       is(this.notifyObj.mainActionSource, undefined, "shouldn't have a main action source.");
       is(this.notifyObj.secondaryActionSource, "esc-press", "secondary action should be from ESC key press");
-    }
+    },
   },
   // Test that for non-persistent notifications, the escape key dismisses the notification.
   { id: "Test#2",
     async run() {
       await waitForWindowReadyForPopupNotifications(window);
       this.notifyObj = new BasicNotification(this.id);
       this.notification = showNotification(this.notifyObj);
     },
@@ -48,17 +48,17 @@ var tests = [
     onHidden(popup) {
       ok(!this.notifyObj.mainActionClicked, "mainAction was not clicked");
       ok(!this.notifyObj.secondaryActionClicked, "secondaryAction was not clicked");
       ok(this.notifyObj.dismissalCallbackTriggered, "dismissal callback triggered");
       ok(!this.notifyObj.removedCallbackTriggered, "removed callback was not triggered");
       is(this.notifyObj.mainActionSource, undefined, "shouldn't have a main action source.");
       is(this.notifyObj.secondaryActionSource, undefined, "shouldn't have a secondary action source.");
       this.notification.remove();
-    }
+    },
   },
   // Test that the space key on an anchor element focuses an active notification
   { id: "Test#3",
     run() {
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.anchorID = "geo-notification-icon";
       this.notifyObj.addOptions({
         persistent: true,
@@ -69,17 +69,17 @@ var tests = [
       checkPopup(popup, this.notifyObj);
       let anchor = document.getElementById(this.notifyObj.anchorID);
       anchor.focus();
       is(document.activeElement, anchor);
       EventUtils.sendString(" ");
       is(document.activeElement, popup.children[0].closebutton);
       this.notification.remove();
     },
-    onHidden(popup) { }
+    onHidden(popup) { },
   },
   // Test that you can switch between active notifications with the space key
   // and that the notification is focused on selection.
   { id: "Test#4",
     async run() {
       let notifyObj1 = new BasicNotification(this.id);
       notifyObj1.id += "_1";
       notifyObj1.anchorID = "default-notification-icon";
@@ -169,17 +169,17 @@ var tests = [
       let popup = await opened;
       checkPopup(popup, notifyObj);
 
       // Check that the urlbar is still focused.
       is(Services.focus.focusedElement, gURLBar.inputField);
 
       this.notification.remove();
       notification.remove();
-    }
+    },
   },
   // Test that focus is not moved out of a content element if autofocus is not set.
   { id: "Test#6",
     async run() {
       let id = this.id;
       await BrowserTestUtils.withNewTab("data:text/html,<input id='test-input'/>", async function(browser) {
         let notifyObj = new BasicNotification(id);
         await ContentTask.spawn(browser, {}, function() {
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_no_anchors.js
@@ -30,17 +30,17 @@ var tests = [
       is(popup.anchorNode.id, "identity-icon",
          "notification anchored to identity icon");
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that popupnotifications are anchored to the identity icon after
   // navigation to about:blank.
   { id: "Test#2",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "http://example.com/");
 
@@ -60,17 +60,17 @@ var tests = [
       is(popup.anchorNode.id, "identity-icon",
          "notification anchored to identity icon");
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that dismissed popupnotifications cannot be opened on about:blank, but
   // can be opened after navigation.
   { id: "Test#3",
     async run() {
       this.oldSelectedTab = gBrowser.selectedTab;
       await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:blank");
 
@@ -95,17 +95,17 @@ var tests = [
     onShown(popup) {
       checkPopup(popup, this.notifyObj);
       dismissNotification(popup);
     },
     onHidden(popup) {
       this.notification.remove();
       gBrowser.removeTab(gBrowser.selectedTab);
       gBrowser.selectedTab = this.oldSelectedTab;
-    }
+    },
   },
   // Test that popupnotifications are hidden while editing the URL in the
   // location bar, anchored to the identity icon when the focus is moved away
   // from the location bar, and restored when the URL is reverted.
   { id: "Test#4",
     async run() {
       for (let persistent of [false, true]) {
         let shown = waitForNotificationPanel();
@@ -149,17 +149,17 @@ var tests = [
 
         checkPopup(PopupNotifications.panel, this.notifyObj);
 
         hidden = waitForNotificationPanelHidden();
         this.notification.remove();
         await hidden;
       }
       goNext();
-    }
+    },
   },
   // Test that popupnotifications triggered while editing the URL in the
   // location bar are only shown later when the URL is reverted.
   { id: "Test#5",
     async run() {
       for (let persistent of [false, true]) {
         // Start editing the URL, ensuring that the awesomebar popup is hidden.
         gURLBar.select();
@@ -182,17 +182,17 @@ var tests = [
         checkPopup(PopupNotifications.panel, this.notifyObj);
 
         let hidden = waitForNotificationPanelHidden();
         this.notification.remove();
         await hidden;
       }
 
       goNext();
-    }
+    },
   },
   // Test that persistent panels are still open after switching to another tab
   // and back, even while editing the URL in the new tab.
   { id: "Test#6",
     async run() {
       let shown = waitForNotificationPanel();
       this.notifyObj = new BasicNotification(this.id);
       this.notifyObj.anchorID = "geo-notification-icon";
@@ -220,11 +220,11 @@ var tests = [
 
       checkPopup(PopupNotifications.panel, this.notifyObj);
 
       hidden = waitForNotificationPanelHidden();
       this.notification.remove();
       await hidden;
 
       goNext();
-    }
+    },
   },
 ];
--- a/browser/base/content/test/popupNotifications/browser_popupNotification_selection_required.js
+++ b/browser/base/content/test/popupNotifications/browser_popupNotification_selection_required.js
@@ -38,11 +38,11 @@ var tests = [
       await promiseElementVisible(notification.checkbox);
       EventUtils.synthesizeMouseAtCenter(notification.checkbox, {});
       ok(notification.button.disabled, "should be disabled when invalidselection");
       notification.removeAttribute("invalidselection");
       EventUtils.synthesizeMouseAtCenter(notification.checkbox, {});
       ok(!notification.button.disabled, "should not be disabled when invalidselection is not present");
       triggerMainCommand(popup);
     },
-    onHidden() { }
+    onHidden() { },
   },
 ];
--- a/browser/base/content/test/popupNotifications/head.js
+++ b/browser/base/content/test/popupNotifications/head.js
@@ -122,17 +122,17 @@ function BasicNotification(testId) {
   this.secondaryActions = [
     {
       label: "Secondary Action",
       accessKey: "S",
       callback: ({source}) => {
         this.secondaryActionClicked = true;
         this.secondaryActionSource = source;
       },
-    }
+    },
   ];
   this.options = {
     name: "http://example.com",
     eventCallback: eventName => {
       switch (eventName) {
         case "dismissed":
           this.dismissalCallbackTriggered = true;
           break;
@@ -144,17 +144,17 @@ function BasicNotification(testId) {
           break;
         case "removed":
           this.removedCallbackTriggered = true;
           break;
         case "swapping":
           this.swappingCallbackTriggered = true;
           break;
       }
-    }
+    },
   };
 }
 
 BasicNotification.prototype.addOptions = function(options) {
   for (let [name, value] of Object.entries(options))
     this.options[name] = value;
 };
 
--- a/browser/base/content/test/referrer/browser_referrer_click_pinned_tab.js
+++ b/browser/base/content/test/referrer/browser_referrer_click_pinned_tab.js
@@ -5,52 +5,52 @@
 // We will open a new tab if clicking on a cross domain link in pinned tab
 // So, override the tests data in head.js, adding "cross: true".
 
 _referrerTests = [
   {
     fromScheme: "http://",
     toScheme: "http://",
     cross: true,
-    result: "http://test1.example.com/browser"  // full referrer
+    result: "http://test1.example.com/browser",  // full referrer
   },
   {
     fromScheme: "https://",
     toScheme: "http://",
     cross: true,
-    result: ""  // no referrer when downgrade
+    result: "",  // no referrer when downgrade
   },
   {
     fromScheme: "https://",
     toScheme: "http://",
     policy: "origin",
     cross: true,
-    result: "https://test1.example.com/"  // origin, even on downgrade
+    result: "https://test1.example.com/",  // origin, even on downgrade
   },
   {
     fromScheme: "https://",
     toScheme: "http://",
     policy: "origin",
     rel: "noreferrer",
     cross: true,
-    result: ""  // rel=noreferrer trumps meta-referrer
+    result: "",  // rel=noreferrer trumps meta-referrer
   },
   {
     fromScheme: "https://",
     toScheme: "https://",
     policy: "no-referrer",
     cross: true,
-    result: ""  // same origin https://test1.example.com/browser
+    result: "",  // same origin https://test1.example.com/browser
   },
   {
     fromScheme: "http://",
     toScheme: "https://",
     policy: "no-referrer",
     cross: true,
-    result: ""  // cross origin http://test1.example.com
+    result: "",  // cross origin http://test1.example.com
   },
 ];
 
 async function startClickPinnedTabTestCase(aTestNumber) {
   info("browser_referrer_click_pinned_tab: " +
        getReferrerTestDescription(aTestNumber));
   let browser = gTestWindow.gBrowser;
 
--- a/browser/base/content/test/referrer/head.js
+++ b/browser/base/content/test/referrer/head.js
@@ -23,53 +23,53 @@ var rounds = 0;
 // duplicate the entire cross-product test in bug 704320 - that would be slow,
 // especially when we're opening a new window for each case.
 var _referrerTests = [
   // 1. Normal cases - no referrer policy, no special attributes.
   //    We expect a full referrer normally, and no referrer on downgrade.
   {
     fromScheme: "http://",
     toScheme: "http://",
-    result: "http://test1.example.com/browser"  // full referrer
+    result: "http://test1.example.com/browser",  // full referrer
   },
   {
     fromScheme: "https://",
     toScheme: "http://",
-    result: ""  // no referrer when downgrade
+    result: "",  // no referrer when downgrade
   },
   // 2. Origin referrer policy - we expect an origin referrer,
   //    even on downgrade.  But rel=noreferrer trumps this.
   {
     fromScheme: "https://",
     toScheme: "http://",
     policy: "origin",
-    result: "https://test1.example.com/"  // origin, even on downgrade
+    result: "https://test1.example.com/",  // origin, even on downgrade
   },
   {
     fromScheme: "https://",
     toScheme: "http://",
     policy: "origin",
     rel: "noreferrer",
-    result: ""  // rel=noreferrer trumps meta-referrer
+    result: "",  // rel=noreferrer trumps meta-referrer
   },
   // 3. XXX: using no-referrer here until we support all attribute values (bug 1178337)
   //    Origin-when-cross-origin policy - this depends on the triggering
   //    principal.  We expect full referrer for same-origin requests,
   //    and origin referrer for cross-origin requests.
   {
     fromScheme: "https://",
     toScheme: "https://",
     policy: "no-referrer",
-    result: ""  // same origin https://test1.example.com/browser
+    result: "",  // same origin https://test1.example.com/browser
   },
   {
     fromScheme: "http://",
     toScheme: "https://",
     policy: "no-referrer",
-    result: ""  // cross origin http://test1.example.com
+    result: "",  // cross origin http://test1.example.com
   },
 ];
 
 /**
  * Returns the test object for a given test number.
  * @param aTestNumber The test number - 0, 1, 2, ...
  * @return The test object, or undefined if the number is out of range.
  */
--- a/browser/base/content/test/sanitize/browser_sanitize-offlineData.js
+++ b/browser/base/content/test/sanitize/browser_sanitize-offlineData.js
@@ -36,17 +36,17 @@ function waitForUnregister(host) {
   return new Promise(resolve => {
     let listener = {
       onUnregister: registration => {
         if (registration.principal.URI.host != host) {
           return;
         }
         swm.removeListener(listener);
         resolve(registration);
-      }
+      },
     };
     swm.addListener(listener);
   });
 }
 
 async function createData(host) {
   let origin = "https://" + host;
   let dummySWURL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", origin) + "dummy.js";
@@ -70,17 +70,17 @@ add_task(async function testWithRange() 
   // We have intermittent occurrences of NS_ERROR_ABORT being
   // thrown at closing database instances when using Santizer.sanitize().
   // This does not seem to impact cleanup, since our tests run fine anyway.
   PromiseTestUtils.whitelistRejectionsGlobally(/NS_ERROR_ABORT/);
 
   await SpecialPowers.pushPrefEnv({"set": [
     ["dom.serviceWorkers.enabled", true],
     ["dom.serviceWorkers.exemptFromPerDomainMax", true],
-    ["dom.serviceWorkers.testing.enabled", true]
+    ["dom.serviceWorkers.testing.enabled", true],
   ]});
 
   // The service may have picked up activity from prior tests in this run.
   // Clear it.
   sas.testOnlyReset();
 
   let endDate = Date.now() * 1000;
   let principals = sas.getActiveOrigins(endDate - oneHour, endDate);
--- a/browser/base/content/test/sanitize/browser_sanitize-timespans.js
+++ b/browser/base/content/test/sanitize/browser_sanitize-timespans.js
@@ -21,17 +21,17 @@ function promiseFormHistoryRemoved() {
 
 function promiseDownloadRemoved(list) {
   return new Promise(resolve => {
 
     let view = {
       onDownloadRemoved(download) {
         list.removeView(view);
         resolve();
-      }
+      },
     };
 
     list.addView(view);
 
   });
 }
 
 add_task(async function test() {
@@ -433,17 +433,17 @@ async function setupHistory() {
 
   let places = [];
 
   function addPlace(aURI, aTitle, aVisitDate) {
     places.push({
       uri: aURI,
       title: aTitle,
       visitDate: aVisitDate,
-      transition: Ci.nsINavHistoryService.TRANSITION_LINK
+      transition: Ci.nsINavHistoryService.TRANSITION_LINK,
     });
   }
 
   addPlace("http://10minutes.com/", "10 minutes ago", now_uSec - 10 * kUsecPerMin);
   addPlace("http://1hour.com/", "Less than 1 hour ago", now_uSec - 45 * kUsecPerMin);
   addPlace("http://1hour10minutes.com/", "1 hour 10 minutes ago", now_uSec - 70 * kUsecPerMin);
   addPlace("http://2hour.com/", "Less than 2 hours ago", now_uSec - 90 * kUsecPerMin);
   addPlace("http://2hour10minutes.com/", "2 hours 10 minutes ago", now_uSec - 130 * kUsecPerMin);
@@ -469,73 +469,73 @@ async function setupFormHistory() {
     return new Promise((resolve, reject) => {
 
       let results = [];
       FormHistory.search(terms, params, { handleResult: result => results.push(result),
                                           handleError(error) {
                                             reject(error);
                                             throw new Error("Error occurred searching form history: " + error);
                                           },
-                                          handleCompletion(reason) { resolve(results); }
+                                          handleCompletion(reason) { resolve(results); },
                                         });
     });
   }
 
   function update(changes) {
     return new Promise((resolve, reject) => {
       FormHistory.update(changes, { handleError(error) {
                                       reject(error);
                                       throw new Error("Error occurred searching form history: " + error);
                                     },
-                                    handleCompletion(reason) { resolve(); }
+                                    handleCompletion(reason) { resolve(); },
                                   });
     });
   }
 
   // Make sure we've got a clean DB to start with, then add the entries we'll be testing.
   await update(
     [{
-        op: "remove"
+        op: "remove",
      },
      {
         op: "add",
         fieldname: "10minutes",
-        value: "10m"
+        value: "10m",
       }, {
         op: "add",
         fieldname: "1hour",
-        value: "1h"
+        value: "1h",
       }, {
         op: "add",
         fieldname: "1hour10minutes",
-        value: "1h10m"
+        value: "1h10m",
       }, {
         op: "add",
         fieldname: "2hour",
-        value: "2h"
+        value: "2h",
       }, {
         op: "add",
         fieldname: "2hour10minutes",
-        value: "2h10m"
+        value: "2h10m",
       }, {
         op: "add",
         fieldname: "4hour",
-        value: "4h"
+        value: "4h",
       }, {
         op: "add",
         fieldname: "4hour10minutes",
-        value: "4h10m"
+        value: "4h10m",
       }, {
         op: "add",
         fieldname: "today",
-        value: "1d"
+        value: "1d",
       }, {
         op: "add",
         fieldname: "b4today",
-        value: "1y"
+        value: "1y",
       }]);
 
   // Artifically age the entries to the proper vintage.
   let timestamp = now_uSec - 10 * kUsecPerMin;
   let results = await searchEntries(["guid"], { fieldname: "10minutes" });
   await update({ op: "update", firstUsed: timestamp, guid: results[0].guid });
 
   timestamp = now_uSec - 45 * kUsecPerMin;
@@ -594,92 +594,92 @@ async function setupFormHistory() {
 }
 
 async function setupDownloads() {
 
   let publicList = await Downloads.getList(Downloads.PUBLIC);
 
   let download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=480169",
-    target: "fakefile-10-minutes"
+    target: "fakefile-10-minutes",
   });
   download.startTime = new Date(now_mSec - 10 * kMsecPerMin); // 10 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=453440",
-    target: "fakefile-1-hour"
+    target: "fakefile-1-hour",
   });
   download.startTime = new Date(now_mSec - 45 * kMsecPerMin); // 45 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=480169",
-    target: "fakefile-1-hour-10-minutes"
+    target: "fakefile-1-hour-10-minutes",
   });
   download.startTime = new Date(now_mSec - 70 * kMsecPerMin); // 70 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=453440",
-    target: "fakefile-2-hour"
+    target: "fakefile-2-hour",
   });
   download.startTime = new Date(now_mSec - 90 * kMsecPerMin); // 90 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=480169",
-    target: "fakefile-2-hour-10-minutes"
+    target: "fakefile-2-hour-10-minutes",
   });
   download.startTime = new Date(now_mSec - 130 * kMsecPerMin); // 130 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=453440",
-    target: "fakefile-4-hour"
+    target: "fakefile-4-hour",
   });
   download.startTime = new Date(now_mSec - 180 * kMsecPerMin); // 180 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=480169",
-    target: "fakefile-4-hour-10-minutes"
+    target: "fakefile-4-hour-10-minutes",
   });
   download.startTime = new Date(now_mSec - 250 * kMsecPerMin); // 250 minutes ago
   download.canceled = true;
   await publicList.add(download);
 
   // Add "today" download
   let today = new Date();
   today.setHours(0);
   today.setMinutes(0);
   today.setSeconds(0);
   today.setMilliseconds(1);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=453440",
-    target: "fakefile-today"
+    target: "fakefile-today",
   });
   download.startTime = today; // 12:00:01 AM this morning
   download.canceled = true;
   await publicList.add(download);
 
   // Add "before today" download
   let lastYear = new Date();
   lastYear.setFullYear(lastYear.getFullYear() - 1);
 
   download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=453440",
-    target: "fakefile-old"
+    target: "fakefile-old",
   });
   download.startTime = lastYear;
   download.canceled = true;
   await publicList.add(download);
 
   // Confirm everything worked
   let downloads = await publicList.getAll();
   is(downloads.length, 9, "9 Pretend downloads added");
--- a/browser/base/content/test/sanitize/browser_sanitizeDialog.js
+++ b/browser/base/content/test/sanitize/browser_sanitizeDialog.js
@@ -446,34 +446,34 @@ add_task(async function test_offline_cac
     this.acceptDialog();
   };
   wh.onunload = function() {
     // Check if the cache has been deleted
     var size = -1;
     var visitor = {
       onCacheStorageInfo(aEntryCount, aConsumption, aCapacity, aDiskDirectory) {
         size = aConsumption;
-      }
+      },
     };
     storage.asyncVisitStorage(visitor, false);
     // Offline cache visit happens synchronously, since it's forwarded to the old code
     is(size, 0, "offline application cache entries evicted");
   };
 
   var cacheListener = {
     onCacheEntryCheck() { return Ci.nsICacheEntryOpenCallback.ENTRY_WANTED; },
     onCacheEntryAvailable(entry, isnew, unused, status) {
       is(status, Cr.NS_OK);
       var stream = entry.openOutputStream(0, -1);
       var content = "content";
       stream.write(content, content.length);
       stream.close();
       entry.close();
       wh.open();
-    }
+    },
   };
 
   storage.asyncOpenURI(makeURI(URL), "", Ci.nsICacheStorage.OPEN_TRUNCATE, cacheListener);
   await wh.promiseClosed;
 });
 
 // Test for offline apps permission deletion
 add_task(async function test_offline_apps_permissions() {
@@ -695,17 +695,17 @@ function promiseSanitizationComplete() {
  *        The download will be downloaded this many minutes ago
  */
 async function addDownloadWithMinutesAgo(aExpectedPathList, aMinutesAgo) {
   let publicList = await Downloads.getList(Downloads.PUBLIC);
 
   let name = "fakefile-" + aMinutesAgo + "-minutes-ago";
   let download = await Downloads.createDownload({
     source: "https://bugzilla.mozilla.org/show_bug.cgi?id=480169",
-    target: name
+    target: name,
   });
   download.startTime = new Date(now_mSec - (aMinutesAgo * kMsecPerMin));
   download.canceled = true;
   publicList.add(download);
 
   ok((await downloadExists(name)),
      "Sanity check: download " + name +
      " should exist after creating it");
@@ -728,17 +728,17 @@ function promiseAddFormEntryWithMinutesA
   return new Promise((resolve, reject) =>
     FormHistory.update({ op: "add", fieldname: name, value: "dummy", firstUsed: timestamp },
                        { handleError(error) {
                            reject();
                            throw new Error("Error occurred updating form history: " + error);
                          },
                          handleCompletion(reason) {
                            resolve(name);
-                         }
+                         },
                        })
    );
 }
 
 /**
  * Checks if a form entry exists.
  */
 function formNameExists(name) {
@@ -749,17 +749,17 @@ function formNameExists(name) {
                         handleError(error) {
                           reject(error);
                           throw new Error("Error occurred searching form history: " + error);
                         },
                         handleCompletion(reason) {
                           if (!reason) {
                             resolve(count);
                           }
-                        }
+                        },
                       });
   });
 }
 
 /**
  * Removes all history visits, downloads, and form entries.
  */
 async function blankSlate() {
@@ -775,17 +775,17 @@ async function blankSlate() {
       handleCompletion(reason) {
         if (!reason) {
           resolve();
         }
       },
       handleError(error) {
         reject(error);
         throw new Error("Error occurred updating form history: " + error);
-      }
+      },
     });
   });
 
   await PlacesUtils.history.clear();
 }
 
 /**
  * Ensures that the given pref is the expected value.
--- a/browser/base/content/test/siteIdentity/browser_check_identity_state.js
+++ b/browser/base/content/test/siteIdentity/browser_check_identity_state.js
@@ -85,17 +85,17 @@ async function webpageTestTextWarning(se
 add_task(async function test_webpage_text_warning() {
   await webpageTestTextWarning(false);
   await webpageTestTextWarning(true);
 });
 
 async function webpageTestTextWarningCombined(secureCheck) {
   await SpecialPowers.pushPrefEnv({set: [
     [INSECURE_TEXT_PREF, secureCheck],
-    [INSECURE_ICON_PREF, secureCheck]
+    [INSECURE_ICON_PREF, secureCheck],
   ]});
   let oldTab = gBrowser.selectedTab;
 
   let newTab = await loadNewTab("http://example.com/" + DUMMY);
   if (secureCheck) {
     is(getIdentityMode(), "notSecure notSecureText", "Identity should be not secure");
   } else {
     is(getIdentityMode(), "unknownIdentity", "Identity should be unknown");
@@ -399,23 +399,23 @@ async function pbModeTest(prefs, secureC
   await BrowserTestUtils.closeWindow(privateWin);
 
   await SpecialPowers.popPrefEnv();
 }
 
 add_task(async function test_pb_mode() {
   let prefs = [
     [INSECURE_ICON_PREF, true],
-    [INSECURE_PBMODE_ICON_PREF, true]
+    [INSECURE_PBMODE_ICON_PREF, true],
   ];
   await pbModeTest(prefs, true);
   prefs = [
     [INSECURE_ICON_PREF, false],
-    [INSECURE_PBMODE_ICON_PREF, true]
+    [INSECURE_PBMODE_ICON_PREF, true],
   ];
   await pbModeTest(prefs, true);
   prefs = [
     [INSECURE_ICON_PREF, false],
-    [INSECURE_PBMODE_ICON_PREF, false]
+    [INSECURE_PBMODE_ICON_PREF, false],
   ];
   await pbModeTest(prefs, false);
 });
 
--- a/browser/base/content/test/siteIdentity/browser_csp_block_all_mixedcontent.js
+++ b/browser/base/content/test/siteIdentity/browser_csp_block_all_mixedcontent.js
@@ -18,17 +18,17 @@ function cleanUpAfterTests() {
 
 // ------------------------------------------------------
 async function verifyUInotDegraded() {
   // make sure that not mixed content is loaded and also not blocked
   await assertMixedContentBlockingState(
     gTestBrowser,
     { activeLoaded: false,
       activeBlocked: false,
-      passiveLoaded: false
+      passiveLoaded: false,
     }
   );
   // clean up and finish test
   cleanUpAfterTests();
 }
 
 // ------------------------------------------------------
 function runTests() {
--- a/browser/base/content/test/siteIdentity/browser_identity_UI.js
+++ b/browser/base/content/test/siteIdentity/browser_identity_UI.js
@@ -13,55 +13,55 @@ function test() {
 }
 
 // Greek IDN for 'example.test'.
 var idnDomain = "\u03C0\u03B1\u03C1\u03AC\u03B4\u03B5\u03B9\u03B3\u03BC\u03B1.\u03B4\u03BF\u03BA\u03B9\u03BC\u03AE";
 var tests = [
   {
     name: "normal domain",
     location: "http://test1.example.org/",
-    effectiveHost: "test1.example.org"
+    effectiveHost: "test1.example.org",
   },
   {
     name: "view-source",
     location: "view-source:http://example.com/",
-    effectiveHost: null
+    effectiveHost: null,
   },
   {
     name: "normal HTTPS",
     location: "https://example.com/",
     effectiveHost: "example.com",
-    isHTTPS: true
+    isHTTPS: true,
   },
   {
     name: "IDN subdomain",
     location: "http://sub1.xn--hxajbheg2az3al.xn--jxalpdlp/",
-    effectiveHost: "sub1." + idnDomain
+    effectiveHost: "sub1." + idnDomain,
   },
   {
     name: "subdomain with port",
     location: "http://sub1.test1.example.org:8000/",
-    effectiveHost: "sub1.test1.example.org"
+    effectiveHost: "sub1.test1.example.org",
   },
   {
     name: "subdomain HTTPS",
     location: "https://test1.example.com/",
     effectiveHost: "test1.example.com",
-    isHTTPS: true
+    isHTTPS: true,
   },
   {
     name: "view-source HTTPS",
     location: "view-source:https://example.com/",
     effectiveHost: null,
-    isHTTPS: true
+    isHTTPS: true,
   },
   {
     name: "IP address",
     location: "http://127.0.0.1:8888/",
-    effectiveHost: "127.0.0.1"
+    effectiveHost: "127.0.0.1",
   },
 ];
 
 var gCurrentTest, gCurrentTestIndex = -1, gTestDesc, gPopupHidden;
 // Go through the tests in both directions, to add additional coverage for
 // transitions between different states.
 var gForward = true;
 var gCheckETLD = false;
--- a/browser/base/content/test/siteIdentity/browser_mixedContentFramesOnHttp.js
+++ b/browser/base/content/test/siteIdentity/browser_mixedContentFramesOnHttp.js
@@ -12,17 +12,17 @@
 
 const TEST_URL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "http://example.com") + "file_mixedContentFramesOnHttp.html";
 
 add_task(async function() {
   await SpecialPowers.pushPrefEnv({
     "set": [
       ["security.mixed_content.block_active_content", true],
       ["security.mixed_content.block_display_content", false],
-      ["security.mixed_content.upgrade_display_content", false]
+      ["security.mixed_content.upgrade_display_content", false],
     ]});
 
   await BrowserTestUtils.withNewTab(TEST_URL, async function(browser) {
     isSecurityState(browser, "insecure");
     await assertMixedContentBlockingState(browser, {activeLoaded: false, activeBlocked: false, passiveLoaded: true});
   });
 });
 
--- a/browser/base/content/test/siteIdentity/browser_mixedContentFromOnunload.js
+++ b/browser/base/content/test/siteIdentity/browser_mixedContentFromOnunload.js
@@ -15,18 +15,18 @@ const HTTPS_TEST_ROOT_2 = getRootDirecto
 
 add_task(async function() {
   let url = HTTP_TEST_ROOT_1 + "file_mixedContentFromOnunload.html";
   await BrowserTestUtils.withNewTab(url, async function(browser) {
     await SpecialPowers.pushPrefEnv({
       "set": [
         ["security.mixed_content.block_active_content", true],
         ["security.mixed_content.block_display_content", false],
-        ["security.mixed_content.upgrade_display_content", false]
-      ]
+        ["security.mixed_content.upgrade_display_content", false],
+      ],
     });
     // Navigation from an http page to a https page with no mixed content
     // The http page loads an http image on unload
     url = HTTPS_TEST_ROOT_1 + "file_mixedContentFromOnunload_test1.html";
     await BrowserTestUtils.loadURI(browser, url);
     await BrowserTestUtils.browserLoaded(browser);
     // check security state.  Since current url is https and doesn't have any
     // mixed content resources, we expect it to be secure.
--- a/browser/base/content/test/siteIdentity/browser_mixed_passive_content_indicator.js
+++ b/browser/base/content/test/siteIdentity/browser_mixed_passive_content_indicator.js
@@ -1,14 +1,14 @@
 const TEST_URL = getRootDirectory(gTestPath).replace("chrome://mochitests/content", "https://example.com") + "simple_mixed_passive.html";
 
 add_task(async function test_mixed_passive_content_indicator() {
   await SpecialPowers.pushPrefEnv({
     "set": [
-      ["security.mixed_content.upgrade_display_content", false]
-    ]
+      ["security.mixed_content.upgrade_display_content", false],
+    ],
   });
   await BrowserTestUtils.withNewTab(TEST_URL, function() {
     is(document.getElementById("identity-box").className,
        "unknownIdentity mixedDisplayContent",
        "identity box has class name for mixed content");
   });
 });
--- a/browser/base/content/test/siteIdentity/head.js
+++ b/browser/base/content/test/siteIdentity/head.js
@@ -266,17 +266,17 @@ async function loadBadCertPage(url) {
           Services.obs.removeObserver(this, "cert-exception-ui-ready");
           let certExceptionDialog = getCertExceptionDialog(EXCEPTION_DIALOG_URI);
           ok(certExceptionDialog, "found exception dialog");
           executeSoon(function() {
             certExceptionDialog.documentElement.getButton("extra1").click();
             resolve();
           });
         }
-      }
+      },
     };
 
     Services.obs.addObserver(certExceptionDialogObserver,
                              "cert-exception-ui-ready");
   });
 
   let loaded = BrowserTestUtils.waitForErrorPage(gBrowser.selectedBrowser);
   await BrowserTestUtils.loadURI(gBrowser.selectedBrowser, url);
--- a/browser/base/content/test/static/browser_all_files_referenced.js
+++ b/browser/base/content/test/static/browser_all_files_referenced.js
@@ -204,17 +204,17 @@ if (!isDevtools) {
 
 if (AppConstants.MOZ_CODE_COVERAGE) {
   whitelist.add("chrome://marionette/content/PerTestCoverageUtils.jsm");
 }
 
 const gInterestingCategories = new Set([
   "agent-style-sheets", "addon-provider-module", "webextension-modules",
   "webextension-scripts", "webextension-schemas", "webextension-scripts-addon",
-  "webextension-scripts-content", "webextension-scripts-devtools"
+  "webextension-scripts-content", "webextension-scripts-devtools",
 ]);
 
 var gChromeReg = Cc["@mozilla.org/chrome/chrome-registry;1"]
                  .getService(Ci.nsIChromeRegistry);
 var gChromeMap = new Map();
 var gOverrideMap = new Map();
 var gComponentsSet = new Set();
 
@@ -403,17 +403,17 @@ function parseCodeFile(fileUri) {
         }
 
         if (isDevtools) {
           let rules = [
             ["gcli", "resource://devtools/shared/gcli/source/lib/gcli"],
             ["devtools/client/locales", "chrome://devtools/locale"],
             ["devtools/shared/locales", "chrome://devtools-shared/locale"],
             ["devtools/shared/platform", "resource://devtools/shared/platform/chrome"],
-            ["devtools", "resource://devtools"]
+            ["devtools", "resource://devtools"],
           ];
 
           match = line.match(/["']((?:devtools|gcli)\/[^\\#"']+)["']/);
           if (match && match[1]) {
             let path = match[1];
             for (let rule of rules) {
               if (path.startsWith(rule[0] + "/")) {
                 path = path.replace(rule[0], rule[1]);
--- a/browser/base/content/test/static/browser_misused_characters_in_strings.js
+++ b/browser/base/content/test/static/browser_misused_characters_in_strings.js
@@ -6,162 +6,162 @@
  * specifying conditions under which an error should be ignored.
  *
  * As each issue is found in the whitelist, it is removed from the list. At
  * the end of the test, there is an assertion that all items have been
  * removed from the whitelist, thus ensuring there are no stale entries. */
 let gWhitelist = [{
     file: "netError.dtd",
     key: "certerror.introPara",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "certerror.introPara2",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "certerror.expiredCert.whatCanYouDoAboutIt2",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "certerror.whatShouldIDo.badStsCertExplanation1",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "inadequateSecurityError.longDesc",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "certerror.wrongSystemTime2",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "certerror.wrongSystemTimeWithoutReference",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "clockSkewError.longDesc",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.palm.advisory.desc2",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.malwarePage.errorDesc.override",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.malwarePage.errorDesc.noOverride",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.malwarePage.learnMore",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.unwantedPage.errorDesc.override",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.unwantedPage.errorDesc.noOverride",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.unwantedPage.learnMore",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.phishingPage.errorDesc.override",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.phishingPage.errorDesc.noOverride",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.phishingPage.learnMore",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.harmfulPage.errorDesc.override",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.harmfulPage.errorDesc.noOverride",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "phishing-afterload-warning-message.dtd",
     key: "safeb.blocked.harmfulPage.learnMore",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "mathfont.properties",
     key: "operator.\\u002E\\u002E\\u002E.postfix",
-    type: "ellipsis"
+    type: "ellipsis",
   }, {
     file: "layout_errors.properties",
     key: "ImageMapRectBoundsError",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "layout_errors.properties",
     key: "ImageMapCircleWrongNumberOfCoords",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "layout_errors.properties",
     key: "ImageMapCircleNegativeRadius",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "layout_errors.properties",
     key: "ImageMapPolyWrongNumberOfCoords",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "layout_errors.properties",
     key: "ImageMapPolyOddNumberOfCoords",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "xbl.properties",
     key: "CommandNotInChrome",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "dom.properties",
     key: "PatternAttributeCompileFailure",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "aboutSupport.dtd",
     key: "aboutSupport.pageSubtitle",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "aboutSupport.dtd",
     key: "aboutSupport.userJSDescription",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netError.dtd",
     key: "inadequateSecurityError.longDesc",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "netErrorApp.dtd",
     key: "securityOverride.warningContent",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "pocket.properties",
     key: "tos",
-    type: "double-quote"
+    type: "double-quote",
   }, {
     file: "aboutNetworking.dtd",
     key: "aboutNetworking.logTutorial",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "aboutdevtools.dtd",
     key: "aboutDevtools.newsletter.privacy.label",
-    type: "single-quote"
+    type: "single-quote",
   }, {
     file: "browser.dtd",
     key: "addonPostInstallMessage.label",
-    type: "single-quote"
-  }
+    type: "single-quote",
+  },
 ];
 
 /**
  * Check if an error should be ignored due to matching one of the whitelist
  * objects defined in gWhitelist.
  *
  * @param filepath The URI spec of the locale file
  * @param key The key of the entity that is being checked
--- a/browser/base/content/test/static/browser_parsable_css.js
+++ b/browser/base/content/test/static/browser_parsable_css.js
@@ -69,30 +69,30 @@ let whitelist = [
    isFromDevTools: true},
 ];
 
 if (!Services.prefs.getBoolPref("layout.css.xul-box-display-values.content.enabled")) {
   // These are UA sheets which use non-content-exposed `display` values.
   whitelist.push({
     sourceName: /(skin\/shared\/Heartbeat|((?:res|gre-resources)\/(ua|html)))\.css$/i,
     errorMessage: /Error in parsing value for .*\bdisplay\b/i,
-    isFromDevTools: false
+    isFromDevTools: false,
   });
 }
 
 if (!Services.prefs.getBoolPref("full-screen-api.unprefix.enabled")) {
   whitelist.push({
     sourceName: /(?:res|gre-resources)\/(ua|html)\.css$/i,
     errorMessage: /Unknown pseudo-class .*\bfullscreen\b/i,
-    isFromDevTools: false
+    isFromDevTools: false,
   }, {
     // PDFjs is futureproofing its pseudoselectors, and those rules are dropped.
     sourceName: /web\/viewer\.css$/i,
     errorMessage: /Unknown pseudo-class .*\bfullscreen\b/i,
-    isFromDevTools: false
+    isFromDevTools: false,
   });
 }
 
 let propNameWhitelist = [
   // These are CSS custom properties that we found a definition of but
   // no reference to.
   // Bug 1441837
   {propName: "--in-content-category-text-active",
--- a/browser/base/content/test/sync/browser_contextmenu_sendpage.js
+++ b/browser/base/content/test/sync/browser_contextmenu_sendpage.js
@@ -19,17 +19,17 @@ add_task(async function test_page_contex
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
     { label: "Foo" },
     { label: "Bar" },
     "----",
-    { label: "Send to All Devices" }
+    { label: "Send to All Devices" },
   ]);
   await hideContentContextMenu();
 
   sandbox.restore();
 });
 
 add_task(async function test_page_contextmenu_no_remote_clients() {
   const sandbox = setupSendTabMocks({ syncReady: true, clientsSynced: true, remoteClients: [],
@@ -37,32 +37,32 @@ add_task(async function test_page_contex
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
     { label: "No Devices Connected", disabled: true },
     "----",
     { label: "Connect Another Device..." },
-    { label: "Learn About Sending Tabs..." }
+    { label: "Learn About Sending Tabs..." },
   ]);
   await hideContentContextMenu();
 
   sandbox.restore();
 });
 
 add_task(async function test_page_contextmenu_one_remote_client() {
   const sandbox = setupSendTabMocks({ syncReady: true, clientsSynced: true, remoteClients: [{ id: 1, name: "Foo"}],
                                       state: UIState.STATUS_SIGNED_IN, isSendableURI: true });
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
-    { label: "Foo" }
+    { label: "Foo" },
   ]);
   await hideContentContextMenu();
 
   sandbox.restore();
 });
 
 add_task(async function test_page_contextmenu_not_sendable() {
   const sandbox = setupSendTabMocks({ syncReady: true, clientsSynced: true, remoteClients: remoteClientsFixture,
@@ -108,17 +108,17 @@ add_task(async function test_page_contex
                                       state: UIState.STATUS_NOT_VERIFIED, isSendableURI: true });
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
     { label: "Account Not Verified", disabled: true },
     "----",
-    { label: "Verify Your Account..." }
+    { label: "Verify Your Account..." },
   ]);
   await hideContentContextMenu();
 
   sandbox.restore();
 });
 
 add_task(async function test_page_contextmenu_unconfigured() {
   const sandbox = setupSendTabMocks({ syncReady: true, clientsSynced: true, remoteClients: null,
@@ -126,17 +126,17 @@ add_task(async function test_page_contex
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
     { label: "Not Connected to Sync", disabled: true },
     "----",
     { label: "Sign in to Sync..." },
-    { label: "Learn About Sending Tabs..." }
+    { label: "Learn About Sending Tabs..." },
   ]);
 
   await hideContentContextMenu();
 
   sandbox.restore();
 });
 
 add_task(async function test_page_contextmenu_not_verified() {
@@ -144,17 +144,17 @@ add_task(async function test_page_contex
                                       state: UIState.STATUS_NOT_VERIFIED, isSendableURI: true });
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
     { label: "Account Not Verified", disabled: true },
     "----",
-    { label: "Verify Your Account..." }
+    { label: "Verify Your Account..." },
   ]);
 
   await hideContentContextMenu();
 
   sandbox.restore();
 });
 
 add_task(async function test_page_contextmenu_login_failed() {
@@ -163,17 +163,17 @@ add_task(async function test_page_contex
   const isSendableURI = sinon.stub(gSync, "isSendableURI").returns(true);
 
   await openContentContextMenu("#moztext", "context-sendpagetodevice");
   is(document.getElementById("context-sendpagetodevice").hidden, false, "Send tab to device is shown");
   is(document.getElementById("context-sendpagetodevice").disabled, false, "Send tab to device is enabled");
   checkPopup([
     { label: "Account Not Verified", disabled: true },
     "----",
-    { label: "Verify Your Account..." }
+    { label: "Verify Your Account..." },
   ]);
 
   await hideContentContextMenu();
 
   syncReady.restore();
   getState.restore();
   isSendableURI.restore();
 });
@@ -224,17 +224,17 @@ async function openContentContextMenu(se
   const contextMenu = document.getElementById("contentAreaContextMenu");
   is(contextMenu.state, "closed", "checking if popup is closed");
 
   const awaitPopupShown = BrowserTestUtils.waitForEvent(contextMenu, "popupshown");
   await BrowserTestUtils.synthesizeMouse(selector, 0, 0, {
       type: "contextmenu",
       button: 2,
       shiftkey: false,
-      centered: true
+      centered: true,
     },
     gBrowser.selectedBrowser);
   await awaitPopupShown;
 
   if (openSubmenuId) {
     const menuPopup = document.getElementById(openSubmenuId).menupopup;
     const menuPopupPromise = BrowserTestUtils.waitForEvent(menuPopup, "popupshown");
     menuPopup.openPopup();
--- a/browser/base/content/test/sync/browser_fxa_badge.js
+++ b/browser/base/content/test/sync/browser_fxa_badge.js
@@ -4,57 +4,57 @@
 "use strict";
 
 ChromeUtils.import("resource://gre/modules/AppMenuNotifications.jsm");
 
 add_task(async function test_unconfigured_no_badge() {
   const oldUIState = UIState.get;
 
   UIState.get = () => ({
-    status: UIState.STATUS_NOT_CONFIGURED
+    status: UIState.STATUS_NOT_CONFIGURED,
   });
   Services.obs.notifyObservers(null, UIState.ON_UPDATE);
   checkFxABadge(false);
 
   UIState.get = oldUIState;
 });
 
 add_task(async function test_signedin_no_badge() {
   const oldUIState = UIState.get;
 
   UIState.get = () => ({
     status: UIState.STATUS_SIGNED_IN,
     lastSync: new Date(),
-    email: "foo@bar.com"
+    email: "foo@bar.com",
   });
   Services.obs.notifyObservers(null, UIState.ON_UPDATE);
   checkFxABadge(false);
 
   UIState.get = oldUIState;
 });
 
 add_task(async function test_unverified_badge_shown() {
   const oldUIState = UIState.get;
 
   UIState.get = () => ({
     status: UIState.STATUS_NOT_VERIFIED,
-    email: "foo@bar.com"
+    email: "foo@bar.com",
   });
   Services.obs.notifyObservers(null, UIState.ON_UPDATE);
   checkFxABadge(true);
 
   UIState.get = oldUIState;
 });
 
 add_task(async function test_loginFailed_badge_shown() {
   const oldUIState = UIState.get;
 
   UIState.get = () => ({
     status: UIState.STATUS_LOGIN_FAILED,
-    email: "foo@bar.com"
+    email: "foo@bar.com",
   });
   Services.obs.notifyObservers(null, UIState.ON_UPDATE);
   checkFxABadge(true);
 
   UIState.get = oldUIState;
 });
 
 function checkFxABadge(shouldBeShown) {
--- a/browser/base/content/test/sync/browser_fxa_web_channel.html
+++ b/browser/base/content/test/sync/browser_fxa_web_channel.html
@@ -73,17 +73,17 @@
     window.addEventListener("WebChannelMessageToContent", function(e) {
       // echo any responses from the browser back to the tests on the
       // fxaccounts_webchannel_response_echo WebChannel. The tests are
       // listening for events and do the appropriate checks.
       var event = new window.CustomEvent("WebChannelMessageToChrome", {
         detail: JSON.stringify({
           id: "fxaccounts_webchannel_response_echo",
           message: e.detail.message,
-        })
+        }),
       });
 
       window.dispatchEvent(event);
     }, true);
 
     var event = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: webChannelId,
@@ -102,34 +102,34 @@
 
   function test_logout() {
     var event = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: webChannelId,
         message: {
           command: "fxaccounts:logout",
           data: {
-            uid: "uid"
+            uid: "uid",
           },
           messageId: 3,
         },
       }),
     });
 
     window.dispatchEvent(event);
   }
 
   function test_delete() {
     var event = new window.CustomEvent("WebChannelMessageToChrome", {
       detail: JSON.stringify({
         id: webChannelId,
         message: {
           command: "fxaccounts:delete",
           data: {
-            uid: "uid"
+            uid: "uid",
           },
           messageId: 4,
         },
       }),
     });
 
     window.dispatchEvent(event);
   }
--- a/browser/base/content/test/sync/browser_fxa_web_channel.js
+++ b/browser/base/content/test/sync/browser_fxa_web_channel.js
@@ -31,21 +31,21 @@ var gTests = [
           Assert.equal(data, "abc123");
           client.tearDown();
           resolve();
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: TEST_BASE_URL + "?profile_change"
+        url: TEST_BASE_URL + "?profile_change",
       }, async function() {
         await promiseObserver;
       });
-    }
+    },
   },
   {
     desc: "fxa web channel - login messages should notify the fxAccounts object",
     async run() {
 
       let promiseLogin = new Promise((resolve, reject) => {
         let login = (accountData) => {
           Assert.equal(typeof accountData.authAt, "number");
@@ -59,28 +59,28 @@ var gTests = [
           client.tearDown();
           resolve();
         };
 
         let client = new FxAccountsWebChannel({
           content_uri: TEST_HTTP_PATH,
           channel_id: TEST_CHANNEL_ID,
           helpers: {
-            login
-          }
+            login,
+          },
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: TEST_BASE_URL + "?login"
+        url: TEST_BASE_URL + "?login",
       }, async function() {
         await promiseLogin;
       });
-    }
+    },
   },
   {
     desc: "fxa web channel - can_link_account messages should respond",
     async run() {
       let properUrl = TEST_BASE_URL + "?can_link_account";
 
       let promiseEcho = new Promise((resolve, reject) => {
 
@@ -101,85 +101,85 @@ var gTests = [
         });
 
         let client = new FxAccountsWebChannel({
           content_uri: TEST_HTTP_PATH,
           channel_id: TEST_CHANNEL_ID,
           helpers: {
             shouldAllowRelink(acctName) {
               return acctName === "testuser@testuser.com";
-            }
-          }
+            },
+          },
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: properUrl
+        url: properUrl,
       }, async function() {
         await promiseEcho;
       });
-    }
+    },
   },
   {
     desc: "fxa web channel - logout messages should notify the fxAccounts object",
     async run() {
       let promiseLogout = new Promise((resolve, reject) => {
         let logout = (uid) => {
           Assert.equal(uid, "uid");
 
           client.tearDown();
           resolve();
         };
 
         let client = new FxAccountsWebChannel({
           content_uri: TEST_HTTP_PATH,
           channel_id: TEST_CHANNEL_ID,
           helpers: {
-            logout
-          }
+            logout,
+          },
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: TEST_BASE_URL + "?logout"
+        url: TEST_BASE_URL + "?logout",
       }, async function() {
         await promiseLogout;
       });
-    }
+    },
   },
   {
     desc: "fxa web channel - delete messages should notify the fxAccounts object",
     async run() {
       let promiseDelete = new Promise((resolve, reject) => {
         let logout = (uid) => {
           Assert.equal(uid, "uid");
 
           client.tearDown();
           resolve();
         };
 
         let client = new FxAccountsWebChannel({
           content_uri: TEST_HTTP_PATH,
           channel_id: TEST_CHANNEL_ID,
           helpers: {
-            logout
-          }
+            logout,
+          },
         });
       });
 
       await BrowserTestUtils.withNewTab({
         gBrowser,
-        url: TEST_BASE_URL + "?delete"
+        url: TEST_BASE_URL + "?delete",
       }, async function() {
         await promiseDelete;
       });
-    }
-  }
+    },
+  },
 ]; // gTests
 
 function makeObserver(aObserveTopic, aObserveFunc) {
   let callback = function(aSubject, aTopic, aData) {
     if (aTopic == aObserveTopic) {
       removeMe();
       aObserveFunc(aSubject, aTopic, aData);
     }
--- a/browser/base/content/test/sync/browser_sync.js
+++ b/browser/base/content/test/sync/browser_sync.js
@@ -22,127 +22,127 @@ add_task(async function test_ui_state_no
 add_task(async function test_ui_state_signedin() {
   const relativeDateAnchor = new Date();
   let state = {
     status: UIState.STATUS_SIGNED_IN,
     email: "foo@bar.com",
     displayName: "Foo Bar",
     avatarURL: "https://foo.bar",
     lastSync: new Date(),
-    syncing: false
+    syncing: false,
   };
 
   const origRelativeTimeFormat = gSync.relativeTimeFormat;
   gSync.relativeTimeFormat = {
     formatBestUnit(date) {
       return origRelativeTimeFormat.formatBestUnit(date, {now: relativeDateAnchor});
-    }
+    },
   };
 
   gSync.updateAllUI(state);
 
   let statusBarTooltip = gSync.appMenuStatus.getAttribute("signedinTooltiptext");
   let lastSyncTooltip = gSync.formatLastSyncDate(new Date(state.lastSync));
   checkPanelUIStatusBar({
     label: "Foo Bar",
     tooltip: statusBarTooltip,
     fxastatus: "signedin",
     avatarURL: "https://foo.bar",
     syncing: false,
-    syncNowTooltip: lastSyncTooltip
+    syncNowTooltip: lastSyncTooltip,
   });
   checkRemoteTabsPanel("PanelUI-remotetabs-main", false);
   checkMenuBarItem("sync-syncnowitem");
   gSync.relativeTimeFormat = origRelativeTimeFormat;
 });
 
 add_task(async function test_ui_state_syncing() {
   let state = {
     status: UIState.STATUS_SIGNED_IN,
     email: "foo@bar.com",
     displayName: "Foo Bar",
     avatarURL: "https://foo.bar",
     lastSync: new Date(),
-    syncing: true
+    syncing: true,
   };
 
   gSync.updateAllUI(state);
 
   checkSyncNowButton("appMenu-fxa-icon", true);
   checkSyncNowButton("PanelUI-remotetabs-syncnow", true);
 
   // Be good citizens and remove the "syncing" state.
   gSync.updateAllUI({
     status: UIState.STATUS_SIGNED_IN,
     email: "foo@bar.com",
     lastSync: new Date(),
-    syncing: false
+    syncing: false,
   });
   // Because we switch from syncing to non-syncing, and there's a timeout involved.
   await promiseObserver("test:browser-sync:activity-stop");
 });
 
 add_task(async function test_ui_state_unconfigured() {
   let state = {
-    status: UIState.STATUS_NOT_CONFIGURED
+    status: UIState.STATUS_NOT_CONFIGURED,
   };
 
   gSync.updateAllUI(state);
 
   let signedOffLabel = gSync.appMenuStatus.getAttribute("defaultlabel");
   let statusBarTooltip = gSync.appMenuStatus.getAttribute("signedinTooltiptext");
   checkPanelUIStatusBar({
     label: signedOffLabel,
-    tooltip: statusBarTooltip
+    tooltip: statusBarTooltip,
   });
   checkRemoteTabsPanel("PanelUI-remotetabs-setupsync");
   checkMenuBarItem("sync-setup");
 });
 
 add_task(async function test_ui_state_unverified() {
   let state = {
     status: UIState.STATUS_NOT_VERIFIED,
     email: "foo@bar.com",
     lastSync: new Date(),
-    syncing: false
+    syncing: false,
   };
 
   gSync.updateAllUI(state);
 
   let expectedLabel = gSync.appMenuStatus.getAttribute("unverifiedlabel");
   let tooltipText = gSync.fxaStrings.formatStringFromName("verifyDescription", [state.email], 1);
   checkPanelUIStatusBar({
     label: expectedLabel,
     tooltip: tooltipText,
     fxastatus: "unverified",
     avatarURL: null,
     syncing: false,
-    syncNowTooltip: tooltipText
+    syncNowTooltip: tooltipText,
   });
   checkRemoteTabsPanel("PanelUI-remotetabs-unverified", false);
   checkMenuBarItem("sync-unverifieditem");
 });
 
 add_task(async function test_ui_state_loginFailed() {
   let state = {
     status: UIState.STATUS_LOGIN_FAILED,
-    email: "foo@bar.com"
+    email: "foo@bar.com",
   };
 
   gSync.updateAllUI(state);
 
   let expectedLabel = gSync.appMenuStatus.getAttribute("errorlabel");
   let tooltipText = gSync.fxaStrings.formatStringFromName("reconnectDescription", [state.email], 1);
   checkPanelUIStatusBar({
     label: expectedLabel,
     tooltip: tooltipText,
     fxastatus: "login-failed",
     avatarURL: null,
     syncing: false,
-    syncNowTooltip: tooltipText
+    syncNowTooltip: tooltipText,
   });
   checkRemoteTabsPanel("PanelUI-remotetabs-reauthsync", false);
   checkMenuBarItem("sync-reauthitem");
 });
 
 function checkPanelUIStatusBar({label, tooltip, fxastatus, avatarURL, syncing, syncNowTooltip}) {
   let labelNode = document.getElementById("appMenu-fxa-label");
   let tooltipNode = document.getElementById("appMenu-fxa-status");
--- a/browser/base/content/test/tabcrashed/browser_showForm.js
+++ b/browser/base/content/test/tabcrashed/browser_showForm.js
@@ -15,17 +15,17 @@ add_task(async function test_show_form()
   return BrowserTestUtils.withNewTab({
     gBrowser,
     url: PAGE,
   }, async function(browser) {
     // Flip the pref so that the checkbox should be checked
     // by default.
     let pref = TabCrashHandler.prefs.root + "sendReport";
     await SpecialPowers.pushPrefEnv({
-      set: [[pref, true]]
+      set: [[pref, true]],
     });
 
     // Now crash the browser.
     await BrowserTestUtils.crashBrowser(browser);
 
     let doc = browser.contentDocument;
 
     // Ensure the checkbox is checked. We can safely reach into
--- a/browser/base/content/test/tabcrashed/head.js
+++ b/browser/base/content/test/tabcrashed/head.js
@@ -18,17 +18,17 @@
  *        in expectedExtra. It's possible that the crash report
  *        will contain other extra information that is not
  *        compared against.
  * @returns Promise
  */
 function promiseCrashReport(expectedExtra = {}) {
   return (async function() {
     info("Starting wait on crash-report-status");
-    let [subject, ] =
+    let [subject ] =
       await TestUtils.topicObserved("crash-report-status", (unused, data) => {
         return data == "success";
       });
     info("Topic observed!");
 
     if (!(subject instanceof Ci.nsIPropertyBag2)) {
       throw new Error("Subject was not a Ci.nsIPropertyBag2");
     }
--- a/browser/base/content/test/tabs/browser_audioTabIcon.js
+++ b/browser/base/content/test/tabs/browser_audioTabIcon.js
@@ -347,17 +347,17 @@ async function test_click_on_pinned_tab_
     gBrowser.unpinTab(tab);
     gBrowser.selectedTab = originallySelectedTab;
   }
 
   let originallySelectedTab = gBrowser.selectedTab;
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: PAGE
+    url: PAGE,
   }, taskFn);
 }
 
 // This test only does something useful in e10s!
 async function test_cross_process_load() {
   async function taskFn(browser) {
     let tab = gBrowser.getTabForBrowser(browser);
 
@@ -375,17 +375,17 @@ async function test_cross_process_load()
     await soundPlayingStoppedPromise;
 
     ok(!tab.hasAttribute("soundplaying"), "Tab should not be playing sound any more");
     ok(!tab.soundPlaying, "Tab should not be playing sound any more");
   }
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: PAGE
+    url: PAGE,
   }, taskFn);
 }
 
 async function test_mute_keybinding() {
   async function test_muting_using_keyboard(tab) {
     let mutedPromise = get_wait_for_mute_promise(tab, true);
     EventUtils.synthesizeKey("m", {ctrlKey: true});
     await mutedPromise;
@@ -420,17 +420,17 @@ async function test_mute_keybinding() {
     // Make sure it's possible to mute after the tab is playing.
     await test_muting_using_keyboard(tab);
 
     gBrowser.unpinTab(tab);
   }
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: PAGE
+    url: PAGE,
   }, taskFn);
 }
 
 async function test_on_browser(browser) {
   let tab = gBrowser.getTabForBrowser(browser);
 
   // Test the icon in a normal tab.
   await test_playing_icon_on_tab(tab, browser, false);
@@ -444,17 +444,17 @@ async function test_on_browser(browser) 
 
   // Test the sound playing icon for hidden tabs.
   await test_playing_icon_on_hidden_tab(tab);
 
   // Retest with another browser in the foreground tab
   if (gBrowser.selectedBrowser.currentURI.spec == PAGE) {
     await BrowserTestUtils.withNewTab({
       gBrowser,
-      url: "data:text/html,test"
+      url: "data:text/html,test",
     }, () => test_on_browser(browser));
   } else {
     await test_browser_swapping(tab, browser);
   }
 }
 
 async function test_delayed_tabattr_removal() {
   async function taskFn(browser) {
@@ -465,31 +465,31 @@ async function test_delayed_tabattr_remo
     // is not removed from the tab when audio is stopped. Without
     // the extended delay the attribute could be removed in the
     // same tick and the test wouldn't catch that this broke.
     await pause(tab, {extendedDelay: true});
   }
 
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: PAGE
+    url: PAGE,
   }, taskFn);
 }
 
 add_task(async function() {
   await SpecialPowers.pushPrefEnv({"set": [
                                     ["browser.tabs.showAudioPlayingIcon", true],
                                   ]});
 });
 
 requestLongerTimeout(2);
 add_task(async function test_page() {
   await BrowserTestUtils.withNewTab({
     gBrowser,
-    url: PAGE
+    url: PAGE,
   }, test_on_browser);
 });
 
 add_task(test_click_on_pinned_tab_after_mute);
 
 add_task(test_cross_process_load);
 
 add_task(test_mute_keybinding);
--- a/browser/base/content/test/tabs/browser_close_tab_by_dblclick.js
+++ b/browser/base/content/test/tabs/browser_close_tab_by_dblclick.js
@@ -15,21 +15,21 @@ function triggerDblclickOn(target) {
 add_task(async function dblclick() {
   let tab = gBrowser.selectedTab;
   await triggerDblclickOn(tab);
   ok(!tab.closing, "Double click the selected tab won't close it");
 });
 
 add_task(async function dblclickWithPrefSet() {
   await SpecialPowers.pushPrefEnv({set: [
-    [PREF_CLOSE_TAB_BY_DBLCLICK, true]
+    [PREF_CLOSE_TAB_BY_DBLCLICK, true],
   ]});
 
   let tab = BrowserTestUtils.addTab(gBrowser, "about:mozilla", {
-    skipAnimation: true
+    skipAnimation: true,
   });
   isnot(tab, gBrowser.selectedTab, "The new tab is in the background");
 
   await triggerDblclickOn(tab);
   is(tab, gBrowser.selectedTab, "Double click a background tab will select it");
 
   await triggerDblclickOn(tab);
   ok(tab.closing, "Double click the selected tab will close it");
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_active_tab_selected_by_default.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_active_tab_selected_by_default.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function multiselectActiveTabByDefault() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 
   const tab1 = await addTab();
   const tab2 = await addTab();
   const tab3 = await addTab();
 
   await BrowserTestUtils.switchTab(gBrowser, tab1);
 
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_bookmark.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_bookmark.js
@@ -9,17 +9,17 @@ async function addTab_example_com() {
     "http://example.com/", { skipAnimation: true });
   const browser = gBrowser.getBrowserForTab(tab);
   await BrowserTestUtils.browserLoaded(browser);
   return tab;
 }
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function test() {
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
 
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_clear_selection_when_tab_switch.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_clear_selection_when_tab_switch.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function test() {
   let initialTab = gBrowser.selectedTab;
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_close.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_close.js
@@ -1,17 +1,17 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 const PREF_WARN_ON_CLOSE = "browser.tabs.warnOnCloseOtherTabs";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
     set: [
       [PREF_MULTISELECT_TABS, true],
-      [PREF_WARN_ON_CLOSE, false]
-    ]
+      [PREF_WARN_ON_CLOSE, false],
+    ],
   });
 });
 
 add_task(async function usingTabCloseButton() {
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
   let tab4 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_close_other_tabs.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_close_other_tabs.js
@@ -1,17 +1,17 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 const PREF_WARN_ON_CLOSE = "browser.tabs.warnOnCloseOtherTabs";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
     set: [
       [PREF_MULTISELECT_TABS, true],
-      [PREF_WARN_ON_CLOSE, false]
-    ]
+      [PREF_WARN_ON_CLOSE, false],
+    ],
   });
 });
 
 add_task(async function withAMultiSelectedTab() {
   let initialTab = gBrowser.selectedTab;
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_close_tabs_to_the_right.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_close_tabs_to_the_right.js
@@ -1,17 +1,17 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 const PREF_WARN_ON_CLOSE = "browser.tabs.warnOnCloseOtherTabs";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
     set: [
       [PREF_MULTISELECT_TABS, true],
-      [PREF_WARN_ON_CLOSE, false]
-    ]
+      [PREF_WARN_ON_CLOSE, false],
+    ],
   });
 });
 
 add_task(async function withAMultiSelectedTab() {
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
   let tab4 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_close_using_shortcuts.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_close_using_shortcuts.js
@@ -1,17 +1,17 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 const PREF_WARN_ON_CLOSE = "browser.tabs.warnOnCloseOtherTabs";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
     set: [
       [PREF_MULTISELECT_TABS, true],
-      [PREF_WARN_ON_CLOSE, false]
-    ]
+      [PREF_WARN_ON_CLOSE, false],
+    ],
   });
 });
 
 add_task(async function using_Ctrl_W() {
   for (let key of ["w", "VK_F4"]) {
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_copy_through_drag_and_drop.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_copy_through_drag_and_drop.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function test() {
   let tab0 = gBrowser.selectedTab;
   let tab1 = await addTab("http://example.com/1");
   let tab2 = await addTab("http://example.com/2");
   let tab3 = await addTab("http://example.com/3");
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_duplicate.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
     await SpecialPowers.pushPrefEnv({
-        set: [[PREF_MULTISELECT_TABS, true]]
+        set: [[PREF_MULTISELECT_TABS, true]],
     });
 });
 
 add_task(async function test() {
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
 
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_event.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_event.js
@@ -1,15 +1,15 @@
 /* eslint-disable mozilla/no-arbitrary-setTimeout */
 
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function clickWithPrefSet() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 
   let detectUnexpected = true;
   window.addEventListener("TabMultiSelect", () => {
     if (detectUnexpected) {
       ok(false, "Shouldn't get unexpected event");
     }
   });
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_move_to_another_window_drag.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_move_to_another_window_drag.js
@@ -1,17 +1,17 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 const PREF_ANIMATIONS_ENABLED = "toolkit.cosmeticAnimations.enabled";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
     set: [
       [PREF_MULTISELECT_TABS, true],
-      [PREF_ANIMATIONS_ENABLED, false]
-    ]
+      [PREF_ANIMATIONS_ENABLED, false],
+    ],
   });
 });
 
 add_task(async function test() {
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab("http://mochi.test:8888/3");
   let tab4 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_move_to_new_window_contextmenu.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_move_to_new_window_contextmenu.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function test() {
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
   let tab4 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_mute_unmute.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_mute_unmute.js
@@ -13,17 +13,17 @@ async function addMediaTab() {
   const tab = BrowserTestUtils.addTab(gBrowser, PAGE, { skipAnimation: true });
   const browser = gBrowser.getBrowserForTab(tab);
   await BrowserTestUtils.browserLoaded(browser);
   return tab;
 }
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function muteTabs_usingButton() {
   let tab0 = await addMediaTab();
   let tab1 = await addMediaTab();
   let tab2 = await addMediaTab();
   let tab3 = await addMediaTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_pin_unpin.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_pin_unpin.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
     await SpecialPowers.pushPrefEnv({
-        set: [[PREF_MULTISELECT_TABS, true]]
+        set: [[PREF_MULTISELECT_TABS, true]],
     });
 });
 
 add_task(async function test() {
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
 
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_positional_attrs.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_positional_attrs.js
@@ -1,17 +1,17 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 const PREF_WARN_ON_CLOSE = "browser.tabs.warnOnCloseOtherTabs";
 
 add_task(async function setPref() {
     await SpecialPowers.pushPrefEnv({
         set: [
             [PREF_MULTISELECT_TABS, true],
-            [PREF_WARN_ON_CLOSE, false]
-        ]
+            [PREF_WARN_ON_CLOSE, false],
+        ],
     });
 });
 
 add_task(async function checkBeforeMultiselectedAttributes() {
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
 
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_reload.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_reload.js
@@ -3,17 +3,17 @@ const PREF_MULTISELECT_TABS = "browser.t
 async function tabLoaded(tab) {
     const browser = gBrowser.getBrowserForTab(tab);
     await BrowserTestUtils.browserLoaded(browser);
     return true;
 }
 
 add_task(async function setPref() {
     await SpecialPowers.pushPrefEnv({
-        set: [[PREF_MULTISELECT_TABS, true]]
+        set: [[PREF_MULTISELECT_TABS, true]],
     });
 });
 
 add_task(async function test() {
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
 
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_reorder.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_reorder.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function() {
   let tab0 = gBrowser.selectedTab;
   let tab1 = await addTab();
   let tab2 = await addTab();
   let tab3 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_using_Ctrl.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_using_Ctrl.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function clickWithoutPrefSet() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, false]]
+    set: [[PREF_MULTISELECT_TABS, false]],
   });
 
   let tab = await addTab();
   let mSelectedTabs = gBrowser._multiSelectedTabsSet;
 
   isnot(gBrowser.selectedTab, tab, "Tab doesn't have focus");
 
   // We make sure that the tab-switch is completely done before executing checks
@@ -23,23 +23,23 @@ add_task(async function clickWithoutPref
   is(gBrowser.selectedTab, tab,
     "Tab has focus, selected tab has changed after Ctrl/Cmd + click");
 
   BrowserTestUtils.removeTab(tab);
 });
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
-      set: [[PREF_MULTISELECT_TABS, true]]
+      set: [[PREF_MULTISELECT_TABS, true]],
   });
 });
 
 add_task(async function clickWithPrefSet() {
   await SpecialPowers.pushPrefEnv({
-    set: [[PREF_MULTISELECT_TABS, true]]
+    set: [[PREF_MULTISELECT_TABS, true]],
   });
 
   const initialFocusedTab = await addTab();
   await BrowserTestUtils.switchTab(gBrowser, initialFocusedTab);
   const tab = await addTab();
 
   await triggerClickOn(tab, { ctrlKey: true });
   ok(tab.multiselected && gBrowser._multiSelectedTabsSet.has(tab),
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_using_Shift.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_using_Shift.js
@@ -1,13 +1,13 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function prefNotSet() {
     await SpecialPowers.pushPrefEnv({
-        set: [[PREF_MULTISELECT_TABS, false]]
+        set: [[PREF_MULTISELECT_TABS, false]],
     });
 
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
 
     await BrowserTestUtils.switchTab(gBrowser, tab1);
 
@@ -27,17 +27,17 @@ add_task(async function prefNotSet() {
 
     BrowserTestUtils.removeTab(tab1);
     BrowserTestUtils.removeTab(tab2);
     BrowserTestUtils.removeTab(tab3);
 });
 
 add_task(async function setPref() {
     await SpecialPowers.pushPrefEnv({
-        set: [[PREF_MULTISELECT_TABS, true]]
+        set: [[PREF_MULTISELECT_TABS, true]],
     });
 });
 
 add_task(async function noItemsInTheCollectionBeforeShiftClicking() {
     let tab1 = await addTab();
     let tab2 = await addTab();
     let tab3 = await addTab();
     let tab4 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_using_Shift_and_Ctrl.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_using_Shift_and_Ctrl.js
@@ -1,15 +1,15 @@
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function setPref() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      [PREF_MULTISELECT_TABS, true]
-    ]
+      [PREF_MULTISELECT_TABS, true],
+    ],
   });
 });
 
 add_task(async function selectionWithShiftPreviously() {
   const tab1 = await addTab();
   const tab2 = await addTab();
   const tab3 = await addTab();
   const tab4 = await addTab();
--- a/browser/base/content/test/tabs/browser_multiselect_tabs_using_selectedTabs.js
+++ b/browser/base/content/test/tabs/browser_multiselect_tabs_using_selectedTabs.js
@@ -2,18 +2,18 @@
  * http://creativecommons.org/publicdomain/zero/1.0/
  */
 
 const PREF_MULTISELECT_TABS = "browser.tabs.multiselect";
 
 add_task(async function() {
   await SpecialPowers.pushPrefEnv({
     set: [
-      [PREF_MULTISELECT_TABS, true]
-    ]
+      [PREF_MULTISELECT_TABS, true],
+    ],
   });
 
   function testSelectedTabs(tabs) {
     is(gBrowser.tabContainer.getAttribute("aria-multiselectable"), "true",
        "tabbrowser should be marked as aria-multiselectable");
     gBrowser.selectedTabs = tabs;
     let {selectedTab, selectedTabs, _multiSelectedTabsSet} = gBrowser;
     is(selectedTab, tabs[0], "The selected tab should be the expected one");
--- a/browser/base/content/test/tabs/browser_new_tab_in_privileged_process_pref.js
+++ b/browser/base/content/test/tabs/browser_new_tab_in_privileged_process_pref.js
@@ -43,17 +43,17 @@ async function checkBrowserRemoteType(
 
 add_task(async function setup() {
   await SpecialPowers.pushPrefEnv({
     set: [
       ["browser.newtab.preload", false],
       ["browser.tabs.remote.separatePrivilegedContentProcess", true],
       ["dom.ipc.processCount.privileged", 1],
       ["dom.ipc.keepProcessesAlive.privileged", 1],
-    ]
+    ],
   });
 });
 
 /*
  * Test to ensure that the Activity Stream tabs open in privileged content
  * process. We will first open an about:newtab page that acts as a reference to
  * the privileged content process. With the reference, we can then open Activity
  * Stream links in a new tab and ensure that the new tab opens in the same
@@ -72,17 +72,17 @@ add_task(async function activity_stream_
       ABOUT_NEWTAB,
       ABOUT_WELCOME,
       ABOUT_HOME,
       `${ABOUT_NEWTAB}#foo`,
       `${ABOUT_WELCOME}#bar`,
       `${ABOUT_HOME}#baz`,
       `${ABOUT_NEWTAB}?q=foo`,
       `${ABOUT_WELCOME}?q=bar`,
-      `${ABOUT_HOME}?q=baz`
+      `${ABOUT_HOME}?q=baz`,
     ]) {
       await BrowserTestUtils.withNewTab(url, async function(browser2) {
         is(browser2.frameLoader.tabParent.osPid, privilegedPid,
           "Check that about:newtab tabs are in the same privileged content process.");
       });
     }
   });
 
@@ -114,17 +114,17 @@ add_task(async function process_switchin
       [TEST_HTTP, E10SUtils.WEB_REMOTE_TYPE],
       [`${ABOUT_HOME}#baz`, E10SUtils.PRIVILEGED_REMOTE_TYPE],
       [TEST_HTTP, E10SUtils.WEB_REMOTE_TYPE],
       [`${ABOUT_NEWTAB}?q=foo`, E10SUtils.PRIVILEGED_REMOTE_TYPE],
       [TEST_HTTP, E10SUtils.WEB_REMOTE_TYPE],
       [`${ABOUT_WELCOME}?q=bar`, E10SUtils.PRIVILEGED_REMOTE_TYPE],
       [TEST_HTTP, E10SUtils.WEB_REMOTE_TYPE],
       [`${ABOUT_HOME}?q=baz`, E10SUtils.PRIVILEGED_REMOTE_TYPE],
-      [TEST_HTTP, E10SUtils.WEB_REMOTE_TYPE]
+      [TEST_HTTP, E10SUtils.WEB_REMOTE_TYPE],
     ]) {
       BrowserTestUtils.loadURI(browser, url);
       await BrowserTestUtils.browserLoaded(browser, false, url);
       await checkBrowserRemoteType(browser, remoteType);
     }
   });
 
   Services.ppmm.releaseCachedProcesses();
--- a/browser/base/content/test/tabs/browser_new_tab_insert_position.js
+++ b/browser/base/content/test/tabs/browser_new_tab_insert_position.js
@@ -13,28 +13,28 @@ const triggeringPrincipal_base64 = Utils
 function promiseBrowserStateRestored(state) {
   if (typeof state != "string") {
     state = JSON.stringify(state);
   }
   // We wait for the notification that restore is done, and for the notification
   // that the active tab is loaded and restored.
   let promise = Promise.all([
     TestUtils.topicObserved("sessionstore-browser-state-restored"),
-    BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "SSTabRestored")
+    BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "SSTabRestored"),
   ]);
   SessionStore.setBrowserState(state);
   return promise;
 }
 
 function promiseRemoveThenUndoCloseTab(tab) {
   // We wait for the notification that restore is done, and for the notification
   // that the active tab is loaded and restored.
   let promise = Promise.all([
     TestUtils.topicObserved("sessionstore-closed-objects-changed"),
-    BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "SSTabRestored")
+    BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "SSTabRestored"),
   ]);
   BrowserTestUtils.removeTab(tab);
   SessionStore.undoCloseTab(window, 0);
   return promise;
 }
 
 // Compare the current browser tab order against the session state ordering, they should always match.
 function verifyTabState(state) {
--- a/browser/base/content/test/tabs/browser_tabSpinnerProbe.js
+++ b/browser/base/content/test/tabs/browser_tabSpinnerProbe.js
@@ -87,14 +87,14 @@ add_task(async function setup() {
     set: [
       ["dom.ipc.processCount", 1],
       // We can interrupt JS to paint now, which is great for
       // users, but bad for testing spinners. We temporarily
       // disable that feature for this test so that we can
       // easily get ourselves into a predictable tab spinner
       // state.
       ["browser.tabs.remote.force-paint", false],
-    ]
+    ],
   });
 });
 
 add_task(testProbe.bind(null, "FX_TAB_SWITCH_SPINNER_VISIBLE_MS"));
 add_task(testProbe.bind(null, "FX_TAB_SWITCH_SPINNER_VISIBLE_LONG_MS"));
--- a/browser/base/content/test/tabs/head.js
+++ b/browser/base/content/test/tabs/head.js
@@ -9,17 +9,17 @@ function updateTabContextMenu(tab) {
   menu.hidePopup();
 }
 
 function triggerClickOn(target, options) {
   let promise = BrowserTestUtils.waitForEvent(target, "click");
   if (AppConstants.platform == "macosx") {
       options = {
           metaKey: options.ctrlKey,
-          shiftKey: options.shiftKey
+          shiftKey: options.shiftKey,
       };
   }
   EventUtils.synthesizeMouseAtCenter(target, options);
   return promise;
 }
 
 async function addTab(url = "http://mochi.test:8888/") {
   const tab = BrowserTestUtils.addTab(gBrowser, url, { skipAnimation: true });
--- a/browser/base/content/test/touch/browser_menu_touch.js
+++ b/browser/base/content/test/touch/browser_menu_touch.js
@@ -61,18 +61,18 @@ async function openAndCheckCustomization
   menu.hidePopup();
 }
 
 // Ensure that we can run touch events properly for windows [10]
 add_task(async function setup() {
   let isWindows = AppConstants.isPlatformAndVersionAtLeast("win", "10.0");
   await SpecialPowers.pushPrefEnv({
     set: [
-      ["apz.test.fails_with_native_injection", isWindows]
-    ]
+      ["apz.test.fails_with_native_injection", isWindows],
+    ],
   });
 });
 
 // Test main ("hamburger") menu.
 add_task(async function test_main_menu_touch() {
   let mainMenu = document.getElementById("appMenu-popup");
   let target = document.getElementById("PanelUI-menu-button");
   await openAndCheckMenu(mainMenu, target);
--- a/browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_animation_2.js
@@ -23,17 +23,17 @@ function waitForSecurityChange(tabbrowse
     let listener = {
       onSecurityChange() {
         n = n + 1;
         info("Received onSecurityChange event " + n + " of " + numChanges);
         if (n >= numChanges) {
           tabbrowser.removeProgressListener(listener);
           resolve();
         }
-      }
+      },
     };
     tabbrowser.addProgressListener(listener);
   });
 }
 
 async function testTrackingProtectionAnimation(tabbrowser) {
   info("Load a test page not containing tracking elements");
   let benignTab = await BrowserTestUtils.openNewForegroundTab(tabbrowser, BENIGN_PAGE);
--- a/browser/base/content/test/trackingUI/browser_trackingUI_fetch.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_fetch.js
@@ -6,17 +6,17 @@ function waitForSecurityChange(numChange
     let listener = {
       onSecurityChange() {
         n = n + 1;
         info("Received onSecurityChange event " + n + " of " + numChanges);
         if (n >= numChanges) {
           gBrowser.removeProgressListener(listener);
           resolve();
         }
-      }
+      },
     };
     gBrowser.addProgressListener(listener);
   });
 }
 
 add_task(async function test_fetch() {
   await SpecialPowers.pushPrefEnv({ set: [
     ["privacy.trackingprotection.enabled", true],
--- a/browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
+++ b/browser/base/content/test/trackingUI/browser_trackingUI_report_breakage.js
@@ -205,17 +205,17 @@ add_task(async function testReportBreaka
           "Content-Disposition: form-data; name=\"title\"\r\n\r\ntracking.example.org\r\n",
           "Content-Disposition: form-data; name=\"body\"\r\n\r\n" +
           `Full URL: ${reportURL + "?"}\r\n` +
           `userAgent: ${navigator.userAgent}\r\n\r\n` +
           "**Preferences**\r\n" +
           `${prefsBody}\r\n` +
           "**Comments**\r\n" +
           "This is a comment\r\n",
-          ""
+          "",
         ], "Should send the correct form data");
 
         resolve();
       });
 
       let comments = document.getElementById("identity-popup-breakageReportView-collection-comments");
       comments.value = "This is a comment";
       submitButton.click();
--- a/browser/base/content/test/urlbar/browser_URLBarSetURI.js
+++ b/browser/base/content/test/urlbar/browser_URLBarSetURI.js
@@ -56,17 +56,17 @@ var tests = [
       // Load a new URL and then immediately stop it, to simulate a page load
       // error.
       tab.linkedBrowser.loadURI("http://test1.example.com");
       tab.linkedBrowser.stop();
       is(gURLBar.textValue, "example.com", "URL bar had user/pass stripped after load error");
       gBrowser.removeTab(tab);
       next();
     });
-  }
+  },
 ];
 
 function loadTabInWindow(win, callback) {
   info("Loading tab");
   let url = "http://user:pass@example.com/";
   let tab = win.gBrowser.selectedTab = BrowserTestUtils.addTab(win.gBrowser, url);
   BrowserTestUtils.browserLoaded(tab.linkedBrowser, false, url).then(() => {
     info("Tab loaded");
--- a/browser/base/content/test/urlbar/browser_autocomplete_enter_race.js
+++ b/browser/base/content/test/urlbar/browser_autocomplete_enter_race.js
@@ -1,15 +1,15 @@
 // The order of these tests matters!
 
 add_task(async function setup() {
   let bm = await PlacesUtils.bookmarks.insert({
     parentGuid: PlacesUtils.bookmarks.unfiledGuid,
     url: "http://example.com/?q=%s",
-    title: "test"
+    title: "test",
   });
   registerCleanupFunction(async function() {
     await PlacesUtils.bookmarks.remove(bm);
   });
   await PlacesUtils.keywords.insert({ keyword: "keyword",
                                       url: "http://example.com/?q=%s" });
   // Needs at least one success.
   ok(true, "Setup complete");
--- a/browser/base/content/test/urlbar/browser_autocomplete_tag_star_visibility.js
+++ b/browser/base/content/test/urlbar/browser_autocomplete_tag_star_visibility.js
@@ -3,17 +3,17 @@ add_task(async function() {
     await PlacesUtils.bookmarks.eraseEverything();
   });
 
   async function addTagItem(tagName) {
     let url = `http://example.com/this/is/tagged/${tagName}`;
     await PlacesUtils.bookmarks.insert({
       parentGuid: PlacesUtils.bookmarks.unfiledGuid,
       url,
-      title: `test ${tagName}`
+      title: `test ${tagName}`,
     });
     PlacesUtils.tagging.tagURI(Services.io.newURI(url), [tagName]);
     await PlacesTestUtils.addVisits({uri: url, title: `Test page with tag ${tagName}`});
   }
 
   // We use different tags for each part of the test, as otherwise the
   // autocomplete code tries to be smart by using the previously cached element
   // without updating it (since all parameters it knows about are the same).
--- a/browser/base/content/test/urlbar/browser_bug556061.js
+++ b/browser/base/content/test/urlbar/browser_bug556061.js
@@ -35,41 +35,41 @@ var tests = [
 
       // Focus the urlbar so we can select it all & copy
       gURLBar.focus();
       gURLBar.select();
       goDoCommand("cmd_copy");
     },
     success() {
       is(gURLBar.value, testActionURL, "gURLBar.value didn't change when copying");
-    }
+    },
   },
   {
     expected: testURL.substring(0, 10),
     setup() {
       // Set selectionStart/End manually and make sure it matches the substring
       gURLBar.selectionStart = 0;
       gURLBar.selectionEnd = 10;
       goDoCommand("cmd_copy");
     },
     success() {
       is(gURLBar.value, testActionURL, "gURLBar.value didn't change when copying");
-    }
+    },
   },
   {
     expected: testURL,
     setup() {
       // Setup for cut test...
       // Select all
       gURLBar.select();
       goDoCommand("cmd_cut");
     },
     success() {
       is(gURLBar.value, "", "gURLBar.value is now empty");
-    }
+    },
   },
   {
     expected: testURL.substring(testURL.length - 10, testURL.length),
     setup() {
       // Reset urlbar value
       gURLBar.value = testActionURL;
       gURLBar.valueIsTyped = true;
       // Sanity check that we have the right value
@@ -78,18 +78,18 @@ var tests = [
 
       // Now just select part of the value & cut that.
       gURLBar.selectionStart = testURL.length - 10;
       gURLBar.selectionEnd = testURL.length;
       goDoCommand("cmd_cut");
     },
     success() {
       is(gURLBar.value, testURL.substring(0, testURL.length - 10), "gURLBar.value has the correct value");
-    }
-  }
+    },
+  },
 ];
 
 function test() {
   waitForExplicitFinish();
   testTab = BrowserTestUtils.addTab(gBrowser);
   gBrowser.selectedTab = testTab;
 
   // Kick off the testing
--- a/browser/base/content/test/urlbar/browser_bug623155.js
+++ b/browser/base/content/test/urlbar/browser_bug623155.js
@@ -87,17 +87,17 @@ var gWebProgressListener = {
       is(gNewTab, gBrowser.selectedTab, "This is a foreground tab.");
     } else {
       // We shonuld not reach here.
       ok(false, "This URI hash is not expected:" + aLocation.ref);
     }
 
     let isSelectedTab = gNewTab.selected;
     setTimeout(delayed, 0, isSelectedTab);
-  }
+  },
 };
 
 function delayed(aIsSelectedTab) {
   // Switch tab and confirm URL bar.
   if (!aIsSelectedTab) {
     gBrowser.selectedTab = gNewTab;
   }
 
--- a/browser/base/content/test/urlbar/browser_locationBarCommand.js
+++ b/browser/base/content/test/urlbar/browser_locationBarCommand.js
@@ -38,17 +38,17 @@ add_task(async function shift_left_click
   triggerCommand(true, {shiftKey: true});
   let win = await newWindowPromise;
 
   // Wait for the initial browser to load.
   let browser = win.gBrowser.selectedBrowser;
   let destinationURL = "http://" + TEST_VALUE + "/";
   await Promise.all([
     BrowserTestUtils.browserLoaded(browser),
-    BrowserTestUtils.waitForLocationChange(win.gBrowser, destinationURL)
+    BrowserTestUtils.waitForLocationChange(win.gBrowser, destinationURL),
   ]);
 
   info("URL should be loaded in a new window");
   is(gURLBar.value, "", "Urlbar reverted to original value");
   await promiseCheckChildNoFocusedElement(gBrowser.selectedBrowser);
   is(document.activeElement, gBrowser.selectedBrowser, "Content window should be focused");
   is(win.gURLBar.textValue, TEST_VALUE, "New URL is loaded in new window");
 
@@ -96,17 +96,17 @@ add_task(async function shift_accel_left
   gBrowser.removeCurrentTab();
 });
 
 add_task(async function load_in_current_tab_test() {
   let tests = [
     {desc: "Simple return keypress"},
     {desc: "Left click on go button", click: true},
     {desc: "Ctrl/Cmd+Return keypress", event: {accelKey: true}},
-    {desc: "Alt+Return keypress in a blank tab", event: {altKey: true}}
+    {desc: "Alt+Return keypress in a blank tab", event: {altKey: true}},
   ];
 
   for (let test of tests) {
     info(`Running test: ${test.desc}`);
 
     // Add a new tab.
     let tab = await promiseOpenNewTab();
 
@@ -124,17 +124,17 @@ add_task(async function load_in_current_
     // Cleanup.
     gBrowser.removeCurrentTab();
   }
 });
 
 add_task(async function load_in_new_tab_test() {
   let tests = [
     {desc: "Ctrl/Cmd left click on go button", click: true, event: {accelKey: true}},
-    {desc: "Alt+Return keypress in a dirty tab", event: {altKey: true}, url: START_VALUE}
+    {desc: "Alt+Return keypress in a dirty tab", event: {altKey: true}, url: START_VALUE},
   ];
 
   for (let test of tests) {
     info(`Running test: ${test.desc}`);
 
     // Add a new tab.
     let tab = await promiseOpenNewTab(test.url || "about:blank");
 
@@ -174,17 +174,17 @@ function triggerCommand(shouldClick, eve
 function promiseLoadStarted() {
   return new Promise(resolve => {
     gBrowser.addTabsProgressListener({
       onStateChange(browser, webProgress, req, flags, status) {
         if (flags & Ci.nsIWebProgressListener.STATE_START) {
           gBrowser.removeTabsProgressListener(this);
           resolve();
         }
-      }
+      },
     });
   });
 }
 
 async function promiseOpenNewTab(url = "about:blank") {
   let tab = BrowserTestUtils.addTab(gBrowser, url);
   let tabSwitchPromise = promiseNewTabSwitched(tab);
   gBrowser.selectedTab = tab;
--- a/browser/base/content/test/urlbar/browser_page_action_menu.js
+++ b/browser/base/content/test/urlbar/browser_page_action_menu.js
@@ -230,24 +230,24 @@ add_task(async function sendToDevice_syn
         className: "pageAction-sendToDevice-notReady",
         display: "none",
         disabled: true,
       },
       {
         attrs: {
           label: "Account Not Verified",
         },
-        disabled: true
+        disabled: true,
       },
       null,
       {
         attrs: {
           label: "Verify Your Account...",
         },
-      }
+      },
     ];
     checkSendToDeviceItems(expectedItems);
<