Merge m-c to inbound. a=merge CLOSED TREE
authorRyan VanderMeulen <ryanvm@gmail.com>
Thu, 19 May 2016 12:49:49 -0400
changeset 298171 159d2986681071d6549031afaff91911f8080a27
parent 298170 34e9970d625a335944f922ac9cc0ad460af8be32 (current diff)
parent 298113 1806d405c8715949b39fa3a4fc142d14a60df590 (diff)
child 298172 a32fdbf877e09609cf4894cf6fa27711795839e2
push id30273
push userkwierso@gmail.com
push dateFri, 20 May 2016 21:08:12 +0000
treeherdermozilla-central@c403ac05b8f4 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmerge
milestone49.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 m-c to inbound. a=merge CLOSED TREE
browser/base/content/browser.js
devtools/client/inspector/inspector-panel.js
devtools/shared/security/socket.js
devtools/shared/webconsole/test/unit/test_security-info-protocol-version.js
mobile/android/base/java/org/mozilla/gecko/mozglue/ContextUtils.java
mobile/android/base/resources/drawable-hdpi/menu_popup_bg.9.png
mobile/android/base/resources/drawable-xhdpi/menu_popup_bg.9.png
--- a/.eslintignore
+++ b/.eslintignore
@@ -150,23 +150,34 @@ devtools/client/preferences/**
 # Ignore devtools third-party libs
 devtools/shared/jsbeautify/*
 devtools/shared/acorn/*
 devtools/client/sourceeditor/tern/*
 devtools/shared/pretty-fast/*
 devtools/shared/sourcemap/*
 devtools/shared/qrcode/decoder/*
 devtools/shared/qrcode/encoder/*
+devtools/client/shared/demangle.js
 devtools/client/shared/vendor/*
-devtools/client/shared/d3.js
-devtools/client/webaudioeditor/lib/dagre-d3.js
 devtools/client/sourceeditor/codemirror/*.js
 devtools/client/sourceeditor/codemirror/**/*.js
 devtools/client/sourceeditor/test/codemirror/*
 devtools/client/inspector/markup/test/lib_*
+devtools/client/jsonview/lib/require.js
+devtools/server/actors/utils/automation-timeline.js
+
+# Ignore devtools files testing sourcemaps / code style
+devtools/client/debugger/test/mochitest/code_binary_search.js
+devtools/client/debugger/test/mochitest/code_math.min.js
+devtools/client/debugger/test/mochitest/code_math_bogus_map.js
+devtools/client/debugger/test/mochitest/code_ugly*
+devtools/client/debugger/test/mochitest/code_worker-source-map.js
+devtools/client/framework/test/code_ugly*
+devtools/server/tests/unit/babel_and_browserify_script_with_source_map.js
+devtools/server/tests/unit/setBreakpoint*
 
 # mobile/android/ exclusions
 mobile/android/chrome/content
 mobile/android/tests/
 
 # Uses `#filter substitution`
 mobile/android/b2gdroid/app/b2gdroid.js
 mobile/android/app/mobile.js
--- a/Makefile.in
+++ b/Makefile.in
@@ -281,22 +281,20 @@ ifeq (,$(filter-out Linux SunOS,$(OS_ARC
 MAKE_SYM_STORE_ARGS := -c --vcs-info
 DUMP_SYMS_BIN ?= $(DIST)/host/bin/dump_syms
 MAKE_SYM_STORE_PATH := $(DIST)/bin
 endif
 MAKE_SYM_STORE_ARGS += --install-manifest=$(DEPTH)/_build_manifests/install/dist_include,$(DIST)/include
 
 SYM_STORE_SOURCE_DIRS := $(topsrcdir)
 
-ifdef MOZ_CRASHREPORTER
 include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
 
 SYMBOL_INDEX_NAME = \
   $(MOZ_APP_NAME)-$(MOZ_APP_VERSION)-$(OS_TARGET)-$(BUILDID)-$(CPU_ARCH)-symbols.txt
-endif
 
 buildsymbols:
 ifdef MOZ_CRASHREPORTER
 	echo building symbol store
 	$(RM) -r $(DIST)/crashreporter-symbols
 	$(RM) '$(DIST)/$(SYMBOL_ARCHIVE_BASENAME).zip'
 	$(RM) '$(DIST)/$(SYMBOL_FULL_ARCHIVE_BASENAME).zip'
 	$(NSINSTALL) -D $(DIST)/crashreporter-symbols
--- a/browser/base/content/browser-syncui.js
+++ b/browser/base/content/browser-syncui.js
@@ -398,20 +398,17 @@ var gSyncUI = {
       tooltiptext = this._stringBundle.GetStringFromName("signInToSync.description");
     } else if (loginFailed) {
       // "need to reconnect/re-enter your password"
       tooltiptext = gFxAccounts.strings.formatStringFromName("reconnectDescription", [email], 1);
     } else {
       // Sync appears configured - format the "last synced at" time.
       try {
         let lastSync = new Date(Services.prefs.getCharPref("services.sync.lastSync"));
-        // Show the day-of-week and time (HH:MM) of last sync
-        let lastSyncDateString = lastSync.toLocaleDateString(undefined,
-          {weekday: 'long', hour: 'numeric', minute: 'numeric'});
-        tooltiptext = this._stringBundle.formatStringFromName("lastSync2.label", [lastSyncDateString], 1);
+        tooltiptext = this.formatLastSyncDate(lastSync);
       }
       catch (e) {
         // pref doesn't exist (which will be the case until we've seen the
         // first successful sync) or is invalid (which should be impossible!)
         // Just leave tooltiptext as the empty string in these cases, which
         // will cause the tooltip to be removed below.
       }
     }
@@ -426,16 +423,34 @@ var gSyncUI = {
       if (tooltiptext) {
         broadcaster.setAttribute("tooltiptext", tooltiptext);
       } else {
         broadcaster.removeAttribute("tooltiptext");
       }
     }
   }),
 
+  formatLastSyncDate: function(date) {
+    let dateFormat;
+    let sixDaysAgo = (() => {
+      let date = new Date();
+      date.setDate(date.getDate() - 6);
+      date.setHours(0, 0, 0, 0);
+      return date;
+    })();
+    // It may be confusing for the user to see "Last Sync: Monday" when the last sync was a indeed a Monday but 3 weeks ago
+    if (date < sixDaysAgo) {
+      dateFormat = {month: 'long', day: 'numeric'};
+    } else {
+      dateFormat = {weekday: 'long', hour: 'numeric', minute: 'numeric'};
+    }
+    let lastSyncDateString = date.toLocaleDateString(undefined, dateFormat);
+    return this._stringBundle.formatStringFromName("lastSync2.label", [lastSyncDateString], 1);
+  },
+
   onSyncFinish: function SUI_onSyncFinish() {
     let title = this._stringBundle.GetStringFromName("error.sync.title");
   },
 
   onClientsSynced: function() {
     let broadcaster = document.getElementById("sync-syncnow-state");
     if (broadcaster) {
       if (Weave.Service.clientsEngine.stats.numClients > 1) {
--- a/browser/base/content/browser-tabsintitlebar.js
+++ b/browser/base/content/browser-tabsintitlebar.js
@@ -3,16 +3,19 @@
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 // Note: the file browser-tabsintitlebar-stub.js is used instead of
 // this one on platforms which don't have CAN_DRAW_IN_TITLEBAR defined.
 
 var TabsInTitlebar = {
   init: function () {
+    if (this._initialized) {
+      return;
+    }
     this._readPref();
     Services.prefs.addObserver(this._prefName, this, false);
 
     // We need to update the appearance of the titlebar when the menu changes
     // from the active to the inactive state. We can't, however, rely on
     // DOMMenuBarInactive, because the menu fires this event and then removes
     // the inactive attribute after an event-loop spin.
     //
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -985,17 +985,16 @@ var gBrowserInit = {
       gURLBar.setAttribute("enablehistory", "false");
       goSetCommandEnabled("cmd_newNavigatorTab", false);
     }
 
     // Misc. inits.
     TabletModeUpdater.init();
     CombinedStopReload.init();
     gPrivateBrowsingUI.init();
-    TabsInTitlebar.init();
 
     if (window.matchMedia("(-moz-os-version: windows-win8)").matches &&
         window.matchMedia("(-moz-windows-default-theme)").matches) {
       let windowFrameColor = Cu.import("resource:///modules/Windows8WindowFrameColor.jsm", {})
                                .Windows8WindowFrameColor.get();
 
       // Formula from W3C's WCAG 2.0 spec's color ratio and relative luminance,
       // section 1.3.4, http://www.w3.org/TR/WCAG20/ .
@@ -5096,22 +5095,25 @@ var TabletModeUpdater = {
     }
   },
 
   observe(subject, topic, data) {
     this.update(data == "tablet-mode");
   },
 
   update(isInTabletMode) {
+    let wasInTabletMode = document.documentElement.hasAttribute("tabletmode");
     if (isInTabletMode) {
       document.documentElement.setAttribute("tabletmode", "true");
     } else {
       document.documentElement.removeAttribute("tabletmode");
     }
-    TabsInTitlebar.updateAppearance(true);
+    if (wasInTabletMode != isInTabletMode) {
+      TabsInTitlebar.updateAppearance(true);
+    }
   },
 };
 
 var gTabletModePageCounter = {
   enabled: false,
   inc() {
     this.enabled = AppConstants.isPlatformAndVersionAtLeast("win", "10.0");
     if (!this.enabled) {
--- a/browser/base/content/tabbrowser.xml
+++ b/browser/base/content/tabbrowser.xml
@@ -5359,16 +5359,17 @@
       </method>
 
       <method name="handleEvent">
         <parameter name="aEvent"/>
         <body><![CDATA[
           switch (aEvent.type) {
             case "load":
               this.updateVisibility();
+              TabsInTitlebar.init();
               break;
             case "resize":
               if (aEvent.target != window)
                 break;
 
               TabsInTitlebar.updateAppearance();
 
               var width = this.mTabstrip.boxObject.width;
--- a/browser/base/content/test/general/browser_syncui.js
+++ b/browser/base/content/test/general/browser_syncui.js
@@ -174,16 +174,29 @@ function *doTestButtonActivities() {
 }
 
 add_task(function* testButtonActivitiesInNavBar() {
   // check the button's functionality while the button is in the NavBar - which
   // it already is.
   yield doTestButtonActivities();
 });
 
+add_task(function* testFormatLastSyncDateNow() {
+  let now = new Date();
+  let nowString = gSyncUI.formatLastSyncDate(now);
+  Assert.equal(nowString, "Last sync: " + now.toLocaleDateString(undefined, {weekday: 'long', hour: 'numeric', minute: 'numeric'}));
+});
+
+add_task(function* testFormatLastSyncDateMonthAgo() {
+  let monthAgo = new Date();
+  monthAgo.setMonth(monthAgo.getMonth() - 1);
+  let monthAgoString = gSyncUI.formatLastSyncDate(monthAgo);
+  Assert.equal(monthAgoString, "Last sync: " + monthAgo.toLocaleDateString(undefined, {month: 'long', day: 'numeric'}));
+});
+
 add_task(function* testButtonActivitiesInPanel() {
   // check the button's functionality while the button is in the panel - it's
   // currently in the NavBar - move it to the panel and open it.
   CustomizableUI.addWidgetToArea("sync-button", CustomizableUI.AREA_PANEL);
   yield PanelUI.show();
   try {
     yield doTestButtonActivities();
   } finally {
--- a/browser/components/syncedtabs/TabListView.js
+++ b/browser/components/syncedtabs/TabListView.js
@@ -46,16 +46,17 @@ function TabListView(window, props) {
   this.tabsFilter = this._doc.querySelector(".tabsFilter");
   this.clearFilter = this._doc.querySelector(".textbox-search-clear");
   this.searchBox = this._doc.querySelector(".search-box");
   this.searchIcon = this._doc.querySelector(".textbox-search-icon");
 
   this.container = this._doc.createElement("div");
 
   this._attachFixedListeners();
+
   this._setupContextMenu();
 }
 
 TabListView.prototype = {
   render(state) {
     // Don't rerender anything; just update attributes, e.g. selection
     if (state.canUpdateAll) {
       this._update(state);
@@ -202,17 +203,19 @@ TabListView.prototype = {
   /**
    * Update the element representing an item, ensuring it's in sync with the
    * underlying data.
    * @param {client} item - Item to use as a source.
    * @param {Element} itemNode - Element to update.
    */
   _updateClient(item, itemNode) {
     itemNode.setAttribute("id", "item-" + item.id);
-    itemNode.setAttribute("title", item.name);
+    let lastSync = new Date(item.lastModified);
+    let lastSyncTitle = getChromeWindow(this._window).gSyncUI.formatLastSyncDate(lastSync);
+    itemNode.setAttribute("title", lastSyncTitle);
     if (item.closed) {
       itemNode.classList.add("closed");
     } else {
       itemNode.classList.remove("closed");
     }
     if (item.selected) {
       itemNode.classList.add("selected");
     } else {
--- a/browser/themes/shared/devedition.inc.css
+++ b/browser/themes/shared/devedition.inc.css
@@ -24,17 +24,17 @@
   --chrome-nav-buttons-background: #252C33;
   --chrome-nav-buttons-hover-background: #1B2127;
   --chrome-nav-bar-controls-border-color: #1D2328;
   --chrome-selection-color: #fff;
   --chrome-selection-background-color: #5675B9;
 
   /* Tabs */
   --tabs-toolbar-color: #F5F7FA;
-  --tab-background-color: #1C2126;
+  --tab-background-color: #272b35;
   --tab-hover-background-color: #07090a;
   --tab-selection-color: #f5f7fa;
   --tab-selection-background-color: #5675B9;
   --tab-selection-box-shadow: none;
   --pinned-tab-glow: radial-gradient(22px at center calc(100% - 2px), rgba(76,158,217,0.9) 13%, rgba(0,0,0,0.4) 16%, transparent 70%);
 
   /* Toolbar buttons */
   --toolbarbutton-hover-background: rgba(25,33, 38,.6) linear-gradient(rgba(25,33,38,.6), rgba(25,33,38,.6)) padding-box;
--- a/build/autoconf/android.m4
+++ b/build/autoconf/android.m4
@@ -336,16 +336,17 @@ case "$target" in
     ANDROID_TOOLS="${android_tools}"
     AC_DEFINE_UNQUOTED(ANDROID_TARGET_SDK,$ANDROID_TARGET_SDK)
     AC_SUBST(ANDROID_TARGET_SDK)
     AC_SUBST(ANDROID_SDK_ROOT)
     AC_SUBST(ANDROID_SDK)
     AC_SUBST(ANDROID_TOOLS)
 
     MOZ_ANDROID_AAR(appcompat-v7, 23.0.1, android, com/android/support)
+    MOZ_ANDROID_AAR(cardview-v7, 23.0.1, android, com/android/support)
     MOZ_ANDROID_AAR(design, 23.0.1, android, com/android/support)
     MOZ_ANDROID_AAR(recyclerview-v7, 23.0.1, android, com/android/support)
     MOZ_ANDROID_AAR(support-v4, 23.0.1, android, com/android/support, REQUIRED_INTERNAL_IMPL)
 
     ANDROID_SUPPORT_ANNOTATIONS_JAR="$ANDROID_SDK_ROOT/extras/android/m2repository/com/android/support/support-annotations/23.0.1/support-annotations-23.0.1.jar"
     AC_MSG_CHECKING([for support-annotations JAR])
     if ! test -e $ANDROID_SUPPORT_ANNOTATIONS_JAR ; then
         AC_MSG_ERROR([You must download the support-annotations lib.  Run the Android SDK tool and install the Android Support Repository under Extras.  See https://developer.android.com/tools/extras/support-library.html for more info. (looked for $ANDROID_SUPPORT_ANNOTATIONS_JAR)])
--- a/build/moz-automation.mk
+++ b/build/moz-automation.mk
@@ -6,16 +6,22 @@
 ifneq (,$(filter automation/%,$(MAKECMDGOALS)))
 ifeq (4.0,$(firstword $(sort 4.0 $(MAKE_VERSION))))
 MAKEFLAGS += --output-sync=target
 else
 .NOTPARALLEL:
 endif
 endif
 
+include $(topsrcdir)/toolkit/mozapps/installer/package-name.mk
+include $(topsrcdir)/toolkit/mozapps/installer/upload-files.mk
+
+# Clear out DIST_FILES if it was set by upload-files.mk (for Android builds)
+DIST_FILES =
+
 # Helper variables to convert from MOZ_AUTOMATION_* variables to the
 # corresponding the make target
 tier_MOZ_AUTOMATION_BUILD_SYMBOLS = buildsymbols
 tier_MOZ_AUTOMATION_L10N_CHECK = l10n-check
 tier_MOZ_AUTOMATION_PRETTY_L10N_CHECK = pretty-l10n-check
 tier_MOZ_AUTOMATION_INSTALLER = installer
 tier_MOZ_AUTOMATION_PRETTY_INSTALLER = pretty-installer
 tier_MOZ_AUTOMATION_PACKAGE = package
--- a/devtools/client/aboutdebugging/components/aboutdebugging.js
+++ b/devtools/client/aboutdebugging/components/aboutdebugging.js
@@ -19,29 +19,26 @@ loader.lazyGetter(this, "TabsPanel",
 loader.lazyGetter(this, "WorkersPanel",
   () => createFactory(require("./workers/panel")));
 
 const Strings = Services.strings.createBundle(
   "chrome://devtools/locale/aboutdebugging.properties");
 
 const panels = [{
   id: "addons",
-  panelId: "addons-panel",
   name: Strings.GetStringFromName("addons"),
   icon: "chrome://devtools/skin/images/debugging-addons.svg",
   component: AddonsPanel
 }, {
   id: "tabs",
-  panelId: "tabs-panel",
   name: Strings.GetStringFromName("tabs"),
   icon: "chrome://devtools/skin/images/debugging-tabs.svg",
   component: TabsPanel
 }, {
   id: "workers",
-  panelId: "workers-panel",
   name: Strings.GetStringFromName("workers"),
   icon: "chrome://devtools/skin/images/debugging-workers.svg",
   component: WorkersPanel
 }];
 
 const defaultPanelId = "addons";
 
 module.exports = createClass({
--- a/devtools/client/aboutdebugging/components/addons/panel.js
+++ b/devtools/client/aboutdebugging/components/addons/panel.js
@@ -62,17 +62,18 @@ module.exports = createClass({
   updateAddonsList() {
     this.props.client.listAddons()
       .then(({addons}) => {
         let extensions = addons.filter(addon => addon.debuggable).map(addon => {
           return {
             name: addon.name,
             icon: addon.iconURL || ExtensionIcon,
             addonID: addon.id,
-            addonActor: addon.actor
+            addonActor: addon.actor,
+            temporarilyInstalled: addon.temporarilyInstalled
           };
         });
 
         this.setState({ extensions });
       }, error => {
         throw new Error("Client error while listing addons: " + error);
       });
   },
@@ -107,23 +108,23 @@ module.exports = createClass({
 
   render() {
     let { client, id } = this.props;
     let { debugDisabled, extensions: targets } = this.state;
     let name = Strings.GetStringFromName("extensions");
     let targetClass = AddonTarget;
 
     return dom.div({
-      id,
+      id: id + "-panel",
       className: "panel",
       role: "tabpanel",
-      "aria-labelledby": "panel-addons-header-name"
+      "aria-labelledby": id + "-header"
     },
     PanelHeader({
-      id: "addons-panel-header-name",
+      id: id + "-header",
       name: Strings.GetStringFromName("addons")
     }),
     AddonsControls({ debugDisabled }),
     dom.div({ id: "addons" },
       TargetList({
         name,
         targets,
         client,
--- a/devtools/client/aboutdebugging/components/addons/target.js
+++ b/devtools/client/aboutdebugging/components/addons/target.js
@@ -35,16 +35,18 @@ module.exports = createClass({
     }).then(() => {}, error => {
       throw new Error(
         "Error reloading addon " + target.addonID + ": " + error);
     });
   },
 
   render() {
     let { target, debugDisabled } = this.props;
+    // Only temporarily installed add-ons can be reloaded.
+    const canBeReloaded = target.temporarilyInstalled;
 
     return dom.li({ className: "target-container" },
       dom.img({
         className: "target-icon",
         role: "presentation",
         src: target.icon
       }),
       dom.div({ className: "target" },
@@ -52,13 +54,16 @@ module.exports = createClass({
       ),
       dom.button({
         className: "debug-button",
         onClick: this.debug,
         disabled: debugDisabled,
       }, Strings.GetStringFromName("debug")),
       dom.button({
         className: "reload-button",
-        onClick: this.reload
+        onClick: this.reload,
+        disabled: !canBeReloaded,
+        title: !canBeReloaded ?
+          Strings.GetStringFromName("reloadDisabledTooltip") : ""
       }, Strings.GetStringFromName("reload"))
     );
   }
 });
--- a/devtools/client/aboutdebugging/components/panel-menu-entry.js
+++ b/devtools/client/aboutdebugging/components/panel-menu-entry.js
@@ -16,24 +16,24 @@ module.exports = createClass({
 
   onKeyDown(event) {
     if ([" ", "Enter"].includes(event.key)) {
       this.props.selectPanel(this.props.id);
     }
   },
 
   render() {
-    let { panelId, icon, name, selected } = this.props;
+    let { id, name, icon, selected } = this.props;
 
     // Here .category, .category-icon, .category-name classnames are used to
     // apply common styles defined.
     let className = "category" + (selected ? " selected" : "");
     return dom.div({
       "aria-selected": selected,
-      "aria-controls": panelId,
+      "aria-controls": id + "-panel",
       className,
       onClick: this.onClick,
       onKeyDown: this.onKeyDown,
       tabIndex: "0",
       role: "tab" },
     dom.img({ className: "category-icon", src: icon, role: "presentation" }),
     dom.div({ className: "category-name" }, name));
   }
--- a/devtools/client/aboutdebugging/components/panel-menu.js
+++ b/devtools/client/aboutdebugging/components/panel-menu.js
@@ -8,21 +8,20 @@ const { createClass, createFactory, DOM:
   require("devtools/client/shared/vendor/react");
 const PanelMenuEntry = createFactory(require("./panel-menu-entry"));
 
 module.exports = createClass({
   displayName: "PanelMenu",
 
   render() {
     let { panels, selectedPanelId, selectPanel } = this.props;
-    let panelLinks = panels.map(({ id, panelId, name, icon }) => {
+    let panelLinks = panels.map(({ id, name, icon }) => {
       let selected = id == selectedPanelId;
       return PanelMenuEntry({
         id,
-        panelId,
         name,
         icon,
         selected,
         selectPanel
       });
     });
 
     // "categories" id used for styling purposes
--- a/devtools/client/aboutdebugging/components/tabs/panel.js
+++ b/devtools/client/aboutdebugging/components/tabs/panel.js
@@ -58,27 +58,27 @@ module.exports = createClass({
           tab.icon = "chrome://devtools/skin/images/tabs-icon.svg";
         }
       });
       this.setState({ tabs });
     });
   },
 
   render() {
-    let { client } = this.props;
+    let { client, id } = this.props;
     let { tabs } = this.state;
 
     return dom.div({
-      id: "tabs-panel",
+      id: id + "-panel",
       className: "panel",
       role: "tabpanel",
-      "aria-labelledby": "tabs-panel-header-name"
+      "aria-labelledby": id + "-header"
     },
     PanelHeader({
-      id: "tabs-panel-header-name",
+      id: id + "-header",
       name: Strings.GetStringFromName("tabs")
     }),
     dom.div({},
       TargetList({
         client,
         id: "tabs",
         name: Strings.GetStringFromName("tabs"),
         sort: false,
--- a/devtools/client/aboutdebugging/components/workers/panel.js
+++ b/devtools/client/aboutdebugging/components/workers/panel.js
@@ -99,23 +99,23 @@ module.exports = createClass({
     });
   },
 
   render() {
     let { client, id } = this.props;
     let { workers } = this.state;
 
     return dom.div({
-      id,
+      id: id + "-panel",
       className: "panel",
       role: "tabpanel",
-      "aria-labelledby": "panel-workers-header-name"
+      "aria-labelledby": id + "-header"
     },
     PanelHeader({
-      id: "workers-panel-header-name",
+      id: id + "-header",
       name: Strings.GetStringFromName("workers")
     }),
     dom.div({ id: "workers", className: "inverted-icons" },
       TargetList({
         client,
         id: "service-workers",
         name: Strings.GetStringFromName("serviceWorkers"),
         sort: true,
new file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..946422b6f188b1c597d7d59236b076c3949706ac
GIT binary patch
literal 280
zc$^FHW@Zs#U|`^2m{GC8!!T$2#0(&B8W8g`$S~w4=4Ga(7MJK{73b%LhHx@4-&eN^
z{|CgS72FJrEMFNJ7{J<BKMM*7IOTihw2!y0UZ=jduGYCT=Yux|8C+uYe4_en8Iz@#
z=hBy4ZEnwwwTY>DC2+PlsXE&-cSIyPI{Kv*C2<Dqk<bX_6=CjLwp=a!`Qe=ojb}tw
zbOtcXdNr7dYd0><-s!Mo8aG3LHzSiAGcE^9Fn|EiO$<vKK`b=qvqGGY=JWt>RyK$>
MMuuP@y&h}`09TPrj{pDw
--- a/devtools/client/aboutdebugging/test/browser.ini
+++ b/devtools/client/aboutdebugging/test/browser.ini
@@ -1,16 +1,17 @@
 [DEFAULT]
 tags = devtools
 subsuite = devtools
 support-files =
   head.js
   addons/unpacked/bootstrap.js
   addons/unpacked/install.rdf
   addons/bad/manifest.json
+  addons/bug1273184.xpi
   service-workers/empty-sw.html
   service-workers/empty-sw.js
   service-workers/push-sw.html
   service-workers/push-sw.js
 
 [browser_addons_debug_bootstrapped.js]
 [browser_addons_debugging_initial_state.js]
 [browser_addons_install.js]
--- a/devtools/client/aboutdebugging/test/browser_addons_reload.js
+++ b/devtools/client/aboutdebugging/test/browser_addons_reload.js
@@ -17,26 +17,58 @@ function promiseAddonEvent(event) {
         resolve(args);
       }
     };
 
     AddonManager.addAddonListener(listener);
   });
 }
 
+function* tearDownAddon(addon) {
+  const onUninstalled = promiseAddonEvent("onUninstalled");
+  addon.uninstall();
+  const [uninstalledAddon] = yield onUninstalled;
+  is(uninstalledAddon.id, addon.id,
+     `Add-on was uninstalled: ${uninstalledAddon.id}`);
+}
+
 function getReloadButton(document, addonName) {
   const names = [...document.querySelectorAll("#addons .target-name")];
   const name = names.filter(element => element.textContent === addonName)[0];
   ok(name, `Found ${addonName} add-on in the list`);
   const targetElement = name.parentNode.parentNode;
   const reloadButton = targetElement.querySelector(".reload-button");
   info(`Found reload button for ${addonName}`);
   return reloadButton;
 }
 
+function installAddonWithManager(filePath) {
+  return new Promise((resolve, reject) => {
+    AddonManager.getInstallForFile(filePath, install => {
+      if (!install) {
+        throw new Error(`An install was not created for ${filePath}`);
+      }
+      install.addListener({
+        onDownloadFailed: reject,
+        onDownloadCancelled: reject,
+        onInstallFailed: reject,
+        onInstallCancelled: reject,
+        onInstallEnded: resolve
+      });
+      install.install();
+    });
+  });
+}
+
+function getAddonByID(addonId) {
+  return new Promise(resolve => {
+    AddonManager.getAddonByID(addonId, addon => resolve(addon));
+  });
+}
+
 /**
  * Creates a web extension from scratch in a temporary location.
  * The object must be removed when you're finished working with it.
  */
 class TempWebExt {
   constructor(addonId) {
     this.addonId = addonId;
     this.tmpDir = FileUtils.getDir("TmpD", ["browser_addons_reload"]);
@@ -76,16 +108,18 @@ class TempWebExt {
 
 add_task(function* reloadButtonReloadsAddon() {
   const { tab, document } = yield openAboutDebugging("addons");
   yield waitForInitialAddonList(document);
   yield installAddon(document, "addons/unpacked/install.rdf",
                      ADDON_NAME, ADDON_NAME);
 
   const reloadButton = getReloadButton(document, ADDON_NAME);
+  is(reloadButton.disabled, false, "Reload button should not be disabled");
+  is(reloadButton.title, "", "Reload button should not have a tooltip");
   const onInstalled = promiseAddonEvent("onInstalled");
 
   const onBootstrapInstallCalled = new Promise(done => {
     Services.obs.addObserver(function listener() {
       Services.obs.removeObserver(listener, ADDON_NAME, false);
       info("Add-on was re-installed: " + ADDON_NAME);
       done();
     }, ADDON_NAME, false);
@@ -93,24 +127,17 @@ add_task(function* reloadButtonReloadsAd
 
   reloadButton.click();
 
   const [reloadedAddon] = yield onInstalled;
   is(reloadedAddon.name, ADDON_NAME,
      "Add-on was reloaded: " + reloadedAddon.name);
 
   yield onBootstrapInstallCalled;
-
-  info("Uninstall addon installed earlier.");
-  const onUninstalled = promiseAddonEvent("onUninstalled");
-  reloadedAddon.uninstall();
-  const [uninstalledAddon] = yield onUninstalled;
-  is(uninstalledAddon.id, ADDON_ID,
-     "Add-on was uninstalled: " + uninstalledAddon.id);
-
+  yield tearDownAddon(reloadedAddon);
   yield closeAboutDebugging(tab);
 });
 
 add_task(function* reloadButtonRefreshesMetadata() {
   const { tab, document } = yield openAboutDebugging("addons");
   yield waitForInitialAddonList(document);
 
   const manifestBase = {
@@ -148,15 +175,30 @@ add_task(function* reloadButtonRefreshes
   yield onAddonReloaded;
   const [reloadedAddon] = yield onReInstall;
   // Make sure the name was updated correctly.
   const allAddons = [...document.querySelectorAll("#addons .target-name")]
     .map(element => element.textContent);
   const nameWasUpdated = allAddons.some(name => name === newName);
   ok(nameWasUpdated, `New name appeared in reloaded add-ons: ${allAddons}`);
 
-  const onUninstalled = promiseAddonEvent("onUninstalled");
-  reloadedAddon.uninstall();
-  yield onUninstalled;
-
+  yield tearDownAddon(reloadedAddon);
   tempExt.remove();
   yield closeAboutDebugging(tab);
 });
+
+add_task(function* onlyTempInstalledAddonsCanBeReloaded() {
+  const { tab, document } = yield openAboutDebugging("addons");
+  yield waitForInitialAddonList(document);
+  const onAddonListUpdated = waitForMutation(getAddonList(document),
+                                             { childList: true });
+  yield installAddonWithManager(getSupportsFile("addons/bug1273184.xpi").file);
+  yield onAddonListUpdated;
+  const addon = yield getAddonByID("bug1273184@tests");
+
+  const reloadButton = getReloadButton(document, addon.name);
+  ok(reloadButton, "Reload button exists");
+  is(reloadButton.disabled, true, "Reload button should be disabled");
+  ok(reloadButton.title, "Disabled reload button should have a tooltip");
+
+  yield tearDownAddon(addon);
+  yield closeAboutDebugging(tab);
+});
--- a/devtools/client/canvasdebugger/callslist.js
+++ b/devtools/client/canvasdebugger/callslist.js
@@ -8,17 +8,17 @@
 /**
  * Functions handling details about a single recorded animation frame snapshot
  * (the calls list, rendering preview, thumbnails filmstrip etc.).
  */
 var CallsListView = Heritage.extend(WidgetMethods, {
   /**
    * Initialization function, called when the tool is started.
    */
-  initialize: function() {
+  initialize: function () {
     this.widget = new SideMenuWidget($("#calls-list"));
     this._slider = $("#calls-slider");
     this._searchbox = $("#calls-searchbox");
     this._filmstrip = $("#snapshot-filmstrip");
 
     this._onSelect = this._onSelect.bind(this);
     this._onSlideMouseDown = this._onSlideMouseDown.bind(this);
     this._onSlideMouseUp = this._onSlideMouseUp.bind(this);
@@ -35,32 +35,32 @@ var CallsListView = Heritage.extend(Widg
     this._slider.addEventListener("change", this._onSlide, false);
     this._searchbox.addEventListener("input", this._onSearch, false);
     this._filmstrip.addEventListener("wheel", this._onScroll, false);
   },
 
   /**
    * Destruction function, called when the tool is closed.
    */
-  destroy: function() {
+  destroy: function () {
     this.widget.removeEventListener("select", this._onSelect, false);
     this._slider.removeEventListener("mousedown", this._onSlideMouseDown, false);
     this._slider.removeEventListener("mouseup", this._onSlideMouseUp, false);
     this._slider.removeEventListener("change", this._onSlide, false);
     this._searchbox.removeEventListener("input", this._onSearch, false);
     this._filmstrip.removeEventListener("wheel", this._onScroll, false);
   },
 
   /**
    * Populates this container with a list of function calls.
    *
    * @param array functionCalls
    *        A list of function call actors received from the backend.
    */
-  showCalls: function(functionCalls) {
+  showCalls: function (functionCalls) {
     this.empty();
 
     for (let i = 0, len = functionCalls.length; i < len; i++) {
       let call = functionCalls[i];
 
       let view = document.createElement("vbox");
       view.className = "call-item-view devtools-monospace";
       view.setAttribute("flex", "1");
@@ -151,17 +151,17 @@ var CallsListView = Heritage.extend(Widg
 
   /**
    * Displays an image in the rendering preview of this container, generated
    * for the specified draw call in the recorded animation frame snapshot.
    *
    * @param array screenshot
    *        A single "snapshot-image" instance received from the backend.
    */
-  showScreenshot: function(screenshot) {
+  showScreenshot: function (screenshot) {
     let { index, width, height, scaling, flipped, pixels } = screenshot;
 
     let screenshotNode = $("#screenshot-image");
     screenshotNode.setAttribute("flipped", flipped);
     drawBackground("screenshot-rendering", width, height, pixels);
 
     let dimensionsNode = $("#screenshot-dimensions");
     let actualWidth = (width / scaling) | 0;
@@ -174,17 +174,17 @@ var CallsListView = Heritage.extend(Widg
 
   /**
    * Populates this container's footer with a list of thumbnails, one generated
    * for each draw call in the recorded animation frame snapshot.
    *
    * @param array thumbnails
    *        An array of "snapshot-image" instances received from the backend.
    */
-  showThumbnails: function(thumbnails) {
+  showThumbnails: function (thumbnails) {
     while (this._filmstrip.hasChildNodes()) {
       this._filmstrip.firstChild.remove();
     }
     for (let thumbnail of thumbnails) {
       this.appendThumbnail(thumbnail);
     }
 
     window.emit(EVENTS.THUMBNAILS_DISPLAYED);
@@ -192,17 +192,17 @@ var CallsListView = Heritage.extend(Widg
 
   /**
    * Displays an image in the thumbnails list of this container, generated
    * for the specified draw call in the recorded animation frame snapshot.
    *
    * @param array thumbnail
    *        A single "snapshot-image" instance received from the backend.
    */
-  appendThumbnail: function(thumbnail) {
+  appendThumbnail: function (thumbnail) {
     let { index, width, height, flipped, pixels } = thumbnail;
 
     let thumbnailNode = document.createElementNS(HTML_NS, "canvas");
     thumbnailNode.setAttribute("flipped", flipped);
     thumbnailNode.width = Math.max(CanvasFront.THUMBNAIL_SIZE, width);
     thumbnailNode.height = Math.max(CanvasFront.THUMBNAIL_SIZE, height);
     drawImage(thumbnailNode, width, height, pixels, { centered: true });
 
@@ -221,17 +221,17 @@ var CallsListView = Heritage.extend(Widg
    *        The context function call's index.
    */
   set highlightedThumbnail(index) {
     let currHighlightedThumbnail = $(".filmstrip-thumbnail[index='" + index + "']");
     if (currHighlightedThumbnail == null) {
       return;
     }
 
-    let prevIndex = this._highlightedThumbnailIndex
+    let prevIndex = this._highlightedThumbnailIndex;
     let prevHighlightedThumbnail = $(".filmstrip-thumbnail[index='" + prevIndex + "']");
     if (prevHighlightedThumbnail) {
       prevHighlightedThumbnail.removeAttribute("highlighted");
     }
 
     currHighlightedThumbnail.setAttribute("highlighted", "");
     currHighlightedThumbnail.scrollIntoView();
     this._highlightedThumbnailIndex = index;
@@ -243,17 +243,17 @@ var CallsListView = Heritage.extend(Widg
    */
   get highlightedThumbnail() {
     return this._highlightedThumbnailIndex;
   },
 
   /**
    * The select listener for this container.
    */
-  _onSelect: function({ detail: callItem }) {
+  _onSelect: function ({ detail: callItem }) {
     if (!callItem) {
       return;
     }
 
     // Some of the stepping buttons don't make sense specifically while the
     // last function call is selected.
     if (this.selectedIndex == this.itemCount - 1) {
       $("#resume").setAttribute("disabled", "true");
@@ -278,43 +278,43 @@ var CallsListView = Heritage.extend(Widg
     }
 
     // To keep continuous selection buttery smooth (for example, while pressing
     // the DOWN key or moving the slider), only display the screenshot after
     // any kind of user input stops.
     setConditionalTimeout("screenshot-display", SCREENSHOT_DISPLAY_DELAY, () => {
       return !this._isSliding;
     }, () => {
-      let frameSnapshot = SnapshotsListView.selectedItem.attachment.actor
+      let frameSnapshot = SnapshotsListView.selectedItem.attachment.actor;
       let functionCall = callItem.attachment.actor;
       frameSnapshot.generateScreenshotFor(functionCall).then(screenshot => {
         this.showScreenshot(screenshot);
         this.highlightedThumbnail = screenshot.index;
       }).catch(e => console.error(e));
     });
   },
 
   /**
    * The mousedown listener for the call selection slider.
    */
-  _onSlideMouseDown: function() {
+  _onSlideMouseDown: function () {
     this._isSliding = true;
   },
 
   /**
    * The mouseup listener for the call selection slider.
    */
-  _onSlideMouseUp: function() {
+  _onSlideMouseUp: function () {
     this._isSliding = false;
   },
 
   /**
    * The change listener for the call selection slider.
    */
-  _onSlide: function() {
+  _onSlide: function () {
     // Avoid performing any operations when programatically changing the value.
     if (this._ignoreSliderChanges) {
       return;
     }
     let selectedFunctionCallIndex = this.selectedIndex = this._slider.value;
 
     // While sliding, immediately show the most relevant thumbnail for a
     // function call, for a nice diff-like animation effect between draws.
@@ -338,17 +338,17 @@ var CallsListView = Heritage.extend(Widg
     let screenshotNode = $("#screenshot-image");
     screenshotNode.setAttribute("flipped", flipped);
     drawBackground("screenshot-rendering", width, height, pixels);
   },
 
   /**
    * The input listener for the calls searchbox.
    */
-  _onSearch: function(e) {
+  _onSearch: function (e) {
     let lowerCaseSearchToken = this._searchbox.value.toLowerCase();
 
     this.filterContents(e => {
       let call = e.attachment.actor;
       let name = call.name.toLowerCase();
       let file = call.file.toLowerCase();
       let line = call.line.toString().toLowerCase();
       let args = call.argsPreview.toLowerCase();
@@ -358,25 +358,25 @@ var CallsListView = Heritage.extend(Widg
              line.includes(lowerCaseSearchToken) ||
              args.includes(lowerCaseSearchToken);
     });
   },
 
   /**
    * The wheel listener for the filmstrip that contains all the thumbnails.
    */
-  _onScroll: function(e) {
+  _onScroll: function (e) {
     this._filmstrip.scrollLeft += e.deltaX;
   },
 
   /**
    * The click/dblclick listener for an item or location url in this container.
    * When expanding an item, it's corresponding call stack will be displayed.
    */
-  _onExpand: function(e) {
+  _onExpand: function (e) {
     let callItem = this.getItemForElement(e.target);
     let view = $(".call-item-view", callItem.target);
 
     // If the call stack nodes were already created, simply re-show them
     // or jump to the corresponding file and line in the Debugger if a
     // location link was clicked.
     if (view.hasAttribute("call-stack-populated")) {
       let isExpanded = view.getAttribute("call-stack-expanded") == "true";
@@ -450,69 +450,69 @@ var CallsListView = Heritage.extend(Widg
   /**
    * The click listener for a location link in the call stack.
    *
    * @param string file
    *        The url of the source owning the function.
    * @param number line
    *        The line of the respective function.
    */
-  _onStackFileClick: function(e, { file, line }) {
+  _onStackFileClick: function (e, { file, line }) {
     this._viewSourceInDebugger(file, line);
   },
 
   /**
    * The click listener for a thumbnail in the filmstrip.
    *
    * @param number index
    *        The function index in the recorded animation frame snapshot.
    */
-  _onThumbnailClick: function(e, index) {
+  _onThumbnailClick: function (e, index) {
     this.selectedIndex = index;
   },
 
   /**
    * The click listener for the "resume" button in this container's toolbar.
    */
-  _onResume: function() {
+  _onResume: function () {
     // Jump to the next draw call in the recorded animation frame snapshot.
     let drawCall = getNextDrawCall(this.items, this.selectedItem);
     if (drawCall) {
       this.selectedItem = drawCall;
       return;
     }
 
     // If there are no more draw calls, just jump to the last context call.
     this._onStepOut();
   },
 
   /**
    * The click listener for the "step over" button in this container's toolbar.
    */
-  _onStepOver: function() {
+  _onStepOver: function () {
     this.selectedIndex++;
   },
 
   /**
    * The click listener for the "step in" button in this container's toolbar.
    */
-  _onStepIn: function() {
+  _onStepIn: function () {
     if (this.selectedIndex == -1) {
       this._onResume();
       return;
     }
     let callItem = this.selectedItem;
     let { file, line } = callItem.attachment.actor;
     this._viewSourceInDebugger(file, line);
   },
 
   /**
    * The click listener for the "step out" button in this container's toolbar.
    */
-  _onStepOut: function() {
+  _onStepOut: function () {
     this.selectedIndex = this.itemCount - 1;
   },
 
   /**
    * Opens the specified file and line in the debugger. Falls back to Firefox's View Source.
    */
   _viewSourceInDebugger: function (file, line) {
     gToolbox.viewSourceInDebugger(file, line).then(success => {
--- a/devtools/client/canvasdebugger/canvasdebugger.js
+++ b/devtools/client/canvasdebugger/canvasdebugger.js
@@ -28,17 +28,17 @@ XPCOMUtils.defineLazyModuleGetter(this, 
   "resource://gre/modules/PluralForm.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "FileUtils",
   "resource://gre/modules/FileUtils.jsm");
 
 XPCOMUtils.defineLazyModuleGetter(this, "NetUtil",
   "resource://gre/modules/NetUtil.jsm");
 
-XPCOMUtils.defineLazyGetter(this, "NetworkHelper", function() {
+XPCOMUtils.defineLazyGetter(this, "NetworkHelper", function () {
   return require("devtools/shared/webconsole/network-helper");
 });
 
 // The panel's window global is an EventEmitter firing the following events:
 const EVENTS = {
   // When the UI is reset from tab navigation.
   UI_RESET: "CanvasDebugger:UIReset",
 
@@ -124,34 +124,34 @@ function shutdownCanvasDebugger() {
 
 /**
  * Functions handling target-related lifetime events.
  */
 var EventsHandler = {
   /**
    * Listen for events emitted by the current tab target.
    */
-  initialize: function() {
+  initialize: function () {
     this._onTabNavigated = this._onTabNavigated.bind(this);
     gTarget.on("will-navigate", this._onTabNavigated);
     gTarget.on("navigate", this._onTabNavigated);
   },
 
   /**
    * Remove events emitted by the current tab target.
    */
-  destroy: function() {
+  destroy: function () {
     gTarget.off("will-navigate", this._onTabNavigated);
     gTarget.off("navigate", this._onTabNavigated);
   },
 
   /**
    * Called for each location change in the debugged tab.
    */
-  _onTabNavigated: function(event) {
+  _onTabNavigated: function (event) {
     if (event != "will-navigate") {
       return;
     }
     // Make sure the backend is prepared to handle <canvas> contexts.
     gFront.setup({ reload: false });
 
     // Reset UI.
     SnapshotsListView.empty();
--- a/devtools/client/canvasdebugger/panel.js
+++ b/devtools/client/canvasdebugger/panel.js
@@ -12,28 +12,28 @@ const { CanvasFront } = require("devtool
 const DevToolsUtils = require("devtools/shared/DevToolsUtils");
 
 function CanvasDebuggerPanel(iframeWindow, toolbox) {
   this.panelWin = iframeWindow;
   this._toolbox = toolbox;
   this._destroyer = null;
 
   EventEmitter.decorate(this);
-};
+}
 
 exports.CanvasDebuggerPanel = CanvasDebuggerPanel;
 
 CanvasDebuggerPanel.prototype = {
   /**
    * Open is effectively an asynchronous constructor.
    *
    * @return object
    *         A promise that is resolved when the Canvas Debugger completes opening.
    */
-  open: function() {
+  open: function () {
     let targetPromise;
 
     // Local debugging needs to make the target remote.
     if (!this.target.isRemote) {
       targetPromise = this.target.makeRemote();
     } else {
       targetPromise = promise.resolve(this.target);
     }
@@ -56,17 +56,17 @@ CanvasDebuggerPanel.prototype = {
   },
 
   // DevToolPanel API
 
   get target() {
     return this._toolbox.target;
   },
 
-  destroy: function() {
+  destroy: function () {
     // Make sure this panel is not already destroyed.
     if (this._destroyer) {
       return this._destroyer;
     }
 
     return this._destroyer = this.panelWin.shutdownCanvasDebugger().then(() => {
       // Destroy front to ensure packet handler is removed from client
       this.panelWin.gFront.destroy();
--- a/devtools/client/canvasdebugger/snapshotslist.js
+++ b/devtools/client/canvasdebugger/snapshotslist.js
@@ -7,17 +7,17 @@
 
 /**
  * Functions handling the recorded animation frame snapshots UI.
  */
 var SnapshotsListView = Heritage.extend(WidgetMethods, {
   /**
    * Initialization function, called when the tool is started.
    */
-  initialize: function() {
+  initialize: function () {
     this.widget = new SideMenuWidget($("#snapshots-list"), {
       showArrows: true
     });
 
     this._onSelect = this._onSelect.bind(this);
     this._onClearButtonClick = this._onClearButtonClick.bind(this);
     this._onRecordButtonClick = this._onRecordButtonClick.bind(this);
     this._onImportButtonClick = this._onImportButtonClick.bind(this);
@@ -29,29 +29,29 @@ var SnapshotsListView = Heritage.extend(
     window.on(EVENTS.SNAPSHOT_RECORDING_FINISHED, this._enableRecordButton);
     this.emptyText = L10N.getStr("noSnapshotsText");
     this.widget.addEventListener("select", this._onSelect, false);
   },
 
   /**
    * Destruction function, called when the tool is closed.
    */
-  destroy: function() {
+  destroy: function () {
     clearNamedTimeout("canvas-actor-recording");
     window.off(EVENTS.SNAPSHOT_RECORDING_FINISHED, this._enableRecordButton);
     this.widget.removeEventListener("select", this._onSelect, false);
   },
 
   /**
    * Adds a snapshot entry to this container.
    *
    * @return object
    *         The newly inserted item.
    */
-  addSnapshot: function() {
+  addSnapshot: function () {
     let contents = document.createElement("hbox");
     contents.className = "snapshot-item";
 
     let thumbnail = document.createElementNS(HTML_NS, "canvas");
     thumbnail.className = "snapshot-item-thumbnail";
     thumbnail.width = CanvasFront.THUMBNAIL_SIZE;
     thumbnail.height = CanvasFront.THUMBNAIL_SIZE;
 
@@ -116,17 +116,17 @@ var SnapshotsListView = Heritage.extend(
    *
    * @param Item snapshotItem
    *        An item inserted via `SnapshotsListView.addSnapshot`.
    * @param object snapshotActor
    *        The frame snapshot actor received from the backend.
    * @param object snapshotOverview
    *        Additional data about the snapshot received from the backend.
    */
-  customizeSnapshot: function(snapshotItem, snapshotActor, snapshotOverview) {
+  customizeSnapshot: function (snapshotItem, snapshotActor, snapshotOverview) {
     // Make sure the function call actors are stored on the item,
     // to be used when populating the CallsListView.
     snapshotItem.attachment.actor = snapshotActor;
     let functionCalls = snapshotItem.attachment.calls = snapshotOverview.calls;
     let thumbnails = snapshotItem.attachment.thumbnails = snapshotOverview.thumbnails;
     let screenshot = snapshotItem.attachment.screenshot = snapshotOverview.screenshot;
 
     let lastThumbnail = thumbnails[thumbnails.length - 1];
@@ -158,33 +158,33 @@ var SnapshotsListView = Heritage.extend(
     if (!this.selectedItem) {
       this.selectedIndex = 0;
     }
   },
 
   /**
    * The select listener for this container.
    */
-  _onSelect: function({ detail: snapshotItem }) {
+  _onSelect: function ({ detail: snapshotItem }) {
     // Check to ensure the attachment has an actor, like
     // an in-progress recording.
     if (!snapshotItem || !snapshotItem.attachment.actor) {
       return;
     }
     let { calls, thumbnails, screenshot } = snapshotItem.attachment;
 
     $("#reload-notice").hidden = true;
     $("#empty-notice").hidden = true;
     $("#waiting-notice").hidden = false;
 
     $("#debugging-pane-contents").hidden = true;
     $("#screenshot-container").hidden = true;
     $("#snapshot-filmstrip").hidden = true;
 
-    Task.spawn(function*() {
+    Task.spawn(function* () {
       // Wait for a few milliseconds between presenting the function calls,
       // screenshot and thumbnails, to allow each component being
       // sequentially drawn. This gives the illusion of snappiness.
 
       yield DevToolsUtils.waitForTime(SNAPSHOT_DATA_DISPLAY_DELAY);
       CallsListView.showCalls(calls);
       $("#debugging-pane-contents").hidden = false;
       $("#waiting-notice").hidden = true;
@@ -199,18 +199,18 @@ var SnapshotsListView = Heritage.extend(
 
       window.emit(EVENTS.SNAPSHOT_RECORDING_SELECTED);
     });
   },
 
   /**
    * The click listener for the "clear" button in this container.
    */
-  _onClearButtonClick: function() {
-    Task.spawn(function*() {
+  _onClearButtonClick: function () {
+    Task.spawn(function* () {
       SnapshotsListView.empty();
       CallsListView.empty();
 
       $("#reload-notice").hidden = true;
       $("#empty-notice").hidden = true;
       $("#waiting-notice").hidden = true;
 
       if (yield gFront.isInitialized()) {
@@ -265,17 +265,17 @@ var SnapshotsListView = Heritage.extend(
    */
   _disableRecordButton: function () {
     $("#record-snapshot").setAttribute("disabled", true);
   },
 
   /**
    * Begins recording an animation.
    */
-  _recordAnimation: Task.async(function *() {
+  _recordAnimation: Task.async(function* () {
     if (this._recording) {
       return;
     }
     this._recording = true;
     $("#record-snapshot").setAttribute("checked", "true");
 
     setNamedTimeout("canvas-actor-recording", CANVAS_ACTOR_RECORDING_ATTEMPT, this._stopRecordingAnimation);
 
@@ -295,17 +295,17 @@ var SnapshotsListView = Heritage.extend(
     yield DevToolsUtils.waitForTime(SNAPSHOT_START_RECORDING_DELAY);
     this._enableRecordButton();
   }),
 
   /**
    * Stops recording animation. Called when a click on the stopwatch occurs during a recording,
    * or if a recording times out.
    */
-  _stopRecordingAnimation: Task.async(function *() {
+  _stopRecordingAnimation: Task.async(function* () {
     clearNamedTimeout("canvas-actor-recording");
     let actorCanStop = yield gTarget.actorHasMethod("canvas", "stopRecordingAnimationFrame");
 
     if (actorCanStop) {
       yield gFront.stopRecordingAnimationFrame();
     }
     // If actor does not have the method to stop recording (Fx39+),
     // manually call the record failure method. This will call a connection failure
@@ -318,17 +318,17 @@ var SnapshotsListView = Heritage.extend(
     this._recording = false;
     $("#record-snapshot").removeAttribute("checked");
     this._enableRecordButton();
   }),
 
   /**
    * Resolves from the front's recordAnimationFrame to setup the interface with the screenshots.
    */
-  _onRecordSuccess: Task.async(function *(snapshotActor) {
+  _onRecordSuccess: Task.async(function* (snapshotActor) {
     // Clear bail-out case if frame found in CANVAS_ACTOR_RECORDING_ATTEMPT milliseconds
     clearNamedTimeout("canvas-actor-recording");
     let snapshotItem = this.getItemAtIndex(this.itemCount - 1);
     let snapshotOverview = yield snapshotActor.getOverview();
     this.customizeSnapshot(snapshotItem, snapshotActor, snapshotOverview);
 
     this._recording = false;
     $("#record-snapshot").removeAttribute("checked");
@@ -346,17 +346,17 @@ var SnapshotsListView = Heritage.extend(
     window.emit(EVENTS.SNAPSHOT_RECORDING_CANCELLED);
     window.emit(EVENTS.SNAPSHOT_RECORDING_FINISHED);
     this.removeLastSnapshot();
   },
 
   /**
    * The click listener for the "import" button in this container.
    */
-  _onImportButtonClick: function() {
+  _onImportButtonClick: function () {
     let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
     fp.init(window, L10N.getStr("snapshotsList.saveDialogTitle"), Ci.nsIFilePicker.modeOpen);
     fp.appendFilter(L10N.getStr("snapshotsList.saveDialogJSONFilter"), "*.json");
     fp.appendFilter(L10N.getStr("snapshotsList.saveDialogAllFilter"), "*.*");
 
     if (fp.show() != Ci.nsIFilePicker.returnOK) {
       return;
     }
@@ -392,28 +392,28 @@ var SnapshotsListView = Heritage.extend(
 
       this.customizeSnapshot(snapshotItem, data.calls, data);
     });
   },
 
   /**
    * The click listener for the "save" button of each item in this container.
    */
-  _onSaveButtonClick: function(e) {
+  _onSaveButtonClick: function (e) {
     let snapshotItem = this.getItemForElement(e.target);
 
     let fp = Cc["@mozilla.org/filepicker;1"].createInstance(Ci.nsIFilePicker);
     fp.init(window, L10N.getStr("snapshotsList.saveDialogTitle"), Ci.nsIFilePicker.modeSave);
     fp.appendFilter(L10N.getStr("snapshotsList.saveDialogJSONFilter"), "*.json");
     fp.appendFilter(L10N.getStr("snapshotsList.saveDialogAllFilter"), "*.*");
     fp.defaultString = "snapshot.json";
 
     // Start serializing all the function call actors for the specified snapshot,
     // while the nsIFilePicker dialog is being opened. Snappy.
-    let serialized = Task.spawn(function*() {
+    let serialized = Task.spawn(function* () {
       let data = {
         fileType: CALLS_LIST_SERIALIZER_IDENTIFIER,
         version: CALLS_LIST_SERIALIZER_VERSION,
         calls: [],
         thumbnails: [],
         screenshot: null
       };
       let functionCalls = snapshotItem.attachment.calls;
@@ -483,15 +483,15 @@ var SnapshotsListView = Heritage.extend(
           save.removeAttribute("disabled");
           save.setAttribute("value", L10N.getStr("snapshotsList.saveLabel"));
         });
       });
     }});
   }
 });
 
-function showNotification (toolbox, name, message) {
+function showNotification(toolbox, name, message) {
   let notificationBox = toolbox.getNotificationBox();
   let notification = notificationBox.getNotificationWithValue(name);
   if (!notification) {
     notificationBox.appendNotification(message, name, "", notificationBox.PRIORITY_WARNING_HIGH);
   }
 }
--- a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-02.js
+++ b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-02.js
@@ -42,17 +42,17 @@ function* ifTestingSupported() {
 
   is(functionCalls[0].callerPreview, "Object",
     "The called function's caller preview is correct.");
   is(functionCalls[0].argsPreview, "0, 0, 128, 128",
     "The called function's args preview is correct.");
 
   let details = yield functionCalls[1].getDetails();
   ok(details,
-    "The first called function has some details available.")
+    "The first called function has some details available.");
 
   is(details.stack.length, 3,
     "The called function's stack depth is correct.");
 
   is(details.stack[0].name, "fillStyle",
     "The called function's stack is correct (1.1).");
   is(details.stack[0].file, SIMPLE_CANVAS_URL,
     "The called function's stack is correct (1.2).");
--- a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-07.js
+++ b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-07.js
@@ -51,17 +51,17 @@ function* ifTestingSupported() {
   let firstActualScreenshot = yield snapshotActor.generateScreenshotFor(functionCalls[0]);
   ok(sameArray(firstScreenshot.pixels, firstActualScreenshot.pixels),
     "The screenshot for the first non-draw function is correct.");
   is(firstScreenshot.width, 128,
     "The screenshot for the first non-draw function has the correct width.");
   is(firstScreenshot.height, 128,
     "The screenshot for the first non-draw function has the correct height.");
 
-  let secondActualScreenshot =  yield snapshotActor.generateScreenshotFor(functionCalls[2]);
+  let secondActualScreenshot = yield snapshotActor.generateScreenshotFor(functionCalls[2]);
   ok(sameArray(secondScreenshot.pixels, secondActualScreenshot.pixels),
     "The screenshot for the second non-draw function is correct.");
   is(secondScreenshot.width, 128,
     "The screenshot for the second non-draw function has the correct width.");
   is(secondScreenshot.height, 128,
     "The screenshot for the second non-draw function has the correct height.");
 
   let lastActualScreenshot = yield snapshotActor.generateScreenshotFor(functionCalls[6]);
--- a/devtools/client/canvasdebugger/test/browser_canvas-actor-test-11.js
+++ b/devtools/client/canvasdebugger/test/browser_canvas-actor-test-11.js
@@ -95,17 +95,17 @@ function* ifTestingSupported() {
   let firstActualScreenshot = yield snapshotActor.generateScreenshotFor(functionCalls[0]);
   ok(sameArray(firstScreenshot.pixels, firstActualScreenshot.pixels),
     "The screenshot for the first non-draw function is correct.");
   is(firstScreenshot.width, 128,
     "The screenshot for the first non-draw function has the correct width.");
   is(firstScreenshot.height, 128,
     "The screenshot for the first non-draw function has the correct height.");
 
-  let secondActualScreenshot =  yield snapshotActor.generateScreenshotFor(functionCalls[2]);
+  let secondActualScreenshot = yield snapshotActor.generateScreenshotFor(functionCalls[2]);
   ok(sameArray(secondScreenshot.pixels, secondActualScreenshot.pixels),
     "The screenshot for the second non-draw function is correct.");
   is(secondScreenshot.width, 128,
     "The screenshot for the second non-draw function has the correct width.");
   is(secondScreenshot.height, 128,
     "The screenshot for the second non-draw function has the correct height.");
 
   let lastActualScreenshot = yield snapshotActor.generateScreenshotFor(functionCalls[6]);
--- a/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js
+++ b/devtools/client/canvasdebugger/test/browser_canvas-frontend-record-04.js
@@ -16,17 +16,17 @@ function* ifTestingSupported() {
   yield reload(target);
 
   let recordingFinished = once(window, EVENTS.SNAPSHOT_RECORDING_FINISHED);
   SnapshotsListView._onRecordButtonClick();
 
   // Wait until after the recording started to trigger the content.
   // Use the gFront method rather than the SNAPSHOT_RECORDING_STARTED event
   // which triggers before the underlying actor call
-  yield waitUntil(function*() { return !(yield gFront.isRecording()); });
+  yield waitUntil(function* () { return !(yield gFront.isRecording()); });
 
   // Start animation in content
   evalInDebuggee("start();");
 
   yield recordingFinished;
   ok(true, "Finished recording a snapshot of the animation loop.");
 
   yield removeTab(target.tab);
--- a/devtools/client/canvasdebugger/test/browser_canvas-frontend-snapshot-select-01.js
+++ b/devtools/client/canvasdebugger/test/browser_canvas-frontend-snapshot-select-01.js
@@ -8,25 +8,25 @@
 
 function* ifTestingSupported() {
   let { target, panel } = yield initCanvasDebuggerFrontend(SIMPLE_CANVAS_URL);
   let { window, $, EVENTS, SnapshotsListView, CallsListView } = panel.panelWin;
 
   yield reload(target);
 
   yield recordAndWaitForFirstSnapshot();
-  info("First snapshot recorded.")
+  info("First snapshot recorded.");
 
   is(SnapshotsListView.selectedIndex, 0,
     "A snapshot should be automatically selected after first recording.");
   is(CallsListView.selectedIndex, -1,
     "There should be no call item automatically selected in the snapshot.");
 
   yield recordAndWaitForAnotherSnapshot();
-  info("Second snapshot recorded.")
+  info("Second snapshot recorded.");
 
   is(SnapshotsListView.selectedIndex, 0,
     "A snapshot should not be automatically selected after another recording.");
   is(CallsListView.selectedIndex, -1,
     "There should still be no call item automatically selected in the snapshot.");
 
   let secondSnapshotTarget = SnapshotsListView.getItemAtIndex(1).target;
   let snapshotSelected = waitForSnapshotSelection();
--- a/devtools/client/canvasdebugger/test/browser_profiling-canvas.js
+++ b/devtools/client/canvasdebugger/test/browser_profiling-canvas.js
@@ -29,17 +29,17 @@ function* ifTestingSupported() {
   let functionCalls = animationOverview.calls;
   ok(functionCalls,
     "An array of function call actors was sent after recording.");
   is(functionCalls.length, 8,
     "The number of function call actors is correct.");
 
   info("Check the timestamps of function calls");
 
-  for ( let i = 0; i < functionCalls.length-1; i += 2 ) {
-    ok( functionCalls[i].timestamp > 0, "The timestamp of the called function is larger than 0." );
-    ok( functionCalls[i].timestamp < currentTime, "The timestamp has been minus the frame start time." );
-    ok( functionCalls[i+1].timestamp > functionCalls[i].timestamp, "The timestamp of the called function is correct." );
+  for (let i = 0; i < functionCalls.length - 1; i += 2) {
+    ok(functionCalls[i].timestamp > 0, "The timestamp of the called function is larger than 0.");
+    ok(functionCalls[i].timestamp < currentTime, "The timestamp has been minus the frame start time.");
+    ok(functionCalls[i + 1].timestamp > functionCalls[i].timestamp, "The timestamp of the called function is correct.");
   }
 
   yield removeTab(target.tab);
   finish();
 }
--- a/devtools/client/canvasdebugger/test/head.js
+++ b/devtools/client/canvasdebugger/test/head.js
@@ -1,31 +1,31 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 var { classes: Cc, interfaces: Ci, utils: Cu, results: Cr } = Components;
 
-var { generateUUID } = Cc['@mozilla.org/uuid-generator;1'].getService(Ci.nsIUUIDGenerator);
+var { generateUUID } = Cc["@mozilla.org/uuid-generator;1"].getService(Ci.nsIUUIDGenerator);
 var { Task } = Cu.import("resource://gre/modules/Task.jsm", {});
 var { require } = Cu.import("resource://devtools/shared/Loader.jsm", {});
 
 var Services = require("Services");
 var promise = require("promise");
 var { gDevTools } = require("devtools/client/framework/devtools");
 var { DebuggerClient } = require("devtools/shared/client/main");
 var { DebuggerServer } = require("devtools/server/main");
 var { CallWatcherFront } = require("devtools/server/actors/call-watcher");
 var { CanvasFront } = require("devtools/server/actors/canvas");
 var { setTimeout } = require("sdk/timers");
 var DevToolsUtils = require("devtools/shared/DevToolsUtils");
 var { TargetFactory } = require("devtools/client/framework/target");
 var { Toolbox } = require("devtools/client/framework/toolbox");
 var { isWebGLSupported } = require("devtools/client/shared/webgl-utils");
-var mm = null
+var mm = null;
 
 const FRAME_SCRIPT_UTILS_URL = "chrome://devtools/content/shared/frame-script-utils.js";
 const EXAMPLE_URL = "http://example.com/browser/devtools/client/canvasdebugger/test/";
 const SET_TIMEOUT_URL = EXAMPLE_URL + "doc_settimeout.html";
 const NO_CANVAS_URL = EXAMPLE_URL + "doc_no-canvas.html";
 const RAF_NO_CANVAS_URL = EXAMPLE_URL + "doc_raf-no-canvas.html";
 const SIMPLE_CANVAS_URL = EXAMPLE_URL + "doc_simple-canvas.html";
 const SIMPLE_BITMASKS_URL = EXAMPLE_URL + "doc_simple-canvas-bitmasks.html";
@@ -60,17 +60,17 @@ registerCleanupFunction(() => {
   info("Forcing GC after canvas debugger test.");
   Cu.forceGC();
 });
 
 /**
  * Call manually in tests that use frame script utils after initializing
  * the shader editor. Call after init but before navigating to different pages.
  */
-function loadFrameScripts () {
+function loadFrameScripts() {
   mm = gBrowser.selectedBrowser.messageManager;
   mm.loadFrameScript(FRAME_SCRIPT_UTILS_URL, false);
 }
 
 function addTab(aUrl, aWindow) {
   info("Adding tab: " + aUrl);
 
   let deferred = promise.defer();
@@ -196,46 +196,46 @@ function initServer() {
     DebuggerServer.addBrowserActors();
   }
 }
 
 function initCallWatcherBackend(aUrl) {
   info("Initializing a call watcher front.");
   initServer();
 
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let tab = yield addTab(aUrl);
     let target = TargetFactory.forTab(tab);
 
     yield target.makeRemote();
 
     let front = new CallWatcherFront(target.client, target.form);
     return { target, front };
   });
 }
 
 function initCanvasDebuggerBackend(aUrl) {
   info("Initializing a canvas debugger front.");
   initServer();
 
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let tab = yield addTab(aUrl);
     let target = TargetFactory.forTab(tab);
 
     yield target.makeRemote();
 
     let front = new CanvasFront(target.client, target.form);
     return { target, front };
   });
 }
 
 function initCanvasDebuggerFrontend(aUrl) {
   info("Initializing a canvas debugger pane.");
 
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let tab = yield addTab(aUrl);
     let target = TargetFactory.forTab(tab);
 
     yield target.makeRemote();
 
     Services.prefs.setBoolPref("devtools.canvasdebugger.enabled", true);
     let toolbox = yield gDevTools.showToolbox(target, "canvasdebugger");
     let panel = toolbox.getCurrentPanel();
@@ -251,28 +251,28 @@ function teardown({target}) {
     removeTab(tab);
   });
 }
 
 /**
  * Takes a string `script` and evaluates it directly in the content
  * in potentially a different process.
  */
-function evalInDebuggee (script) {
+function evalInDebuggee(script) {
   let deferred = promise.defer();
 
   if (!mm) {
     throw new Error("`loadFrameScripts()` must be called when using MessageManager.");
   }
 
   let id = generateUUID().toString();
   mm.sendAsyncMessage("devtools:test:eval", { script: script, id: id });
   mm.addMessageListener("devtools:test:eval:response", handler);
 
-  function handler ({ data }) {
+  function handler({ data }) {
     if (id !== data.id) {
       return;
     }
 
     mm.removeMessageListener("devtools:test:eval:response", handler);
     deferred.resolve(data.value);
   }
 
@@ -287,18 +287,18 @@ function getSourceActor(aSources, aURL) 
 /**
  * Waits until a predicate returns true.
  *
  * @param function predicate
  *        Invoked once in a while until it returns true.
  * @param number interval [optional]
  *        How often the predicate is invoked, in milliseconds.
  */
-function *waitUntil (predicate, interval = 10) {
+function* waitUntil(predicate, interval = 10) {
   if (yield predicate()) {
     return Promise.resolve(true);
   }
   let deferred = Promise.defer();
-  setTimeout(function() {
+  setTimeout(function () {
     waitUntil(predicate).then(() => deferred.resolve(true));
   }, interval);
   return deferred.promise;
 }
--- a/devtools/client/commandline/test/browser_cmd_addon.js
+++ b/devtools/client/commandline/test/browser_cmd_addon.js
@@ -8,188 +8,188 @@ function test() {
 }
 
 function* spawnTest() {
   let options = yield helpers.openTab("about:blank");
   yield helpers.openToolbar(options);
 
   yield helpers.audit(options, [
     {
-      setup: 'addon list dictionary',
+      setup: "addon list dictionary",
       check: {
-        input:  'addon list dictionary',
-        hints:                       '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon list dictionary",
+        hints:                       "",
+        markup: "VVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: 'There are no add-ons of that type installed.'
+        output: "There are no add-ons of that type installed."
       }
     },
     {
-      setup: 'addon list extension',
+      setup: "addon list extension",
       check: {
-        input:  'addon list extension',
-        hints:                      '',
-        markup: 'VVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon list extension",
+        hints:                      "",
+        markup: "VVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
         output: [/The following/, /Mochitest/, /Special Powers/]
       }
     },
     {
-      setup: 'addon list locale',
+      setup: "addon list locale",
       check: {
-        input:  'addon list locale',
-        hints:                   '',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon list locale",
+        hints:                   "",
+        markup: "VVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: 'There are no add-ons of that type installed.'
+        output: "There are no add-ons of that type installed."
       }
     },
     {
-      setup: 'addon list plugin',
+      setup: "addon list plugin",
       check: {
-        input:  'addon list plugin',
-        hints:                   '',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon list plugin",
+        hints:                   "",
+        markup: "VVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
         output: [/Test Plug-in/, /Second Test Plug-in/]
       }
     },
     {
-      setup: 'addon list theme',
+      setup: "addon list theme",
       check: {
-        input:  'addon list theme',
-        hints:                  '',
-        markup: 'VVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon list theme",
+        hints:                  "",
+        markup: "VVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
         output: [/following themes/, /Default/]
       }
     },
     {
-      setup: 'addon list all',
+      setup: "addon list all",
       check: {
-        input:  'addon list all',
-        hints:                '',
-        markup: 'VVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon list all",
+        hints:                "",
+        markup: "VVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
         output: [/The following/, /Default/, /Mochitest/, /Test Plug-in/,
                  /Second Test Plug-in/, /Special Powers/]
       }
     },
     {
-      setup: 'addon disable Test_Plug-in_1.0.0.0',
+      setup: "addon disable Test_Plug-in_1.0.0.0",
       check: {
-        input:  'addon disable Test_Plug-in_1.0.0.0',
-        hints:                                    '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "addon disable Test_Plug-in_1.0.0.0",
+        hints:                                    "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: 'Test Plug-in 1.0.0.0 disabled.'
+        output: "Test Plug-in 1.0.0.0 disabled."
       }
     },
     {
-      setup: 'addon disable WRONG',
+      setup: "addon disable WRONG",
       check: {
-        input:  'addon disable WRONG',
-        hints:                     '',
-        markup: 'VVVVVVVVVVVVVVEEEEE',
-        status: 'ERROR'
+        input:  "addon disable WRONG",
+        hints:                     "",
+        markup: "VVVVVVVVVVVVVVEEEEE",
+        status: "ERROR"
       }
     },
     {
-      setup: 'addon enable Test_Plug-in_1.0.0.0',
+      setup: "addon enable Test_Plug-in_1.0.0.0",
       check: {
-        input:  'addon enable Test_Plug-in_1.0.0.0',
-        hints:                                   '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "addon enable Test_Plug-in_1.0.0.0",
+        hints:                                   "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
-          command: { name: 'addon enable' },
+          command: { name: "addon enable" },
           addon: {
-            value: function(addon) {
-              is(addon.name, 'Test Plug-in', 'test plugin name');
+            value: function (addon) {
+              is(addon.name, "Test Plug-in", "test plugin name");
             },
-            status: 'VALID'
+            status: "VALID"
           }
         }
       },
       exec: {
-        output: 'Test Plug-in 1.0.0.0 enabled.'
+        output: "Test Plug-in 1.0.0.0 enabled."
       }
     },
     {
-      setup: 'addon ctp Test_Plug-in_1.0.0.0',
+      setup: "addon ctp Test_Plug-in_1.0.0.0",
       check: {
-        input:  'addon ctp Test_Plug-in_1.0.0.0',
-        hints:                                '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "addon ctp Test_Plug-in_1.0.0.0",
+        hints:                                "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
-          command: { name: 'addon ctp' },
+          command: { name: "addon ctp" },
           addon: {
-            value: function(addon) {
-              is(addon.name, 'Test Plug-in', 'test plugin name');
+            value: function (addon) {
+              is(addon.name, "Test Plug-in", "test plugin name");
             },
-            status: 'VALID'
+            status: "VALID"
           }
         }
       },
       exec: {
-        output: 'Test Plug-in 1.0.0.0 set to click-to-play.'
+        output: "Test Plug-in 1.0.0.0 set to click-to-play."
       }
     },
     {
-      setup:  'addon ctp OpenH264_Video_Codec_provided_by_Cisco_Systems,_Inc._null',
+      setup:  "addon ctp OpenH264_Video_Codec_provided_by_Cisco_Systems,_Inc._null",
       check: {
-        input: 'addon ctp OpenH264_Video_Codec_provided_by_Cisco_Systems,_Inc._null',
-        hints:                                                                    '',
-        status: 'VALID',
+        input: "addon ctp OpenH264_Video_Codec_provided_by_Cisco_Systems,_Inc._null",
+        hints:                                                                    "",
+        status: "VALID",
         args: {
-          command: { name: 'addon ctp' },
+          command: { name: "addon ctp" },
           addon: {
-            value: function(addon) {
-              is(addon.name, 'OpenH264 Video Codec provided by Cisco Systems, Inc.', 'openh264');
+            value: function (addon) {
+              is(addon.name, "OpenH264 Video Codec provided by Cisco Systems, Inc.", "openh264");
             },
-          status: 'VALID'
+            status: "VALID"
           }
-	}
+	                                                                                }
       },
       exec: {
-        output: 'OpenH264 Video Codec provided by Cisco Systems, Inc. null cannot be set to click-to-play.'
+        output: "OpenH264 Video Codec provided by Cisco Systems, Inc. null cannot be set to click-to-play."
       }
     },
     {
-      setup:  'addon ctp Mochitest_1.0',
+      setup:  "addon ctp Mochitest_1.0",
       check: {
-        input: 'addon ctp Mochitest_1.0',
-        hints:                        '',
-        status: 'VALID',
+        input: "addon ctp Mochitest_1.0",
+        hints:                        "",
+        status: "VALID",
         args: {
-          command: { name: 'addon ctp' },
+          command: { name: "addon ctp" },
           addon: {
-            value: function(addon) {
-              is(addon.name, 'Mochitest', 'mochitest');
+            value: function (addon) {
+              is(addon.name, "Mochitest", "mochitest");
             },
-          status: 'VALID'
+            status: "VALID"
           }
-	}
+	                                                                                }
       },
       exec: {
-        output: 'Mochitest 1.0 cannot be set to click-to-play because it is not a plugin.'
+        output: "Mochitest 1.0 cannot be set to click-to-play because it is not a plugin."
       }
     }
   ]);
 
   yield helpers.closeToolbar(options);
   yield helpers.closeTab(options);
 }
--- a/devtools/client/commandline/test/browser_cmd_appcache_invalid.js
+++ b/devtools/client/commandline/test/browser_cmd_appcache_invalid.js
@@ -8,84 +8,84 @@ const TEST_URI = "http://sub1.test1.exam
                  "test/browser_cmd_appcache_invalid_index.html";
 
 function test() {
   return Task.spawn(spawnTest).then(finish, helpers.handleError);
 }
 
 function* spawnTest() {
   let lines = [
-    'Manifest has a character encoding of ISO-8859-1. Manifests must have the ' +
-      'utf-8 character encoding.',
-    'The first line of the manifest must be \u201cCACHE MANIFEST\u201d at line 1.',
-    '\u201cCACHE MANIFEST\u201d is only valid on the first line but was found at line 3.',
-    'images/sound-icon.png points to a resource that is not available at line 9.',
-    'images/background.png points to a resource that is not available at line 10.',
-    '/checking.cgi points to a resource that is not available at line 13.',
-    'Asterisk (*) incorrectly used in the NETWORK section at line 14. If a line ' +
-      'in the NETWORK section contains only a single asterisk character, then any ' +
-      'URI not listed in the manifest will be treated as if the URI was listed in ' +
-      'the NETWORK section. Otherwise such URIs will be treated as unavailable. ' +
-    'Other uses of the * character are prohibited',
-    '../rel.html points to a resource that is not available at line 17.',
-    '../../rel.html points to a resource that is not available at line 18.',
-    '../../../rel.html points to a resource that is not available at line 19.',
-    '../../../../rel.html points to a resource that is not available at line 20.',
-    '../../../../../rel.html points to a resource that is not available at line 21.',
-    '/../ is not a valid URI prefix at line 22.',
-    '/test.css points to a resource that is not available at line 23.',
-    '/test.js points to a resource that is not available at line 24.',
-    'test.png points to a resource that is not available at line 25.',
-    '/main/features.js points to a resource that is not available at line 27.',
-    '/main/settings/index.css points to a resource that is not available at line 28.',
-    'http://example.com/scene.jpg points to a resource that is not available at line 29.',
-    '/section1/blockedbyfallback.html points to a resource that is not available at line 30.',
-    'http://example.com/images/world.jpg points to a resource that is not available at line 31.',
-    '/section2/blockedbyfallback.html points to a resource that is not available at line 32.',
-    '/main/home points to a resource that is not available at line 34.',
-    'main/app.js points to a resource that is not available at line 35.',
-    '/settings/home points to a resource that is not available at line 37.',
-    '/settings/app.js points to a resource that is not available at line 38.',
-    'The file http://sub1.test1.example.com/browser/devtools/client/' +
-      'commandline/test/browser_cmd_appcache_invalid_page3.html was modified ' +
-      'after http://sub1.test1.example.com/browser/devtools/client/' +
-      'commandline/test/browser_cmd_appcache_invalid_appcache.appcache. Unless ' +
-      'the text in the manifest file is changed the cached version will be used ' +
-      'instead at line 39.',
-    'browser_cmd_appcache_invalid_page3.html has cache-control set to no-store. ' +
-      'This will prevent the application cache from storing the file at line 39.',
-    'http://example.com/logo.png points to a resource that is not available at line 40.',
-    'http://example.com/check.png points to a resource that is not available at line 41.',
-    'Spaces in URIs need to be replaced with % at line 42.',
-    'http://example.com/cr oss.png points to a resource that is not available at line 42.',
-    'Asterisk (*) incorrectly used in the CACHE section at line 43. If a line ' +
-      'in the NETWORK section contains only a single asterisk character, then ' +
-      'any URI not listed in the manifest will be treated as if the URI was ' +
-      'listed in the NETWORK section. Otherwise such URIs will be treated as ' +
-      'unavailable. Other uses of the * character are prohibited',
-    'The SETTINGS section may only contain a single value, \u201cprefer-online\u201d or \u201cfast\u201d at line 47.',
-    'FALLBACK section line 50 (/section1/ /offline1.html) prevents caching of ' +
-      'line 30 (/section1/blockedbyfallback.html) in the CACHE section.',
-    '/offline1.html points to a resource that is not available at line 50.',
-    'FALLBACK section line 51 (/section2/ offline2.html) prevents caching of ' +
-      'line 32 (/section2/blockedbyfallback.html) in the CACHE section.',
-    'offline2.html points to a resource that is not available at line 51.',
-    'Only two URIs separated by spaces are allowed in the FALLBACK section at line 52.',
-    'Asterisk (*) incorrectly used in the FALLBACK section at line 53. URIs ' +
-      'in the FALLBACK section simply need to match a prefix of the request URI.',
-    'offline3.html points to a resource that is not available at line 53.',
-    'Invalid section name (BLAH) at line 55.',
-    'Only two URIs separated by spaces are allowed in the FALLBACK section at line 55.'
+    "Manifest has a character encoding of ISO-8859-1. Manifests must have the " +
+      "utf-8 character encoding.",
+    "The first line of the manifest must be \u201cCACHE MANIFEST\u201d at line 1.",
+    "\u201cCACHE MANIFEST\u201d is only valid on the first line but was found at line 3.",
+    "images/sound-icon.png points to a resource that is not available at line 9.",
+    "images/background.png points to a resource that is not available at line 10.",
+    "/checking.cgi points to a resource that is not available at line 13.",
+    "Asterisk (*) incorrectly used in the NETWORK section at line 14. If a line " +
+      "in the NETWORK section contains only a single asterisk character, then any " +
+      "URI not listed in the manifest will be treated as if the URI was listed in " +
+      "the NETWORK section. Otherwise such URIs will be treated as unavailable. " +
+    "Other uses of the * character are prohibited",
+    "../rel.html points to a resource that is not available at line 17.",
+    "../../rel.html points to a resource that is not available at line 18.",
+    "../../../rel.html points to a resource that is not available at line 19.",
+    "../../../../rel.html points to a resource that is not available at line 20.",
+    "../../../../../rel.html points to a resource that is not available at line 21.",
+    "/../ is not a valid URI prefix at line 22.",
+    "/test.css points to a resource that is not available at line 23.",
+    "/test.js points to a resource that is not available at line 24.",
+    "test.png points to a resource that is not available at line 25.",
+    "/main/features.js points to a resource that is not available at line 27.",
+    "/main/settings/index.css points to a resource that is not available at line 28.",
+    "http://example.com/scene.jpg points to a resource that is not available at line 29.",
+    "/section1/blockedbyfallback.html points to a resource that is not available at line 30.",
+    "http://example.com/images/world.jpg points to a resource that is not available at line 31.",
+    "/section2/blockedbyfallback.html points to a resource that is not available at line 32.",
+    "/main/home points to a resource that is not available at line 34.",
+    "main/app.js points to a resource that is not available at line 35.",
+    "/settings/home points to a resource that is not available at line 37.",
+    "/settings/app.js points to a resource that is not available at line 38.",
+    "The file http://sub1.test1.example.com/browser/devtools/client/" +
+      "commandline/test/browser_cmd_appcache_invalid_page3.html was modified " +
+      "after http://sub1.test1.example.com/browser/devtools/client/" +
+      "commandline/test/browser_cmd_appcache_invalid_appcache.appcache. Unless " +
+      "the text in the manifest file is changed the cached version will be used " +
+      "instead at line 39.",
+    "browser_cmd_appcache_invalid_page3.html has cache-control set to no-store. " +
+      "This will prevent the application cache from storing the file at line 39.",
+    "http://example.com/logo.png points to a resource that is not available at line 40.",
+    "http://example.com/check.png points to a resource that is not available at line 41.",
+    "Spaces in URIs need to be replaced with % at line 42.",
+    "http://example.com/cr oss.png points to a resource that is not available at line 42.",
+    "Asterisk (*) incorrectly used in the CACHE section at line 43. If a line " +
+      "in the NETWORK section contains only a single asterisk character, then " +
+      "any URI not listed in the manifest will be treated as if the URI was " +
+      "listed in the NETWORK section. Otherwise such URIs will be treated as " +
+      "unavailable. Other uses of the * character are prohibited",
+    "The SETTINGS section may only contain a single value, \u201cprefer-online\u201d or \u201cfast\u201d at line 47.",
+    "FALLBACK section line 50 (/section1/ /offline1.html) prevents caching of " +
+      "line 30 (/section1/blockedbyfallback.html) in the CACHE section.",
+    "/offline1.html points to a resource that is not available at line 50.",
+    "FALLBACK section line 51 (/section2/ offline2.html) prevents caching of " +
+      "line 32 (/section2/blockedbyfallback.html) in the CACHE section.",
+    "offline2.html points to a resource that is not available at line 51.",
+    "Only two URIs separated by spaces are allowed in the FALLBACK section at line 52.",
+    "Asterisk (*) incorrectly used in the FALLBACK section at line 53. URIs " +
+      "in the FALLBACK section simply need to match a prefix of the request URI.",
+    "offline3.html points to a resource that is not available at line 53.",
+    "Invalid section name (BLAH) at line 55.",
+    "Only two URIs separated by spaces are allowed in the FALLBACK section at line 55."
   ];
 
   let options = yield helpers.openTab(TEST_URI);
   info("window open");
 
   // Wait for site to be cached.
-  yield helpers.listenOnce(gBrowser.contentWindow.applicationCache, 'error');
+  yield helpers.listenOnce(gBrowser.contentWindow.applicationCache, "error");
   info("applicationCache error happened");
 
   yield helpers.openToolbar(options);
   info("toolbar open");
 
   // Pages containing an appcache the notification bar gives options to allow
   // or deny permission for the app to save data offline. Let's click Allow.
   let notificationID = "offline-app-requested-sub1.test1.example.com";
@@ -97,21 +97,21 @@ function* spawnTest() {
     notification.mainAction.callback();
   } else {
     info("No notification box is available.");
   }
 
   info("Site now cached, running tests.");
   yield helpers.audit(options, [
     {
-      setup: 'appcache validate',
+      setup: "appcache validate",
       check: {
-        input:  'appcache validate',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache validate",
+        markup: "VVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {}
       },
       exec: {
         output: lines.map(getRegexForString)
       },
     },
   ]);
 
--- a/devtools/client/commandline/test/browser_cmd_appcache_valid.js
+++ b/devtools/client/commandline/test/browser_cmd_appcache_valid.js
@@ -12,162 +12,162 @@ function test() {
 
 function* spawnTest() {
   let options = yield helpers.openTab(TEST_URI);
   yield helpers.openToolbar(options);
 
   info("adding cache listener.");
 
   // Wait for site to be cached.
-  yield helpers.listenOnce(gBrowser.contentWindow.applicationCache, 'cached');
+  yield helpers.listenOnce(gBrowser.contentWindow.applicationCache, "cached");
 
   // Pages containing an appcache the notification bar gives options to allow
   // or deny permission for the app to save data offline. Let's click Allow.
   let notificationID = "offline-app-requested-sub1.test2.example.com";
   let notification = PopupNotifications.getNotification(notificationID, gBrowser.selectedBrowser);
 
   if (notification) {
     info("Authorizing offline storage.");
     notification.mainAction.callback();
   } else {
     info("No notification box is available.");
   }
 
   info("Site now cached, running tests.");
   yield helpers.audit(options, [
     {
-      setup: 'appcache',
+      setup: "appcache",
       check: {
-        input:  'appcache',
-        markup: 'IIIIIIII',
-        status: 'ERROR',
+        input:  "appcache",
+        markup: "IIIIIIII",
+        status: "ERROR",
         args: {}
       },
     },
 
     {
-      setup: function() {
+      setup: function () {
         Services.prefs.setBoolPref("browser.cache.disk.enable", false);
-        return helpers.setInput(options, 'appcache list', 13);
+        return helpers.setInput(options, "appcache list", 13);
       },
       check: {
-        input:  'appcache list',
-        markup: 'VVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache list",
+        markup: "VVVVVVVVVVVVV",
+        status: "VALID",
         args: {},
       },
       exec: {
         output: [ /cache is disabled/ ]
       },
-      post: function(output) {
+      post: function (output) {
         Services.prefs.setBoolPref("browser.cache.disk.enable", true);
       }
     },
 
     {
-      setup: 'appcache list',
+      setup: "appcache list",
       check: {
-        input:  'appcache list',
-        markup: 'VVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache list",
+        markup: "VVVVVVVVVVVVV",
+        status: "VALID",
         args: {},
       },
       exec: {
         output: [ /index/, /page1/, /page2/, /page3/ ]
       },
     },
 
     {
-      setup: 'appcache list page',
+      setup: "appcache list page",
       check: {
-        input:  'appcache list page',
-        markup: 'VVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache list page",
+        markup: "VVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
-          search: { value: 'page' },
+          search: { value: "page" },
         }
       },
       exec: {
         output: [ /page1/, /page2/, /page3/ ]
       },
-      post: function(output, text) {
+      post: function (output, text) {
         ok(!text.includes("index"), "index is not contained in output");
       }
     },
 
     {
-      setup: 'appcache validate',
+      setup: "appcache validate",
       check: {
-        input:  'appcache validate',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache validate",
+        markup: "VVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {}
       },
       exec: {
         output: [ /successfully/ ]
       },
     },
 
     {
-      setup: 'appcache validate ' + TEST_URI,
+      setup: "appcache validate " + TEST_URI,
       check: {
-        input:  'appcache validate ' + TEST_URI,
+        input:  "appcache validate " + TEST_URI,
               // appcache validate http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
           uri: {
             value: TEST_URI
           },
         }
       },
       exec: {
         output: [ /successfully/ ]
       },
     },
 
     {
-      setup: 'appcache clear',
+      setup: "appcache clear",
       check: {
-        input:  'appcache clear',
-        markup: 'VVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache clear",
+        markup: "VVVVVVVVVVVVVV",
+        status: "VALID",
         args: {},
       },
       exec: {
         output: [ /successfully/ ]
       },
     },
 
     {
-      setup: 'appcache list',
+      setup: "appcache list",
       check: {
-        input:  'appcache list',
-        markup: 'VVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "appcache list",
+        markup: "VVVVVVVVVVVVV",
+        status: "VALID",
         args: {},
       },
       exec: {
         output: [ /no results/ ]
       },
-      post: function(output, text) {
+      post: function (output, text) {
         ok(!text.includes("index"), "index is not contained in output");
         ok(!text.includes("page1"), "page1 is not contained in output");
         ok(!text.includes("page2"), "page1 is not contained in output");
         ok(!text.includes("page3"), "page1 is not contained in output");
       }
     },
 
     {
-      setup: 'appcache viewentry --key ' + TEST_URI,
+      setup: "appcache viewentry --key " + TEST_URI,
       check: {
-        input:  'appcache viewentry --key ' + TEST_URI,
+        input:  "appcache viewentry --key " + TEST_URI,
               // appcache viewentry --key http://sub1.test2.example.com/browser/devtools/client/commandline/test/browser_cmd_appcache_valid_index.html
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {}
       },
     },
   ]);
 
   yield helpers.closeToolbar(options);
   yield helpers.closeTab(options);
 }
--- a/devtools/client/commandline/test/browser_cmd_calllog.js
+++ b/devtools/client/commandline/test/browser_cmd_calllog.js
@@ -3,63 +3,63 @@
 
 // Tests that the calllog commands works as they should
 
 const TEST_URI = "data:text/html;charset=utf-8,gcli-calllog";
 
 var tests = {};
 
 function test() {
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let options = yield helpers.openTab(TEST_URI);
     yield helpers.openToolbar(options);
 
     yield helpers.runTests(options, tests);
 
     yield helpers.closeToolbar(options);
     yield helpers.closeTab(options);
   }).then(finish, helpers.handleError);
 }
 
-tests.testCallLogStatus = function(options) {
+tests.testCallLogStatus = function (options) {
   return helpers.audit(options, [
     {
       setup: "calllog",
       check: {
-        input:  'calllog',
-        hints:         '',
-        markup: 'IIIIIII',
-        status: 'ERROR'
+        input:  "calllog",
+        hints:         "",
+        markup: "IIIIIII",
+        status: "ERROR"
       }
     },
     {
       setup: "calllog start",
       check: {
-        input:  'calllog start',
-        hints:               '',
-        markup: 'VVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "calllog start",
+        hints:               "",
+        markup: "VVVVVVVVVVVVV",
+        status: "VALID"
       }
     },
     {
       setup: "calllog stop",
       check: {
-        input:  'calllog stop',
-        hints:              '',
-        markup: 'VVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "calllog stop",
+        hints:              "",
+        markup: "VVVVVVVVVVVV",
+        status: "VALID"
       }
     },
   ]);
 };
 
-tests.testCallLogExec = function(options) {
+tests.testCallLogExec = function (options) {
   var deferred = promise.defer();
 
-  var onWebConsoleOpen = function(subject) {
+  var onWebConsoleOpen = function (subject) {
     Services.obs.removeObserver(onWebConsoleOpen, "web-console-created");
 
     subject.QueryInterface(Ci.nsISupportsString);
     let hud = HUDService.getHudReferenceById(subject.data);
     ok(hud, "console open");
 
     helpers.audit(options, [
       {
@@ -68,46 +68,46 @@ tests.testCallLogExec = function(options
           output: /Stopped call logging/,
         }
       },
       {
         setup: "console clear",
         exec: {
           output: "",
         },
-        post: function() {
+        post: function () {
           let labels = hud.outputNode.querySelectorAll(".webconsole-msg-output");
           is(labels.length, 0, "no output in console");
         }
       },
       {
         setup: "console close",
         exec: {
           output: "",
         }
       },
-    ]).then(function() {
+    ]).then(function () {
       deferred.resolve();
     });
   };
   Services.obs.addObserver(onWebConsoleOpen, "web-console-created", false);
 
   helpers.audit(options, [
     {
       setup: "calllog stop",
       exec: {
         output: /No call logging/,
       }
     },
     {
       name: "calllog start",
-      setup: function() {
+      setup: function () {
         // This test wants to be in a different event
         var deferred = promise.defer();
-        executeSoon(function() {
+        executeSoon(function () {
           helpers.setInput(options, "calllog start").then(() => {
             deferred.resolve();
           });
         });
         return deferred.promise;
       },
       exec: {
         output: /Call logging started/,
--- a/devtools/client/commandline/test/browser_cmd_calllog_chrome.js
+++ b/devtools/client/commandline/test/browser_cmd_calllog_chrome.js
@@ -3,28 +3,28 @@
 
 // Tests that the calllog commands works as they should
 
 const TEST_URI = "data:text/html;charset=utf-8,cmd-calllog-chrome";
 
 var tests = {};
 
 function test() {
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let options = yield helpers.openTab(TEST_URI);
     yield helpers.openToolbar(options);
 
     yield helpers.runTests(options, tests);
 
     yield helpers.closeToolbar(options);
     yield helpers.closeTab(options);
   }).then(finish, helpers.handleError);
 }
 
-tests.testCallLogStatus = function(options) {
+tests.testCallLogStatus = function (options) {
   return helpers.audit(options, [
     {
       setup: "calllog",
       check: {
         status: "ERROR",
         emptyParameters: [ " " ]
       }
     },
@@ -47,17 +47,17 @@ tests.testCallLogStatus = function(optio
       check: {
         status: "VALID",
         emptyParameters: [ " " ]
       }
     },
   ]);
 };
 
-tests.testCallLogExec = function(options) {
+tests.testCallLogExec = function (options) {
   let deferred = promise.defer();
 
   function onWebConsoleOpen(subject) {
     Services.obs.removeObserver(onWebConsoleOpen, "web-console-created");
 
     subject.QueryInterface(Ci.nsISupportsString);
     let hud = HUDService.getHudReferenceById(subject.data);
     ok(hud, "console open");
@@ -73,30 +73,30 @@ tests.testCallLogExec = function(options
         setup: "calllog chromestart javascript XXX",
         exec: {
           output: /following exception/,
         }
       },
       {
         setup: "console clear",
         exec: {
-          output: '',
+          output: "",
         },
-        post: function() {
+        post: function () {
           let labels = hud.jsterm.outputNode.querySelectorAll(".webconsole-msg-output");
           is(labels.length, 0, "no output in console");
         }
       },
       {
         setup: "console close",
         exec: {
-          output: '',
+          output: "",
         },
       },
-    ]).then(function() {
+    ]).then(function () {
       deferred.resolve();
     });
   }
   Services.obs.addObserver(onWebConsoleOpen, "web-console-created", false);
 
   helpers.audit(options, [
     {
       setup: "calllog chromestop",
--- a/devtools/client/commandline/test/browser_cmd_cookie.js
+++ b/devtools/client/commandline/test/browser_cmd_cookie.js
@@ -1,114 +1,114 @@
 /* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that the cookie commands works as they should
 
-const TEST_URI = "http://example.com/browser/devtools/client/commandline/"+
+const TEST_URI = "http://example.com/browser/devtools/client/commandline/" +
                  "test/browser_cmd_cookie.html";
 
 function test() {
-  helpers.addTabWithToolbar(TEST_URI, function(options) {
+  helpers.addTabWithToolbar(TEST_URI, function (options) {
     return helpers.audit(options, [
       {
-        setup: 'cookie',
+        setup: "cookie",
         check: {
-          input:  'cookie',
-          hints:        ' list',
-          markup: 'IIIIII',
-          status: 'ERROR'
+          input:  "cookie",
+          hints:        " list",
+          markup: "IIIIII",
+          status: "ERROR"
         },
       },
       {
-        setup: 'cookie lis',
+        setup: "cookie lis",
         check: {
-          input:  'cookie lis',
-          hints:            't',
-          markup: 'IIIIIIVIII',
-          status: 'ERROR'
+          input:  "cookie lis",
+          hints:            "t",
+          markup: "IIIIIIVIII",
+          status: "ERROR"
         },
       },
       {
-        setup: 'cookie list',
+        setup: "cookie list",
         check: {
-          input:  'cookie list',
-          hints:             '',
-          markup: 'VVVVVVVVVVV',
-          status: 'VALID'
+          input:  "cookie list",
+          hints:             "",
+          markup: "VVVVVVVVVVV",
+          status: "VALID"
         },
       },
       {
-        setup: 'cookie remove',
+        setup: "cookie remove",
         check: {
-          input:  'cookie remove',
-          hints:               ' <name>',
-          markup: 'VVVVVVVVVVVVV',
-          status: 'ERROR'
+          input:  "cookie remove",
+          hints:               " <name>",
+          markup: "VVVVVVVVVVVVV",
+          status: "ERROR"
         },
       },
       {
-        setup: 'cookie set',
+        setup: "cookie set",
         check: {
-          input:  'cookie set',
-          hints:            ' <name> <value> [options]',
-          markup: 'VVVVVVVVVV',
-          status: 'ERROR'
+          input:  "cookie set",
+          hints:            " <name> <value> [options]",
+          markup: "VVVVVVVVVV",
+          status: "ERROR"
         },
       },
       {
-        setup: 'cookie set fruit',
+        setup: "cookie set fruit",
         check: {
-          input:  'cookie set fruit',
-          hints:                  ' <value> [options]',
-          markup: 'VVVVVVVVVVVVVVVV',
-          status: 'ERROR'
+          input:  "cookie set fruit",
+          hints:                  " <value> [options]",
+          markup: "VVVVVVVVVVVVVVVV",
+          status: "ERROR"
         },
       },
       {
-        setup: 'cookie set fruit ban',
+        setup: "cookie set fruit ban",
         check: {
-          input:  'cookie set fruit ban',
-          hints:                      ' [options]',
-          markup: 'VVVVVVVVVVVVVVVVVVVV',
-          status: 'VALID',
+          input:  "cookie set fruit ban",
+          hints:                      " [options]",
+          markup: "VVVVVVVVVVVVVVVVVVVV",
+          status: "VALID",
           args: {
-            name: { value: 'fruit' },
-            value: { value: 'ban' },
+            name: { value: "fruit" },
+            value: { value: "ban" },
             secure: { value: false },
           }
         },
       },
       {
         setup:    'cookie set fruit ban --path ""',
         check: {
           input:  'cookie set fruit ban --path ""',
-          hints:                                ' [options]',
-          markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-          status: 'VALID',
+          hints:                                " [options]",
+          markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+          status: "VALID",
           args: {
-            name: { value: 'fruit' },
-            value: { value: 'ban' },
-            path: { value: '' },
+            name: { value: "fruit" },
+            value: { value: "ban" },
+            path: { value: "" },
             secure: { value: false },
           }
         },
       },
       {
         setup: "cookie list",
         exec: {
           output: [ /zap=zep/, /zip=zop/, /Edit/ ]
         }
       },
       {
         setup: "cookie set zup banana",
         check: {
           args: {
-            name: { value: 'zup' },
-            value: { value: 'banana' },
+            name: { value: "zup" },
+            value: { value: "banana" },
           }
         },
         exec: {
           output: ""
         }
       },
       {
         setup: "cookie list",
@@ -120,47 +120,47 @@ function test() {
         setup: "cookie remove zip",
         exec: { },
       },
       {
         setup: "cookie list",
         exec: {
           output: [ /zap=zep/, /zup=banana/, /Edit/ ]
         },
-        post: function(output, text) {
+        post: function (output, text) {
           ok(!text.includes("zip"), "");
           ok(!text.includes("zop"), "");
         }
       },
       {
         setup: "cookie remove zap",
         exec: { },
       },
       {
         setup: "cookie list",
         exec: {
           output: [ /zup=banana/, /Edit/ ]
         },
-        post: function(output, text) {
+        post: function (output, text) {
           ok(!text.includes("zap"), "");
           ok(!text.includes("zep"), "");
           ok(!text.includes("zip"), "");
           ok(!text.includes("zop"), "");
         }
       },
       {
         setup: "cookie remove zup",
         exec: { }
       },
       {
         setup: "cookie list",
         exec: {
-          output: 'No cookies found for host example.com'
+          output: "No cookies found for host example.com"
         },
-        post: function(output, text) {
+        post: function (output, text) {
           ok(!text.includes("zap"), "");
           ok(!text.includes("zep"), "");
           ok(!text.includes("zip"), "");
           ok(!text.includes("zop"), "");
           ok(!text.includes("zup"), "");
           ok(!text.includes("banana"), "");
           ok(!text.includes("Edit"), "");
         }
--- a/devtools/client/commandline/test/browser_cmd_cookie_host.js
+++ b/devtools/client/commandline/test/browser_cmd_cookie_host.js
@@ -4,38 +4,38 @@
 "use strict";
 
 // Tests that the cookie command works for host with a port specified
 
 const TEST_URI = "http://mochi.test:8888/browser/devtools/client/commandline/" +
                  "test/browser_cmd_cookie.html";
 
 function test() {
-  helpers.addTabWithToolbar(TEST_URI, function(options) {
+  helpers.addTabWithToolbar(TEST_URI, function (options) {
     return helpers.audit(options, [
-        {
-          setup: 'cookie list',
-          exec: {
+      {
+        setup: "cookie list",
+        exec: {
             output: [ /zap=zep/, /zip=zop/, /zig=zag/ ],
           }
-        },
-        {
-          setup: "cookie set zup banana",
-          check: {
+      },
+      {
+        setup: "cookie set zup banana",
+        check: {
             args: {
-              name: { value: 'zup' },
-              value: { value: 'banana' },
+              name: { value: "zup" },
+              value: { value: "banana" },
             }
           },
-          exec: {
+        exec: {
             output: ""
           }
-        },
-        {
-          setup: "cookie list",
-          exec: {
+      },
+      {
+        setup: "cookie list",
+        exec: {
             output: [ /zap=zep/, /zip=zop/, /zig=zag/, /zup=banana/, /Edit/ ]
           }
-        }
+      }
     ]);
   }).then(finish, helpers.handleError);
 }
 
--- a/devtools/client/commandline/test/browser_cmd_csscoverage_oneshot.js
+++ b/devtools/client/commandline/test/browser_cmd_csscoverage_oneshot.js
@@ -9,17 +9,17 @@ const PAGE_1 = TEST_BASE_HTTPS + "browse
 const PAGE_2 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page2.html";
 const PAGE_3 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page3.html";
 
 const SHEET_A = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetA.css";
 const SHEET_B = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetB.css";
 const SHEET_C = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetC.css";
 const SHEET_D = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetD.css";
 
-add_task(function*() {
+add_task(function* () {
   let options = yield helpers.openTab(PAGE_3);
   yield helpers.openToolbar(options);
 
   let usage = yield csscoverage.getUsage(options.target);
 
   yield navigate(usage, options);
   yield checkPages(usage);
   yield checkEditorReport(usage);
@@ -46,56 +46,56 @@ function* navigate(usage, options) {
 }
 
 /**
  * Check the expected pages have been visited
  */
 function* checkPages(usage) {
   let expectedVisited = [ PAGE_3 ];
   let actualVisited = yield usage._testOnly_visitedPages();
-  isEqualJson(actualVisited, expectedVisited, 'Visited');
+  isEqualJson(actualVisited, expectedVisited, "Visited");
 }
 
 /**
  * Check that createEditorReport returns the expected JSON
  */
 function* checkEditorReport(usage) {
   // Page1
   let expectedPage1 = { reports: [] };
   let actualPage1 = yield usage.createEditorReport(PAGE_1 + " \u2192 <style> index 0");
-  isEqualJson(actualPage1, expectedPage1, 'Page1');
+  isEqualJson(actualPage1, expectedPage1, "Page1");
 
   // Page2
   let expectedPage2 = { reports: [] };
   let actualPage2 = yield usage.createEditorReport(PAGE_2 + " \u2192 <style> index 0");
-  isEqualJson(actualPage2, expectedPage2, 'Page2');
+  isEqualJson(actualPage2, expectedPage2, "Page2");
 
   // Page3a
   let expectedPage3a = {
     reports: [
       {
         selectorText: ".page3-test2",
         start: { line: 9, column: 5 },
       }
     ]
   };
   let actualPage3a = yield usage.createEditorReport(PAGE_3 + " \u2192 <style> index 0");
-  isEqualJson(actualPage3a, expectedPage3a, 'Page3a');
+  isEqualJson(actualPage3a, expectedPage3a, "Page3a");
 
   // Page3b
   let expectedPage3b = {
     reports: [
       {
         selectorText: ".page3-test3",
         start: { line: 3, column: 5 },
       }
     ]
   };
   let actualPage3b = yield usage.createEditorReport(PAGE_3 + " \u2192 <style> index 1");
-  isEqualJson(actualPage3b, expectedPage3b, 'Page3b');
+  isEqualJson(actualPage3b, expectedPage3b, "Page3b");
 
   // SheetA
   let expectedSheetA = {
     reports: [
       {
         selectorText: ".sheetA-test2",
         start: { line: 8, column: 1 },
       },
@@ -105,17 +105,17 @@ function* checkEditorReport(usage) {
       },
       {
         selectorText: ".sheetA-test4",
         start: { line: 16, column: 1 },
       }
     ]
   };
   let actualSheetA = yield usage.createEditorReport(SHEET_A);
-  isEqualJson(actualSheetA, expectedSheetA, 'SheetA');
+  isEqualJson(actualSheetA, expectedSheetA, "SheetA");
 
   // SheetB
   let expectedSheetB = {
     reports: [
       {
         selectorText: ".sheetB-test2",
         start: { line: 6, column: 1 },
       },
@@ -125,17 +125,17 @@ function* checkEditorReport(usage) {
       },
       {
         selectorText: ".sheetB-test4",
         start: { line: 14, column: 1 },
       }
     ]
   };
   let actualSheetB = yield usage.createEditorReport(SHEET_B);
-  isEqualJson(actualSheetB, expectedSheetB, 'SheetB');
+  isEqualJson(actualSheetB, expectedSheetB, "SheetB");
 
   // SheetC
   let expectedSheetC = {
     reports: [
       {
         selectorText: ".sheetC-test2",
         start: { line: 6, column: 1 },
       },
@@ -145,17 +145,17 @@ function* checkEditorReport(usage) {
       },
       {
         selectorText: ".sheetC-test4",
         start: { line: 14, column: 1 },
       }
     ]
   };
   let actualSheetC = yield usage.createEditorReport(SHEET_C);
-  isEqualJson(actualSheetC, expectedSheetC, 'SheetC');
+  isEqualJson(actualSheetC, expectedSheetC, "SheetC");
 
   // SheetD
   let expectedSheetD = {
     reports: [
       {
         selectorText: ".sheetD-test2",
         start: { line: 6, column: 1 },
       },
@@ -165,59 +165,59 @@ function* checkEditorReport(usage) {
       },
       {
         selectorText: ".sheetD-test4",
         start: { line: 14, column: 1 },
       }
     ]
   };
   let actualSheetD = yield usage.createEditorReport(SHEET_D);
-  isEqualJson(actualSheetD, expectedSheetD, 'SheetD');
+  isEqualJson(actualSheetD, expectedSheetD, "SheetD");
 }
 
 /**
  * Check that checkPageReport returns the expected JSON
  */
 function* checkPageReport(usage) {
   let actualReport = yield usage.createPageReport();
 
   // Quick check on trivial things. See doc comment for checkRuleProperties
   actualReport.preload.forEach(page => page.rules.forEach(checkRuleProperties));
   actualReport.unused.forEach(page => page.rules.forEach(checkRuleProperties));
 
   // Check the summary
   let expectedSummary = { "used": 23, "unused": 9, "preload": 0 };
-  isEqualJson(actualReport.summary, expectedSummary, 'summary');
+  isEqualJson(actualReport.summary, expectedSummary, "summary");
 
   // Check the preload header
-  isEqualJson(actualReport.preload.length, 0, 'preload length');
+  isEqualJson(actualReport.preload.length, 0, "preload length");
 
   // Check the unused header
-  isEqualJson(actualReport.unused.length, 6, 'unused length');
+  isEqualJson(actualReport.unused.length, 6, "unused length");
 
   // Check the unused rules
   isEqualJson(actualReport.unused[0].url, PAGE_3 + " \u2192 <style> index 0", "unused url 0");
   let expectedUnusedRules0 = [
     {
       "url": PAGE_3 + " \u2192 <style> index 0",
       "start": { "line": 9, "column": 5 },
       "selectorText": ".page3-test2"
     }
   ];
-  isEqualJson(actualReport.unused[0].rules, expectedUnusedRules0, 'unused rules 0');
+  isEqualJson(actualReport.unused[0].rules, expectedUnusedRules0, "unused rules 0");
 
   isEqualJson(actualReport.unused[1].url, PAGE_3 + " \u2192 <style> index 1", "unused url 1");
   let expectedUnusedRules1 = [
     {
       "url": PAGE_3 + " \u2192 <style> index 1",
       "start": { "line": 3, "column": 5 },
       "selectorText": ".page3-test3"
     }
   ];
-  isEqualJson(actualReport.unused[1].rules, expectedUnusedRules1, 'unused rules 1');
+  isEqualJson(actualReport.unused[1].rules, expectedUnusedRules1, "unused rules 1");
 
   isEqualJson(actualReport.unused[2].url, SHEET_A, "unused url 2");
   let expectedUnusedRules2 = [
     {
       "url": SHEET_A,
       "start": { "line": 8, "column": 1 },
       "selectorText": ".sheetA-test2"
     },
@@ -227,17 +227,17 @@ function* checkPageReport(usage) {
       "selectorText": ".sheetA-test3"
     },
     {
       "url": SHEET_A,
       "start": { "line": 16, "column": 1 },
       "selectorText": ".sheetA-test4"
     }
   ];
-  isEqualJson(actualReport.unused[2].rules, expectedUnusedRules2, 'unused rules 2');
+  isEqualJson(actualReport.unused[2].rules, expectedUnusedRules2, "unused rules 2");
 
   isEqualJson(actualReport.unused[3].url, SHEET_B, "unused url 3");
   let expectedUnusedRules3 = [
     {
       "url": SHEET_B,
       "start": { "line": 6, "column": 1 },
       "selectorText": ".sheetB-test2"
     },
@@ -247,17 +247,17 @@ function* checkPageReport(usage) {
       "selectorText": ".sheetB-test3"
     },
     {
       "url": SHEET_B,
       "start": { "line": 14, "column": 1 },
       "selectorText": ".sheetB-test4"
     }
   ];
-  isEqualJson(actualReport.unused[3].rules, expectedUnusedRules3, 'unused rules 3');
+  isEqualJson(actualReport.unused[3].rules, expectedUnusedRules3, "unused rules 3");
 
   isEqualJson(actualReport.unused[4].url, SHEET_D, "unused url 4");
   let expectedUnusedRules4 = [
     {
       "url": SHEET_D,
       "start": { "line": 6, "column": 1 },
       "selectorText": ".sheetD-test2"
     },
@@ -267,17 +267,17 @@ function* checkPageReport(usage) {
       "selectorText": ".sheetD-test3"
     },
     {
       "url": SHEET_D,
       "start": { "line": 14, "column": 1 },
       "selectorText": ".sheetD-test4"
     }
   ];
-  isEqualJson(actualReport.unused[4].rules, expectedUnusedRules4, 'unused rules 4');
+  isEqualJson(actualReport.unused[4].rules, expectedUnusedRules4, "unused rules 4");
 
   isEqualJson(actualReport.unused[5].url, SHEET_C, "unused url 5");
   let expectedUnusedRules5 = [
     {
       "url": SHEET_C,
       "start": { "line": 6, "column": 1 },
       "selectorText": ".sheetC-test2"
     },
@@ -287,17 +287,17 @@ function* checkPageReport(usage) {
       "selectorText": ".sheetC-test3"
     },
     {
       "url": SHEET_C,
       "start": { "line": 14, "column": 1 },
       "selectorText": ".sheetC-test4"
     }
   ];
-  isEqualJson(actualReport.unused[5].rules, expectedUnusedRules5, 'unused rules 5');
+  isEqualJson(actualReport.unused[5].rules, expectedUnusedRules5, "unused rules 5");
 }
 
 /**
  * We do basic tests on the shortUrl and formattedCssText because they are
  * very derivative, and so make for fragile tests, and having done those quick
  * existence checks we remove them so the JSON check later can ignore them
  */
 function checkRuleProperties(rule, index) {
--- a/devtools/client/commandline/test/browser_cmd_csscoverage_startstop.js
+++ b/devtools/client/commandline/test/browser_cmd_csscoverage_startstop.js
@@ -9,17 +9,17 @@ const PAGE_1 = TEST_BASE_HTTPS + "browse
 const PAGE_2 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page2.html";
 const PAGE_3 = TEST_BASE_HTTPS + "browser_cmd_csscoverage_page3.html";
 
 const SHEET_A = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetA.css";
 const SHEET_B = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetB.css";
 const SHEET_C = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetC.css";
 const SHEET_D = TEST_BASE_HTTPS + "browser_cmd_csscoverage_sheetD.css";
 
-add_task(function*() {
+add_task(function* () {
   let options = yield helpers.openTab("about:blank");
   yield helpers.openToolbar(options);
 
   let usage = yield csscoverage.getUsage(options.target);
 
   yield navigate(usage, options);
   yield checkPages(usage);
   yield checkEditorReport(usage);
@@ -58,149 +58,149 @@ function* navigate(usage, options) {
   yield toolboxReady;
 }
 
 /**
  * Check the expected pages have been visited
  */
 function* checkPages(usage) {
   // 'load' event order. '' is for the initial location
-  let expectedVisited = [ '', PAGE_2, PAGE_1, PAGE_3 ];
+  let expectedVisited = [ "", PAGE_2, PAGE_1, PAGE_3 ];
   let actualVisited = yield usage._testOnly_visitedPages();
-  isEqualJson(actualVisited, expectedVisited, 'Visited');
+  isEqualJson(actualVisited, expectedVisited, "Visited");
 }
 
 /**
  * Check that createEditorReport returns the expected JSON
  */
 function* checkEditorReport(usage) {
   // Page1
   let expectedPage1 = {
     reports: [
       {
         selectorText: ".page1-test2",
         start: { line: 8, column: 5 },
       }
     ]
   };
   let actualPage1 = yield usage.createEditorReport(PAGE_1 + " \u2192 <style> index 0");
-  isEqualJson(actualPage1, expectedPage1, 'Page1');
+  isEqualJson(actualPage1, expectedPage1, "Page1");
 
   // Page2
   let expectedPage2 = {
     reports: [
       {
         selectorText: ".page2-test2",
         start: { line: 9, column: 5 },
       },
     ]
   };
   let actualPage2 = yield usage.createEditorReport(PAGE_2 + " \u2192 <style> index 0");
-  isEqualJson(actualPage2, expectedPage2, 'Page2');
+  isEqualJson(actualPage2, expectedPage2, "Page2");
 
   // Page3a
   let expectedPage3a = {
     reports: [
       {
         selectorText: ".page3-test2",
         start: { line: 9, column: 5 },
       }
     ]
   };
   let actualPage3a = yield usage.createEditorReport(PAGE_3 + " \u2192 <style> index 0");
-  isEqualJson(actualPage3a, expectedPage3a, 'Page3a');
+  isEqualJson(actualPage3a, expectedPage3a, "Page3a");
 
   // Page3b
   let expectedPage3b = {
     reports: [
       {
         selectorText: ".page3-test3",
         start: { line: 3, column: 5 },
       }
     ]
   };
   let actualPage3b = yield usage.createEditorReport(PAGE_3 + " \u2192 <style> index 1");
-  isEqualJson(actualPage3b, expectedPage3b, 'Page3b');
+  isEqualJson(actualPage3b, expectedPage3b, "Page3b");
 
   // SheetA
   let expectedSheetA = {
     reports: [
       {
         selectorText: ".sheetA-test2",
         start: { line: 8, column: 1 },
       }
     ]
   };
   let actualSheetA = yield usage.createEditorReport(SHEET_A);
-  isEqualJson(actualSheetA, expectedSheetA, 'SheetA');
+  isEqualJson(actualSheetA, expectedSheetA, "SheetA");
 
   // SheetB
   let expectedSheetB = {
     reports: [
       {
         selectorText: ".sheetB-test2",
         start: { line: 6, column: 1 },
       }
     ]
   };
   let actualSheetB = yield usage.createEditorReport(SHEET_B);
-  isEqualJson(actualSheetB, expectedSheetB, 'SheetB');
+  isEqualJson(actualSheetB, expectedSheetB, "SheetB");
 
   // SheetC
   let expectedSheetC = {
     reports: [
       {
         selectorText: ".sheetC-test2",
         start: { line: 6, column: 1 },
       }
     ]
   };
   let actualSheetC = yield usage.createEditorReport(SHEET_C);
-  isEqualJson(actualSheetC, expectedSheetC, 'SheetC');
+  isEqualJson(actualSheetC, expectedSheetC, "SheetC");
 
   // SheetD
   let expectedSheetD = {
     reports: [
       {
         selectorText: ".sheetD-test2",
         start: { line: 6, column: 1 },
       }
     ]
   };
   let actualSheetD = yield usage.createEditorReport(SHEET_D);
-  isEqualJson(actualSheetD, expectedSheetD, 'SheetD');
+  isEqualJson(actualSheetD, expectedSheetD, "SheetD");
 }
 
 /**
  * Check that checkPageReport returns the expected JSON
  */
 function* checkPageReport(usage) {
   let actualReport = yield usage.createPageReport();
 
   // Quick check on trivial things. See doc comment for checkRuleProperties
   actualReport.preload.forEach(page => page.rules.forEach(checkRuleProperties));
   actualReport.unused.forEach(page => page.rules.forEach(checkRuleProperties));
 
   // Check the summary
   let expectedSummary = { "used": 92, "unused": 22, "preload": 28 };
-  isEqualJson(actualReport.summary, expectedSummary, 'summary');
+  isEqualJson(actualReport.summary, expectedSummary, "summary");
 
   checkPageReportPreload(actualReport);
   checkPageReportUnused(actualReport);
 }
 
 /**
  * Check that checkPageReport returns the expected preload JSON
  */
 function checkPageReportPreload(actualReport) {
   // Check the preload header
-  isEqualJson(actualReport.preload.length, 3, 'preload length');
+  isEqualJson(actualReport.preload.length, 3, "preload length");
 
   // Check the preload rules
-  isEqualJson(actualReport.preload[0].url, PAGE_2, 'preload url 0');
+  isEqualJson(actualReport.preload[0].url, PAGE_2, "preload url 0");
   let expectedPreloadRules0 = [
     // TODO: This is already pre-loaded, we should note this
     {
       url: PAGE_2 + " \u2192 <style> index 0",
       start: { line: 5, column: 5 },
       selectorText: ".page2-test1"
     },
     {
@@ -239,19 +239,19 @@ function checkPageReportPreload(actualRe
       selectorText: ".sheetC-test1"
     },
     {
       url: SHEET_C,
       start: { line: 14, column: 1 },
       selectorText: ".sheetC-test4"
     }
   ];
-  isEqualJson(actualReport.preload[0].rules, expectedPreloadRules0, 'preload rules 0');
+  isEqualJson(actualReport.preload[0].rules, expectedPreloadRules0, "preload rules 0");
 
-  isEqualJson(actualReport.preload[1].url, PAGE_1, 'preload url 1');
+  isEqualJson(actualReport.preload[1].url, PAGE_1, "preload url 1");
   let expectedPreloadRules1 = [
     {
       url:  SHEET_A,
       start: { line: 4, column: 1 },
       selectorText: ".sheetA-test1"
     },
     {
       url: SHEET_A,
@@ -294,19 +294,19 @@ function checkPageReportPreload(actualRe
       selectorText: ".page1-test1"
     },
     {
       url: PAGE_1 + " \u2192 <style> index 0",
       start: { line: 12, column: 5 },
       selectorText: ".page1-test3:hover"
     }
   ];
-  isEqualJson(actualReport.preload[1].rules, expectedPreloadRules1, 'preload rules 1');
+  isEqualJson(actualReport.preload[1].rules, expectedPreloadRules1, "preload rules 1");
 
-  isEqualJson(actualReport.preload[2].url, PAGE_3, 'preload url 2');
+  isEqualJson(actualReport.preload[2].url, PAGE_3, "preload url 2");
   let expectedPreloadRules2 = [
     {
       url: SHEET_A,
       start: { line: 4, column: 1 },
       selectorText: ".sheetA-test1"
     },
     {
       url: SHEET_A,
@@ -344,106 +344,106 @@ function checkPageReportPreload(actualRe
       selectorText: ".sheetC-test5"
     },
     {
       url: PAGE_3 + " \u2192 <style> index 0",
       start: { line: 5, column: 5 },
       selectorText: ".page3-test1"
     },
   ];
-  isEqualJson(actualReport.preload[2].rules, expectedPreloadRules2, 'preload rules 2');
+  isEqualJson(actualReport.preload[2].rules, expectedPreloadRules2, "preload rules 2");
 }
 
 /**
  * Check that checkPageReport returns the expected unused JSON
  */
 function checkPageReportUnused(actualReport) {
   // Check the unused header
-  isEqualJson(actualReport.unused.length, 8, 'unused length');
+  isEqualJson(actualReport.unused.length, 8, "unused length");
 
   // Check the unused rules
   isEqualJson(actualReport.unused[0].url, PAGE_2 + " \u2192 <style> index 0", "unused url 0");
   let expectedUnusedRules0 = [
     {
       url: PAGE_2 + " \u2192 <style> index 0",
       start: { line: 9, column: 5 },
       selectorText: ".page2-test2"
     }
   ];
-  isEqualJson(actualReport.unused[0].rules, expectedUnusedRules0, 'unused rules 0');
+  isEqualJson(actualReport.unused[0].rules, expectedUnusedRules0, "unused rules 0");
 
   isEqualJson(actualReport.unused[1].url, SHEET_A, "unused url 1");
   let expectedUnusedRules1 = [
     {
       url: SHEET_A,
       start: { line: 8, column: 1 },
       selectorText: ".sheetA-test2"
     }
   ];
-  isEqualJson(actualReport.unused[1].rules, expectedUnusedRules1, 'unused rules 1');
+  isEqualJson(actualReport.unused[1].rules, expectedUnusedRules1, "unused rules 1");
 
   isEqualJson(actualReport.unused[2].url, SHEET_B, "unused url 2");
   let expectedUnusedRules2 = [
     {
       url: SHEET_B,
       start: { line: 6, column: 1 },
       selectorText: ".sheetB-test2"
     }
   ];
-  isEqualJson(actualReport.unused[2].rules, expectedUnusedRules2, 'unused rules 2');
+  isEqualJson(actualReport.unused[2].rules, expectedUnusedRules2, "unused rules 2");
 
   isEqualJson(actualReport.unused[3].url, SHEET_D, "unused url 3");
   let expectedUnusedRules3 = [
     {
       url: SHEET_D,
       start: { line: 6, column: 1 },
       selectorText: ".sheetD-test2"
     }
   ];
-  isEqualJson(actualReport.unused[3].rules, expectedUnusedRules3, 'unused rules 3');
+  isEqualJson(actualReport.unused[3].rules, expectedUnusedRules3, "unused rules 3");
 
   isEqualJson(actualReport.unused[4].url, SHEET_C, "unused url 4");
   let expectedUnusedRules4 = [
     {
       url: SHEET_C,
       start: { line: 6, column: 1 },
       selectorText: ".sheetC-test2"
     }
   ];
-  isEqualJson(actualReport.unused[4].rules, expectedUnusedRules4, 'unused rules 4');
+  isEqualJson(actualReport.unused[4].rules, expectedUnusedRules4, "unused rules 4");
 
   isEqualJson(actualReport.unused[5].url, PAGE_1 + " \u2192 <style> index 0", "unused url 5");
   let expectedUnusedRules5 = [
     {
       url: PAGE_1 + " \u2192 <style> index 0",
       start: { line: 8, column: 5 },
       selectorText: ".page1-test2"
     }
   ];
-  isEqualJson(actualReport.unused[5].rules, expectedUnusedRules5, 'unused rules 5');
+  isEqualJson(actualReport.unused[5].rules, expectedUnusedRules5, "unused rules 5");
 
   isEqualJson(actualReport.unused[6].url, PAGE_3 + " \u2192 <style> index 0", "unused url 6");
   let expectedUnusedRules6 = [
     {
       url: PAGE_3 + " \u2192 <style> index 0",
       start: { line: 9, column: 5 },
       selectorText: ".page3-test2"
     }
   ];
-  isEqualJson(actualReport.unused[6].rules, expectedUnusedRules6, 'unused rules 6');
+  isEqualJson(actualReport.unused[6].rules, expectedUnusedRules6, "unused rules 6");
 
   isEqualJson(actualReport.unused[7].url, PAGE_3 + " \u2192 <style> index 1", "unused url 7");
   let expectedUnusedRules7 = [
     {
       url: PAGE_3 + " \u2192 <style> index 1",
       start: { line: 3, column: 5 },
       selectorText: ".page3-test3"
     }
   ];
-  isEqualJson(actualReport.unused[7].rules, expectedUnusedRules7, 'unused rules 7');
+  isEqualJson(actualReport.unused[7].rules, expectedUnusedRules7, "unused rules 7");
 }
 
 /**
  * We do basic tests on the shortUrl and formattedCssText because they are
  * very derivative, and so make for fragile tests, and having done those quick
  * existence checks we remove them so the JSON check later can ignore them
  */
 function checkRuleProperties(rule, index) {
--- a/devtools/client/commandline/test/browser_cmd_csscoverage_util.js
+++ b/devtools/client/commandline/test/browser_cmd_csscoverage_util.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that the addon commands works as they should
 
 const csscoverage = require("devtools/server/actors/csscoverage");
 
-add_task(function*() {
+add_task(function* () {
   testDeconstructRuleId();
 });
 
 function testDeconstructRuleId() {
   // This is the easy case
   let rule = csscoverage.deconstructRuleId("http://thing/blah|10|20");
   is(rule.url, "http://thing/blah", "1 url");
   is(rule.line, 10, "1 line");
--- a/devtools/client/commandline/test/browser_cmd_folder.js
+++ b/devtools/client/commandline/test/browser_cmd_folder.js
@@ -1,58 +1,58 @@
 /* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that the folder commands works as they should
 
 const TEST_URI = "data:text/html;charset=utf-8,cmd-folder";
 
 function test() {
-  helpers.addTabWithToolbar(TEST_URI, function(options) {
+  helpers.addTabWithToolbar(TEST_URI, function (options) {
     return helpers.audit(options, [
       {
-        setup: 'folder',
+        setup: "folder",
         check: {
-          input:  'folder',
-          hints:  ' open',
-          markup: 'IIIIII',
-          status: 'ERROR'
+          input:  "folder",
+          hints:  " open",
+          markup: "IIIIII",
+          status: "ERROR"
         },
       },
       {
-        setup: 'folder open',
+        setup: "folder open",
         check: {
-          input:  'folder open',
-          hints:  ' [path]',
-          markup: 'VVVVVVVVVVV',
-          status: 'VALID'
+          input:  "folder open",
+          hints:  " [path]",
+          markup: "VVVVVVVVVVV",
+          status: "VALID"
         }
       },
       {
-        setup: 'folder open ~',
+        setup: "folder open ~",
         check: {
-          input:  'folder open ~',
-          hints:  '',
-          markup: 'VVVVVVVVVVVVV',
-          status: 'VALID'
+          input:  "folder open ~",
+          hints:  "",
+          markup: "VVVVVVVVVVVVV",
+          status: "VALID"
         }
       },
       {
-        setup: 'folder openprofile',
+        setup: "folder openprofile",
         check: {
-          input:  'folder openprofile',
-          hints:  '',
-          markup: 'VVVVVVVVVVVVVVVVVV',
-          status: 'VALID'
+          input:  "folder openprofile",
+          hints:  "",
+          markup: "VVVVVVVVVVVVVVVVVV",
+          status: "VALID"
         }
       },
       {
-        setup: 'folder openprofile WRONG',
+        setup: "folder openprofile WRONG",
         check: {
-          input:  'folder openprofile WRONG',
-          hints:  '',
-          markup: 'VVVVVVVVVVVVVVVVVVVEEEEE',
-          status: 'ERROR'
+          input:  "folder openprofile WRONG",
+          hints:  "",
+          markup: "VVVVVVVVVVVVVVVVVVVEEEEE",
+          status: "ERROR"
         }
       }
     ]);
   }).then(finish, helpers.handleError);
 }
--- a/devtools/client/commandline/test/browser_cmd_highlight_01.js
+++ b/devtools/client/commandline/test/browser_cmd_highlight_01.js
@@ -2,151 +2,151 @@
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 "use strict";
 
 // Tests the various highlight command parameters and options
 
 // Creating a test page with many elements to test the --showall option
 var TEST_PAGE = "data:text/html;charset=utf-8,<body><ul>";
-for (let i = 0; i < 101; i ++) {
+for (let i = 0; i < 101; i++) {
   TEST_PAGE += "<li class='item'>" + i + "</li>";
 }
 TEST_PAGE += "</ul></body>";
 
 function test() {
   return Task.spawn(spawnTest).then(finish, helpers.handleError);
 }
 
 function* spawnTest() {
   let options = yield helpers.openTab(TEST_PAGE);
   yield helpers.openToolbar(options);
 
   yield helpers.audit(options, [
     {
-      setup: 'highlight',
+      setup: "highlight",
       check: {
-        input:  'highlight',
-        hints:           ' [selector] [options]',
-        markup: 'VVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight",
+        hints:           " [selector] [options]",
+        markup: "VVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '0 nodes highlighted'
+        output: "0 nodes highlighted"
       }
     },
     {
-      setup: 'highlight bo',
+      setup: "highlight bo",
       check: {
-        input:  'highlight bo',
-        hints:              ' [options]',
-        markup: 'VVVVVVVVVVII',
-        status: 'ERROR'
+        input:  "highlight bo",
+        hints:              " [options]",
+        markup: "VVVVVVVVVVII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: No matches'
+        output: "Error: No matches"
       }
     },
     {
-      setup: 'highlight body',
+      setup: "highlight body",
       check: {
-        input:  'highlight body',
-        hints:                ' [options]',
-        markup: 'VVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight body",
+        hints:                " [options]",
+        markup: "VVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '1 node highlighted'
+        output: "1 node highlighted"
       }
     },
     {
-      setup: 'highlight body --hideguides',
+      setup: "highlight body --hideguides",
       check: {
-        input:  'highlight body --hideguides',
-        hints:                             ' [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight body --hideguides",
+        hints:                             " [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '1 node highlighted'
+        output: "1 node highlighted"
       }
     },
     {
-      setup: 'highlight body --showinfobar',
+      setup: "highlight body --showinfobar",
       check: {
-        input:  'highlight body --showinfobar',
-        hints:                              ' [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight body --showinfobar",
+        hints:                              " [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '1 node highlighted'
+        output: "1 node highlighted"
       }
     },
     {
-      setup: 'highlight body --showall',
+      setup: "highlight body --showall",
       check: {
-        input:  'highlight body --showall',
-        hints:                          ' [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight body --showall",
+        hints:                          " [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '1 node highlighted'
+        output: "1 node highlighted"
       }
     },
     {
-      setup: 'highlight body --keep',
+      setup: "highlight body --keep",
       check: {
-        input:  'highlight body --keep',
-        hints:                       ' [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight body --keep",
+        hints:                       " [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '1 node highlighted'
+        output: "1 node highlighted"
       }
     },
     {
-      setup: 'highlight body --hideguides --showinfobar --showall --region ' +
-        'content --fill red --keep',
+      setup: "highlight body --hideguides --showinfobar --showall --region " +
+        "content --fill red --keep",
       check: {
-        input:  'highlight body --hideguides --showinfobar --showall --region ' +
-          'content --fill red --keep',
-        hints: '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV' +
-          'VVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight body --hideguides --showinfobar --showall --region " +
+          "content --fill red --keep",
+        hints: "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV" +
+          "VVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '1 node highlighted'
+        output: "1 node highlighted"
       }
     },
     {
-      setup: 'highlight .item',
+      setup: "highlight .item",
       check: {
-        input:  'highlight .item',
-        hints:                 ' [options]',
-        markup: 'VVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight .item",
+        hints:                 " [options]",
+        markup: "VVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '101 nodes matched, but only 100 nodes highlighted. Use ' +
-          '\u2018--showall\u2019 to show all'
+        output: "101 nodes matched, but only 100 nodes highlighted. Use " +
+          "\u2018--showall\u2019 to show all"
       }
     },
     {
-      setup: 'highlight .item --showall',
+      setup: "highlight .item --showall",
       check: {
-        input:  'highlight .item --showall',
-        hints:                           ' [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "highlight .item --showall",
+        hints:                           " [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
       exec: {
-        output: '101 nodes highlighted'
+        output: "101 nodes highlighted"
       }
     }
   ]);
 
   yield helpers.closeToolbar(options);
   yield helpers.closeTab(options);
 }
--- a/devtools/client/commandline/test/browser_cmd_highlight_02.js
+++ b/devtools/client/commandline/test/browser_cmd_highlight_02.js
@@ -3,17 +3,17 @@
 
 "use strict";
 
 // Tests that the highlight command actually creates a highlighter
 
 const TEST_PAGE = "data:text/html;charset=utf-8,<div></div>";
 
 function test() {
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let options = yield helpers.openTab(TEST_PAGE);
     yield helpers.openToolbar(options);
 
     info("highlighting the body node");
     yield runCommand("highlight body", options);
     is(getHighlighterNumber(), 1, "The highlighter element exists for body");
 
     info("highlighting the div node");
--- a/devtools/client/commandline/test/browser_cmd_highlight_03.js
+++ b/devtools/client/commandline/test/browser_cmd_highlight_03.js
@@ -13,117 +13,117 @@ function test() {
 }
 
 function* spawnTest() {
   let options = yield helpers.openTab(TEST_PAGE);
   yield helpers.openToolbar(options);
 
   yield helpers.audit(options, [
     {
-      setup: 'highlight body --hide',
+      setup: "highlight body --hide",
       check: {
-        input:  'highlight body --hide',
-        hints:                       'guides [options]',
-        markup: 'VVVVVVVVVVVVVVVIIIIII',
-        status: 'ERROR'
+        input:  "highlight body --hide",
+        hints:                       "guides [options]",
+        markup: "VVVVVVVVVVVVVVVIIIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'highlight body --show',
+      setup: "highlight body --show",
       check: {
-        input:  'highlight body --show',
-        hints:                       'infobar [options]',
-        markup: 'VVVVVVVVVVVVVVVIIIIII',
-        status: 'ERROR'
+        input:  "highlight body --show",
+        hints:                       "infobar [options]",
+        markup: "VVVVVVVVVVVVVVVIIIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'highlight body --showa',
+      setup: "highlight body --showa",
       check: {
-        input:  'highlight body --showa',
-        hints:                        'll [options]',
-        markup: 'VVVVVVVVVVVVVVVIIIIIII',
-        status: 'ERROR'
+        input:  "highlight body --showa",
+        hints:                        "ll [options]",
+        markup: "VVVVVVVVVVVVVVVIIIIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'highlight body --r',
+      setup: "highlight body --r",
       check: {
-        input:  'highlight body --r',
-        hints:                    'egion [options]',
-        markup: 'VVVVVVVVVVVVVVVIII',
-        status: 'ERROR'
+        input:  "highlight body --r",
+        hints:                    "egion [options]",
+        markup: "VVVVVVVVVVVVVVVIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'highlight body --region',
+      setup: "highlight body --region",
       check: {
-        input:  'highlight body --region',
-        hints:                         ' <selection> [options]',
-        markup: 'VVVVVVVVVVVVVVVIIIIIIII',
-        status: 'ERROR'
+        input:  "highlight body --region",
+        hints:                         " <selection> [options]",
+        markup: "VVVVVVVVVVVVVVVIIIIIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Value required for \u2018region\u2019.'
+        output: "Error: Value required for \u2018region\u2019."
       }
     },
     {
-      setup: 'highlight body --fi',
+      setup: "highlight body --fi",
       check: {
-        input:  'highlight body --fi',
-        hints:                     'll [options]',
-        markup: 'VVVVVVVVVVVVVVVIIII',
-        status: 'ERROR'
+        input:  "highlight body --fi",
+        hints:                     "ll [options]",
+        markup: "VVVVVVVVVVVVVVVIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'highlight body --fill',
+      setup: "highlight body --fill",
       check: {
-        input:  'highlight body --fill',
-        hints:                       ' <string> [options]',
-        markup: 'VVVVVVVVVVVVVVVIIIIII',
-        status: 'ERROR'
+        input:  "highlight body --fill",
+        hints:                       " <string> [options]",
+        markup: "VVVVVVVVVVVVVVVIIIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Value required for \u2018fill\u2019.'
+        output: "Error: Value required for \u2018fill\u2019."
       }
     },
     {
-      setup: 'highlight body --ke',
+      setup: "highlight body --ke",
       check: {
-        input:  'highlight body --ke',
-        hints:                     'ep [options]',
-        markup: 'VVVVVVVVVVVVVVVIIII',
-        status: 'ERROR'
+        input:  "highlight body --ke",
+        hints:                     "ep [options]",
+        markup: "VVVVVVVVVVVVVVVIIII",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'unhighlight',
+      setup: "unhighlight",
       check: {
-        input:  'unhighlight',
-        hints:  '',
-        markup: 'VVVVVVVVVVV',
-        status: 'VALID'
+        input:  "unhighlight",
+        hints:  "",
+        markup: "VVVVVVVVVVV",
+        status: "VALID"
       }
     }
   ]);
 
   yield helpers.closeToolbar(options);
   yield helpers.closeTab(options);
 }
--- a/devtools/client/commandline/test/browser_cmd_inject.js
+++ b/devtools/client/commandline/test/browser_cmd_inject.js
@@ -1,67 +1,67 @@
 /* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that the inject commands works as they should
 
-const TEST_URI = 'http://example.com/browser/devtools/client/commandline/'+
-                 'test/browser_cmd_inject.html';
+const TEST_URI = "http://example.com/browser/devtools/client/commandline/" +
+                 "test/browser_cmd_inject.html";
 
 function test() {
-  helpers.addTabWithToolbar(TEST_URI, function(options) {
+  helpers.addTabWithToolbar(TEST_URI, function (options) {
     return helpers.audit(options, [
       {
-        setup:    'inject',
+        setup:    "inject",
         check: {
-          input:  'inject',
-          markup: 'VVVVVV',
-          hints:        ' <library>',
-          status: 'ERROR'
+          input:  "inject",
+          markup: "VVVVVV",
+          hints:        " <library>",
+          status: "ERROR"
         },
       },
       {
-        setup:    'inject j',
+        setup:    "inject j",
         check: {
-          input:  'inject j',
-          markup: 'VVVVVVVI',
-          hints:          'Query',
-          status: 'ERROR'
+          input:  "inject j",
+          markup: "VVVVVVVI",
+          hints:          "Query",
+          status: "ERROR"
         },
       },
       {
-        setup: 'inject notauri',
+        setup: "inject notauri",
         check: {
-          input:  'inject notauri',
-          hints:                ' -> http://notauri/',
-          markup: 'VVVVVVVIIIIIII',
-          status: 'ERROR',
+          input:  "inject notauri",
+          hints:                " -> http://notauri/",
+          markup: "VVVVVVVIIIIIII",
+          status: "ERROR",
           args: {
             library: {
               value: undefined,
-              status: 'INCOMPLETE'
+              status: "INCOMPLETE"
             }
           }
         }
       },
       {
-        setup:    'inject http://example.com/browser/devtools/client/commandline/test/browser_cmd_inject.js',
+        setup:    "inject http://example.com/browser/devtools/client/commandline/test/browser_cmd_inject.js",
         check: {
-          input:  'inject http://example.com/browser/devtools/client/commandline/test/browser_cmd_inject.js',
-          markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-          hints:                                                                                           '',
-          status: 'VALID',
+          input:  "inject http://example.com/browser/devtools/client/commandline/test/browser_cmd_inject.js",
+          markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+          hints:                                                                                           "",
+          status: "VALID",
           args: {
             library: {
-              value: function(library) {
-                is(library.type, 'url', 'inject type name');
-                is(library.url.origin, 'http://example.com', 'inject url hostname');
-                ok(library.url.path.indexOf('_inject.js') != -1, 'inject url path');
+              value: function (library) {
+                is(library.type, "url", "inject type name");
+                is(library.url.origin, "http://example.com", "inject url hostname");
+                ok(library.url.path.indexOf("_inject.js") != -1, "inject url path");
               },
-              status: 'VALID'
+              status: "VALID"
             }
           }
         },
         exec: {
           output: [ /http:\/\/example.com\/browser\/devtools\/client\/commandline\/test\/browser_cmd_inject.js loaded/ ]
         }
       }
     ]);
--- a/devtools/client/commandline/test/browser_cmd_jsb.js
+++ b/devtools/client/commandline/test/browser_cmd_jsb.js
@@ -13,29 +13,29 @@ function test() {
 function* testTask() {
   let options = yield helpers.openTab("about:blank");
   yield helpers.openToolbar(options);
 
   let notifyPromise = wwNotifyOnce();
 
   helpers.audit(options, [
     {
-      setup: 'jsb',
+      setup: "jsb",
       check: {
-        input:  'jsb',
-        hints:     ' <url> [options]',
-        markup: 'VVV',
-        status: 'ERROR'
+        input:  "jsb",
+        hints:     " <url> [options]",
+        markup: "VVV",
+        status: "ERROR"
       }
     },
     {
-      setup: 'jsb ' + TEST_URI,
+      setup: "jsb " + TEST_URI,
       // Should result in a new scratchpad window
       exec: {
-        output: '',
+        output: "",
         error: false
       }
     }
   ]);
 
   let { subject } = yield notifyPromise;
   let scratchpadWin = subject.QueryInterface(Ci.nsIDOMWindow);
   yield helpers.listenOnce(scratchpadWin, "load");
@@ -88,16 +88,16 @@ function wwNotifyOnce() {
 
 /**
  * YET ANOTHER WRAPPER for a place where we are using events as poor-man's
  * promises. Perhaps this should be promoted to scratchpad?
  */
 function observeOnce(scratchpad) {
   return new Promise(resolve => {
     let observer = {
-      onReady: function() {
+      onReady: function () {
         scratchpad.removeObserver(observer);
         resolve();
       },
     };
     scratchpad.addObserver(observer);
   });
 }
--- a/devtools/client/commandline/test/browser_cmd_listen.js
+++ b/devtools/client/commandline/test/browser_cmd_listen.js
@@ -1,79 +1,79 @@
 /* Any copyright is dedicated to the Public Domain.
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that the listen/unlisten commands work as they should.
 
-const TEST_URI = "http://example.com/browser/devtools/client/commandline/"+
+const TEST_URI = "http://example.com/browser/devtools/client/commandline/" +
                  "test/browser_cmd_cookie.html";
 
 function test() {
   return Task.spawn(testTask).then(finish, helpers.handleError);
 }
 
 var tests = {
-  testInput: function(options) {
+  testInput: function (options) {
     return helpers.audit(options, [
       {
-        setup:    'listen',
+        setup:    "listen",
         check: {
-          input:  'listen',
-          markup: 'VVVVVV',
-          status: 'VALID'
+          input:  "listen",
+          markup: "VVVVVV",
+          status: "VALID"
         },
       },
       {
-        setup:    'unlisten',
+        setup:    "unlisten",
         check: {
-          input:  'unlisten',
-          markup: 'VVVVVVVV',
-          status: 'VALID'
+          input:  "unlisten",
+          markup: "VVVVVVVV",
+          status: "VALID"
         },
         exec: {
-          output: 'All TCP ports closed'
+          output: "All TCP ports closed"
         }
       },
       {
-        setup: function() {
-          return helpers.setInput(options, 'listen');
+        setup: function () {
+          return helpers.setInput(options, "listen");
         },
         check: {
-          input:  'listen',
-          hints:        ' [port]',
-          markup: 'VVVVVV',
-          status: 'VALID'
+          input:  "listen",
+          hints:        " [port]",
+          markup: "VVVVVV",
+          status: "VALID"
         },
         exec: {
-          output: 'Listening on port 6080'
+          output: "Listening on port 6080"
         }
       },
       {
-        setup: function() {
-          return helpers.setInput(options, 'listen 8000');
+        setup: function () {
+          return helpers.setInput(options, "listen 8000");
         },
         exec: {
-          output: 'Listening on port 8000'
+          output: "Listening on port 8000"
         }
       },
       {
-        setup: function() {
-          return helpers.setInput(options, 'unlisten');
+        setup: function () {
+          return helpers.setInput(options, "unlisten");
         },
         exec: {
-          output: 'All TCP ports closed'
+          output: "All TCP ports closed"
         }
       }
     ]);
   },
 };
 
 function* testTask() {
-    Services.prefs.setBoolPref('devtools.debugger.remote-enabled', true);
-    let options = yield helpers.openTab(TEST_URI);
-    yield helpers.openToolbar(options);
+  Services.prefs.setBoolPref("devtools.debugger.remote-enabled", true);
+  let options = yield helpers.openTab(TEST_URI);
+  yield helpers.openToolbar(options);
 
-    yield helpers.runTests(options, tests);
+  yield helpers.runTests(options, tests);
 
-    yield helpers.closeToolbar(options);
-    yield helpers.closeTab(options);
-    Services.prefs.clearUserPref('devtools.debugger.remote-enabled');
+  yield helpers.closeToolbar(options);
+  yield helpers.closeTab(options);
+  Services.prefs.clearUserPref("devtools.debugger.remote-enabled");
 }
--- a/devtools/client/commandline/test/browser_cmd_media.js
+++ b/devtools/client/commandline/test/browser_cmd_media.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Test that screenshot command works properly
 const TEST_URI = "http://example.com/browser/devtools/client/commandline/" +
                  "test/browser_cmd_media.html";
 var tests = {
-  testInput: function(options) {
+  testInput: function (options) {
     return helpers.audit(options, [
       {
         setup: "media emulate braille",
         check: {
           input:  "media emulate braille",
           markup: "VVVVVVVVVVVVVVVVVVVVV",
           status: "VALID",
           args: {
@@ -26,60 +26,60 @@ var tests = {
           status: "VALID",
           args: {
           }
         },
       },
     ]);
   },
 
-  testEmulateMedia: function(options) {
+  testEmulateMedia: function (options) {
     return helpers.audit(options, [
       {
         setup: "media emulate braille",
         check: {
           args: {
             type: { value: "braille"}
           }
         },
         exec: {
           output: ""
         },
-        post: function() {
+        post: function () {
           let body = options.window.document.body;
           let style = options.window.getComputedStyle(body);
           is(style.backgroundColor, "rgb(255, 255, 0)", "media correctly emulated");
         }
       }
     ]);
   },
 
-  testEndMediaEmulation: function(options) {
+  testEndMediaEmulation: function (options) {
     return helpers.audit(options, [
       {
-        setup: function() {
+        setup: function () {
           let mDV = options.browser.markupDocumentViewer;
           mDV.emulateMedium("embossed");
           return helpers.setInput(options, "media reset");
         },
         exec: {
           output: ""
         },
-        post: function() {
+        post: function () {
           let body = options.window.document.body;
           let style = options.window.getComputedStyle(body);
           is(style.backgroundColor, "rgb(255, 255, 255)", "media reset");
         }
       }
     ]);
   }
 };
 
 function test() {
-  return Task.spawn(function*() {
+  return Task.spawn(function* () {
     let options = yield helpers.openTab(TEST_URI);
     yield helpers.openToolbar(options);
 
     yield helpers.runTests(options, tests);
 
     yield helpers.closeToolbar(options);
     yield helpers.closeTab(options);
   }).then(finish, helpers.handleError);
--- a/devtools/client/commandline/test/browser_cmd_pagemod_export.js
+++ b/devtools/client/commandline/test/browser_cmd_pagemod_export.js
@@ -1,14 +1,14 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Tests that the inspect command works as it should
 
-const TEST_URI = "http://example.com/browser/devtools/client/commandline/"+
+const TEST_URI = "http://example.com/browser/devtools/client/commandline/" +
                  "test/browser_cmd_pagemod_export.html";
 
 function test() {
   return Task.spawn(spawnTest).then(finish, helpers.handleError);
 }
 
 function* spawnTest() {
   let options = yield helpers.openTab(TEST_URI);
@@ -18,47 +18,47 @@ function* spawnTest() {
   const initialHtml = documentElement.innerHTML;
   function resetContent() {
     options.document.documentElement.innerHTML = initialHtml;
   }
 
   // Test exporting HTML
   let oldOpen = options.window.open;
   let openURL = "";
-  options.window.open = function(url) {
+  options.window.open = function (url) {
     // The URL is a data: URL that contains the document source
     openURL = decodeURIComponent(url);
   };
 
   yield helpers.audit(options, [
     {
-      setup:    'export html',
+      setup:    "export html",
       skipIf: true,
       check: {
-        input:  'export html',
-        hints:             ' [destination]',
-        markup: 'VVVVVVVVVVV',
-        status: 'VALID',
+        input:  "export html",
+        hints:             " [destination]",
+        markup: "VVVVVVVVVVV",
+        status: "VALID",
       },
       exec: {
-        output: ''
+        output: ""
       },
-      post: function() {
+      post: function () {
         isnot(openURL.indexOf('<html lang="en">'), -1, "export html works: <html>");
         isnot(openURL.indexOf("<title>GCLI"), -1, "export html works: <title>");
         isnot(openURL.indexOf('<p id="someid">#'), -1, "export html works: <p>");
       }
     },
     {
-      setup:    'export html stdout',
+      setup:    "export html stdout",
       check: {
-        input:  'export html stdout',
-        hints:                    '',
-        markup: 'VVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "export html stdout",
+        hints:                    "",
+        markup: "VVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
           destination: { value: "stdout" }
         },
       },
       exec: {
         output: [
           /<html lang="en">/,
           /<title>GCLI/,
@@ -69,218 +69,218 @@ function* spawnTest() {
   ]);
 
   options.window.open = oldOpen;
   oldOpen = undefined;
 
   // Test 'pagemod replace'
   yield helpers.audit(options, [
     {
-      setup: 'pagemod replace',
+      setup: "pagemod replace",
       check: {
-        input:  'pagemod replace',
-        hints:                 ' <search> <replace> [ignoreCase] [selector] [root] [attrOnly] [contentOnly] [attributes]',
-        markup: 'VVVVVVVVVVVVVVV',
-        status: 'ERROR'
+        input:  "pagemod replace",
+        hints:                 " <search> <replace> [ignoreCase] [selector] [root] [attrOnly] [contentOnly] [attributes]",
+        markup: "VVVVVVVVVVVVVVV",
+        status: "ERROR"
       }
     },
     {
-      setup: 'pagemod replace some foo',
+      setup: "pagemod replace some foo",
       check: {
-        input:  'pagemod replace some foo',
-        hints:                          ' [ignoreCase] [selector] [root] [attrOnly] [contentOnly] [attributes]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "pagemod replace some foo",
+        hints:                          " [ignoreCase] [selector] [root] [attrOnly] [contentOnly] [attributes]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       }
     },
     {
-      setup: 'pagemod replace some foo true',
+      setup: "pagemod replace some foo true",
       check: {
-        input:  'pagemod replace some foo true',
-        hints:                               ' [selector] [root] [attrOnly] [contentOnly] [attributes]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "pagemod replace some foo true",
+        hints:                               " [selector] [root] [attrOnly] [contentOnly] [attributes]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       }
     },
     {
-      setup: 'pagemod replace some foo true --attrOnly',
+      setup: "pagemod replace some foo true --attrOnly",
       check: {
-        input:  'pagemod replace some foo true --attrOnly',
-        hints:                                          ' [selector] [root] [contentOnly] [attributes]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "pagemod replace some foo true --attrOnly",
+        hints:                                          " [selector] [root] [contentOnly] [attributes]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       }
     },
     {
-      setup: 'pagemod replace sOme foOBar',
+      setup: "pagemod replace sOme foOBar",
       exec: {
         output: /^[^:]+: 13\. [^:]+: 0\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "no change in the page");
       }
     },
     {
-      setup: 'pagemod replace sOme foOBar true',
+      setup: "pagemod replace sOme foOBar true",
       exec: {
         output: /^[^:]+: 13\. [^:]+: 2\. [^:]+: 2\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         isnot(html.indexOf('<p class="foOBarclass">.foOBarclass'), -1,
               ".someclass changed to .foOBarclass");
         isnot(html.indexOf('<p id="foOBarid">#foOBarid'), -1,
               "#someid changed to #foOBarid");
 
         resetContent();
       }
     },
     {
-      setup: 'pagemod replace some foobar --contentOnly',
+      setup: "pagemod replace some foobar --contentOnly",
       exec: {
         output: /^[^:]+: 13\. [^:]+: 2\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         isnot(html.indexOf('<p class="someclass">.foobarclass'), -1,
               ".someclass changed to .foobarclass (content only)");
         isnot(html.indexOf('<p id="someid">#foobarid'), -1,
               "#someid changed to #foobarid (content only)");
 
         resetContent();
       }
     },
     {
-      setup: 'pagemod replace some foobar --attrOnly',
+      setup: "pagemod replace some foobar --attrOnly",
       exec: {
         output: /^[^:]+: 13\. [^:]+: 0\. [^:]+: 2\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         isnot(html.indexOf('<p class="foobarclass">.someclass'), -1,
               ".someclass changed to .foobarclass (attr only)");
         isnot(html.indexOf('<p id="foobarid">#someid'), -1,
               "#someid changed to #foobarid (attr only)");
 
         resetContent();
       }
     },
     {
-      setup: 'pagemod replace some foobar --root head',
+      setup: "pagemod replace some foobar --root head",
       exec: {
         output: /^[^:]+: 2\. [^:]+: 0\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "nothing changed");
       }
     },
     {
-      setup: 'pagemod replace some foobar --selector .someclass,div,span',
+      setup: "pagemod replace some foobar --selector .someclass,div,span",
       exec: {
         output: /^[^:]+: 4\. [^:]+: 1\. [^:]+: 1\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         isnot(html.indexOf('<p class="foobarclass">.foobarclass'), -1,
               ".someclass changed to .foobarclass");
         isnot(html.indexOf('<p id="someid">#someid'), -1,
               "#someid did not change");
 
         resetContent();
       }
     },
   ]);
 
   // Test 'pagemod remove element'
   yield helpers.audit(options, [
     {
-      setup: 'pagemod remove',
+      setup: "pagemod remove",
       check: {
-        input:  'pagemod remove',
-        hints:                ' attribute',
-        markup: 'IIIIIIIVIIIIII',
-        status: 'ERROR'
+        input:  "pagemod remove",
+        hints:                " attribute",
+        markup: "IIIIIIIVIIIIII",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pagemod remove element',
+      setup: "pagemod remove element",
       check: {
-        input:  'pagemod remove element',
-        hints:                        ' <search> [root] [stripOnly] [ifEmptyOnly]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVV',
-        status: 'ERROR'
+        input:  "pagemod remove element",
+        hints:                        " <search> [root] [stripOnly] [ifEmptyOnly]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVV",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pagemod remove element foo',
+      setup: "pagemod remove element foo",
       check: {
-        input:  'pagemod remove element foo',
-        hints:                            ' [root] [stripOnly] [ifEmptyOnly]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "pagemod remove element foo",
+        hints:                            " [root] [stripOnly] [ifEmptyOnly]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
     },
     {
-      setup: 'pagemod remove element p',
+      setup: "pagemod remove element p",
       exec: {
         output: /^[^:]+: 3\. [^:]+: 3\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         is(html.indexOf('<p class="someclass">'), -1, "p.someclass removed");
         is(html.indexOf('<p id="someid">'), -1, "p#someid removed");
         is(html.indexOf("<p><strong>"), -1, "<p> wrapping <strong> removed");
         isnot(html.indexOf("<span>"), -1, "<span> not removed");
 
         resetContent();
       }
     },
     {
-      setup: 'pagemod remove element p head',
+      setup: "pagemod remove element p head",
       exec: {
         output: /^[^:]+: 0\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
       }
     },
     {
-      setup: 'pagemod remove element p --ifEmptyOnly',
+      setup: "pagemod remove element p --ifEmptyOnly",
       exec: {
         output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
       }
     },
     {
-      setup: 'pagemod remove element meta,title --ifEmptyOnly',
+      setup: "pagemod remove element meta,title --ifEmptyOnly",
       exec: {
         output: /^[^:]+: 2\. [^:]+: 1\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         is(html.indexOf("<meta charset="), -1, "<meta> removed");
         isnot(html.indexOf("<title>"), -1, "<title> not removed");
 
         resetContent();
       }
     },
     {
-      setup: 'pagemod remove element p --stripOnly',
+      setup: "pagemod remove element p --stripOnly",
       exec: {
         output: /^[^:]+: 3\. [^:]+: 3\.\s*$/
       },
-      post: function() {
+      post: function () {
         let html = documentElement.innerHTML;
 
         is(html.indexOf('<p class="someclass">'), -1, "p.someclass removed");
         is(html.indexOf('<p id="someid">'), -1, "p#someid removed");
         is(html.indexOf("<p><strong>"), -1, "<p> wrapping <strong> removed");
         isnot(html.indexOf(".someclass"), -1, ".someclass still exists");
         isnot(html.indexOf("#someid"), -1, "#someid still exists");
         isnot(html.indexOf("<strong>p"), -1, "<strong> still exists");
@@ -288,99 +288,99 @@ function* spawnTest() {
         resetContent();
       }
     },
   ]);
 
   // Test 'pagemod remove attribute'
   yield helpers.audit(options, [
     {
-      setup: 'pagemod remove attribute',
+      setup: "pagemod remove attribute",
       check: {
-        input:  'pagemod remove attribute',
-        hints:                          ' <searchAttributes> <searchElements> [root] [ignoreCase]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'ERROR',
+        input:  "pagemod remove attribute",
+        hints:                          " <searchAttributes> <searchElements> [root] [ignoreCase]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "ERROR",
         args: {
-          searchAttributes: { value: undefined, status: 'INCOMPLETE' },
-          searchElements: { value: undefined, status: 'INCOMPLETE' },
+          searchAttributes: { value: undefined, status: "INCOMPLETE" },
+          searchElements: { value: undefined, status: "INCOMPLETE" },
           // root: { value: undefined }, // 'root' is a node which is remote
                                          // so we can't see the value in tests
           ignoreCase: { value: false },
         }
       },
     },
     {
-      setup: 'pagemod remove attribute foo bar',
+      setup: "pagemod remove attribute foo bar",
       check: {
-        input:  'pagemod remove attribute foo bar',
-        hints:                                  ' [root] [ignoreCase]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "pagemod remove attribute foo bar",
+        hints:                                  " [root] [ignoreCase]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
-          searchAttributes: { value: 'foo' },
-          searchElements: { value: 'bar' },
+          searchAttributes: { value: "foo" },
+          searchElements: { value: "bar" },
           // root: { value: undefined }, // 'root' is a node which is remote
                                          // so we can't see the value in tests
           ignoreCase: { value: false },
         }
       },
-      post: function() {
+      post: function () {
         return new Promise(resolve => {
           executeSoon(resolve);
         });
       }
     },
     {
-      setup: 'pagemod remove attribute foo bar',
+      setup: "pagemod remove attribute foo bar",
       exec: {
         output: /^[^:]+: 0\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
       }
     },
     {
-      setup: 'pagemod remove attribute foo p',
+      setup: "pagemod remove attribute foo p",
       exec: {
         output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
       }
     },
     {
-      setup: 'pagemod remove attribute id p,span',
+      setup: "pagemod remove attribute id p,span",
       exec: {
         output: /^[^:]+: 5\. [^:]+: 1\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML.indexOf('<p id="someid">#someid'), -1,
            "p#someid attribute removed");
         isnot(documentElement.innerHTML.indexOf("<p>#someid"), -1,
            "p with someid content still exists");
 
         resetContent();
       }
     },
     {
-      setup: 'pagemod remove attribute Class p',
+      setup: "pagemod remove attribute Class p",
       exec: {
         output: /^[^:]+: 3\. [^:]+: 0\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML, initialHtml, "nothing changed in the page");
       }
     },
     {
-      setup: 'pagemod remove attribute Class p --ignoreCase',
+      setup: "pagemod remove attribute Class p --ignoreCase",
       exec: {
         output: /^[^:]+: 3\. [^:]+: 1\.\s*$/
       },
-      post: function() {
+      post: function () {
         is(documentElement.innerHTML.indexOf('<p class="someclass">.someclass'), -1,
            "p.someclass attribute removed");
         isnot(documentElement.innerHTML.indexOf("<p>.someclass"), -1,
            "p with someclass content still exists");
 
         resetContent();
       }
     },
--- a/devtools/client/commandline/test/browser_cmd_paintflashing.js
+++ b/devtools/client/commandline/test/browser_cmd_paintflashing.js
@@ -8,17 +8,17 @@
 const TEST_URI = "http://example.com/browser/devtools/client/commandline/" +
                  "test/browser_cmd_cookie.html";
 
 function test() {
   return Task.spawn(testTask).then(finish, helpers.handleError);
 }
 
 var tests = {
-  testInput: function(options) {
+  testInput: function (options) {
     let toggleCommand = options.requisition.system.commands.get("paintflashing toggle");
 
     let _tab = options.tab;
 
     let actions = [
       {
         command: "paintflashing on",
         isChecked: true,
--- a/devtools/client/commandline/test/browser_cmd_pref1.js
+++ b/devtools/client/commandline/test/browser_cmd_pref1.js
@@ -17,138 +17,138 @@ function* spawnTest() {
   let options = yield helpers.openTab(TEST_URI);
   yield helpers.openToolbar(options);
 
   let netmonEnabledOrig = prefBranch.getBoolPref("devtools.netmonitor.enabled");
   info("originally: devtools.netmonitor.enabled = " + netmonEnabledOrig);
 
   yield helpers.audit(options, [
     {
-      setup: 'pref',
+      setup: "pref",
       check: {
-        input:  'pref',
-        hints:      ' reset',
-        markup: 'IIII',
-        status: 'ERROR'
+        input:  "pref",
+        hints:      " reset",
+        markup: "IIII",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref s',
+      setup: "pref s",
       check: {
-        input:  'pref s',
-        hints:        'et',
-        markup: 'IIIIVI',
-        status: 'ERROR'
+        input:  "pref s",
+        hints:        "et",
+        markup: "IIIIVI",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref sh',
+      setup: "pref sh",
       check: {
-        input:  'pref sh',
-        hints:         'ow',
-        markup: 'IIIIVII',
-        status: 'ERROR'
+        input:  "pref sh",
+        hints:         "ow",
+        markup: "IIIIVII",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref show ',
+      setup: "pref show ",
       check: {
-        input:  'pref show ',
-        markup: 'VVVVVVVVVV',
-        status: 'ERROR'
+        input:  "pref show ",
+        markup: "VVVVVVVVVV",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref show usetexttospeech',
+      setup: "pref show usetexttospeech",
       check: {
-        input:  'pref show usetexttospeech',
-        hints:                           ' -> accessibility.usetexttospeech',
-        markup: 'VVVVVVVVVVIIIIIIIIIIIIIII',
-        status: 'ERROR'
+        input:  "pref show usetexttospeech",
+        hints:                           " -> accessibility.usetexttospeech",
+        markup: "VVVVVVVVVVIIIIIIIIIIIIIII",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref show devtools.netmoni',
+      setup: "pref show devtools.netmoni",
       check: {
-        input:  'pref show devtools.netmoni',
-        hints:                        'tor.enabled',
-        markup: 'VVVVVVVVVVIIIIIIIIIIIIIIII',
-        status: 'ERROR',
-        tooltipState: 'true:importantFieldFlag',
+        input:  "pref show devtools.netmoni",
+        hints:                        "tor.enabled",
+        markup: "VVVVVVVVVVIIIIIIIIIIIIIIII",
+        status: "ERROR",
+        tooltipState: "true:importantFieldFlag",
         args: {
-          setting: { value: undefined, status: 'INCOMPLETE' },
+          setting: { value: undefined, status: "INCOMPLETE" },
         }
       },
     },
     {
-      setup: 'pref reset devtools.netmonitor.enabled',
+      setup: "pref reset devtools.netmonitor.enabled",
       check: {
-        input:  'pref reset devtools.netmonitor.enabled',
-        hints:                                  '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID'
+        input:  "pref reset devtools.netmonitor.enabled",
+        hints:                                  "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID"
       },
     },
     {
-      setup: 'pref show devtools.netmonitor.enabled 4',
+      setup: "pref show devtools.netmonitor.enabled 4",
       check: {
-        input:  'pref show devtools.netmonitor.enabled 4',
-        hints:                                   '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVE',
-        status: 'ERROR'
+        input:  "pref show devtools.netmonitor.enabled 4",
+        hints:                                   "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVE",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref set devtools.netmonitor.enabled 4',
+      setup: "pref set devtools.netmonitor.enabled 4",
       check: {
-        input:  'pref set devtools.netmonitor.enabled 4',
-        hints:                                  '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVE',
-        status: 'ERROR',
+        input:  "pref set devtools.netmonitor.enabled 4",
+        hints:                                  "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVE",
+        status: "ERROR",
         args: {
-          setting: { arg: ' devtools.netmonitor.enabled' },
-          value: { status: 'ERROR', message: 'Can\u2019t use \u20184\u2019.' },
+          setting: { arg: " devtools.netmonitor.enabled" },
+          value: { status: "ERROR", message: "Can\u2019t use \u20184\u2019." },
         }
       },
     },
     {
-      setup: 'pref set devtools.editor.tabsize 4',
+      setup: "pref set devtools.editor.tabsize 4",
       check: {
-        input:  'pref set devtools.editor.tabsize 4',
-        hints:                                    '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "pref set devtools.editor.tabsize 4",
+        hints:                                    "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
-          setting: { arg: ' devtools.editor.tabsize' },
+          setting: { arg: " devtools.editor.tabsize" },
           value: { value: 4 },
         }
       },
     },
     {
-      setup: 'pref list',
+      setup: "pref list",
       check: {
-        input:  'pref list',
-        hints:           ' -> pref set',
-        markup: 'IIIIVIIII',
-        status: 'ERROR'
+        input:  "pref list",
+        hints:           " -> pref set",
+        markup: "IIIIVIIII",
+        status: "ERROR"
       },
     },
     {
-      setup: 'pref show devtools.netmonitor.enabled',
+      setup: "pref show devtools.netmonitor.enabled",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.netmonitor.enabled")
           }
         },
       },
       exec: {
         output: "devtools.netmonitor.enabled: " + netmonEnabledOrig,
       },
-      post: function() {
+      post: function () {
         prefBranch.setBoolPref("devtools.netmonitor.enabled", netmonEnabledOrig);
       }
     },
   ]);
 
   yield helpers.closeToolbar(options);
   yield helpers.closeTab(options);
 }
--- a/devtools/client/commandline/test/browser_cmd_pref2.js
+++ b/devtools/client/commandline/test/browser_cmd_pref2.js
@@ -17,86 +17,86 @@ function* spawnTest() {
   let options = yield helpers.openTab(TEST_URI);
   yield helpers.openToolbar(options);
 
   let tabSizeOrig = prefBranch.getIntPref("devtools.editor.tabsize");
   info("originally: devtools.editor.tabsize = " + tabSizeOrig);
 
   yield helpers.audit(options, [
     {
-      setup: 'pref show devtools.editor.tabsize',
+      setup: "pref show devtools.editor.tabsize",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.editor.tabsize")
           }
         },
       },
       exec: {
         output: "devtools.editor.tabsize: " + tabSizeOrig,
       },
     },
     {
-      setup: 'pref set devtools.editor.tabsize 20',
+      setup: "pref set devtools.editor.tabsize 20",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.editor.tabsize")
           },
           value: { value: 20 }
         },
       },
       exec: {
-        output: '',
+        output: "",
       },
-      post: function() {
+      post: function () {
         is(prefBranch.getIntPref("devtools.editor.tabsize"), 20,
                                  "devtools.editor.tabsize is 20");
       }
     },
     {
-      setup: 'pref show devtools.editor.tabsize',
+      setup: "pref show devtools.editor.tabsize",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.editor.tabsize")
           }
         },
       },
       exec: {
         output: "devtools.editor.tabsize: 20",
       }
     },
     {
-      setup: 'pref set devtools.editor.tabsize 1',
+      setup: "pref set devtools.editor.tabsize 1",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.editor.tabsize")
           },
           value: { value: 1 }
         },
       },
       exec: {
-        output: '',
+        output: "",
       },
     },
     {
-      setup: 'pref show devtools.editor.tabsize',
+      setup: "pref show devtools.editor.tabsize",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.editor.tabsize")
           }
         },
       },
       exec: {
         output: "devtools.editor.tabsize: 1",
       },
-      post: function() {
+      post: function () {
         is(prefBranch.getIntPref("devtools.editor.tabsize"), 1,
                                  "devtools.editor.tabsize is 1");
       }
     },
   ]);
 
   prefBranch.setIntPref("devtools.editor.tabsize", tabSizeOrig);
 
--- a/devtools/client/commandline/test/browser_cmd_pref3.js
+++ b/devtools/client/commandline/test/browser_cmd_pref3.js
@@ -21,87 +21,87 @@ function* spawnTest() {
   yield helpers.openToolbar(options);
 
   let remoteHostOrig = prefBranch.getComplexValue("devtools.debugger.remote-host",
                                                   Ci.nsISupportsString).data;
   info("originally: devtools.debugger.remote-host = " + remoteHostOrig);
 
   yield helpers.audit(options, [
     {
-      setup: 'pref show devtools.debugger.remote-host',
+      setup: "pref show devtools.debugger.remote-host",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.debugger.remote-host")
           }
         },
       },
       exec: {
         output: new RegExp("^devtools\.debugger\.remote-host: " + remoteHostOrig + "$"),
       },
     },
     {
-      setup: 'pref set devtools.debugger.remote-host e.com',
+      setup: "pref set devtools.debugger.remote-host e.com",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.debugger.remote-host")
           },
           value: { value: "e.com" }
         },
       },
       exec: {
-        output: '',
+        output: "",
       },
     },
     {
-      setup: 'pref show devtools.debugger.remote-host',
+      setup: "pref show devtools.debugger.remote-host",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.debugger.remote-host")
           }
         },
       },
       exec: {
         output: new RegExp("^devtools\.debugger\.remote-host: e.com$"),
       },
-      post: function() {
+      post: function () {
         var ecom = prefBranch.getComplexValue("devtools.debugger.remote-host",
                                               Ci.nsISupportsString).data;
         is(ecom, "e.com", "devtools.debugger.remote-host is e.com");
       }
     },
     {
-      setup: 'pref set devtools.debugger.remote-host moz.foo',
+      setup: "pref set devtools.debugger.remote-host moz.foo",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.debugger.remote-host")
           },
           value: { value: "moz.foo" }
         },
       },
       exec: {
-        output: '',
+        output: "",
       },
     },
     {
-      setup: 'pref show devtools.debugger.remote-host',
+      setup: "pref show devtools.debugger.remote-host",
       check: {
         args: {
           setting: {
             value: options.requisition.system.settings.get("devtools.debugger.remote-host")
           }
         },
       },
       exec: {
         output: new RegExp("^devtools\.debugger\.remote-host: moz.foo$"),
       },
-      post: function() {
+      post: function () {
         var mozfoo = prefBranch.getComplexValue("devtools.debugger.remote-host",
                                                 Ci.nsISupportsString).data;
         is(mozfoo, "moz.foo", "devtools.debugger.remote-host is moz.foo");
       }
     },
   ]);
 
   supportsString.data = remoteHostOrig;
--- a/devtools/client/commandline/test/browser_cmd_qsa.js
+++ b/devtools/client/commandline/test/browser_cmd_qsa.js
@@ -3,31 +3,31 @@
 
 "use strict";
 
 // Tests that the qsa commands work as they should.
 
 const TEST_URI = "data:text/html;charset=utf-8,<body></body>";
 
 function test() {
- helpers.addTabWithToolbar(TEST_URI, function(options) {
-   return helpers.audit(options, [
-     {
-       setup: 'qsa',
-       check: {
-         input:  'qsa',
-         hints:  ' [query]',
-         markup: 'VVV',
-         status: 'VALID'
-       }
-     },
-     {
-       setup: 'qsa body',
-       check: {
-         input:  'qsa body',
-         hints:  '',
-         markup: 'VVVVVVVV',
-         status: 'VALID'
-       }
-     }
-   ]);
- }).then(finish, helpers.handleError);
+  helpers.addTabWithToolbar(TEST_URI, function (options) {
+    return helpers.audit(options, [
+      {
+        setup: "qsa",
+        check: {
+          input:  "qsa",
+          hints:  " [query]",
+          markup: "VVV",
+          status: "VALID"
+        }
+      },
+      {
+        setup: "qsa body",
+        check: {
+          input:  "qsa body",
+          hints:  "",
+          markup: "VVVVVVVV",
+          status: "VALID"
+        }
+      }
+    ]);
+  }).then(finish, helpers.handleError);
 }
--- a/devtools/client/commandline/test/browser_cmd_restart.js
+++ b/devtools/client/commandline/test/browser_cmd_restart.js
@@ -1,60 +1,60 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 
 // Test that restart command works properly (input wise)
 
 const TEST_URI = "data:text/html;charset=utf-8,gcli-command-restart";
 
 function test() {
-  helpers.addTabWithToolbar(TEST_URI, function(options) {
+  helpers.addTabWithToolbar(TEST_URI, function (options) {
     return helpers.audit(options, [
       {
-        setup: 'restart',
+        setup: "restart",
         check: {
-          input:  'restart',
-          markup: 'VVVVVVV',
-          status: 'VALID',
+          input:  "restart",
+          markup: "VVVVVVV",
+          status: "VALID",
           args: {
             nocache: { value: false },
             safemode: { value: false },
           }
         },
       },
       {
-        setup: 'restart --nocache',
+        setup: "restart --nocache",
         check: {
-          input:  'restart --nocache',
-          markup: 'VVVVVVVVVVVVVVVVV',
-          status: 'VALID',
+          input:  "restart --nocache",
+          markup: "VVVVVVVVVVVVVVVVV",
+          status: "VALID",
           args: {
             nocache: { value: true },
             safemode: { value: false },
           }
         },
       },
       {
-        setup: 'restart --safemode',
+        setup: "restart --safemode",
         check: {
-          input:  'restart --safemode',
-          markup: 'VVVVVVVVVVVVVVVVVV',
-          status: 'VALID',
+          input:  "restart --safemode",
+          markup: "VVVVVVVVVVVVVVVVVV",
+          status: "VALID",
           args: {
             nocache: { value: false },
             safemode: { value: true },
           }
         },
       },
       {
-        setup: 'restart --safemode --nocache',
+        setup: "restart --safemode --nocache",
         check: {
-          input:  'restart --safemode --nocache',
-          markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-          status: 'VALID',
+          input:  "restart --safemode --nocache",
+          markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+          status: "VALID",
           args: {
             nocache: { value: true },
             safemode: { value: true },
           }
         },
       },
     ]);
   }).then(finish, helpers.handleError);
--- a/devtools/client/commandline/test/browser_cmd_rulers.js
+++ b/devtools/client/commandline/test/browser_cmd_rulers.js
@@ -12,42 +12,42 @@ function test() {
 }
 
 function* spawnTest() {
   let options = yield helpers.openTab(TEST_PAGE);
   yield helpers.openToolbar(options);
 
   yield helpers.audit(options, [
     {
-      setup: 'rulers',
+      setup: "rulers",
       check: {
-        input:  'rulers',
-        markup: 'VVVVVV',
-        status: 'VALID'
+        input:  "rulers",
+        markup: "VVVVVV",
+        status: "VALID"
       }
     },
     {
-      setup: 'rulers on',
+      setup: "rulers on",
       check: {
-        input:  'rulers on',
-        markup: 'VVVVVVVEE',
-        status: 'ERROR'
+        input:  "rulers on",
+        markup: "VVVVVVVEE",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     },
     {
-      setup: 'rulers --visible',
+      setup: "rulers --visible",
       check: {
-        input:  'rulers --visible',
-        markup: 'VVVVVVVEEEEEEEEE',
-        status: 'ERROR'
+        input:  "rulers --visible",
+        markup: "VVVVVVVEEEEEEEEE",
+        status: "ERROR"
       },
       exec: {
-        output: 'Error: Too many arguments'
+        output: "Error: Too many arguments"
       }
     }
   ]);
 
   yield helpers.closeToolbar(options);
   yield helpers.closeTab(options);
 }
--- a/devtools/client/commandline/test/browser_cmd_screenshot.js
+++ b/devtools/client/commandline/test/browser_cmd_screenshot.js
@@ -30,87 +30,87 @@ function* spawnTest() {
 function* addTabWithToolbarRunTests(win) {
   let options = yield helpers.openTab(TEST_URI, { chromeWindow: win });
   let browser = options.browser;
   yield helpers.openToolbar(options);
 
   // Test input status
   yield helpers.audit(options, [
     {
-      setup: 'screenshot',
+      setup: "screenshot",
       check: {
-        input:  'screenshot',
-        markup: 'VVVVVVVVVV',
-        status: 'VALID',
+        input:  "screenshot",
+        markup: "VVVVVVVVVV",
+        status: "VALID",
         args: {
         }
       },
     },
     {
-      setup: 'screenshot abc.png',
+      setup: "screenshot abc.png",
       check: {
-        input:  'screenshot abc.png',
-        markup: 'VVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "screenshot abc.png",
+        markup: "VVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
           filename: { value: "abc.png"},
         }
       },
     },
     {
-      setup: 'screenshot --fullpage',
+      setup: "screenshot --fullpage",
       check: {
-        input:  'screenshot --fullpage',
-        markup: 'VVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "screenshot --fullpage",
+        markup: "VVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
           fullpage: { value: true},
         }
       },
     },
     {
-      setup: 'screenshot abc --delay 5',
+      setup: "screenshot abc --delay 5",
       check: {
-        input:  'screenshot abc --delay 5',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "screenshot abc --delay 5",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
         args: {
           filename: { value: "abc"},
           delay: { value: 5 },
         }
       },
     },
     {
-      setup: 'screenshot --selector img#testImage',
+      setup: "screenshot --selector img#testImage",
       check: {
-        input:  'screenshot --selector img#testImage',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
+        input:  "screenshot --selector img#testImage",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
       },
     },
   ]);
 
   // Test capture to file
   let file = FileUtils.getFile("TmpD", [ "TestScreenshotFile.png" ]);
 
   yield helpers.audit(options, [
     {
-      setup: 'screenshot ' + file.path,
+      setup: "screenshot " + file.path,
       check: {
         args: {
           filename: { value: "" + file.path },
           fullpage: { value: false },
           clipboard: { value: false },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Saved to "),
       },
-      post: function() {
+      post: function () {
         // Bug 849168: screenshot command tests fail in try but not locally
         // ok(file.exists(), "Screenshot file exists");
 
         if (file.exists()) {
           file.remove(false);
         }
       }
     },
@@ -124,19 +124,19 @@ function* addTabWithToolbarRunTests(win)
         args: {
           clipboard: { value: true },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Copied to clipboard.$"),
       },
-      post: Task.async(function*() {
+      post: Task.async(function* () {
         let imgSize = yield getImageSizeFromClipboard();
-        yield ContentTask.spawn(browser, imgSize, function*(imgSize) {
+        yield ContentTask.spawn(browser, imgSize, function* (imgSize) {
           Assert.equal(imgSize.width, content.innerWidth, "Image width matches window size");
           Assert.equal(imgSize.height, content.innerHeight, "Image height matches window size");
         });
       })
     },
     {
       setup: "screenshot --fullpage --clipboard",
       check: {
@@ -144,19 +144,19 @@ function* addTabWithToolbarRunTests(win)
           fullpage: { value: true },
           clipboard: { value: true },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Copied to clipboard.$"),
       },
-      post: Task.async(function*() {
+      post: Task.async(function* () {
         let imgSize = yield getImageSizeFromClipboard();
-        yield ContentTask.spawn(browser, imgSize, function*(imgSize) {
+        yield ContentTask.spawn(browser, imgSize, function* (imgSize) {
           Assert.equal(imgSize.width,
             content.innerWidth + content.scrollMaxX - content.scrollMinX,
             "Image width matches page size");
           Assert.equal(imgSize.height,
             content.innerHeight + content.scrollMaxY - content.scrollMinY,
             "Image height matches page size");
         });
       })
@@ -167,39 +167,39 @@ function* addTabWithToolbarRunTests(win)
         args: {
           clipboard: { value: true },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Copied to clipboard.$"),
       },
-      post: Task.async(function*() {
+      post: Task.async(function* () {
         let imgSize = yield getImageSizeFromClipboard();
-        yield ContentTask.spawn(browser, imgSize, function*(imgSize) {
+        yield ContentTask.spawn(browser, imgSize, function* (imgSize) {
           let img = content.document.querySelector("img#testImage");
           Assert.equal(imgSize.width, img.clientWidth,
              "Image width matches element size");
           Assert.equal(imgSize.height, img.clientHeight,
              "Image height matches element size");
         });
       })
     },
   ]);
 
   // Trigger scrollbars by forcing document to overflow
   // This only affects results on OSes with scrollbars that reduce document size
   // (non-floating scrollbars).  With default OS settings, this means Windows
   // and Linux are affected, but Mac is not.  For Mac to exhibit this behavior,
   // change System Preferences -> General -> Show scroll bars to Always.
-  yield ContentTask.spawn(browser, {}, function*() {
+  yield ContentTask.spawn(browser, {}, function* () {
     content.document.body.classList.add("overflow");
   });
 
-  let scrollbarSize = yield ContentTask.spawn(browser, {}, function*() {
+  let scrollbarSize = yield ContentTask.spawn(browser, {}, function* () {
     const winUtils = content.QueryInterface(Ci.nsIInterfaceRequestor)
                             .getInterface(Ci.nsIDOMWindowUtils);
     let scrollbarHeight = {};
     let scrollbarWidth = {};
     winUtils.getScrollbarSize(true, scrollbarWidth, scrollbarHeight);
     return {
       width: scrollbarWidth.value,
       height: scrollbarHeight.value,
@@ -216,21 +216,21 @@ function* addTabWithToolbarRunTests(win)
         args: {
           clipboard: { value: true },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Copied to clipboard.$"),
       },
-      post: Task.async(function*() {
+      post: Task.async(function* () {
         let imgSize = yield getImageSizeFromClipboard();
         imgSize.scrollbarWidth = scrollbarSize.width;
         imgSize.scrollbarHeight = scrollbarSize.height;
-        yield ContentTask.spawn(browser, imgSize, function*(imgSize) {
+        yield ContentTask.spawn(browser, imgSize, function* (imgSize) {
           Assert.equal(imgSize.width, content.innerWidth - imgSize.scrollbarWidth,
              "Image width matches window size minus scrollbar size");
           Assert.equal(imgSize.height, content.innerHeight - imgSize.scrollbarHeight,
              "Image height matches window size minus scrollbar size");
         });
       })
     },
     {
@@ -240,21 +240,21 @@ function* addTabWithToolbarRunTests(win)
           fullpage: { value: true },
           clipboard: { value: true },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Copied to clipboard.$"),
       },
-      post: Task.async(function*() {
+      post: Task.async(function* () {
         let imgSize = yield getImageSizeFromClipboard();
         imgSize.scrollbarWidth = scrollbarSize.width;
         imgSize.scrollbarHeight = scrollbarSize.height;
-        yield ContentTask.spawn(browser, imgSize, function*(imgSize) {
+        yield ContentTask.spawn(browser, imgSize, function* (imgSize) {
           Assert.equal(imgSize.width,
             (content.innerWidth + content.scrollMaxX - content.scrollMinX) - imgSize.scrollbarWidth,
             "Image width matches page size minus scrollbar size");
           Assert.equal(imgSize.height,
             (content.innerHeight + content.scrollMaxY - content.scrollMinY) - imgSize.scrollbarHeight,
             "Image height matches page size minus scrollbar size");
         });
       })
@@ -265,19 +265,19 @@ function* addTabWithToolbarRunTests(win)
         args: {
           clipboard: { value: true },
           chrome: { value: false },
         },
       },
       exec: {
         output: new RegExp("^Copied to clipboard.$"),
       },
-      post: Task.async(function*() {
+      post: Task.async(function* () {
         let imgSize = yield getImageSizeFromClipboard();
-        yield ContentTask.spawn(browser, imgSize, function*(imgSize) {
+        yield ContentTask.spawn(browser, imgSize, function* (imgSize) {
           let img = content.document.querySelector("img#testImage");
           Assert.equal(imgSize.width, img.clientWidth,
              "Image width matches element size");
           Assert.equal(imgSize.height, img.clientHeight,
              "Image height matches element size");
         });
       })
     },
@@ -297,17 +297,17 @@ function addWindow(windowOptions) {
       // (TEST_URI) provided in addTabWithToolbarRunTests hasn't loaded
       executeSoon(() => {
         resolve(win);
       });
     });
   });
 }
 
-let getImageSizeFromClipboard = Task.async(function*() {
+let getImageSizeFromClipboard = Task.async(function* () {
   let clipid = Ci.nsIClipboard;
   let clip = Cc["@mozilla.org/widget/clipboard;1"].getService(clipid);
   let trans = Cc["@mozilla.org/widget/transferable;1"]
                 .createInstance(Ci.nsITransferable);
   let flavor = "image/png";
   trans.init(null);
   trans.addDataFlavor(flavor);
 
--- a/devtools/client/commandline/test/browser_gcli_async.js
+++ b/devtools/client/commandline/test/browser_gcli_async.js
@@ -9,102 +9,102 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_async.js");
 }
 
 // var helpers = require('./helpers');
 
-exports.testBasic = function(options) {
+exports.testBasic = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsslo',
+      setup:    "tsslo",
       check: {
-        input:  'tsslo',
-        hints:       'w',
-        markup: 'IIIII',
+        input:  "tsslo",
+        hints:       "w",
+        markup: "IIIII",
         cursor: 5,
-        current: '__command',
-        status: 'ERROR',
-        predictions: ['tsslow'],
+        current: "__command",
+        status: "ERROR",
+        predictions: ["tsslow"],
         unassigned: [ ]
       }
     },
     {
-      setup:    'tsslo<TAB>',
+      setup:    "tsslo<TAB>",
       check: {
-        input:  'tsslow ',
-        hints:         'Shalom',
-        markup: 'VVVVVVV',
+        input:  "tsslow ",
+        hints:         "Shalom",
+        markup: "VVVVVVV",
         cursor: 7,
-        current: 'hello',
-        status: 'ERROR',
+        current: "hello",
+        status: "ERROR",
         predictions: [
-          'Shalom', 'Namasté', 'Hallo', 'Dydd-da', 'Chào', 'Hej',
-          'Saluton', 'Sawubona'
+          "Shalom", "Namasté", "Hallo", "Dydd-da", "Chào", "Hej",
+          "Saluton", "Sawubona"
         ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsslow' },
+          command: { name: "tsslow" },
           hello: {
-            arg: '',
-            status: 'INCOMPLETE'
+            arg: "",
+            status: "INCOMPLETE"
           },
         }
       }
     },
     {
-      setup:    'tsslow S',
+      setup:    "tsslow S",
       check: {
-        input:  'tsslow S',
-        hints:          'halom',
-        markup: 'VVVVVVVI',
+        input:  "tsslow S",
+        hints:          "halom",
+        markup: "VVVVVVVI",
         cursor: 8,
-        current: 'hello',
-        status: 'ERROR',
-        predictions: [ 'Shalom', 'Saluton', 'Sawubona', 'Namasté' ],
+        current: "hello",
+        status: "ERROR",
+        predictions: [ "Shalom", "Saluton", "Sawubona", "Namasté" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsslow' },
+          command: { name: "tsslow" },
           hello: {
-            arg: ' S',
-            status: 'INCOMPLETE'
+            arg: " S",
+            status: "INCOMPLETE"
           },
         }
       }
     },
     {
-      setup:    'tsslow S<TAB>',
+      setup:    "tsslow S<TAB>",
       check: {
-        input:  'tsslow Shalom ',
-        hints:                '',
-        markup: 'VVVVVVVVVVVVVV',
+        input:  "tsslow Shalom ",
+        hints:                "",
+        markup: "VVVVVVVVVVVVVV",
         cursor: 14,
-        current: 'hello',
-        status: 'VALID',
-        predictions: [ 'Shalom' ],
+        current: "hello",
+        status: "VALID",
+        predictions: [ "Shalom" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsslow' },
+          command: { name: "tsslow" },
           hello: {
-            arg: ' Shalom ',
-            status: 'VALID',
-            message: ''
+            arg: " Shalom ",
+            status: "VALID",
+            message: ""
           },
         }
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_canon.js
+++ b/devtools/client/commandline/test/browser_gcli_canon.js
@@ -9,278 +9,278 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_canon.js");
 }
 
 // var assert = require('../testharness/assert');
 // var helpers = require('./helpers');
-var Commands = require('gcli/commands/commands').Commands;
+var Commands = require("gcli/commands/commands").Commands;
 
 var startCount;
 var events;
 
-var commandsChange = function(ev) {
+var commandsChange = function (ev) {
   events++;
 };
 
-exports.setup = function(options) {
+exports.setup = function (options) {
   startCount = options.requisition.system.commands.getAll().length;
   events = 0;
 };
 
-exports.shutdown = function(options) {
+exports.shutdown = function (options) {
   startCount = undefined;
   events = undefined;
 };
 
-exports.testAddRemove1 = function(options) {
+exports.testAddRemove1 = function (options) {
   var commands = options.requisition.system.commands;
 
   return helpers.audit(options, [
     {
-      name: 'testadd add',
-      setup: function() {
+      name: "testadd add",
+      setup: function () {
         commands.onCommandsChange.add(commandsChange);
 
         commands.add({
-          name: 'testadd',
-          exec: function() {
+          name: "testadd",
+          exec: function () {
             return 1;
           }
         });
 
         assert.is(commands.getAll().length,
                   startCount + 1,
-                  'add command success');
-        assert.is(events, 1, 'add event');
+                  "add command success");
+        assert.is(events, 1, "add event");
 
-        return helpers.setInput(options, 'testadd');
+        return helpers.setInput(options, "testadd");
       },
       check: {
-        input:  'testadd',
-        hints:         '',
-        markup: 'VVVVVVV',
+        input:  "testadd",
+        hints:         "",
+        markup: "VVVVVVV",
         cursor: 7,
-        current: '__command',
-        status: 'VALID',
+        current: "__command",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: { }
       },
       exec: {
         output: /^1$/
       }
     },
     {
-      name: 'testadd alter',
-      setup: function() {
+      name: "testadd alter",
+      setup: function () {
         commands.add({
-          name: 'testadd',
-          exec: function() {
+          name: "testadd",
+          exec: function () {
             return 2;
           }
         });
 
         assert.is(commands.getAll().length,
                   startCount + 1,
-                  'read command success');
-        assert.is(events, 2, 'read event');
+                  "read command success");
+        assert.is(events, 2, "read event");
 
-        return helpers.setInput(options, 'testadd');
+        return helpers.setInput(options, "testadd");
       },
       check: {
-        input:  'testadd',
-        hints:         '',
-        markup: 'VVVVVVV',
+        input:  "testadd",
+        hints:         "",
+        markup: "VVVVVVV",
       },
       exec: {
-        output: '2'
+        output: "2"
       }
     },
     {
-      name: 'testadd remove',
-      setup: function() {
-        commands.remove('testadd');
+      name: "testadd remove",
+      setup: function () {
+        commands.remove("testadd");
 
         assert.is(commands.getAll().length,
                   startCount,
-                  'remove command success');
-        assert.is(events, 3, 'remove event');
+                  "remove command success");
+        assert.is(events, 3, "remove event");
 
-        return helpers.setInput(options, 'testadd');
+        return helpers.setInput(options, "testadd");
       },
       check: {
-        typed: 'testadd',
+        typed: "testadd",
         cursor: 7,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         unassigned: [ ],
       }
     }
   ]);
 };
 
-exports.testAddRemove2 = function(options) {
+exports.testAddRemove2 = function (options) {
   var commands = options.requisition.system.commands;
 
   commands.add({
-    name: 'testadd',
-    exec: function() {
+    name: "testadd",
+    exec: function () {
       return 3;
     }
   });
 
   assert.is(commands.getAll().length,
             startCount + 1,
-            'rereadd command success');
-  assert.is(events, 4, 'rereadd event');
+            "rereadd command success");
+  assert.is(events, 4, "rereadd event");
 
   return helpers.audit(options, [
     {
-      setup: 'testadd',
+      setup: "testadd",
       exec: {
         output: /^3$/
       },
-      post: function() {
+      post: function () {
         commands.remove({
-          name: 'testadd'
+          name: "testadd"
         });
 
         assert.is(commands.getAll().length,
                   startCount,
-                  'reremove command success');
-        assert.is(events, 5, 'reremove event');
+                  "reremove command success");
+        assert.is(events, 5, "reremove event");
       }
     },
     {
-      setup: 'testadd',
+      setup: "testadd",
       check: {
-        typed: 'testadd',
-        status: 'ERROR'
+        typed: "testadd",
+        status: "ERROR"
       }
     }
   ]);
 };
 
-exports.testAddRemove3 = function(options) {
+exports.testAddRemove3 = function (options) {
   var commands = options.requisition.system.commands;
 
-  commands.remove({ name: 'nonexistant' });
+  commands.remove({ name: "nonexistant" });
   assert.is(commands.getAll().length,
             startCount,
-            'nonexistant1 command success');
-  assert.is(events, 5, 'nonexistant1 event');
+            "nonexistant1 command success");
+  assert.is(events, 5, "nonexistant1 event");
 
-  commands.remove('nonexistant');
+  commands.remove("nonexistant");
   assert.is(commands.getAll().length,
             startCount,
-            'nonexistant2 command success');
-  assert.is(events, 5, 'nonexistant2 event');
+            "nonexistant2 command success");
+  assert.is(events, 5, "nonexistant2 event");
 
   commands.onCommandsChange.remove(commandsChange);
 };
 
-exports.testAltCommands = function(options) {
+exports.testAltCommands = function (options) {
   var commands = options.requisition.system.commands;
   var altCommands = new Commands(options.requisition.system.types);
 
   var tss = {
-    name: 'tss',
+    name: "tss",
     params: [
-      { name: 'str', type: 'string' },
-      { name: 'num', type: 'number' },
-      { name: 'opt', type: { name: 'selection', data: [ '1', '2', '3' ] } },
+      { name: "str", type: "string" },
+      { name: "num", type: "number" },
+      { name: "opt", type: { name: "selection", data: [ "1", "2", "3" ] } },
     ],
-    customProp1: 'localValue',
+    customProp1: "localValue",
     customProp2: true,
     customProp3: 42,
-    exec: function(args, context) {
-      return context.commandName + ':' +
-              args.str + ':' + args.num + ':' + args.opt;
+    exec: function (args, context) {
+      return context.commandName + ":" +
+              args.str + ":" + args.num + ":" + args.opt;
     }
   };
   altCommands.add(tss);
 
   var commandSpecs = altCommands.getCommandSpecs();
   assert.is(JSON.stringify(commandSpecs),
             '[{"item":"command","name":"tss","params":[' +
               '{"name":"str","type":"string"},' +
               '{"name":"num","type":"number"},' +
               '{"name":"opt","type":{"name":"selection","data":["1","2","3"]}}' +
             '],"isParent":false}]',
-            'JSON.stringify(commandSpecs)');
+            "JSON.stringify(commandSpecs)");
 
-  var customProps = [ 'customProp1', 'customProp2', 'customProp3', ];
+  var customProps = [ "customProp1", "customProp2", "customProp3", ];
   var commandSpecs2 = altCommands.getCommandSpecs(customProps);
   assert.is(JSON.stringify(commandSpecs2),
-            '[{' +
+            "[{" +
               '"item":"command",' +
               '"name":"tss",' +
               '"params":[' +
                 '{"name":"str","type":"string"},' +
                 '{"name":"num","type":"number"},' +
                 '{"name":"opt","type":{"name":"selection","data":["1","2","3"]}}' +
-              '],' +
+              "]," +
               '"isParent":false,' +
               '"customProp1":"localValue",' +
               '"customProp2":true,' +
               '"customProp3":42' +
-            '}]',
-            'JSON.stringify(commandSpecs)');
+            "}]",
+            "JSON.stringify(commandSpecs)");
 
-  var remoter = function(args, context) {
-    assert.is(context.commandName, 'tss', 'commandName is tss');
+  var remoter = function (args, context) {
+    assert.is(context.commandName, "tss", "commandName is tss");
 
     var cmd = altCommands.get(context.commandName);
     return cmd.exec(args, context);
   };
 
-  commands.addProxyCommands(commandSpecs, remoter, 'proxy', 'test');
+  commands.addProxyCommands(commandSpecs, remoter, "proxy", "test");
 
-  var parent = commands.get('proxy');
-  assert.is(parent.name, 'proxy', 'Parent command called proxy');
+  var parent = commands.get("proxy");
+  assert.is(parent.name, "proxy", "Parent command called proxy");
 
-  var child = commands.get('proxy tss');
-  assert.is(child.name, 'proxy tss', 'child command called proxy tss');
+  var child = commands.get("proxy tss");
+  assert.is(child.name, "proxy tss", "child command called proxy tss");
 
   return helpers.audit(options, [
     {
-      setup:    'proxy tss foo 6 3',
+      setup:    "proxy tss foo 6 3",
       check: {
-        input:  'proxy tss foo 6 3',
-        hints:                    '',
-        markup: 'VVVVVVVVVVVVVVVVV',
+        input:  "proxy tss foo 6 3",
+        hints:                    "",
+        markup: "VVVVVVVVVVVVVVVVV",
         cursor: 17,
-        status: 'VALID',
+        status: "VALID",
         args: {
-          str: { value: 'foo', status: 'VALID' },
-          num: { value: 6, status: 'VALID' },
-          opt: { value: '3', status: 'VALID' }
+          str: { value: "foo", status: "VALID" },
+          num: { value: 6, status: "VALID" },
+          opt: { value: "3", status: "VALID" }
         }
       },
       exec: {
-        output: 'tss:foo:6:3'
+        output: "tss:foo:6:3"
       },
-      post: function() {
-        commands.remove('proxy');
-        commands.remove('proxy tss');
+      post: function () {
+        commands.remove("proxy");
+        commands.remove("proxy tss");
 
-        assert.is(commands.get('proxy'), undefined, 'remove proxy');
-        assert.is(commands.get('proxy tss'), undefined, 'remove proxy tss');
+        assert.is(commands.get("proxy"), undefined, "remove proxy");
+        assert.is(commands.get("proxy tss"), undefined, "remove proxy tss");
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_cli1.js
+++ b/devtools/client/commandline/test/browser_gcli_cli1.js
@@ -9,520 +9,520 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_cli1.js");
 }
 
 // var assert = require('../testharness/assert');
 // var helpers = require('./helpers');
 
-exports.testBlank = function(options) {
+exports.testBlank = function (options) {
   return helpers.audit(options, [
     {
-      setup:    '',
+      setup:    "",
       check: {
-        input:  '',
-        hints:  '',
-        markup: '',
+        input:  "",
+        hints:  "",
+        markup: "",
         cursor: 0,
-        current: '__command',
-        status: 'ERROR'
+        current: "__command",
+        status: "ERROR"
       },
-      post: function() {
+      post: function () {
         assert.is(options.requisition.commandAssignment.value, undefined);
       }
     },
     {
-      setup:    ' ',
+      setup:    " ",
       check: {
-        input:  ' ',
-        hints:   '',
-        markup: 'V',
+        input:  " ",
+        hints:   "",
+        markup: "V",
         cursor: 1,
-        current: '__command',
-        status: 'ERROR'
+        current: "__command",
+        status: "ERROR"
       },
-      post: function() {
+      post: function () {
         assert.is(options.requisition.commandAssignment.value, undefined);
       }
     },
     {
-      name: '| ',
-      setup: function() {
-        return helpers.setInput(options, ' ', 0);
+      name: "| ",
+      setup: function () {
+        return helpers.setInput(options, " ", 0);
       },
       check: {
-        input:  ' ',
-        hints:   '',
-        markup: 'V',
+        input:  " ",
+        hints:   "",
+        markup: "V",
         cursor: 0,
-        current: '__command',
-        status: 'ERROR'
+        current: "__command",
+        status: "ERROR"
       },
-      post: function() {
+      post: function () {
         assert.is(options.requisition.commandAssignment.value, undefined);
       }
     }
   ]);
 };
 
-exports.testDelete = function(options) {
+exports.testDelete = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'x<BACKSPACE>',
+      setup:    "x<BACKSPACE>",
       check: {
-        input:  '',
-        hints:  '',
-        markup: '',
+        input:  "",
+        hints:  "",
+        markup: "",
         cursor: 0,
-        current: '__command',
-        status: 'ERROR'
+        current: "__command",
+        status: "ERROR"
       },
-      post: function() {
+      post: function () {
         assert.is(options.requisition.commandAssignment.value, undefined);
       }
     }
   ]);
 };
 
-exports.testIncompleteMultiMatch = function(options) {
+exports.testIncompleteMultiMatch = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsn ex',
+      setup:    "tsn ex",
       check: {
-        input:  'tsn ex',
-        hints:        't',
-        markup: 'IIIVII',
+        input:  "tsn ex",
+        hints:        "t",
+        markup: "IIIVII",
         cursor: 6,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictionsContains: [
-          'tsn ext', 'tsn exte', 'tsn exten', 'tsn extend'
+          "tsn ext", "tsn exte", "tsn exten", "tsn extend"
         ]
       }
     }
   ]);
 };
 
-exports.testIncompleteSingleMatch = function(options) {
+exports.testIncompleteSingleMatch = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tselar',
+      setup:    "tselar",
       check: {
-        input:  'tselar',
-        hints:        'r',
-        markup: 'IIIIII',
+        input:  "tselar",
+        hints:        "r",
+        markup: "IIIIII",
         cursor: 6,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tselarr' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tselarr" ],
         unassigned: [ ]
       }
     }
   ]);
 };
 
-exports.testTsv = function(options) {
+exports.testTsv = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsv',
+      setup:    "tsv",
       check: {
-        input:  'tsv',
-        hints:     ' <optionType> <optionValue>',
-        markup: 'VVV',
+        input:  "tsv",
+        hints:     " <optionType> <optionValue>",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
-          optionType: { arg: '', status: 'INCOMPLETE' },
-          optionValue: { arg: '', status: 'INCOMPLETE' }
+          command: { name: "tsv" },
+          optionType: { arg: "", status: "INCOMPLETE" },
+          optionValue: { arg: "", status: "INCOMPLETE" }
         }
       }
     },
     {
-      setup:    'tsv ',
+      setup:    "tsv ",
       check: {
-        input:  'tsv ',
-        hints:      'option1 <optionValue>',
-        markup: 'VVVV',
+        input:  "tsv ",
+        hints:      "option1 <optionValue>",
+        markup: "VVVV",
         cursor: 4,
-        current: 'optionType',
-        status: 'ERROR',
-        predictions: [ 'option1', 'option2', 'option3' ],
+        current: "optionType",
+        status: "ERROR",
+        predictions: [ "option1", "option2", "option3" ],
         unassigned: [ ],
-        tooltipState: 'true:importantFieldFlag',
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tsv' },
-          optionType: { arg: '', status: 'INCOMPLETE' },
-          optionValue: { arg: '', status: 'INCOMPLETE' }
+          command: { name: "tsv" },
+          optionType: { arg: "", status: "INCOMPLETE" },
+          optionValue: { arg: "", status: "INCOMPLETE" }
         }
       }
     },
     {
-      name: 'ts|v',
-      setup: function() {
-        return helpers.setInput(options, 'tsv ', 2);
+      name: "ts|v",
+      setup: function () {
+        return helpers.setInput(options, "tsv ", 2);
       },
       check: {
-        input:  'tsv ',
-        hints:      '<optionType> <optionValue>',
-        markup: 'VVVV',
+        input:  "tsv ",
+        hints:      "<optionType> <optionValue>",
+        markup: "VVVV",
         cursor: 2,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
-          optionType: { arg: '', status: 'INCOMPLETE' },
-          optionValue: { arg: '', status: 'INCOMPLETE' }
+          command: { name: "tsv" },
+          optionType: { arg: "", status: "INCOMPLETE" },
+          optionValue: { arg: "", status: "INCOMPLETE" }
         }
       }
     },
     {
-      setup:    'tsv o',
+      setup:    "tsv o",
       check: {
-        input:  'tsv o',
-        hints:       'ption1 <optionValue>',
-        markup: 'VVVVI',
+        input:  "tsv o",
+        hints:       "ption1 <optionValue>",
+        markup: "VVVVI",
         cursor: 5,
-        current: 'optionType',
-        status: 'ERROR',
-        predictions: [ 'option1', 'option2', 'option3' ],
+        current: "optionType",
+        status: "ERROR",
+        predictions: [ "option1", "option2", "option3" ],
         unassigned: [ ],
-        tooltipState: 'true:importantFieldFlag',
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
             value: undefined,
-            arg: ' o',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionType\u2019.'
+            arg: " o",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionType\u2019."
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsv option',
+      setup:    "tsv option",
       check: {
-        input:  'tsv option',
-        hints:            '1 <optionValue>',
-        markup: 'VVVVIIIIII',
+        input:  "tsv option",
+        hints:            "1 <optionValue>",
+        markup: "VVVVIIIIII",
         cursor: 10,
-        current: 'optionType',
-        status: 'ERROR',
-        predictions: [ 'option1', 'option2', 'option3' ],
+        current: "optionType",
+        status: "ERROR",
+        predictions: [ "option1", "option2", "option3" ],
         unassigned: [ ],
-        tooltipState: 'true:importantFieldFlag',
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
             value: undefined,
-            arg: ' option',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionType\u2019.'
+            arg: " option",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionType\u2019."
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     },
     {
-      name: '|tsv option',
-      setup: function() {
-        return helpers.setInput(options, 'tsv option', 0);
+      name: "|tsv option",
+      setup: function () {
+        return helpers.setInput(options, "tsv option", 0);
       },
       check: {
-        input:  'tsv option',
-        hints:            ' <optionValue>',
-        markup: 'VVVVEEEEEE',
+        input:  "tsv option",
+        hints:            " <optionValue>",
+        markup: "VVVVEEEEEE",
         cursor: 0,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
             value: undefined,
-            arg: ' option',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionType\u2019.'
+            arg: " option",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionType\u2019."
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsv option ',
+      setup:    "tsv option ",
       check: {
-        input:  'tsv option ',
-        hints:             '<optionValue>',
-        markup: 'VVVVEEEEEEV',
+        input:  "tsv option ",
+        hints:             "<optionValue>",
+        markup: "VVVVEEEEEEV",
         cursor: 11,
-        current: 'optionValue',
-        status: 'ERROR',
+        current: "optionValue",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'false:default',
+        tooltipState: "false:default",
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
             value: undefined,
-            arg: ' option ',
-            status: 'ERROR',
-            message: 'Can\u2019t use \u2018option\u2019.'
+            arg: " option ",
+            status: "ERROR",
+            message: "Can\u2019t use \u2018option\u2019."
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsv option1',
+      setup:    "tsv option1",
       check: {
-        input:  'tsv option1',
-        hints:             ' <optionValue>',
-        markup: 'VVVVVVVVVVV',
+        input:  "tsv option1",
+        hints:             " <optionValue>",
+        markup: "VVVVVVVVVVV",
         cursor: 11,
-        current: 'optionType',
-        status: 'ERROR',
-        predictions: [ 'option1' ],
+        current: "optionType",
+        status: "ERROR",
+        predictions: [ "option1" ],
         unassigned: [ ],
-        tooltipState: 'true:importantFieldFlag',
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'string',
-            arg: ' option1',
-            status: 'VALID',
-            message: ''
+            value: "string",
+            arg: " option1",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsv option1 ',
+      setup:    "tsv option1 ",
       check: {
-        input:  'tsv option1 ',
-        hints:              '<optionValue>',
-        markup: 'VVVVVVVVVVVV',
+        input:  "tsv option1 ",
+        hints:              "<optionValue>",
+        markup: "VVVVVVVVVVVV",
         cursor: 12,
-        current: 'optionValue',
-        status: 'ERROR',
+        current: "optionValue",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'string',
-            arg: ' option1 ',
-            status: 'VALID',
-            message: ''
+            value: "string",
+            arg: " option1 ",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsv option2',
+      setup:    "tsv option2",
       check: {
-        input:  'tsv option2',
-        hints:             ' <optionValue>',
-        markup: 'VVVVVVVVVVV',
+        input:  "tsv option2",
+        hints:             " <optionValue>",
+        markup: "VVVVVVVVVVV",
         cursor: 11,
-        current: 'optionType',
-        status: 'ERROR',
-        predictions: [ 'option2' ],
+        current: "optionType",
+        status: "ERROR",
+        predictions: [ "option2" ],
         unassigned: [ ],
-        tooltipState: 'true:importantFieldFlag',
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'number',
-            arg: ' option2',
-            status: 'VALID',
-            message: ''
+            value: "number",
+            arg: " option2",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018optionValue\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018optionValue\u2019."
           }
         }
       }
     }
   ]);
 };
 
-exports.testTsvValues = function(options) {
+exports.testTsvValues = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsv option1 6',
+      setup:    "tsv option1 6",
       check: {
-        input:  'tsv option1 6',
-        hints:               '',
-        markup: 'VVVVVVVVVVVVV',
+        input:  "tsv option1 6",
+        hints:               "",
+        markup: "VVVVVVVVVVVVV",
         cursor: 13,
-        current: 'optionValue',
-        status: 'VALID',
+        current: "optionValue",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'string',
-            arg: ' option1',
-            status: 'VALID',
-            message: ''
+            value: "string",
+            arg: " option1",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
-            arg: ' 6',
-            status: 'VALID',
-            message: ''
+            arg: " 6",
+            status: "VALID",
+            message: ""
           }
         }
       }
     },
     {
-      setup:    'tsv option2 6',
+      setup:    "tsv option2 6",
       check: {
-        input:  'tsv option2 6',
-        hints:               '',
-        markup: 'VVVVVVVVVVVVV',
+        input:  "tsv option2 6",
+        hints:               "",
+        markup: "VVVVVVVVVVVVV",
         cursor: 13,
-        current: 'optionValue',
-        status: 'VALID',
+        current: "optionValue",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'number',
-            arg: ' option2',
-            status: 'VALID',
-            message: ''
+            value: "number",
+            arg: " option2",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
-            arg: ' 6',
-            status: 'VALID',
-            message: ''
+            arg: " 6",
+            status: "VALID",
+            message: ""
           }
         }
       }
     },
     // Delegated remote types can't transfer value types so we only test for
     // the value of 'value' when we're local
     {
       skipIf: options.isRemote,
-      setup: 'tsv option1 6',
+      setup: "tsv option1 6",
       check: {
         args: {
-          optionValue: { value: '6' }
+          optionValue: { value: "6" }
         }
       }
     },
     {
       skipIf: options.isRemote,
-      setup: 'tsv option2 6',
+      setup: "tsv option2 6",
       check: {
         args: {
           optionValue: { value: 6 }
         }
       }
     }
   ]);
 };
 
-exports.testInvalid = function(options) {
+exports.testInvalid = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'zxjq',
+      setup:    "zxjq",
       check: {
-        input:  'zxjq',
-        hints:      '',
-        markup: 'EEEE',
+        input:  "zxjq",
+        hints:      "",
+        markup: "EEEE",
         cursor: 4,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError'
+        tooltipState: "true:isError"
       }
     },
     {
-      setup:    'zxjq ',
+      setup:    "zxjq ",
       check: {
-        input:  'zxjq ',
-        hints:       '',
-        markup: 'EEEEV',
+        input:  "zxjq ",
+        hints:       "",
+        markup: "EEEEV",
         cursor: 5,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError'
+        tooltipState: "true:isError"
       }
     },
     {
-      setup:    'zxjq one',
+      setup:    "zxjq one",
       check: {
-        input:  'zxjq one',
-        hints:          '',
-        markup: 'EEEEVEEE',
+        input:  "zxjq one",
+        hints:          "",
+        markup: "EEEEVEEE",
         cursor: 8,
-        current: '__unassigned',
-        status: 'ERROR',
+        current: "__unassigned",
+        status: "ERROR",
         predictions: [ ],
-        unassigned: [ ' one' ],
-        tooltipState: 'true:isError'
+        unassigned: [ " one" ],
+        tooltipState: "true:isError"
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_cli2.js
+++ b/devtools/client/commandline/test/browser_gcli_cli2.js
@@ -9,780 +9,780 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_cli2.js");
 }
 
 // var helpers = require('./helpers');
 
-exports.testSingleString = function(options) {
+exports.testSingleString = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsr',
+      setup:    "tsr",
       check: {
-        input:  'tsr',
-        hints:     ' <text>',
-        markup: 'VVV',
+        input:  "tsr",
+        hints:     " <text>",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsr ',
+      setup:    "tsr ",
       check: {
-        input:  'tsr ',
-        hints:      '<text>',
-        markup: 'VVVV',
+        input:  "tsr ",
+        hints:      "<text>",
+        markup: "VVVV",
         cursor: 4,
-        current: 'text',
-        status: 'ERROR',
+        current: "text",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsr h',
+      setup:    "tsr h",
       check: {
-        input:  'tsr h',
-        hints:       '',
-        markup: 'VVVVV',
+        input:  "tsr h",
+        hints:       "",
+        markup: "VVVVV",
         cursor: 5,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'h',
-            arg: ' h',
-            status: 'VALID',
-            message: ''
+            value: "h",
+            arg: " h",
+            status: "VALID",
+            message: ""
           }
         }
       }
     },
     {
       setup:    'tsr "h h"',
       check: {
         input:  'tsr "h h"',
-        hints:           '',
-        markup: 'VVVVVVVVV',
+        hints:           "",
+        markup: "VVVVVVVVV",
         cursor: 9,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'h h',
+            value: "h h",
             arg: ' "h h"',
-            status: 'VALID',
-            message: ''
+            status: "VALID",
+            message: ""
           }
         }
       }
     },
     {
-      setup:    'tsr h h h',
+      setup:    "tsr h h h",
       check: {
-        input:  'tsr h h h',
-        hints:           '',
-        markup: 'VVVVVVVVV',
+        input:  "tsr h h h",
+        hints:           "",
+        markup: "VVVVVVVVV",
         cursor: 9,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'h h h',
-            arg: ' h h h',
-            status: 'VALID',
-            message: ''
+            value: "h h h",
+            arg: " h h h",
+            status: "VALID",
+            message: ""
           }
         }
       }
     }
   ]);
 };
 
-exports.testSingleNumber = function(options) {
+exports.testSingleNumber = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsu',
+      setup:    "tsu",
       check: {
-        input:  'tsu',
-        hints:     ' <num>',
-        markup: 'VVV',
+        input:  "tsu",
+        hints:     " <num>",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsu' },
+          command: { name: "tsu" },
           num: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018num\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018num\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsu ',
+      setup:    "tsu ",
       check: {
-        input:  'tsu ',
-        hints:      '<num>',
-        markup: 'VVVV',
+        input:  "tsu ",
+        hints:      "<num>",
+        markup: "VVVV",
         cursor: 4,
-        current: 'num',
-        status: 'ERROR',
+        current: "num",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsu' },
+          command: { name: "tsu" },
           num: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018num\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018num\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsu 1',
+      setup:    "tsu 1",
       check: {
-        input:  'tsu 1',
-        hints:       '',
-        markup: 'VVVVV',
+        input:  "tsu 1",
+        hints:       "",
+        markup: "VVVVV",
         cursor: 5,
-        current: 'num',
-        status: 'VALID',
+        current: "num",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsu' },
-          num: { value: 1, arg: ' 1', status: 'VALID', message: '' }
+          command: { name: "tsu" },
+          num: { value: 1, arg: " 1", status: "VALID", message: "" }
         }
       }
     },
     {
-      setup:    'tsu x',
+      setup:    "tsu x",
       check: {
-        input:  'tsu x',
-        hints:       '',
-        markup: 'VVVVE',
+        input:  "tsu x",
+        hints:       "",
+        markup: "VVVVE",
         cursor: 5,
-        current: 'num',
-        status: 'ERROR',
+        current: "num",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError',
+        tooltipState: "true:isError",
         args: {
-          command: { name: 'tsu' },
+          command: { name: "tsu" },
           num: {
             value: undefined,
-            arg: ' x',
-            status: 'ERROR',
-            message: 'Can\u2019t convert \u201cx\u201d to a number.'
+            arg: " x",
+            status: "ERROR",
+            message: "Can\u2019t convert \u201cx\u201d to a number."
           }
         }
       }
     },
     {
-      setup:    'tsu 1.5',
+      setup:    "tsu 1.5",
       check: {
-        input:  'tsu 1.5',
-        hints:       '',
-        markup: 'VVVVEEE',
+        input:  "tsu 1.5",
+        hints:       "",
+        markup: "VVVVEEE",
         cursor: 7,
-        current: 'num',
-        status: 'ERROR',
+        current: "num",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsu' },
+          command: { name: "tsu" },
           num: {
             value: undefined,
-            arg: ' 1.5',
-            status: 'ERROR',
-            message: 'Can\u2019t convert \u201c1.5\u201d to an integer.'
+            arg: " 1.5",
+            status: "ERROR",
+            message: "Can\u2019t convert \u201c1.5\u201d to an integer."
           }
         }
       }
     }
   ]);
 };
 
-exports.testSingleFloat = function(options) {
+exports.testSingleFloat = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsf',
+      setup:    "tsf",
       check: {
-        input:  'tsf',
-        hints:     ' <num>',
-        markup: 'VVV',
+        input:  "tsf",
+        hints:     " <num>",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
-        error: '',
+        current: "__command",
+        status: "ERROR",
+        error: "",
         unassigned: [ ],
         args: {
-          command: { name: 'tsf' },
+          command: { name: "tsf" },
           num: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018num\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018num\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsf 1',
+      setup:    "tsf 1",
       check: {
-        input:  'tsf 1',
-        hints:       '',
-        markup: 'VVVVV',
+        input:  "tsf 1",
+        hints:       "",
+        markup: "VVVVV",
         cursor: 5,
-        current: 'num',
-        status: 'VALID',
-        error: '',
+        current: "num",
+        status: "VALID",
+        error: "",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsf' },
-          num: { value: 1, arg: ' 1', status: 'VALID', message: '' }
+          command: { name: "tsf" },
+          num: { value: 1, arg: " 1", status: "VALID", message: "" }
         }
       }
     },
     {
-      setup:    'tsf 1.',
+      setup:    "tsf 1.",
       check: {
-        input:  'tsf 1.',
-        hints:        '',
-        markup: 'VVVVVV',
+        input:  "tsf 1.",
+        hints:        "",
+        markup: "VVVVVV",
         cursor: 6,
-        current: 'num',
-        status: 'VALID',
-        error: '',
+        current: "num",
+        status: "VALID",
+        error: "",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsf' },
-          num: { value: 1, arg: ' 1.', status: 'VALID', message: '' }
+          command: { name: "tsf" },
+          num: { value: 1, arg: " 1.", status: "VALID", message: "" }
         }
       }
     },
     {
-      setup:    'tsf 1.5',
+      setup:    "tsf 1.5",
       check: {
-        input:  'tsf 1.5',
-        hints:         '',
-        markup: 'VVVVVVV',
+        input:  "tsf 1.5",
+        hints:         "",
+        markup: "VVVVVVV",
         cursor: 7,
-        current: 'num',
-        status: 'VALID',
-        error: '',
+        current: "num",
+        status: "VALID",
+        error: "",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsf' },
-          num: { value: 1.5, arg: ' 1.5', status: 'VALID', message: '' }
+          command: { name: "tsf" },
+          num: { value: 1.5, arg: " 1.5", status: "VALID", message: "" }
         }
       }
     },
     {
-      setup:    'tsf 1.5x',
+      setup:    "tsf 1.5x",
       check: {
-        input:  'tsf 1.5x',
-        hints:          '',
-        markup: 'VVVVVVVV',
+        input:  "tsf 1.5x",
+        hints:          "",
+        markup: "VVVVVVVV",
         cursor: 8,
-        current: 'num',
-        status: 'VALID',
-        error: '',
+        current: "num",
+        status: "VALID",
+        error: "",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsf' },
-          num: { value: 1.5, arg: ' 1.5x', status: 'VALID', message: '' }
+          command: { name: "tsf" },
+          num: { value: 1.5, arg: " 1.5x", status: "VALID", message: "" }
         }
       }
     },
     {
-      name: 'tsf x (cursor=4)',
-      setup: function() {
-        return helpers.setInput(options, 'tsf x', 4);
+      name: "tsf x (cursor=4)",
+      setup: function () {
+        return helpers.setInput(options, "tsf x", 4);
       },
       check: {
-        input:  'tsf x',
-        hints:       '',
-        markup: 'VVVVE',
+        input:  "tsf x",
+        hints:       "",
+        markup: "VVVVE",
         cursor: 4,
-        current: 'num',
-        status: 'ERROR',
-        error: 'Can\u2019t convert \u201cx\u201d to a number.',
+        current: "num",
+        status: "ERROR",
+        error: "Can\u2019t convert \u201cx\u201d to a number.",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsf' },
+          command: { name: "tsf" },
           num: {
             value: undefined,
-            arg: ' x',
-            status: 'ERROR',
-            message: 'Can\u2019t convert \u201cx\u201d to a number.'
+            arg: " x",
+            status: "ERROR",
+            message: "Can\u2019t convert \u201cx\u201d to a number."
           }
         }
       }
     }
   ]);
 };
 
-exports.testElementWeb = function(options) {
+exports.testElementWeb = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tse #gcli-root',
+      setup:    "tse #gcli-root",
       check: {
-        input:  'tse #gcli-root',
-        hints:                 ' [options]',
-        markup: 'VVVVVVVVVVVVVV',
+        input:  "tse #gcli-root",
+        hints:                 " [options]",
+        markup: "VVVVVVVVVVVVVV",
         cursor: 14,
-        current: 'node',
-        status: 'VALID',
+        current: "node",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tse' },
+          command: { name: "tse" },
           node: {
-            arg: ' #gcli-root',
-            status: 'VALID',
-            message: ''
+            arg: " #gcli-root",
+            status: "VALID",
+            message: ""
           },
-          nodes: { arg: '', status: 'VALID', message: '' },
-          nodes2: { arg: '', status: 'VALID', message: '' },
+          nodes: { arg: "", status: "VALID", message: "" },
+          nodes2: { arg: "", status: "VALID", message: "" },
         }
       }
     }
   ]);
 };
 
-exports.testElement = function(options) {
+exports.testElement = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tse',
+      setup:    "tse",
       check: {
-        input:  'tse',
-        hints:     ' <node> [options]',
-        markup: 'VVV',
+        input:  "tse",
+        hints:     " <node> [options]",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tse', 'tselarr' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tse", "tselarr" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tse' },
-          node: { arg: '', status: 'INCOMPLETE' },
-          nodes: { arg: '', status: 'VALID', message: '' },
-          nodes2: { arg: '', status: 'VALID', message: '' },
+          command: { name: "tse" },
+          node: { arg: "", status: "INCOMPLETE" },
+          nodes: { arg: "", status: "VALID", message: "" },
+          nodes2: { arg: "", status: "VALID", message: "" },
         }
       }
     },
     {
-      setup:    'tse #gcli-nomatch',
+      setup:    "tse #gcli-nomatch",
       check: {
-        input:  'tse #gcli-nomatch',
-        hints:                   ' [options]',
-        markup: 'VVVVIIIIIIIIIIIII',
+        input:  "tse #gcli-nomatch",
+        hints:                   " [options]",
+        markup: "VVVVIIIIIIIIIIIII",
         cursor: 17,
-        current: 'node',
-        status: 'ERROR',
+        current: "node",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        outputState: 'false:default',
-        tooltipState: 'true:isError',
+        outputState: "false:default",
+        tooltipState: "true:isError",
         args: {
-          command: { name: 'tse' },
+          command: { name: "tse" },
           node: {
             value: undefined,
-            arg: ' #gcli-nomatch',
+            arg: " #gcli-nomatch",
             // This is somewhat debatable because this input can't be corrected
             // simply by typing so it's and error rather than incomplete,
             // however without digging into the CSS engine we can't tell that
             // so we default to incomplete
-            status: 'INCOMPLETE',
-            message: 'No matches'
+            status: "INCOMPLETE",
+            message: "No matches"
           },
-          nodes: { arg: '', status: 'VALID', message: '' },
-          nodes2: { arg: '', status: 'VALID', message: '' },
+          nodes: { arg: "", status: "VALID", message: "" },
+          nodes2: { arg: "", status: "VALID", message: "" },
         }
       }
     },
     {
-      setup:    'tse #',
+      setup:    "tse #",
       check: {
-        input:  'tse #',
-        hints:       ' [options]',
-        markup: 'VVVVE',
+        input:  "tse #",
+        hints:       " [options]",
+        markup: "VVVVE",
         cursor: 5,
-        current: 'node',
-        status: 'ERROR',
+        current: "node",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError',
+        tooltipState: "true:isError",
         args: {
-          command: { name: 'tse' },
+          command: { name: "tse" },
           node: {
             value: undefined,
-            arg: ' #',
-            status: 'ERROR',
-            message: 'Syntax error in CSS query'
+            arg: " #",
+            status: "ERROR",
+            message: "Syntax error in CSS query"
           },
-          nodes: { arg: '', status: 'VALID', message: '' },
-          nodes2: { arg: '', status: 'VALID', message: '' },
+          nodes: { arg: "", status: "VALID", message: "" },
+          nodes2: { arg: "", status: "VALID", message: "" },
         }
       }
     },
     {
-      setup:    'tse .',
+      setup:    "tse .",
       check: {
-        input:  'tse .',
-        hints:       ' [options]',
-        markup: 'VVVVE',
+        input:  "tse .",
+        hints:       " [options]",
+        markup: "VVVVE",
         cursor: 5,
-        current: 'node',
-        status: 'ERROR',
+        current: "node",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError',
+        tooltipState: "true:isError",
         args: {
-          command: { name: 'tse' },
+          command: { name: "tse" },
           node: {
             value: undefined,
-            arg: ' .',
-            status: 'ERROR',
-            message: 'Syntax error in CSS query'
+            arg: " .",
+            status: "ERROR",
+            message: "Syntax error in CSS query"
           },
-          nodes: { arg: '', status: 'VALID', message: '' },
-          nodes2: { arg: '', status: 'VALID', message: '' },
+          nodes: { arg: "", status: "VALID", message: "" },
+          nodes2: { arg: "", status: "VALID", message: "" },
         }
       }
     },
     {
-      setup:    'tse *',
+      setup:    "tse *",
       check: {
-        input:  'tse *',
-        hints:       ' [options]',
-        markup: 'VVVVE',
+        input:  "tse *",
+        hints:       " [options]",
+        markup: "VVVVE",
         cursor: 5,
-        current: 'node',
-        status: 'ERROR',
+        current: "node",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError',
+        tooltipState: "true:isError",
         args: {
-          command: { name: 'tse' },
+          command: { name: "tse" },
           node: {
             value: undefined,
-            arg: ' *',
-            status: 'ERROR',
+            arg: " *",
+            status: "ERROR",
             message: /^Too many matches \([0-9]*\)/
           },
-          nodes: { arg: '', status: 'VALID', message: '' },
-          nodes2: { arg: '', status: 'VALID', message: '' },
+          nodes: { arg: "", status: "VALID", message: "" },
+          nodes2: { arg: "", status: "VALID", message: "" },
         }
       }
     }
   ]);
 };
 
-exports.testNestedCommand = function(options) {
+exports.testNestedCommand = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsn',
+      setup:    "tsn",
       check: {
-        input:  'tsn',
-        hints:     ' deep down nested cmd',
-        markup: 'III',
+        input:  "tsn",
+        hints:     " deep down nested cmd",
+        markup: "III",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictionsInclude: [
-          'tsn deep', 'tsn deep down', 'tsn deep down nested',
-          'tsn deep down nested cmd', 'tsn dif'
+          "tsn deep", "tsn deep down", "tsn deep down nested",
+          "tsn deep down nested cmd", "tsn dif"
         ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn' }
+          command: { name: "tsn" }
         }
       }
     },
     {
-      setup:    'tsn ',
+      setup:    "tsn ",
       check: {
-        input:  'tsn ',
-        hints:      ' deep down nested cmd',
-        markup: 'IIIV',
+        input:  "tsn ",
+        hints:      " deep down nested cmd",
+        markup: "IIIV",
         cursor: 4,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         unassigned: [ ]
       }
     },
     {
       skipIf: options.isPhantomjs, // PhantomJS gets predictions wrong
-      setup:    'tsn x',
+      setup:    "tsn x",
       check: {
-        input:  'tsn x',
-        hints:       ' -> tsn ext',
-        markup: 'IIIVI',
+        input:  "tsn x",
+        hints:       " -> tsn ext",
+        markup: "IIIVI",
         cursor: 5,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tsn ext' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tsn ext" ],
         unassigned: [ ]
       }
     },
     {
-      setup:    'tsn dif',
+      setup:    "tsn dif",
       check: {
-        input:  'tsn dif',
-        hints:         ' <text>',
-        markup: 'VVVVVVV',
+        input:  "tsn dif",
+        hints:         " <text>",
+        markup: "VVVVVVV",
         cursor: 7,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn dif' },
+          command: { name: "tsn dif" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsn dif ',
+      setup:    "tsn dif ",
       check: {
-        input:  'tsn dif ',
-        hints:          '<text>',
-        markup: 'VVVVVVVV',
+        input:  "tsn dif ",
+        hints:          "<text>",
+        markup: "VVVVVVVV",
         cursor: 8,
-        current: 'text',
-        status: 'ERROR',
+        current: "text",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn dif' },
+          command: { name: "tsn dif" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsn dif x',
+      setup:    "tsn dif x",
       check: {
-        input:  'tsn dif x',
-        hints:           '',
-        markup: 'VVVVVVVVV',
+        input:  "tsn dif x",
+        hints:           "",
+        markup: "VVVVVVVVV",
         cursor: 9,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn dif' },
-          text: { value: 'x', arg: ' x', status: 'VALID', message: '' }
+          command: { name: "tsn dif" },
+          text: { value: "x", arg: " x", status: "VALID", message: "" }
         }
       }
     },
     {
-      setup:    'tsn ext',
+      setup:    "tsn ext",
       check: {
-        input:  'tsn ext',
-        hints:         ' <text>',
-        markup: 'VVVVVVV',
+        input:  "tsn ext",
+        hints:         " <text>",
+        markup: "VVVVVVV",
         cursor: 7,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tsn ext', 'tsn exte', 'tsn exten', 'tsn extend' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn ext' },
+          command: { name: "tsn ext" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsn exte',
+      setup:    "tsn exte",
       check: {
-        input:  'tsn exte',
-        hints:          ' <text>',
-        markup: 'VVVVVVVV',
+        input:  "tsn exte",
+        hints:          " <text>",
+        markup: "VVVVVVVV",
         cursor: 8,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tsn exte', 'tsn exten', 'tsn extend' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tsn exte", "tsn exten", "tsn extend" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn exte' },
+          command: { name: "tsn exte" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsn exten',
+      setup:    "tsn exten",
       check: {
-        input:  'tsn exten',
-        hints:           ' <text>',
-        markup: 'VVVVVVVVV',
+        input:  "tsn exten",
+        hints:           " <text>",
+        markup: "VVVVVVVVV",
         cursor: 9,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tsn exten', 'tsn extend' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tsn exten", "tsn extend" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn exten' },
+          command: { name: "tsn exten" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'tsn extend',
+      setup:    "tsn extend",
       check: {
-        input:  'tsn extend',
-        hints:            ' <text>',
-        markup: 'VVVVVVVVVV',
+        input:  "tsn extend",
+        hints:            " <text>",
+        markup: "VVVVVVVVVV",
         cursor: 10,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn extend' },
+          command: { name: "tsn extend" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE',
-            message: 'Value required for \u2018text\u2019.'
+            arg: "",
+            status: "INCOMPLETE",
+            message: "Value required for \u2018text\u2019."
           }
         }
       }
     },
     {
-      setup:    'ts ',
+      setup:    "ts ",
       check: {
-        input:  'ts ',
-        hints:     '',
-        markup: 'EEV',
+        input:  "ts ",
+        hints:     "",
+        markup: "EEV",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
+        current: "__command",
+        status: "ERROR",
         predictions: [ ],
         unassigned: [ ],
-        tooltipState: 'true:isError'
+        tooltipState: "true:isError"
       }
     },
   ]);
 };
 
 // From Bug 664203
-exports.testDeeplyNested = function(options) {
+exports.testDeeplyNested = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsn deep down nested',
+      setup:    "tsn deep down nested",
       check: {
-        input:  'tsn deep down nested',
-        hints:                      ' cmd',
-        markup: 'IIIVIIIIVIIIIVIIIIII',
+        input:  "tsn deep down nested",
+        hints:                      " cmd",
+        markup: "IIIVIIIIVIIIIVIIIIII",
         cursor: 20,
-        current: '__command',
-        status: 'ERROR',
-        predictions: [ 'tsn deep down nested cmd' ],
+        current: "__command",
+        status: "ERROR",
+        predictions: [ "tsn deep down nested cmd" ],
         unassigned: [ ],
-        outputState: 'false:default',
-        tooltipState: 'false:default',
+        outputState: "false:default",
+        tooltipState: "false:default",
         args: {
-          command: { name: 'tsn deep down nested' },
+          command: { name: "tsn deep down nested" },
         }
       }
     },
     {
-      setup:    'tsn deep down nested cmd',
+      setup:    "tsn deep down nested cmd",
       check: {
-        input:  'tsn deep down nested cmd',
-        hints:                          '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVV',
+        input:  "tsn deep down nested cmd",
+        hints:                          "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
         cursor: 24,
-        current: '__command',
-        status: 'VALID',
+        current: "__command",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn deep down nested cmd' },
+          command: { name: "tsn deep down nested cmd" },
         }
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_completion1.js
+++ b/devtools/client/commandline/test/browser_gcli_completion1.js
@@ -9,269 +9,269 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_completion1.js");
 }
 
 // var helpers = require('./helpers');
 
-exports.testActivate = function(options) {
+exports.testActivate = function (options) {
   return helpers.audit(options, [
     {
-      setup: '',
+      setup: "",
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      setup: ' ',
+      setup: " ",
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      setup: 'tsr',
+      setup: "tsr",
       check: {
-        hints: ' <text>'
+        hints: " <text>"
       }
     },
     {
-      setup: 'tsr ',
+      setup: "tsr ",
       check: {
-        hints: '<text>'
+        hints: "<text>"
       }
     },
     {
-      setup: 'tsr b',
+      setup: "tsr b",
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      setup: 'tsb',
+      setup: "tsb",
       check: {
-        hints: ' [toggle]'
+        hints: " [toggle]"
       }
     },
     {
-      setup: 'tsm',
+      setup: "tsm",
       check: {
-        hints: ' <abc> <txt> <num>'
+        hints: " <abc> <txt> <num>"
       }
     },
     {
-      setup: 'tsm ',
+      setup: "tsm ",
       check: {
-        hints: 'a <txt> <num>'
+        hints: "a <txt> <num>"
       }
     },
     {
-      setup: 'tsm a',
+      setup: "tsm a",
       check: {
-        hints: ' <txt> <num>'
+        hints: " <txt> <num>"
       }
     },
     {
-      setup: 'tsm a ',
+      setup: "tsm a ",
       check: {
-        hints: '<txt> <num>'
+        hints: "<txt> <num>"
       }
     },
     {
-      setup: 'tsm a  ',
+      setup: "tsm a  ",
       check: {
-        hints: '<txt> <num>'
+        hints: "<txt> <num>"
       }
     },
     {
-      setup: 'tsm a  d',
+      setup: "tsm a  d",
       check: {
-        hints: ' <num>'
+        hints: " <num>"
       }
     },
     {
       setup: 'tsm a "d d"',
       check: {
-        hints: ' <num>'
+        hints: " <num>"
       }
     },
     {
       setup: 'tsm a "d ',
       check: {
-        hints: ' <num>'
+        hints: " <num>"
       }
     },
     {
       setup: 'tsm a "d d" ',
       check: {
-        hints: '<num>'
+        hints: "<num>"
       }
     },
     {
       setup: 'tsm a "d d ',
       check: {
-        hints: ' <num>'
+        hints: " <num>"
       }
     },
     {
-      setup: 'tsm d r',
+      setup: "tsm d r",
       check: {
-        hints: ' <num>'
+        hints: " <num>"
       }
     },
     {
-      setup: 'tsm a d ',
+      setup: "tsm a d ",
       check: {
-        hints: '<num>'
+        hints: "<num>"
       }
     },
     {
-      setup: 'tsm a d 4',
+      setup: "tsm a d 4",
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      setup: 'tsg',
+      setup: "tsg",
       check: {
-        hints: ' <solo> [options]'
+        hints: " <solo> [options]"
       }
     },
     {
-      setup: 'tsg ',
+      setup: "tsg ",
       check: {
-        hints: 'aaa [options]'
+        hints: "aaa [options]"
       }
     },
     {
-      setup: 'tsg a',
+      setup: "tsg a",
       check: {
-        hints: 'aa [options]'
+        hints: "aa [options]"
       }
     },
     {
-      setup: 'tsg b',
+      setup: "tsg b",
       check: {
-        hints: 'bb [options]'
+        hints: "bb [options]"
       }
     },
     {
       skipIf: options.isPhantomjs, // PhantomJS gets predictions wrong
-      setup: 'tsg d',
+      setup: "tsg d",
       check: {
-        hints: ' [options] -> ccc'
+        hints: " [options] -> ccc"
       }
     },
     {
-      setup: 'tsg aa',
+      setup: "tsg aa",
       check: {
-        hints: 'a [options]'
+        hints: "a [options]"
       }
     },
     {
-      setup: 'tsg aaa',
+      setup: "tsg aaa",
       check: {
-        hints: ' [options]'
+        hints: " [options]"
       }
     },
     {
-      setup: 'tsg aaa ',
+      setup: "tsg aaa ",
       check: {
-        hints: '[options]'
+        hints: "[options]"
       }
     },
     {
-      setup: 'tsg aaa d',
+      setup: "tsg aaa d",
       check: {
-        hints: ' [options]'
+        hints: " [options]"
       }
     },
     {
-      setup: 'tsg aaa dddddd',
+      setup: "tsg aaa dddddd",
       check: {
-        hints: ' [options]'
+        hints: " [options]"
       }
     },
     {
-      setup: 'tsg aaa dddddd ',
+      setup: "tsg aaa dddddd ",
       check: {
-        hints: '[options]'
+        hints: "[options]"
       }
     },
     {
       setup: 'tsg aaa "d',
       check: {
-        hints: ' [options]'
+        hints: " [options]"
       }
     },
     {
       setup: 'tsg aaa "d d',
       check: {
-        hints: ' [options]'
+        hints: " [options]"
       }
     },
     {
       setup: 'tsg aaa "d d"',
       check: {
-        hints: ' [options]'
+        hints: " [options]"
       }
     },
     {
-      setup: 'tsn ex ',
+      setup: "tsn ex ",
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      setup: 'selarr',
+      setup: "selarr",
       check: {
-        hints: ' -> tselarr'
+        hints: " -> tselarr"
       }
     },
     {
-      setup: 'tselar 1',
+      setup: "tselar 1",
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      name: 'tselar |1',
-      setup: function() {
-        return helpers.setInput(options, 'tselar 1', 7);
+      name: "tselar |1",
+      setup: function () {
+        return helpers.setInput(options, "tselar 1", 7);
       },
       check: {
-        hints: ''
+        hints: ""
       }
     },
     {
-      name: 'tselar| 1',
-      setup: function() {
-        return helpers.setInput(options, 'tselar 1', 6);
+      name: "tselar| 1",
+      setup: function () {
+        return helpers.setInput(options, "tselar 1", 6);
       },
       check: {
-        hints: ' -> tselarr'
+        hints: " -> tselarr"
       }
     },
     {
-      name: 'tsela|r 1',
-      setup: function() {
-        return helpers.setInput(options, 'tselar 1', 5);
+      name: "tsela|r 1",
+      setup: function () {
+        return helpers.setInput(options, "tselar 1", 5);
       },
       check: {
-        hints: ' -> tselarr'
+        hints: " -> tselarr"
       }
     },
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_completion2.js
+++ b/devtools/client/commandline/test/browser_gcli_completion2.js
@@ -9,255 +9,255 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_completion2.js");
 }
 
 // var helpers = require('./helpers');
 
-exports.testLong = function(options) {
+exports.testLong = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tslong --sel',
+      setup:    "tslong --sel",
       check: {
-        input:  'tslong --sel',
-        hints:              ' <selection> <msg> [options]',
-        markup: 'VVVVVVVIIIII'
+        input:  "tslong --sel",
+        hints:              " <selection> <msg> [options]",
+        markup: "VVVVVVVIIIII"
       }
     },
     {
-      setup:    'tslong --sel<TAB>',
+      setup:    "tslong --sel<TAB>",
       check: {
-        input:  'tslong --sel ',
-        hints:               'space <msg> [options]',
-        markup: 'VVVVVVVIIIIIV'
+        input:  "tslong --sel ",
+        hints:               "space <msg> [options]",
+        markup: "VVVVVVVIIIIIV"
       }
     },
     {
-      setup:    'tslong --sel ',
+      setup:    "tslong --sel ",
       check: {
-        input:  'tslong --sel ',
-        hints:               'space <msg> [options]',
-        markup: 'VVVVVVVIIIIIV'
+        input:  "tslong --sel ",
+        hints:               "space <msg> [options]",
+        markup: "VVVVVVVIIIIIV"
       }
     },
     {
-      setup:    'tslong --sel s',
+      setup:    "tslong --sel s",
       check: {
-        input:  'tslong --sel s',
-        hints:                'pace <msg> [options]',
-        markup: 'VVVVVVVIIIIIVI'
+        input:  "tslong --sel s",
+        hints:                "pace <msg> [options]",
+        markup: "VVVVVVVIIIIIVI"
       }
     },
     {
-      setup:    'tslong --num ',
+      setup:    "tslong --num ",
       check: {
-        input:  'tslong --num ',
-        hints:               '<number> <msg> [options]',
-        markup: 'VVVVVVVIIIIIV'
+        input:  "tslong --num ",
+        hints:               "<number> <msg> [options]",
+        markup: "VVVVVVVIIIIIV"
       }
     },
     {
-      setup:    'tslong --num 42',
+      setup:    "tslong --num 42",
       check: {
-        input:  'tslong --num 42',
-        hints:                 ' <msg> [options]',
-        markup: 'VVVVVVVVVVVVVVV'
+        input:  "tslong --num 42",
+        hints:                 " <msg> [options]",
+        markup: "VVVVVVVVVVVVVVV"
       }
     },
     {
-      setup:    'tslong --num 42 ',
+      setup:    "tslong --num 42 ",
       check: {
-        input:  'tslong --num 42 ',
-        hints:                  '<msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVV'
+        input:  "tslong --num 42 ",
+        hints:                  "<msg> [options]",
+        markup: "VVVVVVVVVVVVVVVV"
       }
     },
     {
-      setup:    'tslong --num 42 --se',
+      setup:    "tslong --num 42 --se",
       check: {
-        input:  'tslong --num 42 --se',
-        hints:                      'l <msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVVIIII'
+        input:  "tslong --num 42 --se",
+        hints:                      "l <msg> [options]",
+        markup: "VVVVVVVVVVVVVVVVIIII"
       }
     },
     {
-      setup:    'tslong --num 42 --se<TAB>',
+      setup:    "tslong --num 42 --se<TAB>",
       check: {
-        input:  'tslong --num 42 --sel ',
-        hints:                        'space <msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVVIIIIIV'
+        input:  "tslong --num 42 --sel ",
+        hints:                        "space <msg> [options]",
+        markup: "VVVVVVVVVVVVVVVVIIIIIV"
       }
     },
     {
-      setup:    'tslong --num 42 --se<TAB><TAB>',
+      setup:    "tslong --num 42 --se<TAB><TAB>",
       check: {
-        input:  'tslong --num 42 --sel space ',
-        hints:                              '<msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV'
+        input:  "tslong --num 42 --sel space ",
+        hints:                              "<msg> [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV"
       }
     },
     {
-      setup:    'tslong --num 42 --sel ',
+      setup:    "tslong --num 42 --sel ",
       check: {
-        input:  'tslong --num 42 --sel ',
-        hints:                        'space <msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVVIIIIIV'
+        input:  "tslong --num 42 --sel ",
+        hints:                        "space <msg> [options]",
+        markup: "VVVVVVVVVVVVVVVVIIIIIV"
       }
     },
     {
-      setup:    'tslong --num 42 --sel space ',
+      setup:    "tslong --num 42 --sel space ",
       check: {
-        input:  'tslong --num 42 --sel space ',
-        hints:                              '<msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV'
+        input:  "tslong --num 42 --sel space ",
+        hints:                              "<msg> [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV"
       }
     }
   ]);
 };
 
-exports.testNoTab = function(options) {
+exports.testNoTab = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tss<TAB>',
+      setup:    "tss<TAB>",
       check: {
-        input:  'tss ',
-        markup: 'VVVV',
-        hints: ''
+        input:  "tss ",
+        markup: "VVVV",
+        hints: ""
       }
     },
     {
-      setup:    'tss<TAB><TAB>',
+      setup:    "tss<TAB><TAB>",
       check: {
-        input:  'tss ',
-        markup: 'VVVV',
-        hints: ''
+        input:  "tss ",
+        markup: "VVVV",
+        hints: ""
       }
     },
     {
-      setup:    'xxxx',
+      setup:    "xxxx",
       check: {
-        input:  'xxxx',
-        markup: 'EEEE',
-        hints: ''
+        input:  "xxxx",
+        markup: "EEEE",
+        hints: ""
       }
     },
     {
-      name: '<TAB>',
-      setup: function() {
+      name: "<TAB>",
+      setup: function () {
         // Doing it this way avoids clearing the input buffer
         return helpers.pressTab(options);
       },
       check: {
-        input:  'xxxx',
-        markup: 'EEEE',
-        hints: ''
+        input:  "xxxx",
+        markup: "EEEE",
+        hints: ""
       }
     }
   ]);
 };
 
-exports.testOutstanding = function(options) {
+exports.testOutstanding = function (options) {
   // See bug 779800
   /*
   return helpers.audit(options, [
     {
       setup:    'tsg --txt1 ddd ',
       check: {
         input:  'tsg --txt1 ddd ',
         hints:                 'aaa [options]',
         markup: 'VVVVVVVVVVVVVVV'
       }
     },
   ]);
   */
 };
 
-exports.testCompleteIntoOptional = function(options) {
+exports.testCompleteIntoOptional = function (options) {
   // From bug 779816
   return helpers.audit(options, [
     {
-      setup:    'tso ',
+      setup:    "tso ",
       check: {
-        typed:  'tso ',
-        hints:      '[text]',
-        markup: 'VVVV',
-        status: 'VALID'
+        typed:  "tso ",
+        hints:      "[text]",
+        markup: "VVVV",
+        status: "VALID"
       }
     },
     {
-      setup:    'tso<TAB>',
+      setup:    "tso<TAB>",
       check: {
-        typed:  'tso ',
-        hints:      '[text]',
-        markup: 'VVVV',
-        status: 'VALID'
+        typed:  "tso ",
+        hints:      "[text]",
+        markup: "VVVV",
+        status: "VALID"
       }
     }
   ]);
 };
 
-exports.testSpaceComplete = function(options) {
+exports.testSpaceComplete = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tslong --sel2 wit',
+      setup:    "tslong --sel2 wit",
       check: {
-        input:  'tslong --sel2 wit',
-        hints:                   'h space <msg> [options]',
-        markup: 'VVVVVVVIIIIIIVIII',
+        input:  "tslong --sel2 wit",
+        hints:                   "h space <msg> [options]",
+        markup: "VVVVVVVIIIIIIVIII",
         cursor: 17,
-        current: 'sel2',
-        status: 'ERROR',
-        tooltipState: 'true:importantFieldFlag',
+        current: "sel2",
+        status: "ERROR",
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tslong' },
-          msg: { status: 'INCOMPLETE' },
-          num: { status: 'VALID' },
-          sel: { status: 'VALID' },
-          bool: { value: false, status: 'VALID' },
-          num2: { status: 'VALID' },
-          bool2: { value: false, status: 'VALID' },
-          sel2: { arg: ' --sel2 wit', status: 'INCOMPLETE' }
+          command: { name: "tslong" },
+          msg: { status: "INCOMPLETE" },
+          num: { status: "VALID" },
+          sel: { status: "VALID" },
+          bool: { value: false, status: "VALID" },
+          num2: { status: "VALID" },
+          bool2: { value: false, status: "VALID" },
+          sel2: { arg: " --sel2 wit", status: "INCOMPLETE" }
         }
       }
     },
     {
-      setup:    'tslong --sel2 wit<TAB>',
+      setup:    "tslong --sel2 wit<TAB>",
       check: {
-        input:  'tslong --sel2 \'with space\' ',
-        hints:                             '<msg> [options]',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVV',
+        input:  "tslong --sel2 'with space' ",
+        hints:                             "<msg> [options]",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVV",
         cursor: 27,
-        current: 'sel2',
-        status: 'ERROR',
-        tooltipState: 'true:importantFieldFlag',
+        current: "sel2",
+        status: "ERROR",
+        tooltipState: "true:importantFieldFlag",
         args: {
-          command: { name: 'tslong' },
-          msg: { status: 'INCOMPLETE' },
-          num: { status: 'VALID' },
-          sel: { status: 'VALID' },
-          bool: { value: false, status: 'VALID' },
-          num2: { status: 'VALID' },
-          bool2: { value: false, status: 'VALID' },
+          command: { name: "tslong" },
+          msg: { status: "INCOMPLETE" },
+          num: { status: "VALID" },
+          sel: { status: "VALID" },
+          bool: { value: false, status: "VALID" },
+          num2: { status: "VALID" },
+          bool2: { value: false, status: "VALID" },
           sel2: {
-            value: 'with space',
-            arg: ' --sel2 \'with space\' ',
-            status: 'VALID'
+            value: "with space",
+            arg: " --sel2 'with space' ",
+            status: "VALID"
           }
         }
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_context.js
+++ b/devtools/client/commandline/test/browser_gcli_context.js
@@ -9,190 +9,190 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_context.js");
 }
 
 // var helpers = require('./helpers');
 
-exports.testBaseline = function(options) {
+exports.testBaseline = function (options) {
   return helpers.audit(options, [
     // These 3 establish a baseline for comparison when we have used the
     // context command
     {
-      setup:    'ext',
+      setup:    "ext",
       check: {
-        input:  'ext',
-        hints:     ' -> context',
-        markup: 'III',
-        message: '',
-        predictions: [ 'context', 'tsn ext', 'tsn exte', 'tsn exten', 'tsn extend' ],
+        input:  "ext",
+        hints:     " -> context",
+        markup: "III",
+        message: "",
+        predictions: [ "context", "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
         unassigned: [ ],
       }
     },
     {
-      setup:    'ext test',
+      setup:    "ext test",
       check: {
-        input:  'ext test',
-        hints:          '',
-        markup: 'IIIVEEEE',
-        status: 'ERROR',
-        message: 'Too many arguments',
-        unassigned: [ ' test' ],
+        input:  "ext test",
+        hints:          "",
+        markup: "IIIVEEEE",
+        status: "ERROR",
+        message: "Too many arguments",
+        unassigned: [ " test" ],
       }
     },
     {
-      setup:    'tsn',
+      setup:    "tsn",
       check: {
-        input:  'tsn',
-        hints:     ' deep down nested cmd',
-        markup: 'III',
+        input:  "tsn",
+        hints:     " deep down nested cmd",
+        markup: "III",
         cursor: 3,
-        current: '__command',
-        status: 'ERROR',
-        predictionsContains: [ 'tsn deep down nested cmd', 'tsn ext', 'tsn exte' ],
+        current: "__command",
+        status: "ERROR",
+        predictionsContains: [ "tsn deep down nested cmd", "tsn ext", "tsn exte" ],
         args: {
-          command: { name: 'tsn' },
+          command: { name: "tsn" },
         }
       }
     }
   ]);
 };
 
-exports.testContext = function(options) {
+exports.testContext = function (options) {
   return helpers.audit(options, [
     // Use the 'tsn' context
     {
-      setup:    'context tsn',
+      setup:    "context tsn",
       check: {
-        input:  'context tsn',
-        hints:             ' deep down nested cmd',
-        markup: 'VVVVVVVVVVV',
-        message: '',
-        predictionsContains: [ 'tsn deep down nested cmd', 'tsn ext', 'tsn exte' ],
+        input:  "context tsn",
+        hints:             " deep down nested cmd",
+        markup: "VVVVVVVVVVV",
+        message: "",
+        predictionsContains: [ "tsn deep down nested cmd", "tsn ext", "tsn exte" ],
         args: {
-          command: { name: 'context' },
+          command: { name: "context" },
           prefix: {
-            value: options.requisition.system.commands.get('tsn'),
-            status: 'VALID',
-            message: ''
+            value: options.requisition.system.commands.get("tsn"),
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Using tsn as a command prefix'
+        output: "Using tsn as a command prefix"
       }
     },
     // For comparison with earlier
     {
-      setup:    'ext',
+      setup:    "ext",
       check: {
-        input:  'ext',
-        hints:     ' <text>',
-        markup: 'VVV',
-        predictions: [ 'tsn ext', 'tsn exte', 'tsn exten', 'tsn extend' ],
+        input:  "ext",
+        hints:     " <text>",
+        markup: "VVV",
+        predictions: [ "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
         args: {
-          command: { name: 'tsn ext' },
+          command: { name: "tsn ext" },
           text: {
             value: undefined,
-            arg: '',
-            status: 'INCOMPLETE'
+            arg: "",
+            status: "INCOMPLETE"
           }
         }
       }
     },
     {
-      setup:    'ext test',
+      setup:    "ext test",
       check: {
-        input:  'ext test',
-        hints:          '',
-        markup: 'VVVVVVVV',
+        input:  "ext test",
+        hints:          "",
+        markup: "VVVVVVVV",
         args: {
-          command: { name: 'tsn ext' },
+          command: { name: "tsn ext" },
           text: {
-            value: 'test',
-            arg: ' test',
-            status: 'VALID',
-            message: ''
+            value: "test",
+            arg: " test",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsnExt text=test'
+        output: "Exec: tsnExt text=test"
       }
     },
     {
-      setup:    'tsn',
+      setup:    "tsn",
       check: {
-        input:  'tsn',
-        hints:     ' deep down nested cmd',
-        markup: 'III',
-        message: '',
-        predictionsContains: [ 'tsn deep down nested cmd', 'tsn ext', 'tsn exte' ],
+        input:  "tsn",
+        hints:     " deep down nested cmd",
+        markup: "III",
+        message: "",
+        predictionsContains: [ "tsn deep down nested cmd", "tsn ext", "tsn exte" ],
         args: {
-          command: { name: 'tsn' },
+          command: { name: "tsn" },
         }
       }
     },
     // Does it actually work?
     {
-      setup:    'tsb true',
+      setup:    "tsb true",
       check: {
-        input:  'tsb true',
-        hints:          '',
-        markup: 'VVVVVVVV',
-        options: [ 'true' ],
-        message: '',
-        predictions: [ 'true' ],
+        input:  "tsb true",
+        hints:          "",
+        markup: "VVVVVVVV",
+        options: [ "true" ],
+        message: "",
+        predictions: [ "true" ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsb' },
-          toggle: { value: true, arg: ' true', status: 'VALID', message: '' }
+          command: { name: "tsb" },
+          toggle: { value: true, arg: " true", status: "VALID", message: "" }
         }
       }
     },
     {
       // Bug 866710 - GCLI should allow argument merging for non-string parameters
-      setup: 'context tsn ext',
+      setup: "context tsn ext",
       skip: true
     },
     {
       setup:    'context "tsn ext"',
       check: {
         input:  'context "tsn ext"',
-        hints:                   '',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        message: '',
-        predictions: [ 'tsn ext', 'tsn exte', 'tsn exten', 'tsn extend' ],
+        hints:                   "",
+        markup: "VVVVVVVVVVVVVVVVV",
+        message: "",
+        predictions: [ "tsn ext", "tsn exte", "tsn exten", "tsn extend" ],
         unassigned: [ ],
         args: {
-          command: { name: 'context' },
+          command: { name: "context" },
           prefix: {
-            value: options.requisition.system.commands.get('tsn ext'),
-            status: 'VALID',
-            message: ''
+            value: options.requisition.system.commands.get("tsn ext"),
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Can\'t use \'tsn ext\' as a prefix because it is not a parent command.',
+        output: "Can't use 'tsn ext' as a prefix because it is not a parent command.",
         error: true
       }
     },
     /*
     {
       setup:    'context "tsn deep"',
       check: {
         input:  'context "tsn deep"',
@@ -212,28 +212,28 @@ exports.testContext = function(options) 
         }
       },
       exec: {
         output: ''
       }
     },
     */
     {
-      setup:    'context',
+      setup:    "context",
       check: {
-        input:  'context',
-        hints:         ' [prefix]',
-        markup: 'VVVVVVV',
-        status: 'VALID',
+        input:  "context",
+        hints:         " [prefix]",
+        markup: "VVVVVVV",
+        status: "VALID",
         unassigned: [ ],
         args: {
-          command: { name: 'context' },
-          prefix: { value: undefined, arg: '', status: 'VALID', message: '' },
+          command: { name: "context" },
+          prefix: { value: undefined, arg: "", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Command prefix is unset',
-        type: 'string',
+        output: "Command prefix is unset",
+        type: "string",
         error: false
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_date.js
+++ b/devtools/client/commandline/test/browser_gcli_date.js
@@ -9,350 +9,350 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_date.js");
 }
 
 // var assert = require('../testharness/assert');
 // var helpers = require('./helpers');
 
-var Status = require('gcli/types/types').Status;
+var Status = require("gcli/types/types").Status;
 
-exports.testParse = function(options) {
-  var date = options.requisition.system.types.createType('date');
-  return date.parseString('now').then(function(conversion) {
+exports.testParse = function (options) {
+  var date = options.requisition.system.types.createType("date");
+  return date.parseString("now").then(function (conversion) {
     // Date comparison - these 2 dates may not be the same, but how close is
     // close enough? If this test takes more than 30secs to run the it will
     // probably time out, so we'll assume that these 2 values must be within
     // 1 min of each other
     var gap = new Date().getTime() - conversion.value.getTime();
-    assert.ok(gap < 60000, 'now is less than a minute away');
+    assert.ok(gap < 60000, "now is less than a minute away");
 
-    assert.is(conversion.getStatus(), Status.VALID, 'now parse');
+    assert.is(conversion.getStatus(), Status.VALID, "now parse");
   });
 };
 
-exports.testMaxMin = function(options) {
+exports.testMaxMin = function (options) {
   var max = new Date();
   var min = new Date();
   var types = options.requisition.system.types;
-  var date = types.createType({ name: 'date', max: max, min: min });
-  assert.is(date.getMax(), max, 'max setup');
+  var date = types.createType({ name: "date", max: max, min: min });
+  assert.is(date.getMax(), max, "max setup");
 
   var incremented = date.nudge(min, 1);
-  assert.is(incremented, max, 'incremented');
+  assert.is(incremented, max, "incremented");
 };
 
-exports.testIncrement = function(options) {
-  var date = options.requisition.system.types.createType('date');
-  return date.parseString('now').then(function(conversion) {
+exports.testIncrement = function (options) {
+  var date = options.requisition.system.types.createType("date");
+  return date.parseString("now").then(function (conversion) {
     var plusOne = date.nudge(conversion.value, 1);
     var minusOne = date.nudge(plusOne, -1);
 
     // See comments in testParse
     var gap = new Date().getTime() - minusOne.getTime();
-    assert.ok(gap < 60000, 'now is less than a minute away');
+    assert.ok(gap < 60000, "now is less than a minute away");
   });
 };
 
-exports.testInput = function(options) {
+exports.testInput = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsdate 2001-01-01 1980-01-03',
+      setup:    "tsdate 2001-01-01 1980-01-03",
       check: {
-        input:  'tsdate 2001-01-01 1980-01-03',
-        hints:                              '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
-        message: '',
+        input:  "tsdate 2001-01-01 1980-01-03",
+        hints:                              "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
-              assert.is(d1.getFullYear(), 2001, 'd1 year');
-              assert.is(d1.getMonth(), 0, 'd1 month');
-              assert.is(d1.getDate(), 1, 'd1 date');
-              assert.is(d1.getHours(), 0, 'd1 hours');
-              assert.is(d1.getMinutes(), 0, 'd1 minutes');
-              assert.is(d1.getSeconds(), 0, 'd1 seconds');
-              assert.is(d1.getMilliseconds(), 0, 'd1 millis');
+            value: function (d1) {
+              assert.is(d1.getFullYear(), 2001, "d1 year");
+              assert.is(d1.getMonth(), 0, "d1 month");
+              assert.is(d1.getDate(), 1, "d1 date");
+              assert.is(d1.getHours(), 0, "d1 hours");
+              assert.is(d1.getMinutes(), 0, "d1 minutes");
+              assert.is(d1.getSeconds(), 0, "d1 seconds");
+              assert.is(d1.getMilliseconds(), 0, "d1 millis");
             },
-            arg: ' 2001-01-01',
-            status: 'VALID',
-            message: ''
+            arg: " 2001-01-01",
+            status: "VALID",
+            message: ""
           },
           d2: {
-            value: function(d2) {
-              assert.is(d2.getFullYear(), 1980, 'd2 year');
-              assert.is(d2.getMonth(), 0, 'd2 month');
-              assert.is(d2.getDate(), 3, 'd2 date');
-              assert.is(d2.getHours(), 0, 'd2 hours');
-              assert.is(d2.getMinutes(), 0, 'd2 minutes');
-              assert.is(d2.getSeconds(), 0, 'd2 seconds');
-              assert.is(d2.getMilliseconds(), 0, 'd2 millis');
+            value: function (d2) {
+              assert.is(d2.getFullYear(), 1980, "d2 year");
+              assert.is(d2.getMonth(), 0, "d2 month");
+              assert.is(d2.getDate(), 3, "d2 date");
+              assert.is(d2.getHours(), 0, "d2 hours");
+              assert.is(d2.getMinutes(), 0, "d2 minutes");
+              assert.is(d2.getSeconds(), 0, "d2 seconds");
+              assert.is(d2.getMilliseconds(), 0, "d2 millis");
             },
-            arg: ' 1980-01-03',
-            status: 'VALID',
-            message: ''
+            arg: " 1980-01-03",
+            status: "VALID",
+            message: ""
           },
         }
       },
       exec: {
         output: [ /^Exec: tsdate/, /2001/, /1980/ ],
-        type: 'testCommandOutput',
+        type: "testCommandOutput",
         error: false
       }
     },
     {
-      setup:    'tsdate 2001/01/01 1980/01/03',
+      setup:    "tsdate 2001/01/01 1980/01/03",
       check: {
-        input:  'tsdate 2001/01/01 1980/01/03',
-        hints:                              '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
-        message: '',
+        input:  "tsdate 2001/01/01 1980/01/03",
+        hints:                              "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
-              assert.is(d1.getFullYear(), 2001, 'd1 year');
-              assert.is(d1.getMonth(), 0, 'd1 month');
-              assert.is(d1.getDate(), 1, 'd1 date');
-              assert.is(d1.getHours(), 0, 'd1 hours');
-              assert.is(d1.getMinutes(), 0, 'd1 minutes');
-              assert.is(d1.getSeconds(), 0, 'd1 seconds');
-              assert.is(d1.getMilliseconds(), 0, 'd1 millis');
+            value: function (d1) {
+              assert.is(d1.getFullYear(), 2001, "d1 year");
+              assert.is(d1.getMonth(), 0, "d1 month");
+              assert.is(d1.getDate(), 1, "d1 date");
+              assert.is(d1.getHours(), 0, "d1 hours");
+              assert.is(d1.getMinutes(), 0, "d1 minutes");
+              assert.is(d1.getSeconds(), 0, "d1 seconds");
+              assert.is(d1.getMilliseconds(), 0, "d1 millis");
             },
-            arg: ' 2001/01/01',
-            status: 'VALID',
-            message: ''
+            arg: " 2001/01/01",
+            status: "VALID",
+            message: ""
           },
           d2: {
-            value: function(d2) {
-              assert.is(d2.getFullYear(), 1980, 'd2 year');
-              assert.is(d2.getMonth(), 0, 'd2 month');
-              assert.is(d2.getDate(), 3, 'd2 date');
-              assert.is(d2.getHours(), 0, 'd2 hours');
-              assert.is(d2.getMinutes(), 0, 'd2 minutes');
-              assert.is(d2.getSeconds(), 0, 'd2 seconds');
-              assert.is(d2.getMilliseconds(), 0, 'd2 millis');
+            value: function (d2) {
+              assert.is(d2.getFullYear(), 1980, "d2 year");
+              assert.is(d2.getMonth(), 0, "d2 month");
+              assert.is(d2.getDate(), 3, "d2 date");
+              assert.is(d2.getHours(), 0, "d2 hours");
+              assert.is(d2.getMinutes(), 0, "d2 minutes");
+              assert.is(d2.getSeconds(), 0, "d2 seconds");
+              assert.is(d2.getMilliseconds(), 0, "d2 millis");
             },
-            arg: ' 1980/01/03',
-            status: 'VALID',
-            message: ''
+            arg: " 1980/01/03",
+            status: "VALID",
+            message: ""
           },
         }
       },
       exec: {
         output: [ /^Exec: tsdate/, /2001/, /1980/ ],
-        type: 'testCommandOutput',
+        type: "testCommandOutput",
         error: false
       }
     },
     {
-      setup:    'tsdate now today',
+      setup:    "tsdate now today",
       check: {
-        input:  'tsdate now today',
-        hints:                  '',
-        markup: 'VVVVVVVVVVVVVVVV',
-        status: 'VALID',
-        message: '',
+        input:  "tsdate now today",
+        hints:                  "",
+        markup: "VVVVVVVVVVVVVVVV",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
+            value: function (d1) {
               // How long should we allow between d1 and now? Mochitest will
               // time out after 30 secs, so that seems like a decent upper
               // limit, although 30 ms should probably do it. I don't think
               // reducing the limit from 30 secs will find any extra bugs
               assert.ok(d1.getTime() - new Date().getTime() < 30 * 1000,
-                        'd1 time');
+                        "d1 time");
             },
-            arg: ' now',
-            status: 'VALID',
-            message: ''
+            arg: " now",
+            status: "VALID",
+            message: ""
           },
           d2: {
-            value: function(d2) {
+            value: function (d2) {
               // See comment for d1 above
               assert.ok(d2.getTime() - new Date().getTime() < 30 * 1000,
-                        'd2 time');
+                        "d2 time");
             },
-            arg: ' today',
-            status: 'VALID',
-            message: ''
+            arg: " today",
+            status: "VALID",
+            message: ""
           },
         }
       },
       exec: {
         output: [ /^Exec: tsdate/, new Date().getFullYear() ],
-        type: 'testCommandOutput',
+        type: "testCommandOutput",
         error: false
       }
     },
     {
-      setup:    'tsdate yesterday tomorrow',
+      setup:    "tsdate yesterday tomorrow",
       check: {
-        input:  'tsdate yesterday tomorrow',
-        hints:                           '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
-        message: '',
+        input:  "tsdate yesterday tomorrow",
+        hints:                           "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
+            value: function (d1) {
               var compare = new Date().getTime() - (24 * 60 * 60 * 1000);
               // See comment for d1 in the test for 'tsdate now today'
               assert.ok(d1.getTime() - compare < 30 * 1000,
-                        'd1 time');
+                        "d1 time");
             },
-            arg: ' yesterday',
-            status: 'VALID',
-            message: ''
+            arg: " yesterday",
+            status: "VALID",
+            message: ""
           },
           d2: {
-            value: function(d2) {
+            value: function (d2) {
               var compare = new Date().getTime() + (24 * 60 * 60 * 1000);
               // See comment for d1 in the test for 'tsdate now today'
               assert.ok(d2.getTime() - compare < 30 * 1000,
-                        'd2 time');
+                        "d2 time");
             },
-            arg: ' tomorrow',
-            status: 'VALID',
-            message: ''
+            arg: " tomorrow",
+            status: "VALID",
+            message: ""
           },
         }
       },
       exec: {
         output: [ /^Exec: tsdate/, new Date().getFullYear() ],
-        type: 'testCommandOutput',
+        type: "testCommandOutput",
         error: false
       }
     }
   ]);
 };
 
-exports.testIncrDecr = function(options) {
+exports.testIncrDecr = function (options) {
   return helpers.audit(options, [
     {
       // createRequisitionAutomator doesn't fake UP/DOWN well enough
       skipRemainingIf: options.isNode,
-      setup:    'tsdate 2001-01-01<UP>',
+      setup:    "tsdate 2001-01-01<UP>",
       check: {
-        input:  'tsdate 2001-01-02',
-        hints:                    ' <d2>',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        status: 'ERROR',
-        message: '',
+        input:  "tsdate 2001-01-02",
+        hints:                    " <d2>",
+        markup: "VVVVVVVVVVVVVVVVV",
+        status: "ERROR",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
-              assert.is(d1.getFullYear(), 2001, 'd1 year');
-              assert.is(d1.getMonth(), 0, 'd1 month');
-              assert.is(d1.getDate(), 2, 'd1 date');
-              assert.is(d1.getHours(), 0, 'd1 hours');
-              assert.is(d1.getMinutes(), 0, 'd1 minutes');
-              assert.is(d1.getSeconds(), 0, 'd1 seconds');
-              assert.is(d1.getMilliseconds(), 0, 'd1 millis');
+            value: function (d1) {
+              assert.is(d1.getFullYear(), 2001, "d1 year");
+              assert.is(d1.getMonth(), 0, "d1 month");
+              assert.is(d1.getDate(), 2, "d1 date");
+              assert.is(d1.getHours(), 0, "d1 hours");
+              assert.is(d1.getMinutes(), 0, "d1 minutes");
+              assert.is(d1.getSeconds(), 0, "d1 seconds");
+              assert.is(d1.getMilliseconds(), 0, "d1 millis");
             },
-            arg: ' 2001-01-02',
-            status: 'VALID',
-            message: ''
+            arg: " 2001-01-02",
+            status: "VALID",
+            message: ""
           },
           d2: {
             value: undefined,
-            status: 'INCOMPLETE'
+            status: "INCOMPLETE"
           },
         }
       }
     },
     {
       // Check wrapping on decrement
-      setup:    'tsdate 2001-02-01<DOWN>',
+      setup:    "tsdate 2001-02-01<DOWN>",
       check: {
-        input:  'tsdate 2001-01-31',
-        hints:                    ' <d2>',
-        markup: 'VVVVVVVVVVVVVVVVV',
-        status: 'ERROR',
-        message: '',
+        input:  "tsdate 2001-01-31",
+        hints:                    " <d2>",
+        markup: "VVVVVVVVVVVVVVVVV",
+        status: "ERROR",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
-              assert.is(d1.getFullYear(), 2001, 'd1 year');
-              assert.is(d1.getMonth(), 0, 'd1 month');
-              assert.is(d1.getDate(), 31, 'd1 date');
-              assert.is(d1.getHours(), 0, 'd1 hours');
-              assert.is(d1.getMinutes(), 0, 'd1 minutes');
-              assert.is(d1.getSeconds(), 0, 'd1 seconds');
-              assert.is(d1.getMilliseconds(), 0, 'd1 millis');
+            value: function (d1) {
+              assert.is(d1.getFullYear(), 2001, "d1 year");
+              assert.is(d1.getMonth(), 0, "d1 month");
+              assert.is(d1.getDate(), 31, "d1 date");
+              assert.is(d1.getHours(), 0, "d1 hours");
+              assert.is(d1.getMinutes(), 0, "d1 minutes");
+              assert.is(d1.getSeconds(), 0, "d1 seconds");
+              assert.is(d1.getMilliseconds(), 0, "d1 millis");
             },
-            arg: ' 2001-01-31',
-            status: 'VALID',
-            message: ''
+            arg: " 2001-01-31",
+            status: "VALID",
+            message: ""
           },
           d2: {
             value: undefined,
-            status: 'INCOMPLETE'
+            status: "INCOMPLETE"
           },
         }
       }
     },
     {
       // Check 'max' value capping on increment
       setup:    'tsdate 2001-02-01 "27 feb 2000"<UP>',
       check: {
         input:  'tsdate 2001-02-01 "2000-02-28"',
-        hints:                                '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV',
-        status: 'VALID',
-        message: '',
+        hints:                                "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsdate' },
+          command: { name: "tsdate" },
           d1: {
-            value: function(d1) {
-              assert.is(d1.getFullYear(), 2001, 'd1 year');
-              assert.is(d1.getMonth(), 1, 'd1 month');
-              assert.is(d1.getDate(), 1, 'd1 date');
-              assert.is(d1.getHours(), 0, 'd1 hours');
-              assert.is(d1.getMinutes(), 0, 'd1 minutes');
-              assert.is(d1.getSeconds(), 0, 'd1 seconds');
-              assert.is(d1.getMilliseconds(), 0, 'd1 millis');
+            value: function (d1) {
+              assert.is(d1.getFullYear(), 2001, "d1 year");
+              assert.is(d1.getMonth(), 1, "d1 month");
+              assert.is(d1.getDate(), 1, "d1 date");
+              assert.is(d1.getHours(), 0, "d1 hours");
+              assert.is(d1.getMinutes(), 0, "d1 minutes");
+              assert.is(d1.getSeconds(), 0, "d1 seconds");
+              assert.is(d1.getMilliseconds(), 0, "d1 millis");
             },
-            arg: ' 2001-02-01',
-            status: 'VALID',
-            message: ''
+            arg: " 2001-02-01",
+            status: "VALID",
+            message: ""
           },
           d2: {
-            value: function(d2) {
-              assert.is(d2.getFullYear(), 2000, 'd2 year');
-              assert.is(d2.getMonth(), 1, 'd2 month');
-              assert.is(d2.getDate(), 28, 'd2 date');
-              assert.is(d2.getHours(), 0, 'd2 hours');
-              assert.is(d2.getMinutes(), 0, 'd2 minutes');
-              assert.is(d2.getSeconds(), 0, 'd2 seconds');
-              assert.is(d2.getMilliseconds(), 0, 'd2 millis');
+            value: function (d2) {
+              assert.is(d2.getFullYear(), 2000, "d2 year");
+              assert.is(d2.getMonth(), 1, "d2 month");
+              assert.is(d2.getDate(), 28, "d2 date");
+              assert.is(d2.getHours(), 0, "d2 hours");
+              assert.is(d2.getMinutes(), 0, "d2 minutes");
+              assert.is(d2.getSeconds(), 0, "d2 seconds");
+              assert.is(d2.getMilliseconds(), 0, "d2 millis");
             },
             arg: ' "2000-02-28"',
-            status: 'VALID',
-            message: ''
+            status: "VALID",
+            message: ""
           },
         }
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_exec.js
+++ b/devtools/client/commandline/test/browser_gcli_exec.js
@@ -9,648 +9,648 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_exec.js");
 }
 
 // var assert = require('../testharness/assert');
 // var helpers = require('./helpers');
 
-exports.testParamGroup = function(options) {
-  var tsg = options.requisition.system.commands.get('tsg');
+exports.testParamGroup = function (options) {
+  var tsg = options.requisition.system.commands.get("tsg");
 
-  assert.is(tsg.params[0].groupName, null, 'tsg param 0 group null');
-  assert.is(tsg.params[1].groupName, 'First', 'tsg param 1 group First');
-  assert.is(tsg.params[2].groupName, 'First', 'tsg param 2 group First');
-  assert.is(tsg.params[3].groupName, 'Second', 'tsg param 3 group Second');
-  assert.is(tsg.params[4].groupName, 'Second', 'tsg param 4 group Second');
+  assert.is(tsg.params[0].groupName, null, "tsg param 0 group null");
+  assert.is(tsg.params[1].groupName, "First", "tsg param 1 group First");
+  assert.is(tsg.params[2].groupName, "First", "tsg param 2 group First");
+  assert.is(tsg.params[3].groupName, "Second", "tsg param 3 group Second");
+  assert.is(tsg.params[4].groupName, "Second", "tsg param 4 group Second");
 };
 
-exports.testWithHelpers = function(options) {
+exports.testWithHelpers = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tss',
+      setup:    "tss",
       check: {
-        input:  'tss',
-        hints:     '',
-        markup: 'VVV',
+        input:  "tss",
+        hints:     "",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'VALID',
+        current: "__command",
+        status: "VALID",
         unassigned: [ ],
         args: {
-          command: { name: 'tss' },
+          command: { name: "tss" },
         }
       },
       exec: {
         output: /^Exec: tss/,
       }
     },
     {
-      setup:    'tsv option1 10',
+      setup:    "tsv option1 10",
       check: {
-        input:  'tsv option1 10',
-        hints:                '',
-        markup: 'VVVVVVVVVVVVVV',
+        input:  "tsv option1 10",
+        hints:                "",
+        markup: "VVVVVVVVVVVVVV",
         cursor: 14,
-        current: 'optionValue',
-        status: 'VALID',
+        current: "optionValue",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'string',
-            arg: ' option1',
-            status: 'VALID',
-            message: ''
+            value: "string",
+            arg: " option1",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
-            arg: ' 10',
-            status: 'VALID',
-            message: ''
+            arg: " 10",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsv optionType=option1 optionValue=10'
+        output: "Exec: tsv optionType=option1 optionValue=10"
       }
     },
     {
-      setup:    'tsv option2 10',
+      setup:    "tsv option2 10",
       check: {
-        input:  'tsv option2 10',
-        hints:                '',
-        markup: 'VVVVVVVVVVVVVV',
+        input:  "tsv option2 10",
+        hints:                "",
+        markup: "VVVVVVVVVVVVVV",
         cursor: 14,
-        current: 'optionValue',
-        status: 'VALID',
+        current: "optionValue",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsv' },
+          command: { name: "tsv" },
           optionType: {
-            value: 'number',
-            arg: ' option2',
-            status: 'VALID',
-            message: ''
+            value: "number",
+            arg: " option2",
+            status: "VALID",
+            message: ""
           },
           optionValue: {
-            arg: ' 10',
-            status: 'VALID',
-            message: ''
+            arg: " 10",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsv optionType=option2 optionValue=10'
+        output: "Exec: tsv optionType=option2 optionValue=10"
       }
     },
     // Delegated remote types can't transfer value types so we only test for
     // the value of optionValue when we're local
     {
       skipIf: options.isRemote,
-      setup: 'tsv option1 10',
+      setup: "tsv option1 10",
       check: {
-        args: { optionValue: { value: '10' } }
+        args: { optionValue: { value: "10" } }
       },
       exec: {
-        output: 'Exec: tsv optionType=option1 optionValue=10'
+        output: "Exec: tsv optionType=option1 optionValue=10"
       }
     },
     {
       skipIf: options.isRemote,
-      setup: 'tsv option2 10',
+      setup: "tsv option2 10",
       check: {
         args: { optionValue: { value: 10 } }
       },
       exec: {
-        output: 'Exec: tsv optionType=option2 optionValue=10'
+        output: "Exec: tsv optionType=option2 optionValue=10"
       }
     }
   ]);
 };
 
-exports.testExecText = function(options) {
+exports.testExecText = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsr fred',
+      setup:    "tsr fred",
       check: {
-        input:  'tsr fred',
-        hints:          '',
-        markup: 'VVVVVVVV',
+        input:  "tsr fred",
+        hints:          "",
+        markup: "VVVVVVVV",
         cursor: 8,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'fred',
-            arg: ' fred',
-            status: 'VALID',
-            message: ''
+            value: "fred",
+            arg: " fred",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsr text=fred'
+        output: "Exec: tsr text=fred"
       }
     },
     {
-      setup:    'tsr fred bloggs',
+      setup:    "tsr fred bloggs",
       check: {
-        input:  'tsr fred bloggs',
-        hints:                 '',
-        markup: 'VVVVVVVVVVVVVVV',
+        input:  "tsr fred bloggs",
+        hints:                 "",
+        markup: "VVVVVVVVVVVVVVV",
         cursor: 15,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'fred bloggs',
-            arg: ' fred bloggs',
-            status: 'VALID',
-            message: ''
+            value: "fred bloggs",
+            arg: " fred bloggs",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsr text=fred\\ bloggs'
+        output: "Exec: tsr text=fred\\ bloggs"
       }
     },
     {
       setup:    'tsr "fred bloggs"',
       check: {
         input:  'tsr "fred bloggs"',
-        hints:                   '',
-        markup: 'VVVVVVVVVVVVVVVVV',
+        hints:                   "",
+        markup: "VVVVVVVVVVVVVVVVV",
         cursor: 17,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'fred bloggs',
+            value: "fred bloggs",
             arg: ' "fred bloggs"',
-            status: 'VALID',
-            message: ''
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsr text=fred\\ bloggs'
+        output: "Exec: tsr text=fred\\ bloggs"
       }
     },
     {
       setup:    'tsr "fred bloggs',
       check: {
         input:  'tsr "fred bloggs',
-        hints:                  '',
-        markup: 'VVVVVVVVVVVVVVVV',
+        hints:                  "",
+        markup: "VVVVVVVVVVVVVVVV",
         cursor: 16,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsr' },
+          command: { name: "tsr" },
           text: {
-            value: 'fred bloggs',
+            value: "fred bloggs",
             arg: ' "fred bloggs',
-            status: 'VALID',
-            message: ''
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsr text=fred\\ bloggs'
+        output: "Exec: tsr text=fred\\ bloggs"
       }
     }
   ]);
 };
 
-exports.testExecBoolean = function(options) {
+exports.testExecBoolean = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsb',
+      setup:    "tsb",
       check: {
-        input:  'tsb',
-        hints:     ' [toggle]',
-        markup: 'VVV',
+        input:  "tsb",
+        hints:     " [toggle]",
+        markup: "VVV",
         cursor: 3,
-        current: '__command',
-        status: 'VALID',
+        current: "__command",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsb' },
+          command: { name: "tsb" },
           toggle: {
             value: false,
-            arg: '',
-            status: 'VALID',
-            message: ''
+            arg: "",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsb toggle=false'
+        output: "Exec: tsb toggle=false"
       }
     },
     {
-      setup:    'tsb --toggle',
+      setup:    "tsb --toggle",
       check: {
-        input:  'tsb --toggle',
-        hints:              '',
-        markup: 'VVVVVVVVVVVV',
+        input:  "tsb --toggle",
+        hints:              "",
+        markup: "VVVVVVVVVVVV",
         cursor: 12,
-        current: 'toggle',
-        status: 'VALID',
+        current: "toggle",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
-        outputState: 'false:default',
+        outputState: "false:default",
         args: {
-          command: { name: 'tsb' },
+          command: { name: "tsb" },
           toggle: {
             value: true,
-            arg: ' --toggle',
-            status: 'VALID',
-            message: ''
+            arg: " --toggle",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsb toggle=true'
+        output: "Exec: tsb toggle=true"
       }
     }
   ]);
 };
 
-exports.testExecNumber = function(options) {
+exports.testExecNumber = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsu 10',
+      setup:    "tsu 10",
       check: {
-        input:  'tsu 10',
-        hints:        '',
-        markup: 'VVVVVV',
+        input:  "tsu 10",
+        hints:        "",
+        markup: "VVVVVV",
         cursor: 6,
-        current: 'num',
-        status: 'VALID',
+        current: "num",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsu' },
-          num: { value: 10, arg: ' 10', status: 'VALID', message: '' }
+          command: { name: "tsu" },
+          num: { value: 10, arg: " 10", status: "VALID", message: "" }
         }
       },
       exec: {
-        output: 'Exec: tsu num=10'
+        output: "Exec: tsu num=10"
       }
     },
     {
-      setup:    'tsu --num 10',
+      setup:    "tsu --num 10",
       check: {
-        input:  'tsu --num 10',
-        hints:              '',
-        markup: 'VVVVVVVVVVVV',
+        input:  "tsu --num 10",
+        hints:              "",
+        markup: "VVVVVVVVVVVV",
         cursor: 12,
-        current: 'num',
-        status: 'VALID',
+        current: "num",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsu' },
-          num: { value: 10, arg: ' --num 10', status: 'VALID', message: '' }
+          command: { name: "tsu" },
+          num: { value: 10, arg: " --num 10", status: "VALID", message: "" }
         }
       },
       exec: {
-        output: 'Exec: tsu num=10'
+        output: "Exec: tsu num=10"
       }
     }
   ]);
 };
 
-exports.testExecScript = function(options) {
+exports.testExecScript = function (options) {
   return helpers.audit(options, [
     {
       // Bug 704829 - Enable GCLI Javascript parameters
       // The answer to this should be 2
-      setup:    'tsj { 1 + 1 }',
+      setup:    "tsj { 1 + 1 }",
       check: {
-        input:  'tsj { 1 + 1 }',
-        hints:               '',
-        markup: 'VVVVVVVVVVVVV',
+        input:  "tsj { 1 + 1 }",
+        hints:               "",
+        markup: "VVVVVVVVVVVVV",
         cursor: 13,
-        current: 'javascript',
-        status: 'VALID',
+        current: "javascript",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsj' },
+          command: { name: "tsj" },
           javascript: {
-            arg: ' { 1 + 1 }',
-            status: 'VALID',
-            message: ''
+            arg: " { 1 + 1 }",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
-        output: 'Exec: tsj javascript=1 + 1'
+        output: "Exec: tsj javascript=1 + 1"
       }
     }
   ]);
 };
 
-exports.testExecNode = function(options) {
+exports.testExecNode = function (options) {
   return helpers.audit(options, [
     {
       skipIf: options.isRemote,
-      setup:    'tse :root',
+      setup:    "tse :root",
       check: {
-        input:  'tse :root',
-        hints:           ' [options]',
-        markup: 'VVVVVVVVV',
+        input:  "tse :root",
+        hints:           " [options]",
+        markup: "VVVVVVVVV",
         cursor: 9,
-        current: 'node',
-        status: 'VALID',
+        current: "node",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tse' },
+          command: { name: "tse" },
           node: {
-            arg: ' :root',
-            status: 'VALID',
-            message: ''
+            arg: " :root",
+            status: "VALID",
+            message: ""
           },
           nodes: {
-            arg: '',
-            status: 'VALID',
-            message: ''
+            arg: "",
+            status: "VALID",
+            message: ""
           },
           nodes2: {
-            arg: '',
-            status: 'VALID',
-            message: ''
+            arg: "",
+            status: "VALID",
+            message: ""
           }
         }
       },
       exec: {
         output: /^Exec: tse/
       },
-      post: function(output) {
-        assert.is(output.data.args.node, ':root', 'node should be :root');
-        assert.is(output.data.args.nodes, 'Error', 'nodes should be Error');
-        assert.is(output.data.args.nodes2, 'Error', 'nodes2 should be Error');
+      post: function (output) {
+        assert.is(output.data.args.node, ":root", "node should be :root");
+        assert.is(output.data.args.nodes, "Error", "nodes should be Error");
+        assert.is(output.data.args.nodes2, "Error", "nodes2 should be Error");
       }
     }
   ]);
 };
 
-exports.testExecSubCommand = function(options) {
+exports.testExecSubCommand = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsn dif fred',
+      setup:    "tsn dif fred",
       check: {
-        input:  'tsn dif fred',
-        hints:              '',
-        markup: 'VVVVVVVVVVVV',
+        input:  "tsn dif fred",
+        hints:              "",
+        markup: "VVVVVVVVVVVV",
         cursor: 12,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn dif' },
-          text: { value: 'fred', arg: ' fred', status: 'VALID', message: '' }
+          command: { name: "tsn dif" },
+          text: { value: "fred", arg: " fred", status: "VALID", message: "" }
         }
       },
       exec: {
-        output: 'Exec: tsnDif text=fred'
+        output: "Exec: tsnDif text=fred"
       }
     },
     {
-      setup:    'tsn exten fred',
+      setup:    "tsn exten fred",
       check: {
-        input:  'tsn exten fred',
-        hints:                '',
-        markup: 'VVVVVVVVVVVVVV',
+        input:  "tsn exten fred",
+        hints:                "",
+        markup: "VVVVVVVVVVVVVV",
         cursor: 14,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn exten' },
-          text: { value: 'fred', arg: ' fred', status: 'VALID', message: '' },
+          command: { name: "tsn exten" },
+          text: { value: "fred", arg: " fred", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tsnExten text=fred'
+        output: "Exec: tsnExten text=fred"
       }
     },
     {
-      setup:    'tsn extend fred',
+      setup:    "tsn extend fred",
       check: {
-        input:  'tsn extend fred',
-        hints:                 '',
-        markup: 'VVVVVVVVVVVVVVV',
+        input:  "tsn extend fred",
+        hints:                 "",
+        markup: "VVVVVVVVVVVVVVV",
         cursor: 15,
-        current: 'text',
-        status: 'VALID',
+        current: "text",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsn extend' },
-          text: { value: 'fred', arg: ' fred', status: 'VALID', message: '' },
+          command: { name: "tsn extend" },
+          text: { value: "fred", arg: " fred", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tsnExtend text=fred'
+        output: "Exec: tsnExtend text=fred"
       }
     }
   ]);
 };
 
-exports.testExecArray = function(options) {
+exports.testExecArray = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tselarr 1',
+      setup:    "tselarr 1",
       check: {
-        input:  'tselarr 1',
-        hints:           '',
-        markup: 'VVVVVVVVV',
+        input:  "tselarr 1",
+        hints:           "",
+        markup: "VVVVVVVVV",
         cursor: 9,
-        current: 'num',
-        status: 'VALID',
-        predictions: ['1'],
+        current: "num",
+        status: "VALID",
+        predictions: ["1"],
         unassigned: [ ],
-        outputState: 'false:default',
+        outputState: "false:default",
         args: {
-          command: { name: 'tselarr' },
-          num: { value: '1', arg: ' 1', status: 'VALID', message: '' },
-          arr: { /*value:,*/ arg: '{}', status: 'VALID', message: '' },
+          command: { name: "tselarr" },
+          num: { value: "1", arg: " 1", status: "VALID", message: "" },
+          arr: { /* value:,*/ arg: "{}", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tselarr num=1 arr='
+        output: "Exec: tselarr num=1 arr="
       }
     },
     {
-      setup:    'tselarr 1 a',
+      setup:    "tselarr 1 a",
       check: {
-        input:  'tselarr 1 a',
-        hints:             '',
-        markup: 'VVVVVVVVVVV',
+        input:  "tselarr 1 a",
+        hints:             "",
+        markup: "VVVVVVVVVVV",
         cursor: 11,
-        current: 'arr',
-        status: 'VALID',
+        current: "arr",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tselarr' },
-          num: { value: '1', arg: ' 1', status: 'VALID', message: '' },
-          arr: { /*value:a,*/ arg: '{ a}', status: 'VALID', message: '' },
+          command: { name: "tselarr" },
+          num: { value: "1", arg: " 1", status: "VALID", message: "" },
+          arr: { /* value:a,*/ arg: "{ a}", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tselarr num=1 arr=a'
+        output: "Exec: tselarr num=1 arr=a"
       }
     },
     {
-      setup:    'tselarr 1 a b',
+      setup:    "tselarr 1 a b",
       check: {
-        input:  'tselarr 1 a b',
-        hints:               '',
-        markup: 'VVVVVVVVVVVVV',
+        input:  "tselarr 1 a b",
+        hints:               "",
+        markup: "VVVVVVVVVVVVV",
         cursor: 13,
-        current: 'arr',
-        status: 'VALID',
+        current: "arr",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tselarr' },
-          num: { value: '1', arg: ' 1', status: 'VALID', message: '' },
-          arr: { /*value:a,b,*/ arg: '{ a, b}', status: 'VALID', message: '' },
+          command: { name: "tselarr" },
+          num: { value: "1", arg: " 1", status: "VALID", message: "" },
+          arr: { /* value:a,b,*/ arg: "{ a, b}", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tselarr num=1 arr=a b'
+        output: "Exec: tselarr num=1 arr=a b"
       }
     }
   ]);
 };
 
-exports.testExecMultiple = function(options) {
+exports.testExecMultiple = function (options) {
   return helpers.audit(options, [
     {
-      setup:    'tsm a 10 10',
+      setup:    "tsm a 10 10",
       check: {
-        input:  'tsm a 10 10',
-        hints:             '',
-        markup: 'VVVVVVVVVVV',
+        input:  "tsm a 10 10",
+        hints:             "",
+        markup: "VVVVVVVVVVV",
         cursor: 11,
-        current: 'num',
-        status: 'VALID',
+        current: "num",
+        status: "VALID",
         predictions: [ ],
         unassigned: [ ],
         args: {
-          command: { name: 'tsm' },
-          abc: { value: 'a', arg: ' a', status: 'VALID', message: '' },
-          txt: { value: '10', arg: ' 10', status: 'VALID', message: '' },
-          num: { value: 10, arg: ' 10', status: 'VALID', message: '' },
+          command: { name: "tsm" },
+          abc: { value: "a", arg: " a", status: "VALID", message: "" },
+          txt: { value: "10", arg: " 10", status: "VALID", message: "" },
+          num: { value: 10, arg: " 10", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tsm abc=a txt=10 num=10'
+        output: "Exec: tsm abc=a txt=10 num=10"
       }
     }
   ]);
 };
 
-exports.testExecDefaults = function(options) {
+exports.testExecDefaults = function (options) {
   return helpers.audit(options, [
     {
       // Bug 707009 - GCLI doesn't always fill in default parameters properly
-      setup:    'tsg aaa',
+      setup:    "tsg aaa",
       check: {
-        input:  'tsg aaa',
-        hints:         ' [options]',
-        markup: 'VVVVVVV',
+        input:  "tsg aaa",
+        hints:         " [options]",
+        markup: "VVVVVVV",
         cursor: 7,
-        current: 'solo',
-        status: 'VALID',
-        predictions: ['aaa'],
+        current: "solo",
+        status: "VALID",
+        predictions: ["aaa"],
         unassigned: [ ],
         args: {
-          command: { name: 'tsg' },
-          solo: { value: 'aaa', arg: ' aaa', status: 'VALID', message: '' },
-          txt1: { value: undefined, arg: '', status: 'VALID', message: '' },
-          bool: { value: false, arg: '', status: 'VALID', message: '' },
-          txt2: { value: undefined, arg: '', status: 'VALID', message: '' },
-          num: { value: undefined, arg: '', status: 'VALID', message: '' },
+          command: { name: "tsg" },
+          solo: { value: "aaa", arg: " aaa", status: "VALID", message: "" },
+          txt1: { value: undefined, arg: "", status: "VALID", message: "" },
+          bool: { value: false, arg: "", status: "VALID", message: "" },
+          txt2: { value: undefined, arg: "", status: "VALID", message: "" },
+          num: { value: undefined, arg: "", status: "VALID", message: "" },
         }
       },
       exec: {
-        output: 'Exec: tsg solo=aaa txt1= bool=false txt2=d num=42'
+        output: "Exec: tsg solo=aaa txt1= bool=false txt2=d num=42"
       }
     }
   ]);
 };
 
-exports.testNested = function(options) {
+exports.testNested = function (options) {
   var commands = options.requisition.system.commands;
   commands.add({
-    name: 'nestorama',
-    exec: function(args, context) {
-      return context.updateExec('tsb').then(function(tsbOutput) {
-        return context.updateExec('tsu 6').then(function(tsuOutput) {
+    name: "nestorama",
+    exec: function (args, context) {
+      return context.updateExec("tsb").then(function (tsbOutput) {
+        return context.updateExec("tsu 6").then(function (tsuOutput) {
           return JSON.stringify({
             tsb: tsbOutput.data,
             tsu: tsuOutput.data
           });
         });
       });
     }
   });
 
   return helpers.audit(options, [
     {
-      setup: 'nestorama',
+      setup: "nestorama",
       exec: {
         output:
-          '{' +
+          "{" +
             '"tsb":{' +
               '"name":"tsb",' +
               '"args":{"toggle":"false"}' +
-            '},' +
+            "}," +
             '"tsu":{' +
               '"name":"tsu",' +
               '"args":{"num":"6"}' +
-            '}' +
-          '}'
+            "}" +
+          "}"
       },
-      post: function() {
-        commands.remove('nestorama');
+      post: function () {
+        commands.remove("nestorama");
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_fail.js
+++ b/devtools/client/commandline/test/browser_gcli_fail.js
@@ -9,65 +9,65 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_fail.js");
 }
 
 // var helpers = require('./helpers');
 
-exports.testBasic = function(options) {
+exports.testBasic = function (options) {
   return helpers.audit(options, [
     {
-      setup: 'tsfail reject',
+      setup: "tsfail reject",
       exec: {
-        output: 'rejected promise',
-        type: 'error',
+        output: "rejected promise",
+        type: "error",
         error: true
       }
     },
     {
-      setup: 'tsfail rejecttyped',
+      setup: "tsfail rejecttyped",
       exec: {
-        output: '54',
-        type: 'number',
+        output: "54",
+        type: "number",
         error: true
       }
     },
     {
-      setup: 'tsfail throwerror',
+      setup: "tsfail throwerror",
       exec: {
         output: /thrown error$/,
-        type: 'error',
+        type: "error",
         error: true
       }
     },
     {
-      setup: 'tsfail throwstring',
+      setup: "tsfail throwstring",
       exec: {
-        output: 'thrown string',
-        type: 'error',
+        output: "thrown string",
+        type: "error",
         error: true
       }
     },
     {
-      setup: 'tsfail noerror',
+      setup: "tsfail noerror",
       exec: {
-        output: 'no error',
-        type: 'string',
+        output: "no error",
+        type: "string",
         error: false
       }
     }
   ]);
 };
--- a/devtools/client/commandline/test/browser_gcli_file.js
+++ b/devtools/client/commandline/test/browser_gcli_file.js
@@ -9,813 +9,813 @@
  *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
-'use strict';
+"use strict";
 
 // THIS FILE IS GENERATED FROM SOURCE IN THE GCLI PROJECT
 // PLEASE TALK TO SOMEONE IN DEVELOPER TOOLS BEFORE EDITING IT
 
 const exports = {};
 
 function test() {
   helpers.runTestModule(exports, "browser_gcli_file.js");
 }
 
 // var helpers = require('./helpers');
 
 var local = false;
 
-exports.testBasic = function(options) {
+exports.testBasic = function (options) {
   return helpers.audit(options, [
     {
       skipRemainingIf: options.isFirefox, // No file implementation in Firefox
-      setup:    'tsfile open /',
+      setup:    "tsfile open /",
       check: {
-        input:  'tsfile open /',
-        hints:               '',
-        markup: 'VVVVVVVVVVVVI',
+        input:  "tsfile open /",
+        hints:               "",
+        markup: "VVVVVVVVVVVVI",
         cursor: 13,
-        current: 'p1',
-        status: 'ERROR',
-        message: '\'/\' is not a file',
+        current: "p1",
+        status: "ERROR",
+        message: "'/' is not a file",
         args: {
-          command: { name: 'tsfile open' },
+          command: { name: "tsfile open" },
           p1: {
             value: undefined,
-            arg: ' /',
-            status: 'INCOMPLETE',
-            message: '\'/\' is not a file'
+            arg: " /",
+            status: "INCOMPLETE",
+            message: "'/' is not a file"
           }
         }
       }
     },
     {
-      setup:    'tsfile open /zxcv',
+      setup:    "tsfile open /zxcv",
       check: {
-        input:  'tsfile open /zxcv',
+        input:  "tsfile open /zxcv",
         // hints:                   ' -> /etc/',
-        markup: 'VVVVVVVVVVVVIIIII',
+        markup: "VVVVVVVVVVVVIIIII",
         cursor: 17,
-        current: 'p1',
-        status: 'ERROR',
-        message: '\'/zxcv\' doesn\'t exist',
+        current: "p1",
+        status: "ERROR",
+        message: "'/zxcv' doesn't exist",
         args: {
-          command: { name: 'tsfile open' },
+          command: { name: "tsfile open" },
           p1: {
             value: undefined,
-            arg: ' /zxcv',
-            status: 'INCOMPLETE',
-            message: '\'/zxcv\' doesn\'t exist'
+            arg: " /zxcv",
+            status: "INCOMPLETE",
+            message: "'/zxcv' doesn't exist"
           }
         }
       }
     },
     {
       skipIf: !local,
-      setup:    'tsfile open /mach_kernel',
+      setup:    "tsfile open /mach_kernel",
       check: {
-        input:  'tsfile open /mach_kernel',
-        hints:                          '',
-        markup: 'VVVVVVVVVVVVVVVVVVVVVVVV',
+        input:  "tsfile open /mach_kernel",
+        hints:                          "",
+        markup: "VVVVVVVVVVVVVVVVVVVVVVVV",
         cursor: 24,
-        current: 'p1',
-        status: 'VALID',
-        message: '',
+        current: "p1",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsfile open' },
+          command: { name: "tsfile open" },
           p1: {
-            value: '/mach_kernel',
-            arg: ' /mach_kernel',
-            status: 'VALID',
-            message: ''
-           }
-        }
-      }
-    },
-    {
-      setup:    'tsfile saveas /',
-      check: {
-        input:  'tsfile saveas /',
-        hints:                 '',
-        markup: 'VVVVVVVVVVVVVVI',
-        cursor: 15,
-        current: 'p1',
-        status: 'ERROR',
-        message: '\'/\' already exists',
-        args: {
-          command: { name: 'tsfile saveas' },
-          p1: {
-            value: undefined,
-            arg: ' /',
-            status: 'INCOMPLETE',
-            message: '\'/\' already exists'
+            value: "/mach_kernel",
+            arg: " /mach_kernel",
+            status: "VALID",
+            message: ""
           }
         }
       }
     },
     {
-      setup:    'tsfile saveas /zxcv',
+      setup:    "tsfile saveas /",
       check: {
-        input:  'tsfile saveas /zxcv',
+        input:  "tsfile saveas /",
+        hints:                 "",
+        markup: "VVVVVVVVVVVVVVI",
+        cursor: 15,
+        current: "p1",
+        status: "ERROR",
+        message: "'/' already exists",
+        args: {
+          command: { name: "tsfile saveas" },
+          p1: {
+            value: undefined,
+            arg: " /",
+            status: "INCOMPLETE",
+            message: "'/' already exists"
+          }
+        }
+      }
+    },
+    {
+      setup:    "tsfile saveas /zxcv",
+      check: {
+        input:  "tsfile saveas /zxcv",
         // hints:                     ' -> /etc/',
-        markup: 'VVVVVVVVVVVVVVVVVVV',
+        markup: "VVVVVVVVVVVVVVVVVVV",
         cursor: 19,
-        current: 'p1',
-        status: 'VALID',
-        message: '',
+        current: "p1",
+        status: "VALID",
+        message: "",
         args: {
-          command: { name: 'tsfile saveas' },
+          command: { name: "tsfile saveas" },
           p1: {
-            value: '/zxcv',
-            arg: ' /zxcv',
-            status: 'VALID',
-            message: ''
+            value: "/zxcv",
+            arg: " /zxcv",
+            status: "VALID",
+            message: ""
           }
         }
       }
     },
     {
       skipIf: !local,
-      setup:    'tsfile saveas /mach_kernel',
+      setup:    "tsfile saveas /mach_kernel",
       check: {
-        input:  'tsfile saveas /mach_kernel',
-        hints:                            '',
-        markup: 'VVVVVVVVVVVVVVIIIIIIIIIIII',
+        input:  "tsfile saveas /mach_kernel",
+        hints:                            "",
+        markup: "VVVVVVVVVVVVVVIIIIIIIIIIII",
         cursor: 26,
-        current: 'p1',
-        status: 'ERROR',
-        message: '\'/mach_kernel\' already exists',
+        current: "p1",
+        status: "ERROR",
+        message: "'/mach_kernel' already exists",
         args: {
-          command: { name: 'tsfile saveas' },
+          command: { name: "tsfile saveas" },
           p1: {
             value: undefined,
-            arg: ' /mach_kernel',
-            status: 'INCOMPLETE',
-            message: '\'/mach_kernel\' already exists'
+            arg: " /mach_kernel",
+            status: "INCOMPLETE",
+