Bug 1453383 - Automatically fix ESLint issues in devtools/client/{webaudioeditor,webide}/. r=jdescottes
authorMark Banner <standard8@mozilla.com>
Wed, 11 Apr 2018 15:43:09 +0100
changeset 413145 61c06428ee965fd976ecbfa810065019c3076b55
parent 413144 3d4f1ba7880cfee0037acfd5e55f769f485f1657
child 413146 166b59bcb4ce7d8165694eea8456de4da65744b6
push id33836
push useraiakab@mozilla.com
push dateFri, 13 Apr 2018 16:00:47 +0000
treeherdermozilla-central@d4974439aa6b [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersjdescottes
bugs1453383
milestone61.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
Bug 1453383 - Automatically fix ESLint issues in devtools/client/{webaudioeditor,webide}/. r=jdescottes MozReview-Commit-ID: 8QPtZi0oSOO
devtools/client/webaudioeditor/controller.js
devtools/client/webaudioeditor/includes.js
devtools/client/webaudioeditor/models.js
devtools/client/webaudioeditor/panel.js
devtools/client/webaudioeditor/test/browser_audionode-actor-add-automation-event.js
devtools/client/webaudioeditor/test/browser_audionode-actor-bypass.js
devtools/client/webaudioeditor/test/browser_audionode-actor-bypassable.js
devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js
devtools/client/webaudioeditor/test/browser_audionode-actor-connectparam.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-01.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-02.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-param-flags.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js
devtools/client/webaudioeditor/test/browser_audionode-actor-get-set-param.js
devtools/client/webaudioeditor/test/browser_audionode-actor-source.js
devtools/client/webaudioeditor/test/browser_audionode-actor-type.js
devtools/client/webaudioeditor/test/browser_callwatcher-01.js
devtools/client/webaudioeditor/test/browser_callwatcher-02.js
devtools/client/webaudioeditor/test/browser_wa_automation-view-01.js
devtools/client/webaudioeditor/test/browser_wa_automation-view-02.js
devtools/client/webaudioeditor/test/browser_wa_controller-01.js
devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js
devtools/client/webaudioeditor/test/browser_wa_first-run.js
devtools/client/webaudioeditor/test/browser_wa_graph-click.js
devtools/client/webaudioeditor/test/browser_wa_graph-markers.js
devtools/client/webaudioeditor/test/browser_wa_graph-render-01.js
devtools/client/webaudioeditor/test/browser_wa_graph-render-02.js
devtools/client/webaudioeditor/test/browser_wa_graph-render-03.js
devtools/client/webaudioeditor/test/browser_wa_graph-render-04.js
devtools/client/webaudioeditor/test/browser_wa_graph-render-05.js
devtools/client/webaudioeditor/test/browser_wa_graph-render-06.js
devtools/client/webaudioeditor/test/browser_wa_graph-selected.js
devtools/client/webaudioeditor/test/browser_wa_graph-zoom.js
devtools/client/webaudioeditor/test/browser_wa_inspector-bypass-01.js
devtools/client/webaudioeditor/test/browser_wa_inspector-toggle.js
devtools/client/webaudioeditor/test/browser_wa_inspector-width.js
devtools/client/webaudioeditor/test/browser_wa_inspector.js
devtools/client/webaudioeditor/test/browser_wa_navigate.js
devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-01.js
devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-02.js
devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js
devtools/client/webaudioeditor/test/browser_wa_properties-view-params-objects.js
devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js
devtools/client/webaudioeditor/test/browser_wa_properties-view.js
devtools/client/webaudioeditor/test/browser_wa_reset-01.js
devtools/client/webaudioeditor/test/browser_wa_reset-02.js
devtools/client/webaudioeditor/test/browser_wa_reset-03.js
devtools/client/webaudioeditor/test/browser_wa_reset-04.js
devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js
devtools/client/webaudioeditor/test/browser_webaudio-actor-connect-param.js
devtools/client/webaudioeditor/test/browser_webaudio-actor-destroy-node.js
devtools/client/webaudioeditor/test/browser_webaudio-actor-simple.js
devtools/client/webaudioeditor/test/doc_buffer-and-array.html
devtools/client/webaudioeditor/test/doc_bug_1112378.html
devtools/client/webaudioeditor/test/doc_destroy-nodes.html
devtools/client/webaudioeditor/test/head.js
devtools/client/webaudioeditor/views/automation.js
devtools/client/webaudioeditor/views/context.js
devtools/client/webaudioeditor/views/inspector.js
devtools/client/webaudioeditor/views/properties.js
devtools/client/webaudioeditor/views/utils.js
devtools/client/webide/content/addons.js
devtools/client/webide/content/details.js
devtools/client/webide/content/devicepreferences.js
devtools/client/webide/content/newapp.js
devtools/client/webide/content/prefs.js
devtools/client/webide/content/project-listing.js
devtools/client/webide/content/project-panel.js
devtools/client/webide/content/runtime-listing.js
devtools/client/webide/content/runtime-panel.js
devtools/client/webide/content/runtimedetails.js
devtools/client/webide/content/webide.js
devtools/client/webide/content/wifi-auth.js
devtools/client/webide/modules/addons.js
devtools/client/webide/modules/app-manager.js
devtools/client/webide/modules/app-projects.js
devtools/client/webide/modules/app-validator.js
devtools/client/webide/modules/config-view.js
devtools/client/webide/modules/project-list.js
devtools/client/webide/modules/runtime-list.js
devtools/client/webide/modules/runtimes.js
devtools/client/webide/modules/tab-store.js
devtools/client/webide/test/browser_tabs.js
devtools/client/webide/test/device_front_shared.js
devtools/client/webide/test/head.js
devtools/client/webide/test/test_addons.html
devtools/client/webide/test/test_app_validator.html
devtools/client/webide/test/test_autoconnect_runtime.html
devtools/client/webide/test/test_autoselect_project.html
devtools/client/webide/test/test_basic.html
devtools/client/webide/test/test_device_preferences.html
devtools/client/webide/test/test_device_runtime.html
devtools/client/webide/test/test_duplicate_import.html
devtools/client/webide/test/test_fullscreenToolbox.html
devtools/client/webide/test/test_import.html
devtools/client/webide/test/test_manifestUpdate.html
devtools/client/webide/test/test_newapp.html
devtools/client/webide/test/test_runtime.html
devtools/client/webide/test/test_toolbox.html
devtools/client/webide/test/test_zoom.html
--- a/devtools/client/webaudioeditor/controller.js
+++ b/devtools/client/webaudioeditor/controller.js
@@ -78,44 +78,44 @@ var WebAudioEditorController = {
     // early request to ensure the CallWatcherActor is running and watching for new window
     // globals.
     gFront.setup({ reload: false });
   },
 
   /**
    * Remove events emitted by the current tab target.
    */
-  destroy: function () {
+  destroy: function() {
     gTarget.off("will-navigate", this._onTabWillNavigate);
     gFront.off("start-context", this._onStartContext);
     gFront.off("create-node", this._onCreateNode);
     gFront.off("connect-node", this._onConnectNode);
     gFront.off("connect-param", this._onConnectParam);
     gFront.off("disconnect-node", this._onDisconnectNode);
     gFront.off("change-param", this._onChangeParam);
     gFront.off("destroy-node", this._onDestroyNode);
     this._prefObserver.off("devtools.theme", this._onThemeChange);
     this._prefObserver.destroy();
   },
 
   /**
    * Called when page is reloaded to show the reload notice and waiting
    * for an audio context notice.
    */
-  reset: function () {
+  reset: function() {
     $("#content").hidden = true;
     ContextView.resetUI();
     InspectorView.resetUI();
     PropertiesView.resetUI();
   },
 
   // Since node events (create, disconnect, connect) are all async,
   // we have to make sure to wait that the node has finished creating
   // before performing an operation on it.
-  getNode: async function (nodeActor) {
+  getNode: async function(nodeActor) {
     let id = nodeActor.actorID;
     let node = gAudioNodes.get(id);
 
     if (!node) {
       let { resolve, promise } = defer();
       gAudioNodes.on("add", function createNodeListener(createdNode) {
         if (createdNode.id === id) {
           gAudioNodes.off("add", createNodeListener);
@@ -127,17 +127,17 @@ var WebAudioEditorController = {
     return node;
   },
 
   /**
    * Fired when the devtools theme changes (light, dark, etc.)
    * so that the graph can update marker styling, as that
    * cannot currently be done with CSS.
    */
-  _onThemeChange: function () {
+  _onThemeChange: function() {
     let newValue = Services.prefs.getCharPref("devtools.theme");
     window.emit(EVENTS.THEME_CHANGE, newValue);
   },
 
   /**
    * Called for each location change in the debugged tab.
    */
   _onTabWillNavigate: function({isFrameSwitching}) {
@@ -162,36 +162,36 @@ var WebAudioEditorController = {
 
     window.emit(EVENTS.UI_RESET);
   },
 
   /**
    * Called after the first audio node is created in an audio context,
    * signaling that the audio context is being used.
    */
-  _onStartContext: function () {
+  _onStartContext: function() {
     $("#reload-notice").hidden = true;
     $("#waiting-notice").hidden = true;
     $("#content").hidden = false;
     window.emit(EVENTS.START_CONTEXT);
   },
 
   /**
    * Called when a new node is created. Creates an `AudioNodeView` instance
    * for tracking throughout the editor.
    */
-  _onCreateNode: function (nodeActor) {
+  _onCreateNode: function(nodeActor) {
     gAudioNodes.add(nodeActor);
   },
 
   /**
    * Called on `destroy-node` when an AudioNode is GC'd. Removes
    * from the AudioNode array and fires an event indicating the removal.
    */
-  _onDestroyNode: function (nodeActor) {
+  _onDestroyNode: function(nodeActor) {
     gAudioNodes.remove(gAudioNodes.get(nodeActor.actorID));
   },
 
   /**
    * Called when a node is connected to another node.
    */
   async _onConnectNode({ source: sourceActor, dest: destActor }) {
     let source = await WebAudioEditorController.getNode(sourceActor);
--- a/devtools/client/webaudioeditor/includes.js
+++ b/devtools/client/webaudioeditor/includes.js
@@ -79,18 +79,22 @@ var gToolbox, gTarget, gFront;
 /**
  * Convenient way of emitting events from the panel window.
  */
 EventEmitter.decorate(this);
 
 /**
  * DOM query helper.
  */
-function $(selector, target = document) { return target.querySelector(selector); }
-function $$(selector, target = document) { return target.querySelectorAll(selector); }
+function $(selector, target = document) {
+  return target.querySelector(selector);
+}
+function $$(selector, target = document) {
+  return target.querySelectorAll(selector);
+}
 
 /**
  * Takes an iterable collection, and a hash. Return the first
  * object in the collection that matches the values in the hash.
  * From Backbone.Collection#findWhere
  * http://backbonejs.org/#Collection-findWhere
  */
 function findWhere(collection, attrs) {
--- a/devtools/client/webaudioeditor/models.js
+++ b/devtools/client/webaudioeditor/models.js
@@ -136,17 +136,16 @@ class AudioNodeModel extends EventEmitte
     }
   }
 
   toString() {
     return "[object AudioNodeModel]";
   }
 }
 
-
 /**
  * Constructor for a Collection of `AudioNodeModel` models.
  *
  * Events:
  * - `add`: node
  * - `remove`: node
  * - `connect`: node, destinationNode, parameter
  * - `disconnect`: node
--- a/devtools/client/webaudioeditor/panel.js
+++ b/devtools/client/webaudioeditor/panel.js
@@ -15,17 +15,17 @@ function WebAudioEditorPanel(iframeWindo
   this._destroyer = null;
 
   EventEmitter.decorate(this);
 }
 
 exports.WebAudioEditorPanel = WebAudioEditorPanel;
 
 WebAudioEditorPanel.prototype = {
-  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);
     }
@@ -50,17 +50,17 @@ WebAudioEditorPanel.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.shutdownWebAudioEditor().then(() => {
       // Destroy front to ensure packet handler is removed from client
       this.panelWin.gFront.destroy();
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-add-automation-event.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-add-automation-event.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#addAutomationEvent();
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, [destNode, oscNode, gainNode]] = await Promise.all([
     front.setup({ reload: true }),
     get3(front, "create-node")
   ]);
   let count = 0;
   let counter = () => count++;
   front.on("automation-event", counter);
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-bypass.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-bypass.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#bypass(), AudioNode#isBypassed()
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, [destNode, oscNode, gainNode]] = await Promise.all([
     front.setup({ reload: true }),
     get3(front, "create-node")
   ]);
 
   is((await gainNode.isBypassed()), false, "Nodes start off unbypassed.");
 
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-bypassable.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-bypassable.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#bypassable
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_NODES_URL);
   let [_, nodes] = await Promise.all([
     front.setup({ reload: true }),
     getN(front, "create-node", 14)
   ]);
 
   let actualBypassability = nodes.map(node => node.bypassable);
   let expectedBypassability = [
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-connectnode-disconnect.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that AudioNodeActor#connectNode() and AudioNodeActor#disconnect() work.
  * Uses the editor front as the actors do not retain connect state.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   let events = Promise.all([
     get3(gFront, "create-node"),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-connectparam.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-connectparam.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that AudioNodeActor#connectParam() work.
  * Uses the editor front as the actors do not retain connect state.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   let events = Promise.all([
     get3(gFront, "create-node"),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-01.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-01.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#addAutomationEvent() checking automation values, also using
  * a curve as the last event to check duration spread.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, [destNode, oscNode, gainNode]] = await Promise.all([
     front.setup({ reload: true }),
     get3(front, "create-node")
   ]);
 
   let t0 = 0, t1 = 0.1, t2 = 0.2, t3 = 0.3, t4 = 0.4, t5 = 0.6, t6 = 0.7, t7 = 1;
   let curve = [-1, 0, 1];
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-02.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-02.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#addAutomationEvent() when automation series ends with
  * `setTargetAtTime`, which approaches its target to infinity.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, [destNode, oscNode, gainNode]] = await Promise.all([
     front.setup({ reload: true }),
     get3(front, "create-node")
   ]);
 
   await oscNode.addAutomationEvent("frequency", "setValueAtTime", [300, 0.1]);
   await oscNode.addAutomationEvent("frequency", "linearRampToValueAtTime", [500, 0.4]);
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-automation-data-03.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test that `cancelScheduledEvents` clears out events on and after
  * its argument.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, [destNode, oscNode, gainNode]] = await Promise.all([
     front.setup({ reload: true }),
     get3(front, "create-node")
   ]);
 
   await oscNode.addAutomationEvent("frequency", "setValueAtTime", [300, 0]);
   await oscNode.addAutomationEvent("frequency", "linearRampToValueAtTime", [500, 0.9]);
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-param-flags.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-param-flags.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#getParamFlags()
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_NODES_URL);
   let [_, nodes] = await Promise.all([
     front.setup({ reload: true }),
     getN(front, "create-node", 15)
   ]);
 
   let allNodeParams = await Promise.all(nodes.map(node => node.getParams()));
   let nodeTypes = [
@@ -28,20 +28,18 @@ add_task(async function () {
     let params = allNodeParams[i];
 
     for (let {param, value, flags} of params) {
       let testFlags = await nodes[i].getParamFlags(param);
       ok(typeof testFlags === "object", type + " has flags from #getParamFlags(" + param + ")");
 
       if (param === "buffer") {
         is(flags.Buffer, true, "`buffer` params have Buffer flag");
-      }
-      else if (param === "bufferSize" || param === "frequencyBinCount") {
+      } else if (param === "bufferSize" || param === "frequencyBinCount") {
         is(flags.readonly, true, param + " is readonly");
-      }
-      else if (param === "curve") {
-        is(flags["Float32Array"], true, "`curve` param has Float32Array flag");
+      } else if (param === "curve") {
+        is(flags.Float32Array, true, "`curve` param has Float32Array flag");
       }
     }
   }
 
   await removeTab(target.tab);
 });
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-01.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#getParams()
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_NODES_URL);
   let [_, nodes] = await Promise.all([
     front.setup({ reload: true }),
     getN(front, "create-node", 15)
   ]);
 
   await loadFrameScriptUtils();
 
@@ -30,20 +30,18 @@ add_task(async function () {
 
     params.forEach(({param, value, flags}) => {
       ok(param in defaults[i], "expected parameter for " + type);
 
       ok(typeof flags === "object", type + " has a flags object");
 
       if (param === "buffer") {
         is(flags.Buffer, true, "`buffer` params have Buffer flag");
-      }
-      else if (param === "bufferSize" || param === "frequencyBinCount") {
+      } else if (param === "bufferSize" || param === "frequencyBinCount") {
         is(flags.readonly, true, param + " is readonly");
-      }
-      else if (param === "curve") {
-        is(flags["Float32Array"], true, "`curve` param has Float32Array flag");
+      } else if (param === "curve") {
+        is(flags.Float32Array, true, "`curve` param has Float32Array flag");
       }
     });
   });
 
   await removeTab(target.tab);
 });
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-params-02.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that default properties are returned with the correct type
  * from the AudioNode actors.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_NODES_URL);
   let [_, nodes] = await Promise.all([
     front.setup({ reload: true }),
     getN(front, "create-node", 15)
   ]);
 
   await loadFrameScriptUtils();
 
@@ -34,18 +34,17 @@ add_task(async function () {
   await removeTab(target.tab);
 });
 
 function compare(actual, expected, type) {
   actual.forEach(({ value, param }) => {
     value = getGripValue(value);
     if (typeof expected[param] === "function") {
       ok(expected[param](value), type + " has a passing value for " + param);
-    }
-    else {
+    } else {
       is(value, expected[param], type + " has correct default value and type for " + param);
     }
   });
 
   info(Object.keys(expected).join(",") + " - " + JSON.stringify(expected));
 
   is(actual.length, Object.keys(expected).length,
     type + " has correct amount of properties.");
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-get-set-param.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-get-set-param.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#getParam() / AudioNode#setParam()
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, [destNode, oscNode, gainNode]] = await Promise.all([
     front.setup({ reload: true }),
     get3(front, "create-node")
   ]);
 
   let freq = await oscNode.getParam("frequency");
   info(typeof freq);
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-source.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-source.js
@@ -1,27 +1,28 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#source
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_NODES_URL);
   let [_, nodes] = await Promise.all([
     front.setup({ reload: true }),
     getN(front, "create-node", 14)
   ]);
 
   let actualTypes = nodes.map(node => node.type);
   let isSourceResult = nodes.map(node => node.source);
 
   actualTypes.forEach((type, i) => {
     let shouldBeSource = type === "AudioBufferSourceNode" || type === "OscillatorNode";
-    if (shouldBeSource)
+    if (shouldBeSource) {
       is(isSourceResult[i], true, type + "'s `source` is `true`");
-    else
+    } else {
       is(isSourceResult[i], false, type + "'s `source` is `false`");
+    }
   });
 
   await removeTab(target.tab);
 });
--- a/devtools/client/webaudioeditor/test/browser_audionode-actor-type.js
+++ b/devtools/client/webaudioeditor/test/browser_audionode-actor-type.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test AudioNode#type
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_NODES_URL);
   let [_, nodes] = await Promise.all([
     front.setup({ reload: true }),
     getN(front, "create-node", 14)
   ]);
 
   let actualTypes = nodes.map(node => node.type);
   let expectedTypes = [
--- a/devtools/client/webaudioeditor/test/browser_callwatcher-01.js
+++ b/devtools/client/webaudioeditor/test/browser_callwatcher-01.js
@@ -5,17 +5,17 @@
  * Bug 1130901
  * Tests to ensure that calling call/apply on methods wrapped
  * via CallWatcher do not throw a security permissions error:
  * "Error: Permission denied to access property 'call'"
  */
 
 const BUG_1130901_URL = EXAMPLE_URL + "doc_bug_1130901.html";
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(BUG_1130901_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   let rendered = waitForGraphRendered(panelWin, 3, 0);
   reload(target);
   await rendered;
 
--- a/devtools/client/webaudioeditor/test/browser_callwatcher-02.js
+++ b/devtools/client/webaudioeditor/test/browser_callwatcher-02.js
@@ -4,17 +4,17 @@
 /**
  * Bug 1112378
  * Tests to ensure that errors called on wrapped functions via call-watcher
  * correctly looks like the error comes from the content, not from within the devtools.
  */
 
 const BUG_1112378_URL = EXAMPLE_URL + "doc_bug_1112378.html";
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(BUG_1112378_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   loadFrameScriptUtils();
 
   let rendered = waitForGraphRendered(panelWin, 2, 0);
   reload(target);
--- a/devtools/client/webaudioeditor/test/browser_wa_automation-view-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_automation-view-01.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that automation view shows the correct view depending on if events
  * or params exist.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(AUTOMATION_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     get3(gFront, "create-node"),
--- a/devtools/client/webaudioeditor/test/browser_wa_automation-view-02.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_automation-view-02.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that automation view selects the first parameter by default and
  * switching between AudioParam rerenders the graph.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(AUTOMATION_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, AutomationView } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     get3(gFront, "create-node"),
--- a/devtools/client/webaudioeditor/test/browser_wa_controller-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_controller-01.js
@@ -4,17 +4,17 @@
 /**
  * Bug 1125817
  * Tests to ensure that disconnecting a node immediately
  * after creating it does not fail.
  */
 
 const BUG_1125817_URL = EXAMPLE_URL + "doc_bug_1125817.html";
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(BUG_1125817_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   let events = Promise.all([
     once(gAudioNodes, "add", 2),
     once(gAudioNodes, "disconnect"),
     waitForGraphRendered(panelWin, 2, 0)
--- a/devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_destroy-node-01.js
@@ -4,17 +4,17 @@
 /**
  * Tests that the destruction node event is fired and that the nodes are no
  * longer stored internally in the tool, that the graph is updated properly, and
  * that selecting a soon-to-be dead node clears the inspector.
  *
  * All done in one test since this test takes a few seconds to clear GC.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(DESTROY_NODES_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, gAudioNodes } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     getNSpread(gAudioNodes, "add", 13),
--- a/devtools/client/webaudioeditor/test/browser_wa_first-run.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_first-run.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that the reloading/onContentLoaded hooks work.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { gFront, $ } = panel.panelWin;
 
   is($("#reload-notice").hidden, false,
     "The 'reload this page' notice should initially be visible.");
   is($("#waiting-notice").hidden, true,
     "The 'waiting for an audio context' notice should initially be hidden.");
   is($("#content").hidden, true,
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-click.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-click.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that the clicking on a node in the GraphView opens and sets
  * the correct node in the InspectorView
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(COMPLEX_CONTEXT_URL);
   let panelWin = panel.panelWin;
   let { gFront, $, $$, InspectorView } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     getN(gFront, "create-node", 8),
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-markers.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-markers.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that the SVG marker styling is updated when devtools theme changes.
  */
 
 const { setTheme } = require("devtools/client/shared/theme");
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, MARKER_STYLING } = panelWin;
 
   let currentTheme = Services.prefs.getCharPref("devtools.theme");
 
   ok(MARKER_STYLING.light, "Marker styling exists for light theme.");
   ok(MARKER_STYLING.dark, "Marker styling exists for dark theme.");
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-render-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-render-01.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that SVG nodes and edges were created for the Graph View.
  */
 
 var connectCount = 0;
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   let started = once(gFront, "start-context");
 
   gAudioNodes.on("connect", onConnectNode);
 
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-render-02.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-render-02.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests more edge rendering for complex graphs.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(COMPLEX_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$ } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     getN(gFront, "create-node", 8),
@@ -18,17 +18,16 @@ add_task(async function () {
   ]);
   reload(target);
   let [actors] = await events;
   let nodeIDs = actors.map(actor => actor.actorID);
 
   let types = ["AudioDestinationNode", "OscillatorNode", "GainNode", "ScriptProcessorNode",
                "OscillatorNode", "GainNode", "AudioBufferSourceNode", "BiquadFilterNode"];
 
-
   types.forEach((type, i) => {
     ok(findGraphNode(panelWin, nodeIDs[i]).classList.contains("type-" + type), "found " + type + " with class");
   });
 
   let edges = [
     [1, 2, "osc1 -> gain1"],
     [1, 3, "osc1 -> proc"],
     [2, 0, "gain1 -> dest"],
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-render-03.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-render-03.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests to ensure that selected nodes stay selected on graph redraw.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS } = panelWin;
 
   let events = Promise.all([
     getN(gFront, "create-node", 3),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-render-04.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-render-04.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests audio param connection rendering.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(CONNECT_MULTI_PARAM_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     getN(gFront, "create-node", 5),
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-render-05.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-render-05.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests to ensure that param connections trigger graph redraws
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS } = panelWin;
 
   let events = Promise.all([
     getN(gFront, "create-node", 3),
     waitForGraphRendered(panelWin, 3, 2, 0)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-render-06.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-render-06.js
@@ -2,17 +2,17 @@
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests to ensure that param connections trigger graph redraws
  */
 
 const BUG_1141261_URL = EXAMPLE_URL + "doc_bug_1141261.html";
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(BUG_1141261_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS } = panelWin;
 
   let events = Promise.all([
     getN(gFront, "create-node", 3),
     waitForGraphRendered(panelWin, 3, 1, 0)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-selected.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-selected.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that SVG nodes and edges were created for the Graph View.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS } = panelWin;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
     get3(gFront, "create-node"),
--- a/devtools/client/webaudioeditor/test/browser_wa_graph-zoom.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_graph-zoom.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that the graph's scale and position is reset on a page reload.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, ContextView } = panelWin;
 
   let started = once(gFront, "start-context");
 
   await Promise.all([
     waitForGraphRendered(panelWin, 3, 2),
--- a/devtools/client/webaudioeditor/test/browser_wa_inspector-bypass-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_inspector-bypass-01.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that nodes are correctly bypassed when bypassing.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, gAudioNodes } = panelWin;
 
   let events = Promise.all([
     get3(gFront, "create-node"),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_inspector-toggle.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_inspector-toggle.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that the inspector toggle button shows and hides
  * the inspector panel as intended.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, InspectorView } = panelWin;
   let gVars = InspectorView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
--- a/devtools/client/webaudioeditor/test/browser_wa_inspector-width.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_inspector-width.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test that the WebAudioInspector's Width is saved as
  * a preference
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, InspectorView } = panelWin;
   let gVars = InspectorView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
--- a/devtools/client/webaudioeditor/test/browser_wa_inspector.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_inspector.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that inspector view opens on graph node click, and
  * loads the correct node inside the inspector.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, InspectorView } = panelWin;
   let gVars = InspectorView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
--- a/devtools/client/webaudioeditor/test/browser_wa_navigate.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_navigate.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests naviating from a page to another will repopulate
  * the audio graph if both pages have an AudioContext.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $ } = panelWin;
 
   let events = Promise.all([
     get3(gFront, "create-node"),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-01.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that properties are updated when modifying the VariablesView.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
   let gVars = PropertiesView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
@@ -51,15 +51,15 @@ add_task(async function () {
   await setAndCheck(0, "gain", "0.005", 0.005, "sets number as number");
   await setAndCheck(0, "gain", "0.1", 0.1, "sets float as float");
   await setAndCheck(0, "gain", ".2", 0.2, "sets float without leading zero as float");
 
   await teardown(target);
 });
 
 function setAndCheckVariable(panelWin, gVars) {
-  return async function (varNum, prop, value, expected, desc) {
+  return async function(varNum, prop, value, expected, desc) {
     await modifyVariableView(panelWin, gVars, varNum, prop, value);
     var props = {};
     props[prop] = expected;
     checkVariableView(gVars, varNum, props, desc);
   };
 }
--- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-02.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-edit-02.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that properties are not updated when modifying the VariablesView.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(COMPLEX_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
   let gVars = PropertiesView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
--- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-media-nodes.js
@@ -10,32 +10,33 @@ var MEDIA_PERMISSION = "media.navigator.
 
 function waitForDeviceClosed() {
   info("Checking that getUserMedia streams are no longer in use.");
 
   let temp = {};
   ChromeUtils.import("resource:///modules/webrtcUI.jsm", temp);
   let webrtcUI = temp.webrtcUI;
 
-  if (!webrtcUI.showGlobalIndicator)
+  if (!webrtcUI.showGlobalIndicator) {
     return Promise.resolve();
+  }
 
   return new Promise((resolve, reject) => {
     const message = "webrtc:UpdateGlobalIndicators";
     Services.ppmm.addMessageListener(message, function listener(aMessage) {
       info("Received " + message + " message");
       if (!aMessage.data.showGlobalIndicator) {
         Services.ppmm.removeMessageListener(message, listener);
         resolve();
       }
     });
   });
 }
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(MEDIA_NODES_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
   let gVars = PropertiesView._propsView;
 
   // Auto enable getUserMedia
   let mediaPermissionPref = Services.prefs.getBoolPref(MEDIA_PERMISSION);
   Services.prefs.setBoolPref(MEDIA_PERMISSION, true);
--- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-params-objects.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-params-objects.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that params view correctly displays non-primitive properties
  * like AudioBuffer and Float32Array in properties of AudioNodes.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(BUFFER_AND_ARRAY_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
   let gVars = PropertiesView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
--- a/devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view-params.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that params view correctly displays all properties for nodes
  * correctly, with default values and correct types.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_NODES_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
   let gVars = PropertiesView._propsView;
 
   let started = once(gFront, "start-context");
 
   await loadFrameScriptUtils();
--- a/devtools/client/webaudioeditor/test/browser_wa_properties-view.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_properties-view.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that params view shows params when they exist, and are hidden otherwise.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, $$, EVENTS, PropertiesView } = panelWin;
   let gVars = PropertiesView._propsView;
 
   let started = once(gFront, "start-context");
 
   let events = Promise.all([
--- a/devtools/client/webaudioeditor/test/browser_wa_reset-01.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_reset-01.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that reloading a tab will properly listen for the `start-context`
  * event and reshow the tools after reloading.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { gFront, $ } = panel.panelWin;
 
   is($("#reload-notice").hidden, false,
     "The 'reload this page' notice should initially be visible.");
   is($("#waiting-notice").hidden, true,
     "The 'waiting for an audio context' notice should initially be hidden.");
   is($("#content").hidden, true,
--- a/devtools/client/webaudioeditor/test/browser_wa_reset-02.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_reset-02.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests reloading a tab with the tools open properly cleans up
  * the graph.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $ } = panelWin;
 
   let events = Promise.all([
     get3(gFront, "create-node"),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_reset-03.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_reset-03.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests reloading a tab with the tools open properly cleans up
  * the inspector and selected node.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, panel } = await initWebAudioEditor(SIMPLE_CONTEXT_URL);
   let { panelWin } = panel;
   let { gFront, $, InspectorView } = panelWin;
 
   let events = Promise.all([
     get3(gFront, "create-node"),
     waitForGraphRendered(panelWin, 3, 2)
   ]);
--- a/devtools/client/webaudioeditor/test/browser_wa_reset-04.js
+++ b/devtools/client/webaudioeditor/test/browser_wa_reset-04.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Tests that switching to an iframe works fine.
  */
 
-add_task(async function () {
+add_task(async function() {
   Services.prefs.setBoolPref("devtools.command-button-frames.enabled", true);
 
   let { target, panel, toolbox } = await initWebAudioEditor(IFRAME_CONTEXT_URL);
   let { gFront, $ } = panel.panelWin;
 
   is($("#reload-notice").hidden, false,
     "The 'reload this page' notice should initially be visible.");
   is($("#waiting-notice").hidden, true,
--- a/devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js
+++ b/devtools/client/webaudioeditor/test/browser_webaudio-actor-automation-event.js
@@ -1,17 +1,17 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test that the WebAudioActor receives and emits the `automation-event` events
  * with correct arguments from the content.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(AUTOMATION_URL);
   let events = [];
 
   let expected = [
     ["setValueAtTime", 0.2, 0],
     ["linearRampToValueAtTime", 1, 0.3],
     ["exponentialRampToValueAtTime", 0.75, 0.6],
     ["setValueCurveAtTime", [-1, 0, 1], 0.7, 0.3],
--- a/devtools/client/webaudioeditor/test/browser_webaudio-actor-connect-param.js
+++ b/devtools/client/webaudioeditor/test/browser_webaudio-actor-connect-param.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test the `connect-param` event on the web audio actor.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(CONNECT_PARAM_URL);
   let [, , [destNode, carrierNode, modNode, gainNode], , connectParam] = await Promise.all([
     front.setup({ reload: true }),
     once(front, "start-context"),
     getN(front, "create-node", 4),
     get2(front, "connect-node"),
     once(front, "connect-param")
   ]);
--- a/devtools/client/webaudioeditor/test/browser_webaudio-actor-destroy-node.js
+++ b/devtools/client/webaudioeditor/test/browser_webaudio-actor-destroy-node.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test `destroy-node` event on WebAudioActor.
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(DESTROY_NODES_URL);
 
   let [, , created] = await Promise.all([
     front.setup({ reload: true }),
     once(front, "start-context"),
     // Should create dest, gain, and oscillator node and 10
     // disposable buffer nodes
     getN(front, "create-node", 13)
@@ -29,13 +29,14 @@ add_task(async function () {
       "`destroy-node` called only on AudioNodes in current document.");
   });
 
   await removeTab(target.tab);
 });
 
 function actorIsInList(list, actor) {
   for (let i = 0; i < list.length; i++) {
-    if (list[i].actorID === actor.actorID)
+    if (list[i].actorID === actor.actorID) {
       return list[i];
+    }
   }
   return null;
 }
--- a/devtools/client/webaudioeditor/test/browser_webaudio-actor-simple.js
+++ b/devtools/client/webaudioeditor/test/browser_webaudio-actor-simple.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
    http://creativecommons.org/publicdomain/zero/1.0/ */
 
 /**
  * Test basic communication of Web Audio actor
  */
 
-add_task(async function () {
+add_task(async function() {
   let { target, front } = await initBackend(SIMPLE_CONTEXT_URL);
   let [_, __, [destNode, oscNode, gainNode], [connect1, connect2]] = await Promise.all([
     front.setup({ reload: true }),
     once(front, "start-context"),
     get3(front, "create-node"),
     get2(front, "connect-node")
   ]);
 
--- a/devtools/client/webaudioeditor/test/doc_buffer-and-array.html
+++ b/devtools/client/webaudioeditor/test/doc_buffer-and-array.html
@@ -37,17 +37,17 @@
         for (let i = 0; i < n; ++i) {
           let x = (i - n2) / n2;
           let y = Math.atan(5 * x) / (0.5 * Math.PI);
         }
 
         return curve;
       }
 
-      function getBuffer (url, callback) {
+      function getBuffer(url, callback) {
         let xhr = new XMLHttpRequest();
         xhr.open("GET", url, true);
         xhr.responseType = "arraybuffer";
         xhr.onload = callback;
         xhr.send();
         return xhr;
       }
     </script>
--- a/devtools/client/webaudioeditor/test/doc_bug_1112378.html
+++ b/devtools/client/webaudioeditor/test/doc_bug_1112378.html
@@ -11,47 +11,46 @@
   <body>
 
     <script type="text/javascript">
       "use strict";
 
       let ctx = new AudioContext();
       let osc = ctx.createOscillator();
 
-      function throwError () {
+      function throwError() {
         try {
           osc.connect({});
         } catch (e) {
           return {
             lineNumber: e.lineNumber,
             fileName: e.fileName,
             columnNumber: e.columnNumber,
             message: e.message,
             instanceof: e instanceof TypeError,
             stringified: e.toString(),
             name: e.name
-          }
+          };
         }
       }
 
-      function throwDOMException () {
+      function throwDOMException() {
         try {
           osc.frequency.setValueAtTime(0, -1);
         } catch (e) {
           return {
             lineNumber: e.lineNumber,
             columnNumber: e.columnNumber,
             filename: e.filename,
             message: e.message,
             code: e.code,
             result: e.result,
             instanceof: e instanceof DOMException,
             stringified: e.toString(),
             name: e.name
-          }
+          };
         }
       }
 
-
     </script>
   </body>
 
 </html>
--- a/devtools/client/webaudioeditor/test/doc_destroy-nodes.html
+++ b/devtools/client/webaudioeditor/test/doc_destroy-nodes.html
@@ -11,17 +11,17 @@
   <body>
 
     <script type="text/javascript">
       "use strict";
       // Keep the nodes we want to GC alive until we are ready for them to
       // be collected. We will zero this reference by force from the devtools
       // side.
       var keepAlive = [];
-      (function () {
+      (function() {
       let ctx = new AudioContext();
       let osc = ctx.createOscillator();
       let gain = ctx.createGain();
 
       for (let i = 0; i < 10; i++) {
         keepAlive.push(ctx.createBufferSource());
       }
 
--- a/devtools/client/webaudioeditor/test/head.js
+++ b/devtools/client/webaudioeditor/test/head.js
@@ -57,17 +57,17 @@ function navigate(aTarget, aUrl, aWaitFo
  * This requires calling removeTab before the test ends.
  */
 function initBackend(aUrl) {
   info("Initializing a web audio editor front.");
 
   DebuggerServer.init();
   DebuggerServer.registerAllActors();
 
-  return (async function () {
+  return (async function() {
     let tab = await addTab(aUrl);
     let target = TargetFactory.forTab(tab);
 
     await target.makeRemote();
 
     let front = new WebAudioFront(target.client, target.form);
     return { target, front };
   })();
@@ -76,17 +76,17 @@ function initBackend(aUrl) {
 /**
  * Adds a new tab, and open the toolbox for that tab, selecting the audio editor
  * panel.
  * This requires calling teardown before the test ends.
  */
 function initWebAudioEditor(aUrl) {
   info("Initializing a web audio editor pane.");
 
-  return (async function () {
+  return (async function() {
     let tab = await addTab(aUrl);
     let target = TargetFactory.forTab(tab);
 
     await target.makeRemote();
 
     Services.prefs.setBoolPref("devtools.webaudioeditor.enabled", true);
     let toolbox = await gDevTools.showToolbox(target, "webaudioeditor");
     let panel = toolbox.getCurrentPanel();
@@ -128,23 +128,37 @@ function getN(front, eventName, count, s
       if (actors.length === count) {
         front.off(eventName, onEvent);
         resolve(actors);
       }
     });
   });
 }
 
-function get(front, eventName) { return getN(front, eventName, 1); }
-function get2(front, eventName) { return getN(front, eventName, 2); }
-function get3(front, eventName) { return getN(front, eventName, 3); }
-function getSpread(front, eventName) { return getN(front, eventName, 1, true); }
-function get2Spread(front, eventName) { return getN(front, eventName, 2, true); }
-function get3Spread(front, eventName) { return getN(front, eventName, 3, true); }
-function getNSpread(front, eventName, count) { return getN(front, eventName, count, true); }
+function get(front, eventName) {
+  return getN(front, eventName, 1);
+}
+function get2(front, eventName) {
+  return getN(front, eventName, 2);
+}
+function get3(front, eventName) {
+  return getN(front, eventName, 3);
+}
+function getSpread(front, eventName) {
+  return getN(front, eventName, 1, true);
+}
+function get2Spread(front, eventName) {
+  return getN(front, eventName, 2, true);
+}
+function get3Spread(front, eventName) {
+  return getN(front, eventName, 3, true);
+}
+function getNSpread(front, eventName, count) {
+  return getN(front, eventName, count, true);
+}
 
 /**
  * Waits for the UI_GRAPH_RENDERED event to fire, but only
  * resolves when the graph was rendered with the correct count of
  * nodes and edges.
  */
 function waitForGraphRendered(front, nodeCount, edgeCount, paramEdgeCount) {
   let eventName = front.EVENTS.UI_GRAPH_RENDERED;
@@ -183,44 +197,42 @@ function checkVariableView(view, index, 
       "Correct property name for " + variable);
     let value = aVar.target.querySelector(".value").getAttribute("value");
 
     // Cast value with JSON.parse if possible;
     // will fail when displaying Object types like "ArrayBuffer"
     // and "Float32Array", but will match the original value.
     try {
       value = JSON.parse(value);
-    }
-    catch (e) {}
+    } catch (e) {}
     if (typeof hash[variable] === "function") {
       ok(hash[variable](value),
         "Passing property value of " + value + " for " + variable + " " + description);
-    }
-    else {
+    } else {
       is(value, hash[variable],
         "Correct property value of " + hash[variable] + " for " + variable + " " + description);
     }
   });
 }
 
 function modifyVariableView(win, view, index, prop, value) {
   let scope = view.getScopeAtIndex(index);
   let aVar = scope.get(prop);
   scope.expand();
 
   return new Promise((resolve, reject) => {
     const onParamSetSuccess = () => {
       win.off(win.EVENTS.UI_SET_PARAM_ERROR, onParamSetError);
       resolve();
-    }
+    };
 
     const onParamSetError = () => {
       win.off(win.EVENTS.UI_SET_PARAM, onParamSetSuccess);
       reject();
-    }
+    };
     win.once(win.EVENTS.UI_SET_PARAM, onParamSetSuccess);
     win.once(win.EVENTS.UI_SET_PARAM_ERROR, onParamSetError);
 
     // Focus and select the variable to begin editing
     win.focus();
     aVar.focus();
     EventUtils.sendKey("RETURN", win);
 
@@ -320,17 +332,17 @@ function countGraphObjects(win) {
     edges: win.document.querySelectorAll(".edgePaths > .edgePath").length
   };
 }
 
 /**
 * Forces cycle collection and GC, used in AudioNode destruction tests.
 */
 function forceNodeCollection() {
-  ContentTask.spawn(gBrowser.selectedBrowser, {}, async function () {
+  ContentTask.spawn(gBrowser.selectedBrowser, {}, async function() {
     // Kill the reference keeping stuff alive.
     content.wrappedJSObject.keepAlive = null;
 
     // Collect the now-deceased nodes.
     Cu.forceGC();
     Cu.forceCC();
     Cu.forceGC();
     Cu.forceCC();
@@ -379,17 +391,19 @@ function waitForInspectorRender(panelWin
 
 /**
  * Takes an AudioNode type and returns it's properties (from audionode.json)
  * as keys and their default values as keys
  */
 function nodeDefaultValues(nodeName) {
   let fn = NODE_CONSTRUCTORS[nodeName];
 
-  if (typeof fn === "undefined") return {};
+  if (typeof fn === "undefined") {
+    return {};
+  }
 
   let init = nodeName === "AudioDestinationNode" ? "destination" : `create${fn}()`;
 
   let definition = JSON.stringify(audioNodes[nodeName].properties);
 
   let evalNode = evalInDebuggee(`
     let ins = (new AudioContext()).${init};
     let props = ${definition};
--- a/devtools/client/webaudioeditor/views/automation.js
+++ b/devtools/client/webaudioeditor/views/automation.js
@@ -7,43 +7,43 @@
  * Functions handling the audio node inspector UI.
  */
 
 var AutomationView = {
 
   /**
    * Initialization function called when the tool starts up.
    */
-  initialize: function () {
+  initialize: function() {
     this._buttons = $("#automation-param-toolbar-buttons");
     this.graph = new LineGraphWidget($("#automation-graph"), { avg: false });
     this.graph.selectionEnabled = false;
 
     this._onButtonClick = this._onButtonClick.bind(this);
     this._onNodeSet = this._onNodeSet.bind(this);
     this._onResize = this._onResize.bind(this);
 
     this._buttons.addEventListener("click", this._onButtonClick);
     window.on(EVENTS.UI_INSPECTOR_RESIZE, this._onResize);
     window.on(EVENTS.UI_INSPECTOR_NODE_SET, this._onNodeSet);
   },
 
   /**
    * Destruction function called when the tool cleans up.
    */
-  destroy: function () {
+  destroy: function() {
     this._buttons.removeEventListener("click", this._onButtonClick);
     window.off(EVENTS.UI_INSPECTOR_RESIZE, this._onResize);
     window.off(EVENTS.UI_INSPECTOR_NODE_SET, this._onNodeSet);
   },
 
   /**
    * Empties out the props view.
    */
-  resetUI: function () {
+  resetUI: function() {
     this._currentNode = null;
   },
 
   /**
    * On a new node selection, create the Automation panel for
    * that specific node.
    */
   async build() {
@@ -78,17 +78,17 @@ var AutomationView = {
     await this.graph.setDataWhenReady(values);
     window.emit(EVENTS.UI_AUTOMATION_TAB_RENDERED, node.id);
   },
 
   /**
    * Create the buttons for each AudioParam, that when clicked,
    * render the graph for that AudioParam.
    */
-  _createParamButtons: function (params) {
+  _createParamButtons: function(params) {
     this._buttons.innerHTML = "";
     params.forEach((param, i) => {
       let button = document.createElement("toolbarbutton");
       button.setAttribute("class", "devtools-toolbarbutton automation-param-button");
       button.setAttribute("data-param", param.param);
       // Set label to the parameter name, should not be L10N'd
       button.setAttribute("label", param.param);
 
@@ -100,29 +100,29 @@ var AutomationView = {
       this._buttons.appendChild(button);
     });
   },
 
   /**
    * Internally sets the current audio node and rebuilds appropriate
    * views.
    */
-  _setAudioNode: function (node) {
+  _setAudioNode: function(node) {
     this._currentNode = node;
     if (this._currentNode) {
       this.build();
     }
   },
 
   /**
    * Toggles the subviews to display messages whether or not
    * the audio node has no AudioParams, no automation events, or
    * shows the graph.
    */
-  _setState: function (state) {
+  _setState: function(state) {
     let contentView = $("#automation-content");
     let emptyView = $("#automation-empty");
 
     let graphView = $("#automation-graph-container");
     let noEventsView = $("#automation-no-events");
 
     contentView.hidden = state === "no-params";
     emptyView.hidden = state !== "no-params";
@@ -130,30 +130,30 @@ var AutomationView = {
     graphView.hidden = state !== "show";
     noEventsView.hidden = state !== "no-events";
   },
 
   /**
    * Event handlers
    */
 
-  _onButtonClick: function (e) {
+  _onButtonClick: function(e) {
     Array.forEach($$(".automation-param-button"), $btn => $btn.removeAttribute("selected"));
     let paramName = e.target.getAttribute("data-param");
     e.target.setAttribute("selected", true);
     this._selectedParamName = paramName;
     this.render();
   },
 
   /**
    * Called when the inspector is resized.
    */
-  _onResize: function () {
+  _onResize: function() {
     this.graph.refresh();
   },
 
   /**
    * Called when the inspector view determines a node is selected.
    */
-  _onNodeSet: function (id) {
+  _onNodeSet: function(id) {
     this._setAudioNode(id != null ? gAudioNodes.get(id) : null);
   }
 };
--- a/devtools/client/webaudioeditor/views/context.js
+++ b/devtools/client/webaudioeditor/views/context.js
@@ -38,151 +38,151 @@ const GRAPH_REDRAW_EVENTS = ["add", "con
 
 /**
  * Functions handling the graph UI.
  */
 var ContextView = {
   /**
    * Initialization function, called when the tool is started.
    */
-  initialize: function () {
+  initialize: function() {
     this._onGraphClick = this._onGraphClick.bind(this);
     this._onThemeChange = this._onThemeChange.bind(this);
     this._onStartContext = this._onStartContext.bind(this);
     this._onEvent = this._onEvent.bind(this);
 
     this.draw = debounce(this.draw.bind(this), GRAPH_DEBOUNCE_TIMER);
     $("#graph-target").addEventListener("click", this._onGraphClick);
 
     window.on(EVENTS.THEME_CHANGE, this._onThemeChange);
     window.on(EVENTS.START_CONTEXT, this._onStartContext);
     gAudioNodes.on("*", this._onEvent);
   },
 
   /**
    * Destruction function, called when the tool is closed.
    */
-  destroy: function () {
+  destroy: function() {
     // If the graph was rendered at all, then the handler
     // for zooming in will be set. We must remove it to prevent leaks.
     if (this._zoomBinding) {
       this._zoomBinding.on("zoom", null);
     }
     $("#graph-target").removeEventListener("click", this._onGraphClick);
 
     window.off(EVENTS.THEME_CHANGE, this._onThemeChange);
     window.off(EVENTS.START_CONTEXT, this._onStartContext);
     gAudioNodes.off("*", this._onEvent);
   },
 
   /**
    * Called when a page is reloaded and waiting for a "start-context" event
    * and clears out old content
    */
-  resetUI: function () {
+  resetUI: function() {
     this.clearGraph();
     this.resetGraphTransform();
   },
 
   /**
    * Clears out the rendered graph, called when resetting the SVG elements to draw again,
    * or when resetting the entire UI tool
    */
-  clearGraph: function () {
+  clearGraph: function() {
     $("#graph-target").innerHTML = "";
   },
 
   /**
    * Moves the graph back to its original scale and translation.
    */
-  resetGraphTransform: function () {
+  resetGraphTransform: function() {
     // Only reset if the graph was ever drawn.
     if (this._zoomBinding) {
       let { translate, scale } = GRAPH_DEFAULTS;
       // Must set the `zoomBinding` so the next `zoom` event is in sync with
       // where the graph is visually (set by the `transform` attribute).
       this._zoomBinding.scale(scale);
       this._zoomBinding.translate(translate);
       d3.select("#graph-target")
         .attr("transform", "translate(" + translate + ") scale(" + scale + ")");
     }
   },
 
-  getCurrentScale: function () {
+  getCurrentScale: function() {
     return this._zoomBinding ? this._zoomBinding.scale() : null;
   },
 
-  getCurrentTranslation: function () {
+  getCurrentTranslation: function() {
     return this._zoomBinding ? this._zoomBinding.translate() : null;
   },
 
   /**
    * Makes the corresponding graph node appear "focused", removing
    * focused styles from all other nodes. If no `actorID` specified,
    * make all nodes appear unselected.
    */
-  focusNode: function (actorID) {
+  focusNode: function(actorID) {
     // Remove class "selected" from all nodes
     Array.forEach($$(".nodes > g"), $node => $node.classList.remove("selected"));
     // Add to "selected"
     if (actorID) {
       this._getNodeByID(actorID).classList.add("selected");
     }
   },
 
   /**
    * Takes an actorID and returns the corresponding DOM SVG element in the graph
    */
-  _getNodeByID: function (actorID) {
+  _getNodeByID: function(actorID) {
     return $(".nodes > g[data-id='" + actorID + "']");
   },
 
   /**
    * Sets the appropriate class on an SVG node when its bypass
    * status is toggled.
    */
-  _bypassNode: function (node, enabled) {
+  _bypassNode: function(node, enabled) {
     let el = this._getNodeByID(node.id);
     el.classList[enabled ? "add" : "remove"]("bypassed");
   },
 
   /**
    * This method renders the nodes currently available in `gAudioNodes` and is
    * throttled to be called at most every `GRAPH_DEBOUNCE_TIMER` milliseconds.
    * It's called whenever the audio context routing changes, after being debounced.
    */
-  draw: function () {
+  draw: function() {
     // Clear out previous SVG information
     this.clearGraph();
 
     let graph = new dagreD3.Digraph();
     let renderer = new dagreD3.Renderer();
     gAudioNodes.populateGraph(graph);
 
     // Post-render manipulation of the nodes
     let oldDrawNodes = renderer.drawNodes();
-    renderer.drawNodes(function (graph, root) {
+    renderer.drawNodes(function(graph, root) {
       let svgNodes = oldDrawNodes(graph, root);
-      svgNodes.each(function (n) {
+      svgNodes.each(function(n) {
         let node = graph.node(n);
         let classString = "audionode type-" + node.type + (node.bypassed ? " bypassed" : "");
         this.setAttribute("class", classString);
         this.setAttribute("data-id", node.id);
         this.setAttribute("data-type", node.type);
       });
       return svgNodes;
     });
 
     // Post-render manipulation of edges
     let oldDrawEdgePaths = renderer.drawEdgePaths();
     let defaultClasses = "edgePath enter";
 
-    renderer.drawEdgePaths(function (graph, root) {
+    renderer.drawEdgePaths(function(graph, root) {
       let svgEdges = oldDrawEdgePaths(graph, root);
-      svgEdges.each(function (e) {
+      svgEdges.each(function(e) {
         let edge = graph.edge(e);
 
         // We have to manually specify the default classes on the edges
         // as to not overwrite them
         let edgeClass = defaultClasses + (edge.param ? (" param-connection " + edge.param) : "");
 
         this.setAttribute("data-source", edge.source);
         this.setAttribute("data-target", edge.target);
@@ -237,17 +237,17 @@ var ContextView = {
     });
 
     let layout = dagreD3.layout().rankDir("LR");
     renderer.layout(layout).run(graph, d3.select("#graph-target"));
 
     // Handle the sliding and zooming of the graph,
     // store as `this._zoomBinding` so we can unbind during destruction
     if (!this._zoomBinding) {
-      this._zoomBinding = d3.behavior.zoom().on("zoom", function () {
+      this._zoomBinding = d3.behavior.zoom().on("zoom", function() {
         var ev = d3.event;
         d3.select("#graph-target")
           .attr("transform", "translate(" + ev.translate + ") scale(" + ev.scale + ")");
       });
       d3.select("svg").call(this._zoomBinding);
 
       // Set initial translation and scale -- this puts D3's awareness of
       // the graph in sync with what the user sees originally.
@@ -258,57 +258,58 @@ var ContextView = {
   /**
    * Event handlers
    */
 
   /**
    * Called once "start-context" is fired, indicating that there is an audio
    * context being created to view so render the graph.
    */
-  _onStartContext: function () {
+  _onStartContext: function() {
     this.draw();
   },
 
   /**
    * Called when `gAudioNodes` fires an event -- most events (listed
    * in GRAPH_REDRAW_EVENTS) qualify as a redraw event.
    */
-  _onEvent: function (eventName, ...args) {
+  _onEvent: function(eventName, ...args) {
     // If bypassing, just toggle the class on the SVG node
     // rather than rerendering everything
     if (eventName === "bypass") {
       this._bypassNode.apply(this, args);
     }
     if (~GRAPH_REDRAW_EVENTS.indexOf(eventName)) {
       this.draw();
     }
   },
 
   /**
    * Fired when the devtools theme changes.
    */
-  _onThemeChange: function (theme) {
+  _onThemeChange: function(theme) {
     let markerColor = MARKER_STYLING[theme];
     let marker = $("#arrowhead");
     if (marker) {
       marker.setAttribute("style", "fill: " + markerColor);
     }
   },
 
   /**
    * Fired when a click occurs in the graph.
    *
    * @param Event e
    *        Click event.
    */
-  _onGraphClick: function (e) {
+  _onGraphClick: function(e) {
     let node = findGraphNodeParent(e.target);
     // If node not found (clicking outside of an audio node in the graph),
     // then ignore this event
-    if (!node)
+    if (!node) {
       return;
+    }
 
     let id = node.getAttribute("data-id");
 
     this.focusNode(id);
     window.emit(EVENTS.UI_SELECT_NODE, id);
   }
 };
--- a/devtools/client/webaudioeditor/views/inspector.js
+++ b/devtools/client/webaudioeditor/views/inspector.js
@@ -23,17 +23,17 @@ var InspectorView = {
   _expandString: EXPAND_INSPECTOR_STRING,
   _toggleEvent: EVENTS.UI_INSPECTOR_TOGGLED,
   _animated: true,
   _delayed: true,
 
   /**
    * Initialization function called when the tool starts up.
    */
-  initialize: function () {
+  initialize: function() {
     // Set up view controller
     this.el = $("#web-audio-inspector");
     this.splitter = $("#inspector-splitter");
     this.el.setAttribute("width", Services.prefs.getIntPref("devtools.webaudioeditor.inspectorWidth"));
     this.button = $("#inspector-pane-toggle");
     mixin(this, ToggleMixin);
     this.bindToggle();
 
@@ -51,17 +51,17 @@ var InspectorView = {
     }
     window.on(EVENTS.UI_SELECT_NODE, this._onNodeSelect);
     gAudioNodes.on("remove", this._onDestroyNode);
   },
 
   /**
    * Destruction function called when the tool cleans up.
    */
-  destroy: function () {
+  destroy: function() {
     this.unbindToggle();
     this.splitter.removeEventListener("mouseup", this._onResize);
 
     $("#audio-node-toolbar toolbarbutton").removeEventListener("command", this._onCommandClick);
     for (let $el of $$("#audio-node-toolbar toolbarbutton")) {
       $el.removeEventListener("command", this._onCommandClick);
     }
     window.off(EVENTS.UI_SELECT_NODE, this._onNodeSelect);
@@ -93,32 +93,32 @@ var InspectorView = {
       this._buildToolbar();
       window.emit(EVENTS.UI_INSPECTOR_NODE_SET, this._currentNode.id);
     }
   },
 
   /**
    * Returns the current AudioNodeView.
    */
-  getCurrentAudioNode: function () {
+  getCurrentAudioNode: function() {
     return this._currentNode;
   },
 
   /**
    * Empties out the props view.
    */
-  resetUI: function () {
+  resetUI: function() {
     // Set current node to empty to load empty view
     this.setCurrentAudioNode();
 
     // Reset AudioNode inspector and hide
     this.hideImmediately();
   },
 
-  _buildToolbar: function () {
+  _buildToolbar: function() {
     let node = this.getCurrentAudioNode();
 
     let bypassable = node.bypassable;
     let bypassed = node.isBypassed();
     let button = $("#audio-node-toolbar .bypass");
 
     if (!bypassable) {
       button.setAttribute("disabled", true);
@@ -136,42 +136,42 @@ var InspectorView = {
   /**
    * Event handlers
    */
 
   /**
    * Called on EVENTS.UI_SELECT_NODE, and takes an actorID `id`
    * and calls `setCurrentAudioNode` to scaffold the inspector view.
    */
-  _onNodeSelect: function (id) {
+  _onNodeSelect: function(id) {
     this.setCurrentAudioNode(gAudioNodes.get(id));
 
     // Ensure inspector is visible when selecting a new node
     this.show();
   },
 
-  _onResize: function () {
+  _onResize: function() {
     if (this.el.getAttribute("width") < MIN_INSPECTOR_WIDTH) {
       this.el.setAttribute("width", MIN_INSPECTOR_WIDTH);
     }
     Services.prefs.setIntPref("devtools.webaudioeditor.inspectorWidth", this.el.getAttribute("width"));
     window.emit(EVENTS.UI_INSPECTOR_RESIZE);
   },
 
   /**
    * Called when `DESTROY_NODE` is fired to remove the node from props view if
    * it's currently selected.
    */
-  _onDestroyNode: function (node) {
+  _onDestroyNode: function(node) {
     if (this._currentNode && this._currentNode.id === node.id) {
       this.setCurrentAudioNode(null);
     }
   },
 
-  _onCommandClick: function (e) {
+  _onCommandClick: function(e) {
     let node = this.getCurrentAudioNode();
     let button = e.target;
     let command = button.getAttribute("data-command");
     let checked = button.getAttribute("checked");
 
     if (button.getAttribute("disabled")) {
       return;
     }
--- a/devtools/client/webaudioeditor/views/properties.js
+++ b/devtools/client/webaudioeditor/views/properties.js
@@ -18,46 +18,46 @@ const GENERIC_VARIABLES_VIEW_SETTINGS = 
  * Functions handling the audio node inspector UI.
  */
 
 var PropertiesView = {
 
   /**
    * Initialization function called when the tool starts up.
    */
-  initialize: function () {
+  initialize: function() {
     this._onEval = this._onEval.bind(this);
     this._onNodeSet = this._onNodeSet.bind(this);
 
     window.on(EVENTS.UI_INSPECTOR_NODE_SET, this._onNodeSet);
     this._propsView = new VariablesView($("#properties-content"), GENERIC_VARIABLES_VIEW_SETTINGS);
     this._propsView.eval = this._onEval;
   },
 
   /**
    * Destruction function called when the tool cleans up.
    */
-  destroy: function () {
+  destroy: function() {
     window.off(EVENTS.UI_INSPECTOR_NODE_SET, this._onNodeSet);
     this._propsView = null;
   },
 
   /**
    * Empties out the props view.
    */
-  resetUI: function () {
+  resetUI: function() {
     this._propsView.empty();
     this._currentNode = null;
   },
 
   /**
    * Internally sets the current audio node and rebuilds appropriate
    * views.
    */
-  _setAudioNode: function (node) {
+  _setAudioNode: function(node) {
     this._currentNode = node;
     if (this._currentNode) {
       this._buildPropertiesView();
     }
   },
 
   /**
    * Reconstructs the `Properties` tab in the inspector
@@ -90,41 +90,41 @@ var PropertiesView = {
 
     window.emit(EVENTS.UI_PROPERTIES_TAB_RENDERED, node.id);
   },
 
   /**
    * Toggles the display of the "empty" properties view when
    * node has no properties to display.
    */
-  _togglePropertiesView: function (show) {
+  _togglePropertiesView: function(show) {
     let propsView = $("#properties-content");
     let emptyView = $("#properties-empty");
     (show ? propsView : emptyView).removeAttribute("hidden");
     (show ? emptyView : propsView).setAttribute("hidden", "true");
   },
 
   /**
    * Returns the scope for AudioParams in the
    * VariablesView.
    *
    * @return Scope
    */
-  _getAudioPropertiesScope: function () {
+  _getAudioPropertiesScope: function() {
     return this._propsView.getScopeAtIndex(0);
   },
 
   /**
    * Event handlers
    */
 
   /**
    * Called when the inspector view determines a node is selected.
    */
-  _onNodeSet: function (id) {
+  _onNodeSet: function(id) {
     this._setAudioNode(gAudioNodes.get(id));
   },
 
   /**
    * Executed when an audio prop is changed in the UI.
    */
   async _onEval(variable, value) {
     let ownerScope = variable.ownerView;
@@ -139,18 +139,17 @@ var PropertiesView = {
       try {
         let number = parseFloat(value);
         if (!isNaN(number)) {
           value = number;
         } else {
           value = JSON.parse(value);
         }
         error = await node.actor.setParam(propName, value);
-      }
-      catch (e) {
+      } catch (e) {
         error = e;
       }
     }
 
     // TODO figure out how to handle and display set prop errors
     // and enable `test/brorwser_wa_properties-view-edit.js`
     // Bug 994258
     if (!error) {
--- a/devtools/client/webaudioeditor/views/utils.js
+++ b/devtools/client/webaudioeditor/views/utils.js
@@ -6,24 +6,25 @@
 /**
  * Takes an element in an SVG graph and iterates over
  * ancestors until it finds the graph node container. If not found,
  * returns null.
  */
 
 function findGraphNodeParent(el) {
   // Some targets may not contain `classList` property
-  if (!el.classList)
+  if (!el.classList) {
     return null;
+  }
 
   while (!el.classList.contains("nodes")) {
-    if (el.classList.contains("audionode"))
+    if (el.classList.contains("audionode")) {
       return el;
-    else
-      el = el.parentNode;
+    }
+    el = el.parentNode;
   }
   return null;
 }
 
 /**
  * Object for use with `mix` into a view.
  * Must have the following properties defined on the view:
  * - `el`
@@ -34,70 +35,69 @@ function findGraphNodeParent(el) {
  *
  * Optional properties on the view can be defined to specify default
  * visibility options.
  * - `_animated`
  * - `_delayed`
  */
 var ToggleMixin = {
 
-  bindToggle: function () {
+  bindToggle: function() {
     this._onToggle = this._onToggle.bind(this);
     this.button.addEventListener("mousedown", this._onToggle);
   },
 
-  unbindToggle: function () {
+  unbindToggle: function() {
     this.button.removeEventListener("mousedown", this._onToggle);
   },
 
-  show: function () {
+  show: function() {
     this._viewController({ visible: true });
   },
 
-  hide: function () {
+  hide: function() {
     this._viewController({ visible: false });
   },
 
-  hideImmediately: function () {
+  hideImmediately: function() {
     this._viewController({ visible: false, delayed: false, animated: false });
   },
 
   /**
    * Returns a boolean indicating whether or not the view.
    * is currently being shown.
    */
-  isVisible: function () {
+  isVisible: function() {
     return !this.el.classList.contains("pane-collapsed");
   },
 
   /**
    * Toggles the visibility of the view.
    *
    * @param object visible
    *        - visible: boolean indicating whether the panel should be shown or not
    *        - animated: boolean indiciating whether the pane should be animated
    *        - delayed: boolean indicating whether the pane's opening should wait
    *                   a few cycles or not
    */
-  _viewController: function ({ visible, animated, delayed }) {
+  _viewController: function({ visible, animated, delayed }) {
     let flags = {
       visible: visible,
       animated: animated != null ? animated : !!this._animated,
       delayed: delayed != null ? delayed : !!this._delayed,
       callback: () => window.emit(this._toggleEvent, visible)
     };
 
     ViewHelpers.togglePane(flags, this.el);
 
     if (flags.visible) {
       this.button.classList.remove("pane-collapsed");
       this.button.setAttribute("tooltiptext", this._collapseString);
-    }
-    else {
+    } else {
       this.button.classList.add("pane-collapsed");
       this.button.setAttribute("tooltiptext", this._expandString);
     }
   },
 
-  _onToggle: function () {
+  _onToggle: function() {
     this._viewController({ visible: !this.isVisible() });
   }
 };
--- a/devtools/client/webide/content/addons.js
+++ b/devtools/client/webide/content/addons.js
@@ -3,41 +3,40 @@
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const Services = require("Services");
 const {gDevTools} = require("devtools/client/framework/devtools");
 const {GetAvailableAddons, ForgetAddonsList} = require("devtools/client/webide/modules/addons");
 const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
-window.addEventListener("load", function () {
-  document.querySelector("#aboutaddons").onclick = function () {
+window.addEventListener("load", function() {
+  document.querySelector("#aboutaddons").onclick = function() {
     let browserWin = Services.wm.getMostRecentWindow(gDevTools.chromeWindowType);
     if (browserWin && browserWin.BrowserOpenAddonsMgr) {
       browserWin.BrowserOpenAddonsMgr("addons://list/extension");
     }
   };
   document.querySelector("#close").onclick = CloseUI;
   BuildUI(GetAvailableAddons());
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   ForgetAddonsList();
 }, {capture: true, once: true});
 
 function CloseUI() {
   window.parent.UI.openProject();
 }
 
 function BuildUI(addons) {
   BuildItem(addons.adb, "adb");
 }
 
 function BuildItem(addon, type) {
-
   function onAddonUpdate(arg) {
     progress.removeAttribute("value");
     li.setAttribute("status", addon.status);
     status.textContent = Strings.GetStringFromName("addons_status_" + addon.status);
   }
 
   function onAddonFailure(arg) {
     window.parent.UI.reportError("error_operationFail", arg);
@@ -50,17 +49,17 @@ function BuildItem(addon, type) {
       progress.value = arg;
     }
   }
 
   addon.on("update", onAddonUpdate);
   addon.on("failure", onAddonFailure);
   addon.on("progress", onAddonProgress);
 
-  window.addEventListener("unload", function () {
+  window.addEventListener("unload", function() {
     addon.off("update", onAddonUpdate);
     addon.off("failure", onAddonFailure);
     addon.off("progress", onAddonProgress);
   }, {once: true});
 
   let li = document.createElement("li");
   li.setAttribute("status", addon.status);
 
--- a/devtools/client/webide/content/details.js
+++ b/devtools/client/webide/content/details.js
@@ -1,23 +1,23 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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/. */
 
 const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const Services = require("Services");
 const {AppManager} = require("devtools/client/webide/modules/app-manager");
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   document.addEventListener("visibilitychange", updateUI, true);
   AppManager.on("app-manager-update", onAppManagerUpdate);
   updateUI();
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   AppManager.off("app-manager-update", onAppManagerUpdate);
 }, {capture: true, once: true});
 
 function onAppManagerUpdate(what, details) {
   if (what == "project" ||
       what == "project-validated") {
     updateUI();
   }
@@ -35,17 +35,16 @@ function resetUI() {
   document.querySelector("h1").textContent = "";
   document.querySelector("#description").textContent = "";
   document.querySelector("#type").textContent = "";
   document.querySelector("#manifestURL").textContent = "";
   document.querySelector("#location").textContent = "";
 
   document.querySelector("#errorslist").innerHTML = "";
   document.querySelector("#warningslist").innerHTML = "";
-
 }
 
 function updateUI() {
   resetUI();
 
   let project = AppManager.selectedProject;
   if (!project) {
     return;
--- a/devtools/client/webide/content/devicepreferences.js
+++ b/devtools/client/webide/content/devicepreferences.js
@@ -4,29 +4,29 @@
 
 const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const {AppManager} = require("devtools/client/webide/modules/app-manager");
 const {Connection} = require("devtools/shared/client/connection-manager");
 const ConfigView = require("devtools/client/webide/modules/config-view");
 
 var configView = new ConfigView(window);
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   AppManager.on("app-manager-update", OnAppManagerUpdate);
   document.getElementById("close").onclick = CloseUI;
   document.getElementById("device-fields").onchange = UpdateField;
   document.getElementById("device-fields").onclick = CheckReset;
   document.getElementById("search-bar").onkeyup = document.getElementById("search-bar").onclick = SearchField;
   document.getElementById("custom-value").onclick = UpdateNewField;
   document.getElementById("custom-value-type").onchange = ClearNewFields;
   document.getElementById("add-custom-field").onkeyup = CheckNewFieldSubmit;
   BuildUI();
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   AppManager.off("app-manager-update", OnAppManagerUpdate);
 }, {once: true});
 
 function CloseUI() {
   window.parent.UI.openProject();
 }
 
 function OnAppManagerUpdate(what) {
--- a/devtools/client/webide/content/newapp.js
+++ b/devtools/client/webide/content/newapp.js
@@ -14,17 +14,17 @@ const {getJSON} = require("devtools/clie
 
 ChromeUtils.defineModuleGetter(this, "ZipUtils", "resource://gre/modules/ZipUtils.jsm");
 ChromeUtils.defineModuleGetter(this, "Downloads", "resource://gre/modules/Downloads.jsm");
 
 const TEMPLATES_URL = "devtools.webide.templatesURL";
 
 var gTemplateList = null;
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   let projectNameNode = document.querySelector("#project-name");
   projectNameNode.addEventListener("input", canValidate, true);
   getTemplatesJSON();
 }, {capture: true, once: true});
 
 function getTemplatesJSON() {
   getJSON(TEMPLATES_URL).then(list => {
     if (!Array.isArray(list)) {
@@ -149,17 +149,19 @@ function doOK() {
       target.remove(false);
       AppProjects.addPackaged(folder).then((project) => {
         window.arguments[0].location = project.location;
         AppManager.validateAndUpdateProject(project).then(() => {
           if (project.manifest) {
             project.manifest.name = projectName;
             AppManager.writeManifest(project).then(() => {
               AppManager.validateAndUpdateProject(project).then(
-                () => {window.close();}, bail);
+                () => {
+                  window.close();
+                }, bail);
             }, bail);
           } else {
             bail("Manifest not found");
           }
         }, bail);
       }, bail);
     }, bail);
   }, bail);
--- a/devtools/client/webide/content/prefs.js
+++ b/devtools/client/webide/content/prefs.js
@@ -1,36 +1,35 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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/. */
 
 "use strict";
 
 const {Services} = ChromeUtils.import("resource://gre/modules/Services.jsm", {});
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   // Listen to preference changes
   let inputs = document.querySelectorAll("[data-pref]");
   for (let i of inputs) {
     let pref = i.dataset.pref;
     Services.prefs.addObserver(pref, FillForm);
     i.addEventListener("change", SaveForm);
   }
 
   // Buttons
   document.querySelector("#close").onclick = CloseUI;
   document.querySelector("#restore").onclick = RestoreDefaults;
   document.querySelector("#manageComponents").onclick = ShowAddons;
 
   // Initialize the controls
   FillForm();
-
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   let inputs = document.querySelectorAll("[data-pref]");
   for (let i of inputs) {
     let pref = i.dataset.pref;
     i.removeEventListener("change", SaveForm);
     Services.prefs.removeObserver(pref, FillForm);
   }
 }, {capture: true, once: true});
 
--- a/devtools/client/webide/content/project-listing.js
+++ b/devtools/client/webide/content/project-listing.js
@@ -4,26 +4,26 @@
 
 /* eslint-env browser */
 
 const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const ProjectList = require("devtools/client/webide/modules/project-list");
 
 var projectList = new ProjectList(window, window.parent);
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   document.getElementById("new-app").onclick = CreateNewApp;
   document.getElementById("hosted-app").onclick = ImportHostedApp;
   document.getElementById("packaged-app").onclick = ImportPackagedApp;
   document.getElementById("refresh-tabs").onclick = RefreshTabs;
   projectList.update();
   projectList.updateCommands();
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   projectList.destroy();
 }, {once: true});
 
 function RefreshTabs() {
   projectList.refreshTabs();
 }
 
 function CreateNewApp() {
--- a/devtools/client/webide/content/project-panel.js
+++ b/devtools/client/webide/content/project-panel.js
@@ -1,11 +1,11 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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/. */
 
 var ProjectPanel = {
   // TODO: Expand function to save toggle state.
-  toggleSidebar: function () {
+  toggleSidebar: function() {
     document.querySelector("#project-listing-panel").setAttribute("sidebar-displayed", true);
     document.querySelector("#project-listing-splitter").setAttribute("sidebar-displayed", true);
   }
 };
--- a/devtools/client/webide/content/runtime-listing.js
+++ b/devtools/client/webide/content/runtime-listing.js
@@ -2,30 +2,30 @@
  * 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/. */
 
 const {require} = ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const RuntimeList = require("devtools/client/webide/modules/runtime-list");
 
 var runtimeList = new RuntimeList(window, window.parent);
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   document.getElementById("runtime-screenshot").onclick = TakeScreenshot;
   document.getElementById("runtime-details").onclick = ShowRuntimeDetails;
   document.getElementById("runtime-disconnect").onclick = DisconnectRuntime;
   document.getElementById("runtime-preferences").onclick = ShowDevicePreferences;
   document.getElementById("runtime-settings").onclick = ShowSettings;
   document.getElementById("runtime-panel-noadbhelper").onclick = ShowAddons;
   document.getElementById("runtime-panel-nousbdevice").onclick = ShowTroubleShooting;
   document.getElementById("refresh-devices").onclick = RefreshScanners;
   runtimeList.update();
   runtimeList.updateCommands();
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   runtimeList.destroy();
 }, {once: true});
 
 function TakeScreenshot() {
   runtimeList.takeScreenshot();
 }
 
 function ShowRuntimeDetails() {
--- a/devtools/client/webide/content/runtime-panel.js
+++ b/devtools/client/webide/content/runtime-panel.js
@@ -1,11 +1,11 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * 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/. */
 
 var RuntimePanel = {
   // TODO: Expand function to save toggle state.
-  toggleSidebar: function () {
+  toggleSidebar: function() {
     document.querySelector("#runtime-listing-panel").setAttribute("sidebar-displayed", true);
     document.querySelector("#runtime-listing-splitter").setAttribute("sidebar-displayed", true);
   }
 };
--- a/devtools/client/webide/content/runtimedetails.js
+++ b/devtools/client/webide/content/runtimedetails.js
@@ -6,29 +6,29 @@ const {require} = ChromeUtils.import("re
 const Services = require("Services");
 const {AppManager} = require("devtools/client/webide/modules/app-manager");
 const {Connection} = require("devtools/shared/client/connection-manager");
 const {RuntimeTypes} = require("devtools/client/webide/modules/runtimes");
 const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 const UNRESTRICTED_HELP_URL = "https://developer.mozilla.org/docs/Tools/WebIDE/Running_and_debugging_apps#Unrestricted_app_debugging_%28including_certified_apps_main_process_etc.%29";
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   document.querySelector("#close").onclick = CloseUI;
   document.querySelector("#devtools-check button").onclick = EnableCertApps;
   document.querySelector("#adb-check button").onclick = RootADB;
-  document.querySelector("#unrestricted-privileges").onclick = function () {
+  document.querySelector("#unrestricted-privileges").onclick = function() {
     window.parent.UI.openInBrowser(UNRESTRICTED_HELP_URL);
   };
   AppManager.on("app-manager-update", OnAppManagerUpdate);
   BuildUI();
   CheckLockState();
 }, {capture: true, once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   AppManager.off("app-manager-update", OnAppManagerUpdate);
 }, {once: true});
 
 function CloseUI() {
   window.parent.UI.openProject();
 }
 
 function OnAppManagerUpdate(what) {
@@ -83,17 +83,16 @@ function CheckLockState() {
   flipCertPerfAction.setAttribute("hidden", "true");
   adbRootAction.setAttribute("hidden", "true");
 
   adbCheckResult.textContent = sUnknown;
   devtoolsCheckResult.textContent = sUnknown;
 
   if (AppManager.connection &&
       AppManager.connection.status == Connection.Status.CONNECTED) {
-
     // ADB check
     if (AppManager.selectedRuntime.type === RuntimeTypes.USB) {
       let device = AppManager.selectedRuntime.device;
       if (device && device.summonRoot) {
         device.isRoot().then(isRoot => {
           if (isRoot) {
             adbCheckResult.textContent = sYes;
             flipCertPerfButton.removeAttribute("disabled");
@@ -120,19 +119,17 @@ function CheckLockState() {
           devtoolsCheckResult.textContent = sYes;
         }
       }, console.error);
     } catch (e) {
       // Exception. pref actor is only accessible if forbird-certified-apps is false
       devtoolsCheckResult.textContent = sNo;
       flipCertPerfAction.removeAttribute("hidden");
     }
-
   }
-
 }
 
 function EnableCertApps() {
   let device = AppManager.selectedRuntime.device;
   // TODO: Remove `network.disable.ipc.security` once bug 1125916 is fixed.
   device.shell(
     "stop b2g && " +
     "cd /data/b2g/mozilla/*.default/ && " +
--- a/devtools/client/webide/content/webide.js
+++ b/devtools/client/webide/content/webide.js
@@ -36,26 +36,26 @@ const MIN_ZOOM = 0.6;
      writable: false
    });
  });
 
 // Download remote resources early
 getJSON("devtools.webide.templatesURL");
 getJSON("devtools.devices.url");
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   UI.init();
 }, {once: true});
 
-window.addEventListener("unload", function () {
+window.addEventListener("unload", function() {
   UI.destroy();
 }, {once: true});
 
 var UI = {
-  init: function () {
+  init: function() {
     this._telemetry = new Telemetry();
     this._telemetry.toolOpened("webide");
 
     AppManager.init();
 
     this.appManagerUpdate = this.appManagerUpdate.bind(this);
     AppManager.on("app-manager-update", this.appManagerUpdate);
 
@@ -90,26 +90,26 @@ var UI = {
                                .getInterface(Ci.nsIWebNavigation)
                                .QueryInterface(Ci.nsIDocShell)
                                .contentViewer;
     this.contentViewer.fullZoom = Services.prefs.getCharPref("devtools.webide.zoom");
 
     gDevToolsBrowser.isWebIDEInitialized.resolve();
   },
 
-  destroy: function () {
+  destroy: function() {
     window.removeEventListener("focus", this.onfocus, true);
     AppManager.off("app-manager-update", this.appManagerUpdate);
     AppManager.destroy();
     this.updateConnectionTelemetry();
     this._telemetry.toolClosed("webide");
     this._telemetry.destroy();
   },
 
-  onfocus: function () {
+  onfocus: function() {
     // Because we can't track the activity in the folder project,
     // we need to validate the project regularly. Let's assume that
     // if a modification happened, it happened when the window was
     // not focused.
     if (AppManager.selectedProject &&
         AppManager.selectedProject.type != "mainProcess" &&
         AppManager.selectedProject.type != "runtimeApp" &&
         AppManager.selectedProject.type != "tab") {
@@ -117,30 +117,30 @@ var UI = {
     }
 
     // Hook to display promotional Developer Edition doorhanger. Only displayed once.
     // Hooked into the `onfocus` event because sometimes does not work
     // when run at the end of `init`. ¯\(°_o)/¯
     showDoorhanger({ window, type: "deveditionpromo", anchor: document.querySelector("#deck") });
   },
 
-  appManagerUpdate: function (what, details) {
+  appManagerUpdate: function(what, details) {
     // Got a message from app-manager.js
     // See AppManager.update() for descriptions of what these events mean.
     switch (what) {
       case "runtime-list":
         this.autoConnectRuntime();
         break;
       case "connection":
         this.updateRuntimeButton();
         this.updateCommands();
         this.updateConnectionTelemetry();
         break;
       case "project":
-        this._updatePromise = (async function () {
+        this._updatePromise = (async function() {
           UI.updateTitle();
           await UI.destroyToolbox();
           UI.updateCommands();
           UI.openProject();
           await UI.autoStartProject();
           UI.autoOpenToolbox();
           UI.saveLastSelectedProject();
           UI.updateRemoveProjectButton();
@@ -173,83 +173,83 @@ var UI = {
         break;
       case "runtime-targets":
         this.autoSelectProject();
         break;
     }
     this._updatePromise = promise.resolve();
   },
 
-  openInBrowser: function (url) {
+  openInBrowser: function(url) {
     // Open a URL in a Firefox window
     let mainWindow = Services.wm.getMostRecentWindow(gDevTools.chromeWindowType);
     if (mainWindow) {
       mainWindow.openWebLinkIn(url, "tab");
-      mainWindow.focus()
+      mainWindow.focus();
     } else {
       window.open(url);
     }
   },
 
-  updateTitle: function () {
+  updateTitle: function() {
     let project = AppManager.selectedProject;
     if (project) {
       window.document.title = Strings.formatStringFromName("title_app", [project.name], 1);
     } else {
       window.document.title = Strings.GetStringFromName("title_noApp");
     }
   },
 
   /** ******** BUSY UI **********/
 
   _busyTimeout: null,
   _busyOperationDescription: null,
   _busyPromise: null,
 
-  busy: function () {
+  busy: function() {
     let win = document.querySelector("window");
     win.classList.add("busy");
     win.classList.add("busy-undetermined");
     this.updateCommands();
     this.update("busy");
   },
 
-  unbusy: function () {
+  unbusy: function() {
     let win = document.querySelector("window");
     win.classList.remove("busy");
     win.classList.remove("busy-determined");
     win.classList.remove("busy-undetermined");
     this.updateCommands();
     this.update("unbusy");
     this._busyPromise = null;
   },
 
-  setupBusyTimeout: function () {
+  setupBusyTimeout: function() {
     this.cancelBusyTimeout();
     this._busyTimeout = setTimeout(() => {
       this.unbusy();
       UI.reportError("error_operationTimeout", this._busyOperationDescription);
     }, Services.prefs.getIntPref("devtools.webide.busyTimeout"));
   },
 
-  cancelBusyTimeout: function () {
+  cancelBusyTimeout: function() {
     clearTimeout(this._busyTimeout);
   },
 
-  busyWithProgressUntil: function (promise, operationDescription) {
+  busyWithProgressUntil: function(promise, operationDescription) {
     let busy = this.busyUntil(promise, operationDescription);
     let win = document.querySelector("window");
     let progress = document.querySelector("#action-busy-determined");
     progress.mode = "undetermined";
     win.classList.add("busy-determined");
     win.classList.remove("busy-undetermined");
     return busy;
   },
 
-  busyUntil: function (promise, operationDescription) {
+  busyUntil: function(promise, operationDescription) {
     // Freeze the UI until the promise is resolved. A timeout will unfreeze the
     // UI, just in case the promise never gets resolved.
     this._busyPromise = promise;
     this._busyOperationDescription = operationDescription;
     this.setupBusyTimeout();
     this.busy();
     promise.then(() => {
       this.cancelBusyTimeout();
@@ -271,62 +271,62 @@ var UI = {
           console.error(e);
         }
       }
       this.unbusy();
     });
     return promise;
   },
 
-  reportError: function (l10nProperty, ...l10nArgs) {
+  reportError: function(l10nProperty, ...l10nArgs) {
     let text;
 
     if (l10nArgs.length > 0) {
       text = Strings.formatStringFromName(l10nProperty, l10nArgs, l10nArgs.length);
     } else {
       text = Strings.GetStringFromName(l10nProperty);
     }
 
     console.error(text);
 
     let buttons = [{
       label: Strings.GetStringFromName("notification_showTroubleShooting_label"),
       accessKey: Strings.GetStringFromName("notification_showTroubleShooting_accesskey"),
-      callback: function () {
+      callback: function() {
         Cmds.showTroubleShooting();
       }
     }];
 
     let nbox = document.querySelector("#notificationbox");
     nbox.removeAllNotifications(true);
     nbox.appendNotification(text, "webide:errornotification", null,
                             nbox.PRIORITY_WARNING_LOW, buttons);
   },
 
-  dismissErrorNotification: function () {
+  dismissErrorNotification: function() {
     let nbox = document.querySelector("#notificationbox");
     nbox.removeAllNotifications(true);
   },
 
   /** ******** COMMANDS **********/
 
   /**
    * This module emits various events when state changes occur.
    *
    * The events this module may emit include:
    *   busy:
    *     The window is currently busy and certain UI functions may be disabled.
    *   unbusy:
    *     The window is not busy and certain UI functions may be re-enabled.
    */
-  update: function (what, details) {
+  update: function(what, details) {
     this.emit("webide-update", what, details);
   },
 
-  updateCommands: function () {
+  updateCommands: function() {
     // Action commands
     let playCmd = document.querySelector("#cmd_play");
     let stopCmd = document.querySelector("#cmd_stop");
     let debugCmd = document.querySelector("#cmd_toggleToolbox");
     let playButton = document.querySelector("#action-button-play");
     let projectPanelCmd = document.querySelector("#cmd_showProjectPanel");
 
     if (document.querySelector("window").classList.contains("busy")) {
@@ -357,23 +357,21 @@ var UI = {
       if (AppManager.selectedProject.type == "runtimeApp") {
         playCmd.removeAttribute("disabled");
       } else if (AppManager.selectedProject.type == "tab") {
         playCmd.removeAttribute("disabled");
         stopCmd.setAttribute("disabled", "true");
       } else if (AppManager.selectedProject.type == "mainProcess") {
         playCmd.setAttribute("disabled", "true");
         stopCmd.setAttribute("disabled", "true");
-      } else {
-        if (AppManager.selectedProject.errorsCount == 0 &&
+      } else if (AppManager.selectedProject.errorsCount == 0 &&
             AppManager.runtimeCanHandleApps()) {
-          playCmd.removeAttribute("disabled");
-        } else {
-          playCmd.setAttribute("disabled", "true");
-        }
+        playCmd.removeAttribute("disabled");
+      } else {
+        playCmd.setAttribute("disabled", "true");
       }
     }
 
     // Runtime commands
     let screenshotCmd = document.querySelector("#cmd_takeScreenshot");
     let detailsCmd = document.querySelector("#cmd_showRuntimeDetails");
     let disconnectCmd = document.querySelector("#cmd_disconnectRuntime");
     let devicePrefsCmd = document.querySelector("#cmd_showDevicePrefs");
@@ -404,17 +402,17 @@ var UI = {
     } else {
       runtimePanelButton.removeAttribute("active");
       runtimePanelButton.setAttribute("hidden", "true");
     }
 
     projectPanelCmd.removeAttribute("disabled");
   },
 
-  updateRemoveProjectButton: function () {
+  updateRemoveProjectButton: function() {
     // Remove command
     let removeCmdNode = document.querySelector("#cmd_removeProject");
     if (AppManager.selectedProject) {
       removeCmdNode.removeAttribute("disabled");
     } else {
       removeCmdNode.setAttribute("disabled", "true");
     }
   },
@@ -424,17 +422,17 @@ var UI = {
   get lastConnectedRuntime() {
     return Services.prefs.getCharPref("devtools.webide.lastConnectedRuntime");
   },
 
   set lastConnectedRuntime(runtime) {
     Services.prefs.setCharPref("devtools.webide.lastConnectedRuntime", runtime);
   },
 
-  autoConnectRuntime: function () {
+  autoConnectRuntime: function() {
     // Automatically reconnect to the previously selected runtime,
     // if available and has an ID and feature is enabled
     if (AppManager.selectedRuntime ||
         !Services.prefs.getBoolPref("devtools.webide.autoConnectRuntime") ||
         !this.lastConnectedRuntime) {
       return;
     }
     let [_, type, id] = this.lastConnectedRuntime.match(/^(\w+):(.+)$/);
@@ -456,17 +454,17 @@ var UI = {
           // Only want one auto-connect attempt, so clear last runtime value
           this.lastConnectedRuntime = "";
           this.connectToRuntime(runtime);
         }
       }
     }
   },
 
-  connectToRuntime: function (runtime) {
+  connectToRuntime: function(runtime) {
     let name = runtime.name;
     let promise = AppManager.connectToRuntime(runtime);
     promise.then(() => this.initConnectionTelemetry())
            .catch(() => {
              // Empty rejection handler to silence uncaught rejection warnings
              // |busyUntil| will listen for rejections.
              // Bug 1121100 may find a better way to silence these.
            });
@@ -474,27 +472,27 @@ var UI = {
     // Stop busy timeout for runtimes that take unknown or long amounts of time
     // to connect.
     if (runtime.prolongedConnection) {
       this.cancelBusyTimeout();
     }
     return promise;
   },
 
-  updateRuntimeButton: function () {
+  updateRuntimeButton: function() {
     let labelNode = document.querySelector("#runtime-panel-button > .panel-button-label");
     if (!AppManager.selectedRuntime) {
       labelNode.setAttribute("value", Strings.GetStringFromName("runtimeButton_label"));
     } else {
       let name = AppManager.selectedRuntime.name;
       labelNode.setAttribute("value", name);
     }
   },
 
-  saveLastConnectedRuntime: function () {
+  saveLastConnectedRuntime: function() {
     if (AppManager.selectedRuntime &&
         AppManager.selectedRuntime.id !== undefined) {
       this.lastConnectedRuntime = AppManager.selectedRuntime.type + ":" +
                                   AppManager.selectedRuntime.id;
     } else {
       this.lastConnectedRuntime = "";
     }
   },
@@ -503,53 +501,53 @@ var UI = {
 
   _actionsToLog: new Set(),
 
   /**
    * For each new connection, track whether play and debug were ever used.  Only
    * one value is collected for each button, even if they are used multiple
    * times during a connection.
    */
-  initConnectionTelemetry: function () {
+  initConnectionTelemetry: function() {
     this._actionsToLog.add("play");
     this._actionsToLog.add("debug");
   },
 
   /**
    * Action occurred.  Log that it happened, and remove it from the loggable
    * set.
    */
-  onAction: function (action) {
+  onAction: function(action) {
     if (!this._actionsToLog.has(action)) {
       return;
     }
     this.logActionState(action, true);
     this._actionsToLog.delete(action);
   },
 
   /**
    * Connection status changed or we are shutting down.  Record any loggable
    * actions as having not occurred.
    */
-  updateConnectionTelemetry: function () {
+  updateConnectionTelemetry: function() {
     for (let action of this._actionsToLog.values()) {
       this.logActionState(action, false);
     }
     this._actionsToLog.clear();
   },
 
-  logActionState: function (action, state) {
+  logActionState: function(action, state) {
     let histogramId = "DEVTOOLS_WEBIDE_CONNECTION_" +
                       action.toUpperCase() + "_USED";
     this._telemetry.log(histogramId, state);
   },
 
   /** ******** PROJECTS **********/
 
-  openProject: function () {
+  openProject: function() {
     let project = AppManager.selectedProject;
 
     if (!project) {
       this.resetDeck();
       return;
     }
 
     this.selectDeckPanel("details");
@@ -606,17 +604,17 @@ var UI = {
 
     // Select project
     AppManager.selectedProject = project;
 
     this._telemetry.actionOccurred("webideImportProject");
   },
 
   // Remember the last selected project on the runtime
-  saveLastSelectedProject: function () {
+  saveLastSelectedProject: function() {
     let shouldRestore = Services.prefs.getBoolPref("devtools.webide.restoreLastProject");
     if (!shouldRestore) {
       return;
     }
 
     // Ignore unselection of project on runtime disconnection
     if (!AppManager.connected) {
       return;
@@ -639,17 +637,17 @@ var UI = {
     if (type) {
       Services.prefs.setCharPref("devtools.webide.lastSelectedProject",
                                  type + ":" + project);
     } else {
       Services.prefs.clearUserPref("devtools.webide.lastSelectedProject");
     }
   },
 
-  autoSelectProject: function () {
+  autoSelectProject: function() {
     if (AppManager.selectedProject) {
       return;
     }
     let shouldRestore = Services.prefs.getBoolPref("devtools.webide.restoreLastProject");
     if (!shouldRestore) {
       return;
     }
     let pref = Services.prefs.getCharPref("devtools.webide.lastSelectedProject");
@@ -690,44 +688,44 @@ var UI = {
           name: app.manifest.name
         };
       }
     }
   },
 
   /** ******** DECK **********/
 
-  setupDeck: function () {
+  setupDeck: function() {
     let iframes = document.querySelectorAll("#deck > iframe");
     for (let iframe of iframes) {
       iframe.tooltip = "aHTMLTooltip";
     }
   },
 
-  resetFocus: function () {
+  resetFocus: function() {
     document.commandDispatcher.focusedElement = document.documentElement;
   },
 
-  selectDeckPanel: function (id) {
+  selectDeckPanel: function(id) {
     let deck = document.querySelector("#deck");
     if (deck.selectedPanel && deck.selectedPanel.id === "deck-panel-" + id) {
       // This panel is already displayed.
       return;
     }
     this.resetFocus();
     let panel = deck.querySelector("#deck-panel-" + id);
     let lazysrc = panel.getAttribute("lazysrc");
     if (lazysrc) {
       panel.removeAttribute("lazysrc");
       panel.setAttribute("src", lazysrc);
     }
     deck.selectedPanel = panel;
   },
 
-  resetDeck: function () {
+  resetDeck: function() {
     this.resetFocus();
     let deck = document.querySelector("#deck");
     deck.selectedPanel = null;
   },
 
   async checkRuntimeVersion() {
     if (AppManager.connected) {
       let { client } = AppManager.connection;
@@ -751,17 +749,17 @@ var UI = {
    *   * Toggle toolbox wrench in WebIDE
    *   * Disconnect the current runtime gracefully
    *   * Yank cord out of device
    *   * Close or crash the app/tab
    * We can't know for sure which one was used here, so reset the
    * |toolboxPromise| since someone must be destroying it to reach here,
    * and call our own close method.
    */
-  _onToolboxClosed: function (promise, iframe) {
+  _onToolboxClosed: function(promise, iframe) {
     // Only save toolbox size, disable wrench button, workaround focus issue...
     // if we are closing the last toolbox:
     //  - toolboxPromise is nullified by destroyToolbox and is still null here
     //    if no other toolbox has been opened in between,
     //  - having two distinct promise means we are receiving closed event
     //    for a previous, non-current, toolbox.
     if (!this.toolboxPromise || this.toolboxPromise === promise) {
       this.toolboxPromise = null;
@@ -772,27 +770,27 @@ var UI = {
       splitter.setAttribute("hidden", "true");
       document.querySelector("#action-button-debug").removeAttribute("active");
     }
     // We have to destroy the iframe, otherwise, the keybindings of webide don't work
     // properly anymore.
     iframe.remove();
   },
 
-  destroyToolbox: function () {
+  destroyToolbox: function() {
     // Only have a live toolbox if |this.toolboxPromise| exists
     if (this.toolboxPromise) {
       let toolboxPromise = this.toolboxPromise;
       this.toolboxPromise = null;
       return toolboxPromise.then(toolbox => toolbox.destroy());
     }
     return promise.resolve();
   },
 
-  createToolbox: function () {
+  createToolbox: function() {
     // If |this.toolboxPromise| exists, there is already a live toolbox
     if (this.toolboxPromise) {
       return this.toolboxPromise;
     }
 
     let iframe = document.createElement("iframe");
     iframe.id = "toolbox";
 
@@ -810,70 +808,70 @@ var UI = {
       // toolbox.destroy's promise resolves.
       toolbox.once("destroyed", this._onToolboxClosed.bind(this, promise, iframe));
       return toolbox;
     }, console.error);
 
     return this.busyUntil(this.toolboxPromise, "opening toolbox");
   },
 
-  _showToolbox: function (target, iframe) {
+  _showToolbox: function(target, iframe) {
     let splitter = document.querySelector(".devtools-horizontal-splitter");
     splitter.removeAttribute("hidden");
 
     document.querySelector("notificationbox").insertBefore(iframe, splitter.nextSibling);
     let host = Toolbox.HostType.CUSTOM;
     let options = { customIframe: iframe, zoom: false, uid: iframe.uid };
 
     document.querySelector("#action-button-debug").setAttribute("active", "true");
 
     return gDevTools.showToolbox(target, null, host, options);
   },
 };
 
 EventEmitter.decorate(UI);
 
 var Cmds = {
-  quit: function () {
+  quit: function() {
     window.close();
   },
 
-  showProjectPanel: function () {
+  showProjectPanel: function() {
     ProjectPanel.toggleSidebar();
     return promise.resolve();
   },
 
-  showRuntimePanel: function () {
+  showRuntimePanel: function() {
     RuntimeScanners.scan();
     RuntimePanel.toggleSidebar();
   },
 
-  disconnectRuntime: function () {
-    let disconnecting = (async function () {
+  disconnectRuntime: function() {
+    let disconnecting = (async function() {
       await UI.destroyToolbox();
       await AppManager.disconnectRuntime();
     })();
     return UI.busyUntil(disconnecting, "disconnecting from runtime");
   },
 
-  takeScreenshot: function () {
+  takeScreenshot: function() {
     let url = AppManager.deviceFront.screenshotToDataURL();
     return UI.busyUntil(url.then(longstr => {
       return longstr.string().then(dataURL => {
         longstr.release().catch(console.error);
         UI.openInBrowser(dataURL);
       });
     }), "taking screenshot");
   },
 
-  showRuntimeDetails: function () {
+  showRuntimeDetails: function() {
     UI.selectDeckPanel("runtimedetails");
   },
 
-  showDevicePrefs: function () {
+  showDevicePrefs: function() {
     UI.selectDeckPanel("devicepreferences");
   },
 
   async play() {
     let busy;
     switch (AppManager.selectedProject.type) {
       case "packaged":
         busy = UI.busyWithProgressUntil(AppManager.installAndRunProject(),
@@ -892,57 +890,56 @@ var Cmds = {
     }
     if (!busy) {
       return promise.reject();
     }
     UI.onAction("play");
     return busy;
   },
 
-  stop: function () {
+  stop: function() {
     return UI.busyUntil(AppManager.stopRunningApp(), "stopping app");
   },
 
-  toggleToolbox: function () {
+  toggleToolbox: function() {
     UI.onAction("debug");
     if (UI.toolboxPromise) {
       UI.destroyToolbox();
       return promise.resolve();
-    } else {
-      return UI.createToolbox();
     }
+    return UI.createToolbox();
   },
 
-  removeProject: function () {
+  removeProject: function() {
     AppManager.removeSelectedProject();
   },
 
-  showTroubleShooting: function () {
+  showTroubleShooting: function() {
     UI.openInBrowser(HELP_URL);
   },
 
-  showAddons: function () {
+  showAddons: function() {
     UI.selectDeckPanel("addons");
   },
 
-  showPrefs: function () {
+  showPrefs: function() {
     UI.selectDeckPanel("prefs");
   },
 
-  zoomIn: function () {
+  zoomIn: function() {
     if (UI.contentViewer.fullZoom < MAX_ZOOM) {
       UI.contentViewer.fullZoom += 0.1;
       Services.prefs.setCharPref("devtools.webide.zoom", UI.contentViewer.fullZoom);
     }
   },
 
-  zoomOut: function () {
+  zoomOut: function() {
     if (UI.contentViewer.fullZoom > MIN_ZOOM) {
       UI.contentViewer.fullZoom -= 0.1;
       Services.prefs.setCharPref("devtools.webide.zoom", UI.contentViewer.fullZoom);
     }
   },
 
-  resetZoom: function () {
+  resetZoom: function() {
     UI.contentViewer.fullZoom = 1;
     Services.prefs.setCharPref("devtools.webide.zoom", 1);
   }
 };
--- a/devtools/client/webide/content/wifi-auth.js
+++ b/devtools/client/webide/content/wifi-auth.js
@@ -4,17 +4,17 @@
 
 "use strict";
 
 const { require } =
   ChromeUtils.import("resource://devtools/shared/Loader.jsm", {});
 const Services = require("Services");
 const QR = require("devtools/shared/qrcode/index");
 
-window.addEventListener("load", function () {
+window.addEventListener("load", function() {
   document.getElementById("close").onclick = () => window.close();
   document.getElementById("no-scanner").onclick = showToken;
   document.getElementById("yes-scanner").onclick = hideToken;
   buildUI();
 }, {once: true});
 
 function buildUI() {
   let { oob } = window.arguments[0];
--- a/devtools/client/webide/modules/addons.js
+++ b/devtools/client/webide/modules/addons.js
@@ -32,53 +32,53 @@ addonsListener.onDisabled =
 addonsListener.onInstalled =
 addonsListener.onUninstalled = (updatedAddon) => {
   let addons = GetAvailableAddons();
   addons.adb.updateInstallStatus();
 };
 AddonManager.addAddonListener(addonsListener);
 
 var AvailableAddons = null;
-var GetAvailableAddons = exports.GetAvailableAddons = function () {
+var GetAvailableAddons = exports.GetAvailableAddons = function() {
   if (!AvailableAddons) {
     AvailableAddons = {
       adb: new ADBAddon()
     };
   }
   return AvailableAddons;
 };
 
-exports.ForgetAddonsList = function () {
+exports.ForgetAddonsList = function() {
   AvailableAddons = null;
 };
 
 function Addon() {}
 Addon.prototype = {
   _status: "unknown",
   set status(value) {
     if (this._status != value) {
       this._status = value;
       this.emit("update");
     }
   },
   get status() {
     return this._status;
   },
 
-  updateInstallStatus: function () {
+  updateInstallStatus: function() {
     AddonManager.getAddonByID(this.addonID, (addon) => {
       if (addon && !addon.userDisabled) {
         this.status = "installed";
       } else {
         this.status = "uninstalled";
       }
     });
   },
 
-  install: function () {
+  install: function() {
     AddonManager.getAddonByID(this.addonID, (addon) => {
       if (addon && !addon.userDisabled) {
         this.status = "installed";
         return;
       }
       this.status = "preparing";
       if (addon && addon.userDisabled) {
         addon.userDisabled = false;
@@ -86,57 +86,57 @@ Addon.prototype = {
         AddonManager.getInstallForURL(this.xpiLink, (install) => {
           install.addListener(this);
           install.install();
         }, "application/x-xpinstall");
       }
     });
   },
 
-  uninstall: function () {
+  uninstall: function() {
     AddonManager.getAddonByID(this.addonID, (addon) => {
       addon.uninstall();
     });
   },
 
-  installFailureHandler: function (install, message) {
+  installFailureHandler: function(install, message) {
     this.status = "uninstalled";
     this.emit("failure", message);
   },
 
-  onDownloadStarted: function () {
+  onDownloadStarted: function() {
     this.status = "downloading";
   },
 
-  onInstallStarted: function () {
+  onInstallStarted: function() {
     this.status = "installing";
   },
 
-  onDownloadProgress: function (install) {
+  onDownloadProgress: function(install) {
     if (install.maxProgress == -1) {
       this.emit("progress", -1);
     } else {
       this.emit("progress", install.progress / install.maxProgress);
     }
   },
 
-  onInstallEnded: function ({addon}) {
+  onInstallEnded: function({addon}) {
     addon.userDisabled = false;
   },
 
-  onDownloadCancelled: function (install) {
+  onDownloadCancelled: function(install) {
     this.installFailureHandler(install, "Download cancelled");
   },
-  onDownloadFailed: function (install) {
+  onDownloadFailed: function(install) {
     this.installFailureHandler(install, "Download failed");
   },
-  onInstallCancelled: function (install) {
+  onInstallCancelled: function(install) {
     this.installFailureHandler(install, "Install cancelled");
   },
-  onInstallFailed: function (install) {
+  onInstallFailed: function(install) {
     this.installFailureHandler(install, "Install failed");
   },
 };
 
 function ADBAddon() {
   EventEmitter.decorate(this);
   // This addon uses the string "linux" for "linux32"
   let fixedOS = OS == "linux32" ? "linux" : OS;
--- a/devtools/client/webide/modules/app-manager.js
+++ b/devtools/client/webide/modules/app-manager.js
@@ -23,17 +23,17 @@ const Strings = Services.strings.createB
 
 var AppManager = exports.AppManager = {
 
   DEFAULT_PROJECT_ICON: "chrome://webide/skin/default-app-icon.png",
   DEFAULT_PROJECT_NAME: "--",
 
   _initialized: false,
 
-  init: function () {
+  init: function() {
     if (this._initialized) {
       return;
     }
     this._initialized = true;
 
     let port = Services.prefs.getIntPref("devtools.debugger.remote-port");
     this.connection = ConnectionManager.createConnection("localhost", port);
     this.onConnectionChanged = this.onConnectionChanged.bind(this);
@@ -51,17 +51,17 @@ var AppManager = exports.AppManager = {
     this._rebuildRuntimeList = this._rebuildRuntimeList.bind(this);
     RuntimeScanners.on("runtime-list-updated", this._rebuildRuntimeList);
     RuntimeScanners.enable();
     this._rebuildRuntimeList();
 
     this._telemetry = new Telemetry();
   },
 
-  destroy: function () {
+  destroy: function() {
     if (!this._initialized) {
       return;
     }
     this._initialized = false;
 
     this.selectedProject = null;
     this.selectedRuntime = null;
     RuntimeScanners.off("runtime-list-updated", this._rebuildRuntimeList);
@@ -117,37 +117,37 @@ var AppManager = exports.AppManager = {
    *     Detailed runtime telemetry has been recorded.  Used by tests.
    *   runtime-targets:
    *     The list of remote runtime targets available from the currently
    *     connected runtime (such as tabs or apps) has changed, or any of the
    *     user-visible details (like names) for the non-selected runtime targets
    *     has changed.  This event includes |type| in the details, to distinguish
    *     "apps" and "tabs".
    */
-  update: function (what, details) {
+  update: function(what, details) {
     // Anything we want to forward to the UI
     this.emit("app-manager-update", what, details);
   },
 
-  reportError: function (l10nProperty, ...l10nArgs) {
+  reportError: function(l10nProperty, ...l10nArgs) {
     let win = Services.wm.getMostRecentWindow("devtools:webide");
     if (win) {
       win.UI.reportError(l10nProperty, ...l10nArgs);
     } else {
       let text;
       if (l10nArgs.length > 0) {
         text = Strings.formatStringFromName(l10nProperty, l10nArgs, l10nArgs.length);
       } else {
         text = Strings.GetStringFromName(l10nProperty);
       }
       console.error(text);
     }
   },
 
-  onConnectionChanged: function () {
+  onConnectionChanged: function() {
     console.log("Connection status changed: " + this.connection.status);
 
     if (this.connection.status == Connection.Status.DISCONNECTED) {
       this.selectedRuntime = null;
     }
 
     if (!this.connected) {
       this._listTabsResponse = null;
@@ -165,51 +165,50 @@ var AppManager = exports.AppManager = {
   get connected() {
     return this.connection &&
            this.connection.status == Connection.Status.CONNECTED;
   },
 
   get apps() {
     if (this._appsFront) {
       return this._appsFront.apps;
-    } else {
-      return new Map();
     }
+    return new Map();
   },
 
-  isProjectRunning: function () {
+  isProjectRunning: function() {
     if (this.selectedProject.type == "mainProcess" ||
         this.selectedProject.type == "tab") {
       return true;
     }
 
     let app = this._getProjectFront(this.selectedProject);
     return app && app.running;
   },
 
-  checkIfProjectIsRunning: function () {
+  checkIfProjectIsRunning: function() {
     if (this.selectedProject) {
       if (this.isProjectRunning()) {
         this.update("project-started");
       } else {
         this.update("project-stopped");
       }
     }
   },
 
-  listTabs: function () {
+  listTabs: function() {
     return this.tabStore.listTabs();
   },
 
-  onTabList: function () {
+  onTabList: function() {
     this.update("runtime-targets", { type: "tabs" });
   },
 
   // TODO: Merge this into TabProject as part of project-agnostic work
-  onTabNavigate: function () {
+  onTabNavigate: function() {
     this.update("runtime-targets", { type: "tabs" });
     if (this.selectedProject.type !== "tab") {
       return;
     }
     let tab = this.selectedProject.app = this.tabStore.selectedTab;
     let uri = NetUtil.newURI(tab.url);
     // Wanted to use nsIFaviconService here, but it only works for visited
     // tabs, so that's no help for any remote tabs.  Maybe some favicon wizard
@@ -221,65 +220,64 @@ var AppManager = exports.AppManager = {
       tab.name = uri.host + ": " + tab.name;
     }
     this.selectedProject.location = tab.url;
     this.selectedProject.name = tab.name;
     this.selectedProject.icon = tab.favicon;
     this.update("project-validated");
   },
 
-  onTabClosed: function () {
+  onTabClosed: function() {
     if (this.selectedProject.type !== "tab") {
       return;
     }
     this.selectedProject = null;
   },
 
-  reloadTab: function () {
+  reloadTab: function() {
     if (this.selectedProject && this.selectedProject.type != "tab") {
       return Promise.reject("tried to reload non-tab project");
     }
     return this.getTarget().then(target => {
       target.activeTab.reload();
     }, console.error);
   },
 
-  getTarget: function () {
+  getTarget: function() {
     if (this.selectedProject.type == "mainProcess") {
       // Fx >=39 exposes a ChromeActor to debug the main process
       if (this.connection.client.mainRoot.traits.allowChromeProcess) {
         return this.connection.client.getProcess()
                    .then(aResponse => {
                      return TargetFactory.forRemoteTab({
                        form: aResponse.form,
                        client: this.connection.client,
                        chrome: true
                      });
                    });
-      } else {
+      }
         // Fx <39 exposes tab actors on the root actor
-        return TargetFactory.forRemoteTab({
+      return TargetFactory.forRemoteTab({
           form: this._listTabsResponse,
           client: this.connection.client,
           chrome: true,
           isTabActor: false
-        });
-      }
+      });
     }
 
     if (this.selectedProject.type == "tab") {
       return this.tabStore.getTargetForTab();
     }
 
     let app = this._getProjectFront(this.selectedProject);
     if (!app) {
       return Promise.reject("Can't find app front for selected project");
     }
 
-    return (async function () {
+    return (async function() {
       // Once we asked the app to launch, the app isn't necessary completely loaded.
       // launch request only ask the app to launch and immediatly returns.
       // We have to keep trying to get app tab actors required to create its target.
 
       for (let i = 0; i < 10; i++) {
         try {
           return await app.getTarget();
         } catch (e) {}
@@ -288,34 +286,34 @@ var AppManager = exports.AppManager = {
         });
       }
 
       AppManager.reportError("error_cantConnectToApp", app.manifest.manifestURL);
       throw new Error("can't connect to app");
     })();
   },
 
-  getProjectManifestURL: function (project) {
+  getProjectManifestURL: function(project) {
     let manifest = null;
     if (project.type == "runtimeApp") {
       manifest = project.app.manifestURL;
     }
 
     if (project.type == "hosted") {
       manifest = project.location;
     }
 
     if (project.type == "packaged" && project.packagedAppOrigin) {
       manifest = "app://" + project.packagedAppOrigin + "/manifest.webapp";
     }
 
     return manifest;
   },
 
-  _getProjectFront: function (project) {
+  _getProjectFront: function(project) {
     let manifest = this.getProjectManifestURL(project);
     if (manifest && this._appsFront) {
       return this._appsFront.apps.get(manifest);
     }
     return null;
   },
 
   _selectedProject: null,
@@ -341,17 +339,19 @@ var AppManager = exports.AppManager = {
       } else if (type === "mainProcess") {
         return;
       } else {
         throw new Error("Unsupported project type: " + type);
       }
     }
 
     let cancelled = false;
-    this.update("before-project", { cancel: () => { cancelled = true; } });
+    this.update("before-project", { cancel: () => {
+      cancelled = true;
+    } });
     if (cancelled) {
       return;
     }
 
     this._selectedProject = project;
 
     // Clear out tab store's selected state, if any
     this.tabStore.selectedTab = null;
@@ -396,18 +396,17 @@ var AppManager = exports.AppManager = {
     }
     this.update("runtime");
   },
 
   get selectedRuntime() {
     return this._selectedRuntime;
   },
 
-  connectToRuntime: function (runtime) {
-
+  connectToRuntime: function(runtime) {
     if (this.connected && this.selectedRuntime === runtime) {
       // Already connected
       return Promise.resolve();
     }
 
     let deferred = new Promise((resolve, reject) => {
       this.disconnectRuntime().then(() => {
         this.selectedRuntime = runtime;
@@ -484,17 +483,17 @@ var AppManager = exports.AppManager = {
                              d.platformversion, true);
     this._telemetry.logKeyed("DEVTOOLS_WEBIDE_CONNECTED_RUNTIME_APP_TYPE",
                              d.apptype, true);
     this._telemetry.logKeyed("DEVTOOLS_WEBIDE_CONNECTED_RUNTIME_VERSION",
                              d.version, true);
     this.update("runtime-telemetry");
   },
 
-  isMainProcessDebuggable: function () {
+  isMainProcessDebuggable: function() {
     // Fx <39 exposes chrome tab actors on RootActor
     // Fx >=39 exposes a dedicated actor via getProcess request
     return this.connection.client &&
            this.connection.client.mainRoot &&
            this.connection.client.mainRoot.traits.allowChromeProcess ||
            (this._listTabsResponse &&
             this._listTabsResponse.consoleActor);
   },
@@ -512,52 +511,51 @@ var AppManager = exports.AppManager = {
 
   get preferenceFront() {
     if (!this._listTabsResponse) {
       return null;
     }
     return getPreferenceFront(this.connection.client, this._listTabsResponse);
   },
 
-  disconnectRuntime: function () {
+  disconnectRuntime: function() {
     if (!this.connected) {
       return Promise.resolve();
     }
 
     return new Promise(resolve => {
       this.connection.once(Connection.Events.DISCONNECTED, () => resolve());
       this.connection.disconnect();
     });
   },
 
-  launchRuntimeApp: function () {
+  launchRuntimeApp: function() {
     if (this.selectedProject && this.selectedProject.type != "runtimeApp") {
       return Promise.reject("attempting to launch a non-runtime app");
     }
     let app = this._getProjectFront(this.selectedProject);
     return app.launch();
   },
 
-  launchOrReloadRuntimeApp: function () {
+  launchOrReloadRuntimeApp: function() {
     if (this.selectedProject && this.selectedProject.type != "runtimeApp") {
       return Promise.reject("attempting to launch / reload a non-runtime app");
     }
     let app = this._getProjectFront(this.selectedProject);
     if (!app.running) {
       return app.launch();
-    } else {
-      return app.reload();
     }
+    return app.reload();
   },
 
-  runtimeCanHandleApps: function () {
+  runtimeCanHandleApps: function() {
     return !!this._appsFront;
   },
 
-  installAndRunProject: function () {
+  installAndRunProject: function() {
     let project = this.selectedProject;
 
     if (!project || (project.type != "packaged" && project.type != "hosted")) {
       console.error("Can't install project. Unknown type of project.");
       return Promise.reject("Can't install");
     }
 
     if (!this._listTabsResponse) {
@@ -565,17 +563,17 @@ var AppManager = exports.AppManager = {
       return Promise.reject("Can't install");
     }
 
     if (!this._appsFront) {
       console.error("Runtime doesn't have a webappsActor");
       return Promise.reject("Can't install");
     }
 
-    return (async function () {
+    return (async function() {
       let self = AppManager;
 
       // Validate project
       await self.validateAndUpdateProject(project);
 
       if (project.errorsCount > 0) {
         self.reportError("error_cantInstallValidationErrors");
         return;
@@ -634,30 +632,29 @@ var AppManager = exports.AppManager = {
         await app.launch();
         await deferred;
       } else {
         await app.reload();
       }
     })();
   },
 
-  stopRunningApp: function () {
+  stopRunningApp: function() {
     let app = this._getProjectFront(this.selectedProject);
     return app.close();
   },
 
   /* PROJECT VALIDATION */
 
-  validateAndUpdateProject: function (project) {
+  validateAndUpdateProject: function(project) {
     if (!project) {
       return Promise.reject();
     }
 
-    return (async function () {
-
+    return (async function() {
       let packageDir = project.location;
       let validation = new AppValidator({
         type: project.type,
         // Build process may place the manifest in a non-root directory
         location: packageDir
       });
 
       await validation.validate();
@@ -668,26 +665,24 @@ var AppManager = exports.AppManager = {
         if (manifest.icons) {
           let size = Object.keys(manifest.icons).sort((a, b) => b - a)[0];
           if (size) {
             iconPath = manifest.icons[size];
           }
         }
         if (!iconPath) {
           project.icon = AppManager.DEFAULT_PROJECT_ICON;
-        } else {
-          if (project.type == "hosted") {
-            let manifestURL = Services.io.newURI(project.location);
-            let origin = Services.io.newURI(manifestURL.prePath);
-            project.icon = Services.io.newURI(iconPath, null, origin).spec;
-          } else if (project.type == "packaged") {
-            let projectFolder = FileUtils.File(packageDir);
-            let folderURI = Services.io.newFileURI(projectFolder).spec;
-            project.icon = folderURI + iconPath.replace(/^\/|\\/, "");
-          }
+        } else if (project.type == "hosted") {
+          let manifestURL = Services.io.newURI(project.location);
+          let origin = Services.io.newURI(manifestURL.prePath);
+          project.icon = Services.io.newURI(iconPath, null, origin).spec;
+        } else if (project.type == "packaged") {
+          let projectFolder = FileUtils.File(packageDir);
+          let folderURI = Services.io.newFileURI(projectFolder).spec;
+          project.icon = folderURI + iconPath.replace(/^\/|\\/, "");
         }
         project.manifest = validation.manifest;
 
         if ("name" in project.manifest) {
           project.name = project.manifest.name;
         } else {
           project.name = AppManager.DEFAULT_PROJECT_NAME;
         }
@@ -730,25 +725,25 @@ var AppManager = exports.AppManager = {
       if (AppManager.selectedProject === project) {
         AppManager.update("project-validated");
       }
     })();
   },
 
   /* RUNTIME LIST */
 
-  _clearRuntimeList: function () {
+  _clearRuntimeList: function() {
     this.runtimeList = {
       usb: [],
       wifi: [],
       other: []
     };
   },
 
-  _rebuildRuntimeList: function () {
+  _rebuildRuntimeList: function() {
     let runtimes = RuntimeScanners.listRuntimes();
     this._clearRuntimeList();
 
     // Reorganize runtimes by type
     for (let runtime of runtimes) {
       switch (runtime.type) {
         case RuntimeTypes.USB:
           this.runtimeList.usb.push(runtime);
@@ -762,17 +757,17 @@ var AppManager = exports.AppManager = {
     }
 
     this.update("runtime-details");
     this.update("runtime-list");
   },
 
   /* MANIFEST UTILS */
 
-  writeManifest: function (project) {
+  writeManifest: function(project) {
     if (project.type != "packaged") {
       return Promise.reject("Not a packaged app");
     }
 
     if (!project.manifest) {
       project.manifest = {};
     }
 
--- a/devtools/client/webide/modules/app-projects.js
+++ b/devtools/client/webide/modules/app-projects.js
@@ -14,45 +14,43 @@ const {FileUtils} = require("resource://
  * The only constraint is that project objects have to have
  * a unique `location` object.
  */
 
 const IDB = {
   _db: null,
   databaseName: "AppProjects",
 
-  open: function () {
+  open: function() {
     return new Promise((resolve, reject) => {
       let request = indexedDB.open(IDB.databaseName, 5);
-      request.onerror = function (event) {
+      request.onerror = function(event) {
         reject("Unable to open AppProjects indexedDB: " +
                         this.error.name + " - " + this.error.message);
       };
-      request.onupgradeneeded = function (event) {
+      request.onupgradeneeded = function(event) {
         let db = event.target.result;
         db.createObjectStore("projects", { keyPath: "location" });
       };
 
-      request.onsuccess = function () {
+      request.onsuccess = function() {
         let db = IDB._db = request.result;
         let objectStore = db.transaction("projects").objectStore("projects");
         let projects = [];
         let toRemove = [];
-        objectStore.openCursor().onsuccess = function (event) {
+        objectStore.openCursor().onsuccess = function(event) {
           let cursor = event.target.result;
           if (cursor) {
             if (cursor.value.location) {
-
               // We need to make sure this object has a `.location` property.
               // The UI depends on this property.
               // This should not be needed as we make sure to register valid
               // projects, but in the past (before bug 924568), we might have
               // registered invalid objects.
 
-
               // We also want to make sure the location is valid.
               // If the location doesn't exist, we remove the project.
 
               try {
                 let file = FileUtils.File(cursor.value.location);
                 if (file.exists()) {
                   projects.push(cursor.value);
                 } else {
@@ -75,78 +73,78 @@ const IDB = {
               resolve(projects);
             });
           }
         };
       };
     });
   },
 
-  add: function (project) {
+  add: function(project) {
     return new Promise((resolve, reject) => {
       if (!project.location) {
         // We need to make sure this object has a `.location` property.
         reject("Missing location property on project object.");
       } else {
         let transaction = IDB._db.transaction(["projects"], "readwrite");
         let objectStore = transaction.objectStore("projects");
         let request = objectStore.add(project);
-        request.onerror = function (event) {
+        request.onerror = function(event) {
           reject("Unable to add project to the AppProjects indexedDB: " +
                  this.error.name + " - " + this.error.message);
         };
-        request.onsuccess = function () {
+        request.onsuccess = function() {
           resolve();
         };
       }
     });
   },
 
-  update: function (project) {
+  update: function(project) {
     return new Promise((resolve, reject) => {
       var transaction = IDB._db.transaction(["projects"], "readwrite");
       var objectStore = transaction.objectStore("projects");
       var request = objectStore.put(project);
-      request.onerror = function (event) {
+      request.onerror = function(event) {
         reject("Unable to update project to the AppProjects indexedDB: " +
                this.error.name + " - " + this.error.message);
       };
-      request.onsuccess = function () {
+      request.onsuccess = function() {
         resolve();
       };
     });
   },
 
-  remove: function (location) {
+  remove: function(location) {
     return new Promise((resolve, reject) => {
       let request = IDB._db.transaction(["projects"], "readwrite")
                     .objectStore("projects")
                     .delete(location);
-      request.onsuccess = function (event) {
+      request.onsuccess = function(event) {
         resolve();
       };
-      request.onerror = function () {
+      request.onerror = function() {
         reject("Unable to delete project to the AppProjects indexedDB: " +
                this.error.name + " - " + this.error.message);
       };
     });
   }
 };
 
-var loadDeferred = IDB.open().then(function (projects) {
+var loadDeferred = IDB.open().then(function(projects) {
   AppProjects.projects = projects;
   AppProjects.emit("ready", projects);
 });
 
 const AppProjects = {
-  load: function () {
+  load: function() {
     return loadDeferred;
   },
 
-  addPackaged: function (folder) {
+  addPackaged: function(folder) {
     let file = FileUtils.File(folder.path);
     if (!file.exists()) {
       return Promise.reject("path doesn't exist");
     }
     let existingProject = this.get(folder.path);
     if (existingProject) {
       return Promise.reject("Already added");
     }
@@ -163,56 +161,56 @@ const AppProjects = {
       packagedAppOrigin: generateUUID().toString().slice(1, -1)
     };
     return IDB.add(project).then(() => {
       this.projects.push(project);
       return project;
     });
   },
 
-  addHosted: function (manifestURL) {
+  addHosted: function(manifestURL) {
     let existingProject = this.get(manifestURL);
     if (existingProject) {
       return Promise.reject("Already added");
     }
     let project = {
       type: "hosted",
       location: manifestURL
     };
     return IDB.add(project).then(() => {
       this.projects.push(project);
       return project;
     });
   },
 
-  update: function (project) {
+  update: function(project) {
     return IDB.update(project);
   },
 
-  updateLocation: function (project, newLocation) {
+  updateLocation: function(project, newLocation) {
     return IDB.remove(project.location)
               .then(() => {
                 project.location = newLocation;
                 return IDB.add(project);
               });
   },
 
-  remove: function (location) {
+  remove: function(location) {
     return IDB.remove(location).then(() => {
       for (let i = 0; i < this.projects.length; i++) {
         if (this.projects[i].location == location) {
           this.projects.splice(i, 1);
           return;
         }
       }
       throw new Error("Unable to find project in AppProjects store");
     });
   },
 
-  get: function (location) {
+  get: function(location) {
     for (let i = 0; i < this.projects.length; i++) {
       if (this.projects[i].location == location) {
         return this.projects[i];
       }
     }
     return null;
   },
 
--- a/devtools/client/webide/modules/app-validator.js
+++ b/devtools/client/webide/modules/app-validator.js
@@ -11,25 +11,25 @@ var strings = Services.strings.createBun
 
 function AppValidator({ type, location }) {
   this.type = type;
   this.location = location;
   this.errors = [];
   this.warnings = [];
 }
 
-AppValidator.prototype.error = function (message) {
+AppValidator.prototype.error = function(message) {
   this.errors.push(message);
 };
 
-AppValidator.prototype.warning = function (message) {
+AppValidator.prototype.warning = function(message) {
   this.warnings.push(message);
 };
 
-AppValidator.prototype._getPackagedManifestFile = function () {
+AppValidator.prototype._getPackagedManifestFile = function() {
   let manifestFile = FileUtils.File(this.location);
   if (!manifestFile.exists()) {
     this.error(strings.GetStringFromName("validator.nonExistingFolder"));
     return null;
   }
   if (!manifestFile.isDirectory()) {
     this.error(strings.GetStringFromName("validator.expectProjectFolder"));
     return null;
@@ -47,95 +47,95 @@ AppValidator.prototype._getPackagedManif
   if (!hasAppManifest && !hasJsonManifest) {
     this.error(strings.GetStringFromName("validator.noManifestFile"));
     return null;
   }
 
   return hasAppManifest ? appManifestFile : jsonManifestFile;
 };
 
-AppValidator.prototype._getPackagedManifestURL = function () {
+AppValidator.prototype._getPackagedManifestURL = function() {
   let manifestFile = this._getPackagedManifestFile();
   if (!manifestFile) {
     return null;
   }
   return Services.io.newFileURI(manifestFile).spec;
 };
 
-AppValidator.checkManifest = function (manifestURL) {
+AppValidator.checkManifest = function(manifestURL) {
   return new Promise((resolve, reject) => {
     let error;
 
     let req = new XMLHttpRequest();
     req.overrideMimeType("text/plain");
 
     try {
       req.open("GET", manifestURL, true);
       req.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_CACHING;
     } catch (e) {
       error = strings.formatStringFromName("validator.invalidManifestURL", [manifestURL], 1);
       return reject(error);
     }
 
-    req.onload = function () {
+    req.onload = function() {
       let manifest = null;
       try {
         manifest = JSON.parse(req.responseText);
       } catch (e) {
         error = strings.formatStringFromName("validator.invalidManifestJSON", [e, manifestURL], 2);
         reject(error);
       }
 
       resolve({manifest, manifestURL});
     };
 
-    req.onerror = function () {
+    req.onerror = function() {
       error = strings.formatStringFromName("validator.noAccessManifestURL", [req.statusText, manifestURL], 2);
       reject(error);
     };
 
     try {
       req.send(null);
     } catch (e) {
       error = strings.formatStringFromName("validator.noAccessManifestURL", [e, manifestURL], 2);
       reject(error);
     }
   });
 };
 
-AppValidator.findManifestAtOrigin = function (manifestURL) {
+AppValidator.findManifestAtOrigin = function(manifestURL) {
   let fixedManifest = Services.io.newURI(manifestURL).prePath + "/manifest.webapp";
   return AppValidator.checkManifest(fixedManifest);
 };
 
-AppValidator.findManifestPath = function (manifestURL) {
+AppValidator.findManifestPath = function(manifestURL) {
   return new Promise((resolve, reject) => {
     if (manifestURL.endsWith("manifest.webapp")) {
       reject();
     } else {
       let fixedManifest = manifestURL + "/manifest.webapp";
       resolve(AppValidator.checkManifest(fixedManifest));
     }
   });
 };
 
-AppValidator.checkAlternateManifest = function (manifestURL) {
-  return (async function () {
+AppValidator.checkAlternateManifest = function(manifestURL) {
+  return (async function() {
     let result;
     try {
       result = await AppValidator.findManifestPath(manifestURL);
     } catch (e) {
       result = await AppValidator.findManifestAtOrigin(manifestURL);
     }
 
     return result;
   })();
 };
 
-AppValidator.prototype._fetchManifest = function (manifestURL) {
+AppValidator.prototype._fetchManifest = function(manifestURL) {
   return new Promise(resolve => {
     this.manifestURL = manifestURL;
 
     AppValidator.checkManifest(manifestURL)
                 .then(({manifest, manifestURL}) => {
                   resolve(manifest);
                 }, error => {
                   AppValidator.checkAlternateManifest(manifestURL)
@@ -145,59 +145,60 @@ AppValidator.prototype._fetchManifest = 
                               }, () => {
                                 this.error(error);
                                 resolve(null);
                               });
                 });
   });
 };
 
-AppValidator.prototype._getManifest = function () {
+AppValidator.prototype._getManifest = function() {
   let manifestURL;
   if (this.type == "packaged") {
     manifestURL = this._getPackagedManifestURL();
-    if (!manifestURL)
+    if (!manifestURL) {
       return Promise.resolve(null);
+    }
   } else if (this.type == "hosted") {
     manifestURL = this.location;
     try {
       Services.io.newURI(manifestURL);
     } catch (e) {
       this.error(strings.formatStringFromName("validator.invalidHostedManifestURL", [manifestURL, e.message], 2));
       return Promise.resolve(null);
     }
   } else {
     this.error(strings.formatStringFromName("validator.invalidProjectType", [this.type], 1));
     return Promise.resolve(null);
   }
   return this._fetchManifest(manifestURL);
 };
 
-AppValidator.prototype.validateManifest = function (manifest) {
+AppValidator.prototype.validateManifest = function(manifest) {
   if (!manifest.name) {
     this.error(strings.GetStringFromName("validator.missNameManifestProperty"));
   }
 
   if (!manifest.icons || Object.keys(manifest.icons).length === 0) {
     this.warning(strings.GetStringFromName("validator.missIconsManifestProperty"));
   } else if (!manifest.icons["128"]) {
     this.warning(strings.GetStringFromName("validator.missIconMarketplace2"));
   }
 };
 
-AppValidator.prototype._getOriginURL = function () {
+AppValidator.prototype._getOriginURL = function() {
   if (this.type == "packaged") {
     let manifestURL = Services.io.newURI(this.manifestURL);
     return Services.io.newURI(".", null, manifestURL).spec;
   } else if (this.type == "hosted") {
     return Services.io.newURI(this.location).prePath;
   }
 };
 
-AppValidator.prototype.validateLaunchPath = function (manifest) {
+AppValidator.prototype.validateLaunchPath = function(manifest) {
   return new Promise(resolve => {
     // The launch_path field has to start with a `/`
     if (manifest.launch_path && manifest.launch_path[0] !== "/") {
       this.error(strings.formatStringFromName("validator.nonAbsoluteLaunchPath", [manifest.launch_path], 1));
       resolve();
     }
     let origin = this._getOriginURL();
     let path;
@@ -219,54 +220,55 @@ AppValidator.prototype.validateLaunchPat
     try {
       req.open("HEAD", indexURL, true);
       req.channel.loadFlags |= Ci.nsIRequest.LOAD_BYPASS_CACHE | Ci.nsIRequest.INHIBIT_CACHING;
     } catch (e) {
       this.error(strings.formatStringFromName("validator.accessFailedLaunchPath", [indexURL], 1));
       return resolve();
     }
     req.onload = () => {
-      if (req.status >= 400)
+      if (req.status >= 400) {
         this.error(strings.formatStringFromName("validator.accessFailedLaunchPathBadHttpCode", [indexURL, req.status], 2));
+      }
       resolve();
     };
     req.onerror = () => {
       this.error(strings.formatStringFromName("validator.accessFailedLaunchPath", [indexURL], 1));
       resolve();
     };
 
     try {
       req.send(null);
     } catch (e) {
       this.error(strings.formatStringFromName("validator.accessFailedLaunchPath", [indexURL], 1));
       resolve();
     }
   });
 };
 
-AppValidator.prototype.validateType = function (manifest) {
+AppValidator.prototype.validateType = function(manifest) {
   let appType = manifest.type || "web";
   if (!["web", "privileged", "certified"].includes(appType)) {
     this.error(strings.formatStringFromName("validator.invalidAppType", [appType], 1));
   } else if (this.type == "hosted" &&
              ["certified", "privileged"].includes(appType)) {
     this.error(strings.formatStringFromName("validator.invalidHostedPriviledges", [appType], 1));
   }
 
   // certified app are not fully supported on the simulator
   if (appType === "certified") {
     this.warning(strings.GetStringFromName("validator.noCertifiedSupport"));
   }
 };
 
-AppValidator.prototype.validate = function () {
+AppValidator.prototype.validate = function() {
   this.errors = [];
   this.warnings = [];
-  return this._getManifest().
-    then((manifest) => {
+  return this._getManifest()
+    .then((manifest) => {
       if (manifest) {
         this.manifest = manifest;
 
         // Skip validations for add-ons
         if (manifest.role === "addon" || manifest.manifest_version) {
           return Promise.resolve();
         }
 
--- a/devtools/client/webide/modules/config-view.js
+++ b/devtools/client/webide/modules/config-view.js
@@ -5,25 +5,25 @@
 const {Cu} = require("chrome");
 
 const EventEmitter = require("devtools/shared/event-emitter");
 const Services = require("Services");
 const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var ConfigView;
 
-module.exports = ConfigView = function (window) {
+module.exports = ConfigView = function(window) {
   EventEmitter.decorate(this);
   this._doc = window.document;
   this._keys = [];
   return this;
 };
 
 ConfigView.prototype = {
-  _renderByType: function (input, name, value, customType) {
+  _renderByType: function(input, name, value, customType) {
     value = customType || typeof value;
 
     switch (value) {
       case "boolean":
         input.setAttribute("data-type", "boolean");
         input.setAttribute("type", "checkbox");
         break;
       case "number":
@@ -57,17 +57,17 @@ ConfigView.prototype = {
   set kind(kind) {
     this._kind = kind;
   },
 
   set includeTypeName(include) {
     this._includeTypeName = include;
   },
 
-  search: function (event) {
+  search: function(event) {
     if (event.target.value.length) {
       let stringMatch = new RegExp(event.target.value, "i");
 
       for (let i = 0; i < this._keys.length; i++) {
         let key = this._keys[i];
         let row = this._doc.getElementById("row-" + key);
         if (key.match(stringMatch)) {
           row.classList.remove("hide");
@@ -79,27 +79,27 @@ ConfigView.prototype = {
       var trs = this._doc.getElementById("device-fields").querySelectorAll("tr");
 
       for (let i = 0; i < trs.length; i++) {
         trs[i].classList.remove("hide");
       }
     }
   },
 
-  generateDisplay: function (json) {
+  generateDisplay: function(json) {
     let deviceItems = Object.keys(json);
     deviceItems.sort();
     this.keys = deviceItems;
     for (let i = 0; i < this.keys.length; i++) {
       let key = this.keys[i];
       this.generateField(key, json[key].value, json[key].hasUserValue);
     }
   },
 
-  generateField: function (name, value, hasUserValue, customType, newRow) {
+  generateField: function(name, value, hasUserValue, customType, newRow) {
     let table = this._doc.querySelector("table");
     let sResetDefault = Strings.GetStringFromName("device_reset_default");
 
     if (!this._keys.includes(name)) {
       this._keys.push(name);
     }
 
     let input = this._doc.createElement("input");
@@ -155,48 +155,48 @@ ConfigView.prototype = {
       } else {
         existing.value = value;
       }
     } else {
       table.appendChild(tr);
     }
   },
 
-  resetTable: function () {
+  resetTable: function() {
     let table = this._doc.querySelector("table");
     let trs = table.querySelectorAll("tr:not(#add-custom-field)");
 
     for (var i = 0; i < trs.length; i++) {
       table.removeChild(trs[i]);
     }
 
     return table;
   },
 
-  _getCallType: function (type, name) {
+  _getCallType: function(type, name) {
     let frontName = "get";
 
     if (this._includeTypeName) {
       frontName += type;
     }
 
     return this._front[frontName + this._kind](name);
   },
 
-  _setCallType: function (type, name, value) {
+  _setCallType: function(type, name, value) {
     let frontName = "set";
 
     if (this._includeTypeName) {
       frontName += type;
     }
 
     return this._front[frontName + this._kind](name, value);
   },
 
-  _saveByType: function (options) {
+  _saveByType: function(options) {
     let fieldName = options.id;
     let inputType = options.type;
     let value = options.value;
     let input = this._doc.getElementById(fieldName);
 
     switch (inputType) {
       case "boolean":
         this._setCallType("Bool", fieldName, input.checked);
@@ -211,17 +211,17 @@ ConfigView.prototype = {
         this._setCallType("Object", fieldName, value);
         break;
       default:
         this._setCallType("Char", fieldName, value);
         break;
     }
   },
 
-  updateField: function (event) {
+  updateField: function(event) {
     if (event.target) {
       let inputType = event.target.getAttribute("data-type");
       let inputValue = event.target.checked || event.target.value;
 
       if (event.target.nodeName == "input" &&
           event.target.validity.valid &&
           event.target.classList.contains("editable")) {
         let id = event.target.id;
@@ -238,17 +238,17 @@ ConfigView.prototype = {
           type: inputType,
           value: inputValue
         });
         this._doc.getElementById("btn-" + id).classList.remove("hide");
       }
     }
   },
 
-  _resetToDefault: function (name, input, button) {
+  _resetToDefault: function(name, input, button) {
     this._front["clearUser" + this._kind](name);
     let dataType = input.getAttribute("data-type");
     let tr = this._doc.getElementById("row-" + name);
 
     switch (dataType) {
       case "boolean":
         this._defaultField = this._getCallType("Bool", name);
         this._defaultField.then(boolean => {
@@ -282,25 +282,25 @@ ConfigView.prototype = {
           tr.remove();
         });
         break;
     }
 
     button.classList.add("hide");
   },
 
-  checkReset: function (event) {
+  checkReset: function(event) {
     if (event.target.classList.contains("reset")) {
       let btnId = event.target.getAttribute("data-id");
       let input = this._doc.getElementById(btnId);
       this._resetToDefault(btnId, input, event.target);
     }
   },
 
-  updateFieldType: function () {
+  updateFieldType: function() {
     let table = this._doc.querySelector("table");
     let customValueType = table.querySelector("#custom-value-type").value;
     let customTextEl = table.querySelector("#custom-value-text");
     let customText = customTextEl.value;
 
     if (customValueType.length === 0) {
       return false;
     }
@@ -317,29 +317,29 @@ ConfigView.prototype = {
       default:
         customTextEl.type = "text";
         break;
     }
 
     return customValueType;
   },
 
-  clearNewFields: function () {
+  clearNewFields: function() {
     let table = this._doc.querySelector("table");
     let customTextEl = table.querySelector("#custom-value-text");
     if (customTextEl.checked) {
       customTextEl.checked = false;
     } else {
       customTextEl.value = "";
     }
 
     this.updateFieldType();
   },
 
-  updateNewField: function () {
+  updateNewField: function() {
     let table = this._doc.querySelector("table");
     let customValueType = this.updateFieldType();
 
     if (!customValueType) {
       return;
     }
 
     let customRow = table.querySelector("tr:nth-of-type(2)");
@@ -360,14 +360,14 @@ ConfigView.prototype = {
         type: customValueType,
         value: customText
       });
       customTextNameEl.value = "";
       this.clearNewFields();
     }
   },
 
-  checkNewFieldSubmit: function (event) {
+  checkNewFieldSubmit: function(event) {
     if (event.keyCode === 13) {
       this._doc.getElementById("custom-value").click();
     }
   }
 };
--- a/devtools/client/webide/modules/project-list.js
+++ b/devtools/client/webide/modules/project-list.js
@@ -10,17 +10,17 @@ const {AppManager} = require("devtools/c
 const EventEmitter = require("devtools/shared/event-emitter");
 const utils = require("devtools/client/webide/modules/utils");
 const Telemetry = require("devtools/client/shared/telemetry");
 
 const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var ProjectList;
 
-module.exports = ProjectList = function (win, parentWindow) {
+module.exports = ProjectList = function(win, parentWindow) {
   EventEmitter.decorate(this);
   this._doc = win.document;
   this._UI = parentWindow.UI;
   this._parentWindow = parentWindow;
   this._telemetry = new Telemetry();
   this._panelNodeEl = "div";
 
   this.onWebIDEUpdate = this.onWebIDEUpdate.bind(this);
@@ -31,84 +31,85 @@ module.exports = ProjectList = function 
   AppManager.on("app-manager-update", this.appManagerUpdate);
 };
 
 ProjectList.prototype = {
   get doc() {
     return this._doc;
   },
 
-  appManagerUpdate: function (what, details) {
+  appManagerUpdate: function(what, details) {
     // Got a message from app-manager.js
     // See AppManager.update() for descriptions of what these events mean.
     switch (what) {
       case "project-removed":
       case "runtime-targets":
       case "connection":
         this.update(details);
         break;
       case "project":
         this.updateCommands();
         this.update(details);
         break;
     }
   },
 
-  onWebIDEUpdate: function (what, details) {
+  onWebIDEUpdate: function(what, details) {
     if (what == "busy" || what == "unbusy") {
       this.updateCommands();
     }
   },
 
   /**
    * testOptions: {       chrome mochitest support
    *   folder: nsIFile,   where to store the app
    *   index: Number,     index of the app in the template list
    *   name: String       name of the app
    * }
    */
-  newApp: function (testOptions) {
+  newApp: function(testOptions) {
     let parentWindow = this._parentWindow;
     let self = this;
-    return this._UI.busyUntil((async function () {
+    return this._UI.busyUntil((async function() {
       // Open newapp.xul, which will feed ret.location
       let ret = {location: null, testOptions: testOptions};
       parentWindow.openDialog("chrome://webide/content/newapp.xul", "newapp", "chrome,modal", ret);
-      if (!ret.location)
+      if (!ret.location) {
         return;
+      }
 
       // Retrieve added project
       let project = AppProjects.get(ret.location);
 
       // Select project
       AppManager.selectedProject = project;
 
       self._telemetry.actionOccurred("webideNewProject");
     })(), "creating new app");
   },
 
-  importPackagedApp: function (location) {
+  importPackagedApp: function(location) {
     let parentWindow = this._parentWindow;
     let UI = this._UI;
-    return UI.busyUntil((async function () {
+    return UI.busyUntil((async function() {
       let directory = await utils.getPackagedDirectory(parentWindow, location);
 
       if (!directory) {
         // User cancelled directory selection
         return;
       }
 
       await UI.importAndSelectApp(directory);
     })(), "importing packaged app");
   },
 
-  importHostedApp: function (location) {
+  importHostedApp: function(location) {
     let parentWindow = this._parentWindow;
     let UI = this._UI;
-    return UI.busyUntil((async function () {
+    return UI.busyUntil((async function() {
       let url = utils.getHostedURL(parentWindow, location);
 
       if (!url) {
         return;
       }
 
       await UI.importAndSelectApp(url);
     })(), "importing hosted app");
@@ -116,36 +117,36 @@ ProjectList.prototype = {
 
   /**
    * opts: {
    *   panel: Object,     currenl project panel node
    *   name: String,      name of the project
    *   icon: String       path of the project icon
    * }
    */
-  _renderProjectItem: function (opts) {
+  _renderProjectItem: function(opts) {
     let span = opts.panel.querySelector("span") || this._doc.createElement("span");
     span.textContent = opts.name;
     let icon = opts.panel.querySelector("img") || this._doc.createElement("img");
     icon.className = "project-image";
     icon.setAttribute("src", opts.icon);
     opts.panel.appendChild(icon);
     opts.panel.appendChild(span);
     opts.panel.setAttribute("title", opts.name);
   },
 
-  refreshTabs: function () {
+  refreshTabs: function() {
     if (AppManager.connected) {
       return AppManager.listTabs().then(() => {
         this.updateTabs();
       }).catch(console.error);
     }
   },
 
-  updateTabs: function () {
+  updateTabs: function() {
     let tabsHeaderNode = this._doc.querySelector("#panel-header-tabs");
     let tabsNode = this._doc.querySelector("#project-panel-tabs");
 
     while (tabsNode.hasChildNodes()) {
       tabsNode.firstChild.remove();
     }
 
     if (!AppManager.connected) {
@@ -195,17 +196,17 @@ ProjectList.prototype = {
           name: tab.name
         };
       }, true);
     }
 
     return Promise.resolve();
   },
 
-  updateApps: function () {
+  updateApps: function() {
     let doc = this._doc;
     let runtimeappsHeaderNode = doc.querySelector("#panel-header-runtimeapps");
     let sortedApps = [];
     for (let [manifestURL, app] of AppManager.apps) {
       sortedApps.push(app);
     }
     sortedApps = sortedApps.sort((a, b) => {
       return a.manifest.name > b.manifest.name;
@@ -258,17 +259,17 @@ ProjectList.prototype = {
           name: app.manifest.name
         };
       }, true);
     }
 
     return Promise.resolve();
   },
 
-  updateCommands: function () {
+  updateCommands: function() {
     let doc = this._doc;
     let newAppCmd;
     let packagedAppCmd;
     let hostedAppCmd;
 
     newAppCmd = doc.querySelector("#new-app");
     packagedAppCmd = doc.querySelector("#packaged-app");
     hostedAppCmd = doc.querySelector("#hosted-app");
@@ -290,17 +291,17 @@ ProjectList.prototype = {
   },
 
   /**
    * Trigger an update of the project and remote runtime list.
    * @param options object (optional)
    *        An |options| object containing a type of |apps| or |tabs| will limit
    *        what is updated to only those sections.
    */
-  update: function (options) {
+  update: function(options) {
     if (options && options.type === "apps") {
       return this.updateApps();
     } else if (options && options.type === "tabs") {
       return this.updateTabs();
     }
 
     return new Promise((resolve, reject) => {
       let doc = this._doc;
@@ -354,17 +355,17 @@ ProjectList.prototype = {
       if (AppManager.connected) {
         AppManager.listTabs().then(() => {
           this.updateTabs();
         }).catch(console.error);
       }
     });
   },
 
-  destroy: function () {
+  destroy: function() {
     this._doc = null;
     AppManager.off("app-manager-update", this.appManagerUpdate);
     this._UI.off("webide-update", this.onWebIDEUpdate);
     this._UI = null;
     this._parentWindow = null;
     this._panelNodeEl = null;
   }
 };
--- a/devtools/client/webide/modules/runtime-list.js
+++ b/devtools/client/webide/modules/runtime-list.js
@@ -10,17 +10,17 @@ const EventEmitter = require("devtools/s
 const {RuntimeScanners, WiFiScanner} = require("devtools/client/webide/modules/runtimes");
 const {Devices} = require("resource://devtools/shared/apps/Devices.jsm");
 const utils = require("devtools/client/webide/modules/utils");
 
 const Strings = Services.strings.createBundle("chrome://devtools/locale/webide.properties");
 
 var RuntimeList;
 
-module.exports = RuntimeList = function (window, parentWindow) {
+module.exports = RuntimeList = function(window, parentWindow) {
   EventEmitter.decorate(this);
   this._doc = window.document;
   this._UI = parentWindow.UI;
   this._Cmds = parentWindow.Cmds;
   this._parentWindow = parentWindow;
   this._panelNodeEl = "button";
   this._panelBoxEl = "div";
 
@@ -32,65 +32,65 @@ module.exports = RuntimeList = function 
   AppManager.on("app-manager-update", this.appManagerUpdate);
 };
 
 RuntimeList.prototype = {
   get doc() {
     return this._doc;
   },
 
-  appManagerUpdate: function (what, details) {
+  appManagerUpdate: function(what, details) {
     // Got a message from app-manager.js
     // See AppManager.update() for descriptions of what these events mean.
     switch (what) {
       case "runtime-list":
         this.update();
         break;
       case "connection":
       case "runtime-global-actors":
         this.updateCommands();
         break;
     }
   },
 
-  onWebIDEUpdate: function (what, details) {
+  onWebIDEUpdate: function(what, details) {
     if (what == "busy" || what == "unbusy") {
       this.updateCommands();
     }
   },
 
-  takeScreenshot: function () {
+  takeScreenshot: function() {
     this._Cmds.takeScreenshot();
   },
 
-  showRuntimeDetails: function () {
+  showRuntimeDetails: function() {
     this._Cmds.showRuntimeDetails();
   },
 
-  showDevicePreferences: function () {
+  showDevicePreferences: function() {
     this._Cmds.showDevicePrefs();
   },
 
-  showSettings: function () {
+  showSettings: function() {
     this._Cmds.showSettings();
   },
 
-  showTroubleShooting: function () {
+  showTroubleShooting: function() {
     this._Cmds.showTroubleShooting();
   },
 
-  showAddons: function () {
+  showAddons: function() {
     this._Cmds.showAddons();
   },
 
-  refreshScanners: function () {
+  refreshScanners: function() {
     RuntimeScanners.scan();
   },
 
-  updateCommands: function () {
+  updateCommands: function() {
     let doc = this._doc;
 
     // Runtime commands
     let screenshotCmd = doc.querySelector("#runtime-screenshot");
     let detailsCmd = doc.querySelector("#runtime-details");
     let disconnectCmd = doc.querySelector("#runtime-disconnect");
     let devicePrefsCmd = doc.querySelector("#runtime-preferences");
     let settingsCmd = doc.querySelector("#runtime-settings");
@@ -108,17 +108,17 @@ RuntimeList.prototype = {
       detailsCmd.setAttribute("disabled", "true");
       screenshotCmd.setAttribute("disabled", "true");
       disconnectCmd.setAttribute("disabled", "true");
       devicePrefsCmd.setAttribute("disabled", "true");
       settingsCmd.setAttribute("disabled", "true");
     }
   },
 
-  update: function () {
+  update: function() {
     let doc = this._doc;
     let wifiHeaderNode = doc.querySelector("#runtime-header-wifi");
 
     if (WiFiScanner.allowed) {
       wifiHeaderNode.removeAttribute("hidden");
     } else {
       wifiHeaderNode.setAttribute("hidden", "true");
     }
@@ -177,17 +177,17 @@ RuntimeList.prototype = {
           panelItemNode.appendChild(configButton);
         }
 
         parent.appendChild(panelItemNode);
       }
     }
   },
 
-  destroy: function () {
+  destroy: function() {
     this._doc = null;
     AppManager.off("app-manager-update", this.appManagerUpdate);
     this._UI.off("webide-update", this.onWebIDEUpdate);
     this._UI = null;
     this._Cmds = null;
     this._parentWindow = null;
     this._panelNodeEl = null;
   }
--- a/devtools/client/webide/modules/runtimes.js
+++ b/devtools/client/webide/modules/runtimes.js
@@ -209,17 +209,17 @@ var LazyAdbScanner = {
   disable() {
     Devices.emit("adb-stop-polling");
   },
 
   scan() {
     return promise.resolve();
   },
 
-  listRuntimes: function () {
+  listRuntimes: function() {
     return [];
   }
 
 };
 
 EventEmitter.decorate(LazyAdbScanner);
 RuntimeScanners.add(LazyAdbScanner);
 
@@ -258,17 +258,17 @@ var WiFiScanner = {
     this._emitUpdated();
   },
 
   scan() {
     discovery.scan();
     return promise.resolve();
   },
 
-  listRuntimes: function () {
+  listRuntimes: function() {
     return this._runtimes;
   },
 
   ALLOWED_PREF: "devtools.remote.wifi.scan",
 
   get allowed() {
     return Services.prefs.getBoolPref(this.ALLOWED_PREF);
   },
@@ -294,17 +294,19 @@ var WiFiScanner = {
 EventEmitter.decorate(WiFiScanner);
 WiFiScanner.init();
 
 exports.WiFiScanner = WiFiScanner;
 
 var StaticScanner = {
   enable() {},
   disable() {},
-  scan() { return promise.resolve(); },
+  scan() {
+    return promise.resolve();
+  },
   listRuntimes() {
     let runtimes = [gRemoteRuntime];
     if (Services.prefs.getBoolPref("devtools.webide.enableLocalRuntime")) {
       runtimes.push(gLocalRuntime);
     }
     return runtimes;
   }
 };
@@ -327,17 +329,17 @@ var RuntimeTypes = exports.RuntimeTypes 
 function WiFiRuntime(deviceName) {
   this.deviceName = deviceName;
 }
 
 WiFiRuntime.prototype = {
   type: RuntimeTypes.WIFI,
   // Mark runtime as taking a long time to connect
   prolongedConnection: true,
-  connect: function (connection) {
+  connect: function(connection) {
     let service = discovery.getRemoteService("devtools", this.deviceName);
     if (!service) {
       return promise.reject(new Error("Can't find device: " + this.name));
     }
     connection.advertisement = service;
     connection.authenticator.sendOOB = this.sendOOB;
     // Disable the default connection timeout, since QR scanning can take an
     // unknown amount of time.  This prevents spurious errors (even after
@@ -387,17 +389,17 @@ WiFiRuntime.prototype = {
     }
 
     // Listen for the window our prompt opens, so we can close it programatically
     let promptWindow;
     let windowListener = {
       onOpenWindow(xulWindow) {
         let win = xulWindow.QueryInterface(Ci.nsIInterfaceRequestor)
                            .getInterface(Ci.nsIDOMWindow);
-        win.addEventListener("load", function () {
+        win.addEventListener("load", function() {
           if (win.document.documentElement.getAttribute("id") != WINDOW_ID) {
             return;
           }
           // Found the window
           promptWindow = win;
           Services.wm.removeListener(windowListener);
         }, {once: true});
       },
@@ -430,17 +432,17 @@ WiFiRuntime.prototype = {
   }
 };
 
 // For testing use only
 exports._WiFiRuntime = WiFiRuntime;
 
 var gLocalRuntime = {
   type: RuntimeTypes.LOCAL,
-  connect: function (connection) {
+  connect: function(connection) {
     DebuggerServer.init();
     DebuggerServer.registerAllActors();
     DebuggerServer.allowChromeProcess = true;
     connection.host = null; // Force Pipe transport
     connection.port = null;
     connection.connect();
     return promise.resolve();
   },
@@ -452,17 +454,17 @@ var gLocalRuntime = {
   },
 };
 
 // For testing use only
 exports._gLocalRuntime = gLocalRuntime;
 
 var gRemoteRuntime = {
   type: RuntimeTypes.REMOTE,
-  connect: function (connection) {
+  connect: function(connection) {
     let win = Services.wm.getMostRecentWindow("devtools:webide");
     if (!win) {
       return promise.reject(new Error("No WebIDE window found"));
     }
     let ret = {value: connection.host + ":" + connection.port};
     let title = Strings.GetStringFromName("remote_runtime_promptTitle");
     let message = Strings.GetStringFromName("remote_runtime_promptMessage");
     let ok = Services.prompt.prompt(win, title, message, ret, null, {});
--- a/devtools/client/webide/modules/tab-store.js
+++ b/devtools/client/webide/modules/tab-store.js
@@ -7,17 +7,17 @@ const { Cu } = require("chrome");
 const { TargetFactory } = require("devtools/client/framework/target");
 const EventEmitter = require("devtools/shared/event-emitter");
 const { Connection } = require("devtools/shared/client/connection-manager");
 
 const _knownTabStores = new WeakMap();
 
 var TabStore;
 
-module.exports = TabStore = function (connection) {
+module.exports = TabStore = function(connection) {
   // If we already know about this connection,
   // let's re-use the existing store.
   if (_knownTabStores.has(connection)) {
     return _knownTabStores.get(connection);
   }
 
   _knownTabStores.set(connection, this);
 
@@ -34,36 +34,36 @@ module.exports = TabStore = function (co
   this._onTabListChanged = this._onTabListChanged.bind(this);
   this._onTabNavigated = this._onTabNavigated.bind(this);
   this._onStatusChanged();
   return this;
 };
 
 TabStore.prototype = {
 
-  destroy: function () {
+  destroy: function() {
     if (this._connection) {
       // While this.destroy is bound using .once() above, that event may not
       // have occurred when the TabStore client calls destroy, so we
       // manually remove it here.
       this._connection.off(Connection.Events.DESTROYED, this.destroy);
       this._connection.off(Connection.Events.STATUS_CHANGED, this._onStatusChanged);
       _knownTabStores.delete(this._connection);
       this._connection = null;
     }
   },
 
-  _resetStore: function () {
+  _resetStore: function() {
     this.response = null;
     this.tabs = [];
     this._selectedTab = null;
     this._selectedTabTargetPromise = null;
   },
 
-  _onStatusChanged: function () {
+  _onStatusChanged: function() {
     if (this._connection.status == Connection.Status.CONNECTED) {
       // Watch for changes to remote browser tabs
       this._connection.client.addListener("tabListChanged",
                                           this._onTabListChanged);
       this._connection.client.addListener("tabNavigated",
                                           this._onTabNavigated);
       this.listTabs();
     } else {
@@ -72,31 +72,31 @@ TabStore.prototype = {
                                                this._onTabListChanged);
         this._connection.client.removeListener("tabNavigated",
                                                this._onTabNavigated);
       }
       this._resetStore();
     }
   },
 
-  _onTabListChanged: function () {
+  _onTabListChanged: function() {
     this.listTabs().then(() => this.emit("tab-list"))
                    .catch(console.error);
   },
 
-  _onTabNavigated: function (e, { from, title, url }) {
+  _onTabNavigated: function(e, { from, title, url }) {
     if (!this._selectedTab || from !== this._selectedTab.actor) {
       return;
     }
     this._selectedTab.url = url;
     this._selectedTab.title = title;
     this.emit("navigate");
   },
 
-  listTabs: function () {
+  listTabs: function() {
     if (!this._connection || !this._connection.client) {
       return Promise.reject(new Error("Can't listTabs, not connected."));
     }
 
     return new Promise((resolve, reject) => {
       this._connection.client.listTabs().then(response => {
         if (response.error) {
           this._connection.disconnect();
@@ -130,36 +130,36 @@ TabStore.prototype = {
     this._selectedTab = tab;
     this._selectedTabTargetPromise = null;
     // Attach to the tab to follow navigation events
     if (this._selectedTab) {
       this.getTargetForTab();
     }
   },
 
-  _checkSelectedTab: function () {
+  _checkSelectedTab: function() {
     if (!this._selectedTab) {
       return;
     }
     let alive = this.tabs.some(tab => {
       return tab.actor === this._selectedTab.actor;
     });
     if (!alive) {
       this._selectedTab = null;
       this._selectedTabTargetPromise = null;
       this.emit("closed");
     }
   },
 
-  getTargetForTab: function () {
+  getTargetForTab: function() {
     if (this._selectedTabTargetPromise) {
       return this._selectedTabTargetPromise;
     }
     let store = this;
-    this._selectedTabTargetPromise = (async function () {
+    this._selectedTabTargetPromise = (async function() {
       // If you connect to a tab, then detach from it, the root actor may have
       // de-listed the actors that belong to the tab.  This breaks the toolbox
       // if you try to connect to the same tab again.  To work around this
       // issue, we force a "listTabs" request before connecting to a tab.
       await store.listTabs();
       return TargetFactory.forRemoteTab({
         form: store._selectedTab,
         client: store._connection.client,
--- a/devtools/client/webide/test/browser_tabs.js
+++ b/devtools/client/webide/test/browser_tabs.js
@@ -3,17 +3,17 @@
 "use strict";
 
 const TEST_URI = "http://example.com/browser/devtools/client/webide/test/doc_tabs.html";
 
 function test() {
   waitForExplicitFinish();
   requestCompleteLog();
 
-  (async function () {
+  (async function() {
     // Since we test the connections set below, destroy the server in case it
     // was left open.
     DebuggerServer.destroy();
     DebuggerServer.init();
     DebuggerServer.registerAllActors();
 
     let tab = await addTab(TEST_URI);
 
@@ -68,17 +68,17 @@ function connectToLocal(win, docRuntime)
     win.AppManager.connection.once(
       win.Connection.Events.CONNECTED,
       resolve);
     docRuntime.querySelectorAll(".runtime-panel-item-other")[1].click();
   });
 }
 
 function selectTabProject(win, docProject) {
-  return (async function () {
+  return (async function() {
     await waitForUpdate(win, "runtime-targets");
     let tabsNode = docProject.querySelector("#project-panel-tabs");
     let tabNode = tabsNode.querySelectorAll(".panel-item")[1];
     let project = waitForUpdate(win, "project");
     tabNode.click();
     await project;
   })();
 }
--- a/devtools/client/webide/test/device_front_shared.js
+++ b/devtools/client/webide/test/device_front_shared.js
@@ -104,17 +104,17 @@ function addNewFieldInteger() {
     is(newField.type, "number", "Custom type is a number");
     is(newField.value, "1", "Custom integer value is correct");
   }
   ok(found, "Found new integer field line");
   is(customName.value, "", "Custom integer name reset");
   is(customValue.value, "", "Custom integer value reset");
 }
 
-var editFieldInteger = async function () {
+var editFieldInteger = async function() {
   // Edit existing custom integer preference
   newField.value = 3;
   newField.click();
   is(newField.value, "3", "Custom integer existing value is correct");
 
   // Reset a custom field
   let resetBtn = doc.querySelector("#btn-new-integer-field");
   resetBtn.click();
@@ -125,30 +125,30 @@ var editFieldInteger = async function ()
     let fieldRow = doc.querySelector("#row-new-integer-field");
     if (!fieldRow) {
       found = false;
     }
     ok(!found, "Custom field removed");
   }
 };
 
-var resetExistingField = async function (id) {
+var resetExistingField = async function(id) {
   let existing = doc.getElementById(id);
   existing.click();
   is(existing.checked, true, "Existing boolean value is correct");
   resetBtn = doc.getElementById("btn-" + id);
   resetBtn.click();
 
   await iframe.contentWindow.configView._defaultField;
 
   ok(resetBtn.classList.contains("hide"), true, "Reset button hidden");
   is(existing.checked, true, "Existing field reset");
 };
 
-var resetNewField = async function (id) {
+var resetNewField = async function(id) {
   let custom = doc.getElementById(id);
   custom.click();
   is(custom.value, "test", "New string value is correct");
   resetBtn = doc.getElementById("btn-" + id);
   resetBtn.click();
 
   await iframe.contentWindow.configView._defaultField;
 
--- a/devtools/client/webide/test/head.js
+++ b/devtools/client/webide/test/head.js
@@ -34,51 +34,51 @@ registerCleanupFunction(() => {
   Services.prefs.clearUserPref("devtools.webide.enabled");
   Services.prefs.clearUserPref("devtools.webide.enableLocalRuntime");
   Services.prefs.clearUserPref("devtools.webide.autoinstallADBHelper");
   Services.prefs.clearUserPref("devtools.webide.busyTimeout");
   Services.prefs.clearUserPref("devtools.webide.lastSelectedProject");
   Services.prefs.clearUserPref("devtools.webide.lastConnectedRuntime");
 });
 
-var openWebIDE = async function (autoInstallAddons) {
+var openWebIDE = async function(autoInstallAddons) {
   info("opening WebIDE");
 
   Services.prefs.setBoolPref("devtools.webide.autoinstallADBHelper", !!autoInstallAddons);
 
   let ww = Cc["@mozilla.org/embedcomp/window-watcher;1"].getService(Ci.nsIWindowWatcher);
   let win = ww.openWindow(null, "chrome://webide/content/", "webide", "chrome,centerscreen,resizable", null);
 
   await new Promise(resolve => {
-    win.addEventListener("load", function () {
+    win.addEventListener("load", function() {
       SimpleTest.requestCompleteLog();
       SimpleTest.executeSoon(resolve);
     }, {once: true});
   });
 
   info("WebIDE open");
 
   return win;
 };
 
 function closeWebIDE(win) {
   info("Closing WebIDE");
 
   return new Promise(resolve => {
-    win.addEventListener("unload", function () {
+    win.addEventListener("unload", function() {
       info("WebIDE closed");
       SimpleTest.executeSoon(resolve);
     }, {once: true});
 
     win.close();
   });
 }
 
 function removeAllProjects() {
-  return (async function () {
+  return (async function() {
     await AppProjects.load();
     // use a new array so we're not iterating over the same
     // underlying array that's being modified by AppProjects
     let projects = AppProjects.projects.map(p => p.location);
     for (let i = 0; i < projects.length; i++) {
       await AppProjects.remove(projects[i]);
     }
   })();
@@ -122,49 +122,49 @@ function documentIsLoaded(doc) {
         }
       });
     }
   });
 }
 
 function lazyIframeIsLoaded(iframe) {
   return new Promise(resolve => {
-    iframe.addEventListener("load", function () {
+    iframe.addEventListener("load", function() {
       resolve(nextTick());
     }, {capture: true, once: true});
   });
 }
 
 function addTab(aUrl, aWindow) {
   info("Adding tab: " + aUrl);
 
   return new Promise(resolve => {
     let targetWindow = aWindow || window;
     let targetBrowser = targetWindow.gBrowser;
 
     targetWindow.focus();
     let tab = targetBrowser.selectedTab = targetBrowser.addTab(aUrl);
     let linkedBrowser = tab.linkedBrowser;
 
-    BrowserTestUtils.browserLoaded(linkedBrowser).then(function () {
+    BrowserTestUtils.browserLoaded(linkedBrowser).then(function() {
       info("Tab added and finished loading: " + aUrl);
       resolve(tab);
     });
   });
 }
 
 function removeTab(aTab, aWindow) {
   info("Removing tab.");
 
   return new Promise(resolve => {
     let targetWindow = aWindow || window;
     let targetBrowser = targetWindow.gBrowser;
     let tabContainer = targetBrowser.tabContainer;
 
-    tabContainer.addEventListener("TabClose", function (aEvent) {
+    tabContainer.addEventListener("TabClose", function(aEvent) {
       info("Tab removed and finished closing.");
       resolve();
     }, {once: true});
 
     targetBrowser.removeTab(aTab);
   });
 }
 
--- a/devtools/client/webide/test/test_addons.html
+++ b/devtools/client/webide/test/test_addons.html
@@ -28,47 +28,45 @@
               nextTick().then(() => {
                 let li = doc.querySelector('[status="uninstalled"][addon="adb"]');
                 if (li) {
                   Devices.off("addon-status-updated", onUpdate);
                   resolve();
                 } else {
                   reject("Can't find item");
                 }
-              })
+              });
             });
             let li = doc.querySelector('[status="installed"][addon="adb"]');
             li.querySelector(".uninstall-button").click();
           });
         }
 
-        (async function () {
-
+        (async function() {
           ok(!Devices.helperAddonInstalled, "Helper not installed");
 
           let win = await openWebIDE(true);
           let docRuntime = getRuntimeDocument(win);
 
           ok(Devices.helperAddonInstalled, "Helper has been auto-installed");
 
           await nextTick();
 
           let w = addonDoc.querySelector(".warning");
-          let display = addonDoc.defaultView.getComputedStyle(w).display
+          let display = addonDoc.defaultView.getComputedStyle(w).display;
           is(display, "none", "Warning about missing ADB hidden");
 
           await uninstallADBFromUI(addonDoc, "adb");
 
           items = panelNode.querySelectorAll(".runtime-panel-item-usb");
           is(items.length, 0, "No usb runtime listed");
 
-          display = addonDoc.defaultView.getComputedStyle(w).display
+          display = addonDoc.defaultView.getComputedStyle(w).display;
           is(display, "block", "Warning about missing ADB present");
 
           await closeWebIDE(win);
 
           SimpleTest.finish();
-
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_app_validator.html
+++ b/devtools/client/webide/test/test_app_validator.html
@@ -29,19 +29,19 @@
     window.onload = function() {
       SimpleTest.waitForExplicitFinish();
 
       httpserver = new HttpServer();
       httpserver.start(-1);
       origin = "http://localhost:" + httpserver.identity.primaryPort + "/";
 
       next();
-    }
+    };
 
-    function createHosted(path, manifestFile="/manifest.webapp") {
+    function createHosted(path, manifestFile = "/manifest.webapp") {
       let dirPath = getTestFilePath("validator/" + path);
       httpserver.registerDirectory("/", nsFile(dirPath));
       return new AppValidator({
         type: "hosted",
         location: origin + manifestFile
       });
     }
 
@@ -53,123 +53,123 @@
       });
     }
 
     function next() {
       let test = tests.shift();
       if (test) {
         try {
           test();
-        } catch(e) {
+        } catch (e) {
           console.error("exception", String(e), e, e.stack);
         }
       } else {
         httpserver.stop(function() {
           SimpleTest.finish();
         });
       }
     }
 
     let tests =  [
       // Test a 100% valid example
-      function () {
+      function() {
         let validator = createHosted("valid");
         validator.validate().then(() => {
-            is(validator.errors.length, 0, "valid app got no error");
-            is(validator.warnings.length, 0, "valid app got no warning");
+          is(validator.errors.length, 0, "valid app got no error");
+          is(validator.warnings.length, 0, "valid app got no warning");
 
-            next();
-          });
+          next();
+        });
       },
 
-      function () {
+      function() {
         let validator = createPackaged("valid");
         validator.validate().then(() => {
-            is(validator.errors.length, 0, "valid packaged app got no error");
-            is(validator.warnings.length, 0, "valid packaged app got no warning");
+          is(validator.errors.length, 0, "valid packaged app got no error");
+          is(validator.warnings.length, 0, "valid packaged app got no warning");
 
-            next();
-          });
+          next();
+        });
       },
 
       // Test a launch path that returns a 404
-      function () {
+      function() {
         let validator = createHosted("wrong-launch-path");
         validator.validate().then(() => {
-            is(validator.errors.length, 1, "app with non-existant launch path got an error");
-            is(validator.errors[0], strings.formatStringFromName("validator.accessFailedLaunchPathBadHttpCode", [origin + "wrong-path.html", 404], 2),
+          is(validator.errors.length, 1, "app with non-existant launch path got an error");
+          is(validator.errors[0], strings.formatStringFromName("validator.accessFailedLaunchPathBadHttpCode", [origin + "wrong-path.html", 404], 2),
                "with the right error message");
-            is(validator.warnings.length, 0, "but no warning");
-            next();
-          });
+          is(validator.warnings.length, 0, "but no warning");
+          next();
+        });
       },
-      function () {
+      function() {
         let validator = createPackaged("wrong-launch-path");
         validator.validate().then(() => {
-            is(validator.errors.length, 1, "app with wrong path got an error");
-            let file = nsFile(validator.location);
-            file.append("wrong-path.html");
-            let url = Services.io.newFileURI(file);
-            is(validator.errors[0], strings.formatStringFromName("validator.accessFailedLaunchPath", [url.spec], 1),
+          is(validator.errors.length, 1, "app with wrong path got an error");
+          let file = nsFile(validator.location);
+          file.append("wrong-path.html");
+          let url = Services.io.newFileURI(file);
+          is(validator.errors[0], strings.formatStringFromName("validator.accessFailedLaunchPath", [url.spec], 1),
                "with the expected message");
-            is(validator.warnings.length, 0, "but no warning");
+          is(validator.warnings.length, 0, "but no warning");
 
-            next();
-          });
+          next();
+        });
       },
 
       // Test when using a non-absolute path for launch_path
-      function () {
+      function() {
         let validator = createHosted("non-absolute-path");
         validator.validate().then(() => {
-            is(validator.errors.length, 1, "app with non absolute path got an error");
-            is(validator.errors[0], strings.formatStringFromName("validator.nonAbsoluteLaunchPath", ["non-absolute.html"], 1),
+          is(validator.errors.length, 1, "app with non absolute path got an error");
+          is(validator.errors[0], strings.formatStringFromName("validator.nonAbsoluteLaunchPath", ["non-absolute.html"], 1),
                "with expected message");
-            is(validator.warnings.length, 0, "but no warning");
-            next();
-          });
+          is(validator.warnings.length, 0, "but no warning");
+          next();
+        });
       },
-      function () {
+      function() {
         let validator = createPackaged("non-absolute-path");
         validator.validate().then(() => {
-            is(validator.errors.length, 1, "app with non absolute path got an error");
-            is(validator.errors[0], strings.formatStringFromName("validator.nonAbsoluteLaunchPath", ["non-absolute.html"], 1),
+          is(validator.errors.length, 1, "app with non absolute path got an error");
+          is(validator.errors[0], strings.formatStringFromName("validator.nonAbsoluteLaunchPath", ["non-absolute.html"], 1),
                "with expected message");
-            is(validator.warnings.length, 0, "but no warning");
-            next();
-          });
+          is(validator.warnings.length, 0, "but no warning");
+          next();
+        });
       },
 
       // Test multiple failures (missing name [error] and icon [warning])
-      function () {
+      function() {
         let validator = createHosted("no-name-or-icon");
         validator.validate().then(() => {
           checkNoNameOrIcon(validator);
         });
       },
-      function () {
+      function() {
         let validator = createPackaged("no-name-or-icon");
         validator.validate().then(() => {
           checkNoNameOrIcon(validator);
         });
       },
 
       // Test a regular URL instead of a direct link to the manifest
-      function () {
+      function() {
         let validator = createHosted("valid", "/");
         validator.validate().then(() => {
           is(validator.warnings.length, 0, "manifest found got no warning");
           is(validator.errors.length, 0, "manifest found got no error");
 
           next();
         });
       },
 
       // Test finding a manifest at origin's root
-      function () {
+      function() {
         let validator = createHosted("valid", "/unexisting-dir");
         validator.validate().then(() => {
           is(validator.warnings.length, 0, "manifest found at origin root got no warning");
           is(validator.errors.length, 0, "manifest found at origin root got no error");
 
           next();
         });
       },
--- a/devtools/client/webide/test/test_autoconnect_runtime.html
+++ b/devtools/client/webide/test/test_autoconnect_runtime.html
@@ -13,17 +13,17 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           DebuggerServer.init();
           DebuggerServer.registerAllActors();
 
           let win = await openWebIDE();
           let docRuntime = getRuntimeDocument(win);
 
           let fakeRuntime = {
             type: "USB",
@@ -81,12 +81,12 @@
           await win.Cmds.disconnectRuntime();
 
           await closeWebIDE(win);
 
           DebuggerServer.destroy();
 
           SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_autoselect_project.html
+++ b/devtools/client/webide/test/test_autoselect_project.html
@@ -13,17 +13,17 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           DebuggerServer.init();
           DebuggerServer.registerAllActors();
 
           let win = await openWebIDE();
           let docRuntime = getRuntimeDocument(win);
           let docProject = getProjectDocument(win);
 
           let panelNode = docRuntime.querySelector("#runtime-panel");
@@ -97,12 +97,12 @@
           await win.Cmds.disconnectRuntime();
 
           await closeWebIDE(win);
 
           DebuggerServer.destroy();
 
           SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_basic.html
+++ b/devtools/client/webide/test/test_basic.html
@@ -13,44 +13,44 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
-            let win = await openWebIDE();
+        (async function() {
+          let win = await openWebIDE();
 
-            const {gDevToolsBrowser} = require("devtools/client/framework/devtools-browser");
-            await gDevToolsBrowser.isWebIDEInitialized.promise;
-            ok(true, "WebIDE was initialized");
+          const {gDevToolsBrowser} = require("devtools/client/framework/devtools-browser");
+          await gDevToolsBrowser.isWebIDEInitialized.promise;
+          ok(true, "WebIDE was initialized");
 
-            ok(win, "Found a window");
-            ok(win.AppManager, "App Manager accessible");
-            let appmgr = win.AppManager;
-            ok(appmgr.connection, "App Manager connection ready");
-            ok(appmgr.runtimeList, "Runtime list ready");
+          ok(win, "Found a window");
+          ok(win.AppManager, "App Manager accessible");
+          let appmgr = win.AppManager;
+          ok(appmgr.connection, "App Manager connection ready");
+          ok(appmgr.runtimeList, "Runtime list ready");
 
             // test error reporting
-            let nbox = win.document.querySelector("#notificationbox");
-            let notification =  nbox.getNotificationWithValue("webide:errornotification");
-            ok(!notification, "No notification yet");
-            let deferred = new Promise((resolve, reject) => {
-              nextTick().then(() => {
-                reject("BOOM!");
-              });
+          let nbox = win.document.querySelector("#notificationbox");
+          let notification =  nbox.getNotificationWithValue("webide:errornotification");
+          ok(!notification, "No notification yet");
+          let deferred = new Promise((resolve, reject) => {
+            nextTick().then(() => {
+              reject("BOOM!");
             });
-            try {
-              await win.UI.busyUntil(deferred, "xx");
-            } catch(e) {/* This *will* fail */}
-            notification =  nbox.getNotificationWithValue("webide:errornotification");
-            ok(notification, "Error has been reported");
+          });
+          try {
+            await win.UI.busyUntil(deferred, "xx");
+          } catch (e) { /* This *will* fail */ }
+          notification =  nbox.getNotificationWithValue("webide:errornotification");
+          ok(notification, "Error has been reported");
 
-            await closeWebIDE(win);
+          await closeWebIDE(win);
 
-            SimpleTest.finish();
+          SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_device_preferences.html
+++ b/devtools/client/webide/test/test_device_preferences.html
@@ -13,17 +13,17 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           DebuggerServer.init();
           DebuggerServer.registerAllActors();
 
           let win = await openWebIDE();
 
           let prefIframe = win.document.querySelector("#deck-panel-devicepreferences");
           let docRuntime = getRuntimeDocument(win);
 
@@ -74,12 +74,12 @@
 
           await closeWebIDE(win);
 
           SimpleTest.finish();
         })().catch(e => {
           ok(false, "Exception: " + e);
           SimpleTest.finish();
         });
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_device_runtime.html
+++ b/devtools/client/webide/test/test_device_runtime.html
@@ -13,17 +13,17 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           DebuggerServer.init();
           DebuggerServer.registerAllActors();
 
           let win = await openWebIDE();
 
           let detailsIframe = win.document.querySelector("#deck-panel-runtimedetails");
 
           await connectToLocalRuntime(win);
@@ -46,17 +46,17 @@
           // device info and permissions content is checked in other tests
           // We just test one value to make sure we get something
 
           let doc = detailsIframe.contentWindow.document;
           let trs = doc.querySelectorAll("tr");
           let found = false;
 
           for (let tr of trs) {
-            let [name,val] = tr.querySelectorAll("td");
+            let [name, val] = tr.querySelectorAll("td");
             if (name.textContent == "appid") {
               found = true;
               is(val.textContent, Services.appinfo.ID, "appid has the right value");
               break;
             }
           }
           ok(found, "Found appid line");
 
@@ -68,12 +68,12 @@
 
           await closeWebIDE(win);
 
           SimpleTest.finish();
         })().catch(e => {
           ok(false, "Exception: " + e);
           SimpleTest.finish();
         });
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_duplicate_import.html
+++ b/devtools/client/webide/test/test_duplicate_import.html
@@ -12,17 +12,17 @@
     <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   </head>
 
   <body>
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           let win = await openWebIDE();
           let docProject = getProjectDocument(win);
           let winProject = getProjectWindow(win);
           let packagedAppLocation = getTestFilePath("app");
           let hostedAppManifest = TEST_BASE + "hosted_app.manifest";
 
           await win.AppProjects.load();
           is(win.AppProjects.projects.length, 0, "IDB is empty");
@@ -65,13 +65,13 @@
 
           await removeAllProjects();
 
           SimpleTest.finish();
         })().catch(e => {
           ok(false, "Exception: " + e);
           SimpleTest.finish();
         });
-      }
+      };
     </script>
   </body>
 </html>
 
--- a/devtools/client/webide/test/test_fullscreenToolbox.html
+++ b/devtools/client/webide/test/test_fullscreenToolbox.html
@@ -22,17 +22,17 @@
               resolve);
           docRuntime.querySelectorAll(".runtime-panel-item-other")[1].click();
         });
       }
 
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           let win = await openWebIDE();
           let docProject = getProjectDocument(win);
           let docRuntime = getRuntimeDocument(win);
           win.AppManager.update("runtime-list");
 
           connectToLocal(win, docRuntime);
 
           // Select main process
@@ -56,12 +56,12 @@
           await win.Cmds.disconnectRuntime();
 
           await closeWebIDE(win);
 
           DebuggerServer.destroy();
 
           SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_import.html
+++ b/devtools/client/webide/test/test_import.html
@@ -12,17 +12,17 @@
     <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css">
   </head>
 
   <body>
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           let win = await openWebIDE();
           let docProject = getProjectDocument(win);
           let winProject = getProjectWindow(win);
           let packagedAppLocation = getTestFilePath("app");
 
           await win.AppProjects.load();
           is(win.AppProjects.projects.length, 0, "IDB is empty");
 
@@ -53,17 +53,17 @@
 
           await nextTick();
 
           hostedAppManifest = TEST_BASE + "/app";
           await winProject.projectList.importHostedApp(hostedAppManifest);
           await waitForUpdate(win, "project-validated");
 
           project = win.AppManager.selectedProject;
-          ok(project.location.endsWith('manifest.webapp'), "The manifest was found and the project was updated");
+          ok(project.location.endsWith("manifest.webapp"), "The manifest was found and the project was updated");
 
           let panelNode = docProject.querySelector("#project-panel");
           let items = panelNode.querySelectorAll(".panel-item");
           // 4 controls, + 2 projects
           is(items.length, 6, "6 projects in panel");
           is(items[3].querySelector("span").textContent, "A name (in app directory)", "Panel text is correct");
           is(items[4].querySelector("span").textContent, "hosted manifest name property", "Panel text is correct");
 
@@ -71,12 +71,12 @@
 
           await removeAllProjects();
 
           SimpleTest.finish();
         })().catch(e => {
           ok(false, "Exception: " + e);
           SimpleTest.finish();
         });
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_manifestUpdate.html
+++ b/devtools/client/webide/test/test_manifestUpdate.html
@@ -15,84 +15,84 @@
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
         let {OS} = ChromeUtils.import("resource://gre/modules/osfile.jsm", {});
 
-        (async function () {
-            let win = await openWebIDE();
-            let winProject = getProjectWindow(win);
-            let AppManager = win.AppManager;
+        (async function() {
+          let win = await openWebIDE();
+          let winProject = getProjectWindow(win);
+          let AppManager = win.AppManager;
 
-            function isProjectMarkedAsValid() {
-              let details = win.frames[1];
-              return !details.document.body.classList.contains("error");
-            }
+          function isProjectMarkedAsValid() {
+            let details = win.frames[1];
+            return !details.document.body.classList.contains("error");
+          }
 
-            let packagedAppLocation = getTestFilePath("app");
+          let packagedAppLocation = getTestFilePath("app");
 
-            let onValidated = waitForUpdate(win, "project-validated");
-            let onDetails = waitForUpdate(win, "details");
-            await winProject.projectList.importPackagedApp(packagedAppLocation);
-            await onValidated;
-            await onDetails;
+          let onValidated = waitForUpdate(win, "project-validated");
+          let onDetails = waitForUpdate(win, "details");
+          await winProject.projectList.importPackagedApp(packagedAppLocation);
+          await onValidated;
+          await onDetails;
 
-            let project = win.AppManager.selectedProject;
+          let project = win.AppManager.selectedProject;
 
-            ok("name" in project.manifest, "manifest includes name");
-            is(project.name, project.manifest.name, "Display name uses manifest name");
-            ok(isProjectMarkedAsValid(), "project is marked as valid");
+          ok("name" in project.manifest, "manifest includes name");
+          is(project.name, project.manifest.name, "Display name uses manifest name");
+          ok(isProjectMarkedAsValid(), "project is marked as valid");
 
             // Change the name
-            let originalName = project.manifest.name;
+          let originalName = project.manifest.name;
 
-            project.manifest.name = "xxx";
+          project.manifest.name = "xxx";
 
             // Write to disk
-            await AppManager.writeManifest(project);
+          await AppManager.writeManifest(project);
 
             // Read file
-            let manifestPath = OS.Path.join(packagedAppLocation, "manifest.webapp");
-            let Decoder = new TextDecoder();
-            let data = await OS.File.read(manifestPath);
-            data = new TextDecoder().decode(data);
-            let json = JSON.parse(data);
-            is(json.name, "xxx", "manifest written on disc");
+          let manifestPath = OS.Path.join(packagedAppLocation, "manifest.webapp");
+          let Decoder = new TextDecoder();
+          let data = await OS.File.read(manifestPath);
+          data = new TextDecoder().decode(data);
+          let json = JSON.parse(data);
+          is(json.name, "xxx", "manifest written on disc");
 
             // Make the manifest invalid on disk
-            delete json.name;
-            let Encoder = new TextEncoder();
-            data = Encoder.encode(JSON.stringify(json));
-            await OS.File.writeAtomic(manifestPath, data , {tmpPath: manifestPath + ".tmp"});
+          delete json.name;
+          let Encoder = new TextEncoder();
+          data = Encoder.encode(JSON.stringify(json));
+          await OS.File.writeAtomic(manifestPath, data, {tmpPath: manifestPath + ".tmp"});
 
             // Trigger validation
-            await AppManager.validateAndUpdateProject(AppManager.selectedProject);
-            await nextTick();
+          await AppManager.validateAndUpdateProject(AppManager.selectedProject);
+          await nextTick();
 
-            ok(!("name" in project.manifest), "manifest has been updated");
-            is(project.name, "--", "Placeholder is used for display name");
-            ok(!isProjectMarkedAsValid(), "project is marked as invalid");
+          ok(!("name" in project.manifest), "manifest has been updated");
+          is(project.name, "--", "Placeholder is used for display name");
+          ok(!isProjectMarkedAsValid(), "project is marked as invalid");
 
             // Make the manifest valid on disk
-            project.manifest.name = originalName;
-            await AppManager.writeManifest(project);
+          project.manifest.name = originalName;
+          await AppManager.writeManifest(project);
 
             // Trigger validation
-            await AppManager.validateAndUpdateProject(AppManager.selectedProject);
-            await nextTick();
+          await AppManager.validateAndUpdateProject(AppManager.selectedProject);
+          await nextTick();
 
-            ok("name" in project.manifest, "manifest includes name");
-            is(project.name, originalName, "Display name uses original manifest name");
-            ok(isProjectMarkedAsValid(), "project is marked as valid");
+          ok("name" in project.manifest, "manifest includes name");
+          is(project.name, originalName, "Display name uses original manifest name");
+          ok(isProjectMarkedAsValid(), "project is marked as valid");
 
-            await closeWebIDE(win);
+          await closeWebIDE(win);
 
-            await removeAllProjects();
+          await removeAllProjects();
 
-            SimpleTest.finish();
+          SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_newapp.html
+++ b/devtools/client/webide/test/test_newapp.html
@@ -13,17 +13,17 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
+        (async function() {
           let win = await openWebIDE();
           let winProject = getProjectWindow(win);
           let tmpDir = FileUtils.getDir("TmpD", []);
           await winProject.projectList.newApp({
             index: 0,
             name: "webideTmpApp",
             folder: tmpDir
           });
@@ -35,12 +35,12 @@
           is(project.name, "webideTmpApp", "name field has been updated");
 
           // Clean up
           tmpDir.remove(true);
           await closeWebIDE(win);
           await removeAllProjects();
           SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_runtime.html
+++ b/devtools/client/webide/test/test_runtime.html
@@ -16,26 +16,26 @@
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
         let win;
 
         SimpleTest.registerCleanupFunction(() => {
-          (async function () {
+          (async function() {
             if (win) {
               await closeWebIDE(win);
             }
             DebuggerServer.destroy();
             await removeAllProjects();
           })();
         });
 
-        (async function () {
+        (async function() {
           function isPlayActive() {
             return !win.document.querySelector("#cmd_play").hasAttribute("disabled");
           }
 
           function isStopActive() {
             return !win.document.querySelector("#cmd_stop").hasAttribute("disabled");
           }
 
@@ -187,12 +187,12 @@
 
             setTimeout(() => {
               resolve();
             }, 1000);
           });
 
           SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_toolbox.html
+++ b/devtools/client/webide/test/test_toolbox.html
@@ -16,37 +16,37 @@
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
         let win;
 
         SimpleTest.registerCleanupFunction(() => {
-          (async function () {
+          (async function() {
             if (win) {
               await closeWebIDE(win);
             }
             DebuggerServer.destroy();
             await removeAllProjects();
           })();
         });
 
-        (async function () {
+        (async function() {
           DebuggerServer.init();
           DebuggerServer.registerAllActors();
 
           win = await openWebIDE();
           let docRuntime = getRuntimeDocument(win);
           let docProject = getProjectDocument(win);
 
           win.AppManager.update("runtime-list");
 
           let deferred = new Promise(resolve => {
-             win.AppManager.connection.once(
+            win.AppManager.connection.once(
                  win.Connection.Events.CONNECTED,
                  resolve);
           });
 
           docRuntime.querySelectorAll(".runtime-panel-item-other")[1].click();
 
           ok(win.document.querySelector("window").className, "busy", "UI is busy");
           await win.UI._busyPromise;
@@ -81,12 +81,12 @@
           await win.UI.destroyToolbox();
 
           ok(!win.UI.toolboxPromise, "Toolbox promise is also nullified the second times");
 
           await win.Cmds.disconnectRuntime();
 
           SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>
--- a/devtools/client/webide/test/test_zoom.html
+++ b/devtools/client/webide/test/test_zoom.html
@@ -13,65 +13,65 @@
   </head>
 
   <body>
 
     <script type="application/javascript">
       window.onload = function() {
         SimpleTest.waitForExplicitFinish();
 
-        (async function () {
-            let win = await openWebIDE();
-            let viewer = win.QueryInterface(Ci.nsIInterfaceRequestor)
+        (async function() {
+          let win = await openWebIDE();
+          let viewer = win.QueryInterface(Ci.nsIInterfaceRequestor)
                             .getInterface(Ci.nsIWebNavigation)
                             .QueryInterface(Ci.nsIDocShell)
                             .contentViewer;
 
-            win.Cmds.zoomOut();
-            win.Cmds.zoomOut();
-            win.Cmds.zoomOut();
-            win.Cmds.zoomOut();
-            win.Cmds.zoomOut();
-            win.Cmds.zoomOut();
-            win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
+          win.Cmds.zoomOut();
 
-            let roundZoom = Math.round(10 * viewer.fullZoom) / 10;
-            is(roundZoom, 0.6, "Reach min zoom");
+          let roundZoom = Math.round(10 * viewer.fullZoom) / 10;
+          is(roundZoom, 0.6, "Reach min zoom");
 
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
-            win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
+          win.Cmds.zoomIn();
 
-            roundZoom = Math.round(10 * viewer.fullZoom) / 10;
-            is(roundZoom, 1.4, "Reach max zoom");
+          roundZoom = Math.round(10 * viewer.fullZoom) / 10;
+          is(roundZoom, 1.4, "Reach max zoom");
 
-            await closeWebIDE(win);
+          await closeWebIDE(win);
 
-            win = await openWebIDE();
-            viewer = win.QueryInterface(Ci.nsIInterfaceRequestor)
+          win = await openWebIDE();
+          viewer = win.QueryInterface(Ci.nsIInterfaceRequestor)
                         .getInterface(Ci.nsIWebNavigation)
                         .QueryInterface(Ci.nsIDocShell)
                         .contentViewer;
 
-            roundZoom = Math.round(10 * viewer.fullZoom) / 10;
-            is(roundZoom, 1.4, "Zoom restored");
+          roundZoom = Math.round(10 * viewer.fullZoom) / 10;
+          is(roundZoom, 1.4, "Zoom restored");
 
-            win.Cmds.resetZoom();
+          win.Cmds.resetZoom();
 
-            is(viewer.fullZoom, 1, "Zoom reset");
+          is(viewer.fullZoom, 1, "Zoom reset");
 
-            await closeWebIDE(win);
+          await closeWebIDE(win);
 
-            SimpleTest.finish();
+          SimpleTest.finish();
         })();
-      }
+      };
     </script>
   </body>
 </html>