Bug 1207498 - Part 1: Remove use of expression closure from toolkit/components/, except tests. r=Gijs
☠☠ backed out by f76692f0fcf8 ☠ ☠
authorTooru Fujisawa <arai_a@mac.com>
Thu, 24 Sep 2015 20:32:23 +0900
changeset 264568 036615ba3257cbae2f857ec5ef10f66bb15ac4b6
parent 264567 b002f72aa0515d0a22c9da9dee03d949215f9653
child 264569 55b45f61cfd25d4ccc6b595e913fea4f0e80a4e2
push id65673
push userarai_a@mac.com
push dateSun, 27 Sep 2015 11:28:46 +0000
treeherdermozilla-inbound@55b45f61cfd2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersGijs
bugs1207498
milestone44.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 1207498 - Part 1: Remove use of expression closure from toolkit/components/, except tests. r=Gijs
toolkit/components/contentprefs/ContentPrefService2.jsm
toolkit/components/contentprefs/nsContentPrefService.js
toolkit/components/exthelper/extApplication.js
toolkit/components/jsdownloads/src/DownloadCore.jsm
toolkit/components/jsdownloads/src/DownloadIntegration.jsm
toolkit/components/jsdownloads/src/Downloads.jsm
toolkit/components/osfile/modules/osfile_async_front.jsm
toolkit/components/passwordmgr/LoginManagerContent.jsm
toolkit/components/passwordmgr/LoginStore.jsm
toolkit/components/passwordmgr/content/passwordManager.js
toolkit/components/passwordmgr/nsLoginManager.js
toolkit/components/passwordmgr/nsLoginManagerPrompter.js
toolkit/components/passwordmgr/storage-mozStorage.js
toolkit/components/places/PlacesBackups.jsm
toolkit/components/places/PlacesDBUtils.jsm
toolkit/components/places/PlacesTransactions.jsm
toolkit/components/places/PlacesUtils.jsm
toolkit/components/places/UnifiedComplete.js
toolkit/components/places/nsLivemarkService.js
toolkit/components/places/nsPlacesAutoComplete.js
toolkit/components/places/nsPlacesExpiration.js
toolkit/components/places/nsTaggingService.js
toolkit/components/prompts/src/CommonDialog.jsm
toolkit/components/satchel/AutoCompleteE10S.jsm
toolkit/components/satchel/FormHistory.jsm
toolkit/components/satchel/nsFormAutoComplete.js
toolkit/components/search/nsSearchService.js
toolkit/components/social/MessagePortBase.jsm
toolkit/components/social/SocialService.jsm
toolkit/components/thumbnails/PageThumbs.jsm
toolkit/components/thumbnails/PageThumbsProtocol.js
toolkit/components/urlformatter/nsURLFormatter.js
--- a/toolkit/components/contentprefs/ContentPrefService2.jsm
+++ b/toolkit/components/contentprefs/ContentPrefService2.jsm
@@ -824,27 +824,27 @@ ContentPrefService2.prototype = {
     this._pbStore.removeAll();
     this._cache.removeAll();
 
     let cps = this._cps;
     cps._observers = {};
     cps._genericObservers = [];
 
     let tables = ["prefs", "groups", "settings"];
-    let stmts = tables.map(function (t) this._stmt(`DELETE FROM ${t}`), this);
-    this._execStmts(stmts, { onDone: function () callback() });
+    let stmts = tables.map(t => this._stmt(`DELETE FROM ${t}`));
+    this._execStmts(stmts, { onDone: () => callback() });
   },
 
   QueryInterface: function CPS2_QueryInterface(iid) {
     let supportedIIDs = [
       Ci.nsIContentPrefService2,
       Ci.nsIObserver,
       Ci.nsISupports,
     ];
-    if (supportedIIDs.some(function (i) iid.equals(i)))
+    if (supportedIIDs.some(i => iid.equals(i)))
       return this;
     if (iid.equals(Ci.nsIContentPrefService))
       return this._cps;
     throw Cr.NS_ERROR_NO_INTERFACE;
   },
 };
 
 function checkGroupArg(group) {
--- a/toolkit/components/contentprefs/nsContentPrefService.js
+++ b/toolkit/components/contentprefs/nsContentPrefService.js
@@ -54,17 +54,17 @@ ContentPrefService.prototype = {
 
   classID: Components.ID("{e3f772f3-023f-4b32-b074-36cf0fd5d414}"),
 
   QueryInterface: function CPS_QueryInterface(iid) {
     let supportedIIDs = [
       Ci.nsIContentPrefService,
       Ci.nsISupports,
     ];
-    if (supportedIIDs.some(function (i) iid.equals(i)))
+    if (supportedIIDs.some(i => iid.equals(i)))
       return this;
     if (iid.equals(Ci.nsIContentPrefService2)) {
       if (!this._contentPrefService2) {
         let s = {};
         Cu.import("resource://gre/modules/ContentPrefService2.jsm", s);
         this._contentPrefService2 = new s.ContentPrefService2(this);
       }
       return this._contentPrefService2;
--- a/toolkit/components/exthelper/extApplication.js
+++ b/toolkit/components/exthelper/extApplication.js
@@ -642,29 +642,29 @@ extApplication.prototype = {
       this.events.dispatch("unload", "application");
       gExtensionObserver = null;
       gPreferenceObserver = null;
     }
   },
 
   get console() {
     let console = new Console();
-    this.__defineGetter__("console", function () console);
+    this.__defineGetter__("console", () => console);
     return this.console;
   },
 
   get storage() {
     let storage = new SessionStorage();
-    this.__defineGetter__("storage", function () storage);
+    this.__defineGetter__("storage", () => storage);
     return this.storage;
   },
 
   get prefs() {
     let prefs = new PreferenceBranch("");
-    this.__defineGetter__("prefs", function () prefs);
+    this.__defineGetter__("prefs", () => prefs);
     return this.prefs;
   },
 
   getExtensions: function(callback) {
     AddonManager.getAddonsByTypes(["extension"], function (addons) {
       callback.callback(new Extensions(addons));
     });
   },
@@ -682,17 +682,17 @@ extApplication.prototype = {
       if (!(aEvent in rmap) || aEvent in self._registered)
         return;
 
       self._obs.addObserver(self, rmap[aEvent], /* ownsWeak = */ true);
       self._registered[aEvent] = true;
     }
 
     let events = new Events(registerCheck);
-    this.__defineGetter__("events", function () events);
+    this.__defineGetter__("events", () => events);
     return this.events;
   },
 
   // helper method for correct quitting/restarting
   _quitWithFlags: function app__quitWithFlags(aFlags) {
     let cancelQuit = Components.classes["@mozilla.org/supports-PRBool;1"]
                                .createInstance(Components.interfaces.nsISupportsPRBool);
     let quitType = aFlags & Components.interfaces.nsIAppStartup.eRestart ? "restart" : null;
--- a/toolkit/components/jsdownloads/src/DownloadCore.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadCore.jsm
@@ -764,18 +764,18 @@ this.Download.prototype = {
     // If the download is currently stopped, we have nothing to do.
     if (this.stopped) {
       return Promise.resolve();
     }
 
     if (!this._promiseCanceled) {
       // Start a new cancellation request.
       let deferCanceled = Promise.defer();
-      this._currentAttempt.then(function () deferCanceled.resolve(),
-                                function () deferCanceled.resolve());
+      this._currentAttempt.then(() => deferCanceled.resolve(),
+                                () => deferCanceled.resolve());
       this._promiseCanceled = deferCanceled.promise;
 
       // The download can already be restarted.
       this._currentAttempt = null;
 
       // Notify that the cancellation request was received.
       this.canceled = true;
       this._notifyChange();
--- a/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
+++ b/toolkit/components/jsdownloads/src/DownloadIntegration.jsm
@@ -154,17 +154,19 @@ this.DownloadIntegration = {
    * downloads, or null if the download list was never requested and thus it
    * doesn't need to be persisted.
    */
   _store: null,
 
   /**
    * Gets and sets test mode
    */
-  get testMode() this._testMode,
+  get testMode() {
+    return this._testMode;
+  },
   set testMode(mode) {
     this._downloadsDirectory = null;
     return (this._testMode = mode);
   },
 
   /**
    * Returns whether data for blocked downloads should be kept on disk.
    * Implementations which support unblocking downloads may return true to
--- a/toolkit/components/jsdownloads/src/Downloads.jsm
+++ b/toolkit/components/jsdownloads/src/Downloads.jsm
@@ -46,25 +46,31 @@ XPCOMUtils.defineLazyModuleGetter(this, 
 /**
  * This object is exposed directly to the consumers of this JavaScript module,
  * and provides the only entry point to get references to back-end objects.
  */
 this.Downloads = {
   /**
    * Work on downloads that were not started from a private browsing window.
    */
-  get PUBLIC() "{Downloads.PUBLIC}",
+  get PUBLIC() {
+    return "{Downloads.PUBLIC}";
+  },
   /**
    * Work on downloads that were started from a private browsing window.
    */
-  get PRIVATE() "{Downloads.PRIVATE}",
+  get PRIVATE() {
+    return "{Downloads.PRIVATE}";
+  },
   /**
    * Work on both Downloads.PRIVATE and Downloads.PUBLIC downloads.
    */
-  get ALL() "{Downloads.ALL}",
+  get ALL() {
+    return "{Downloads.ALL}";
+  },
 
   /**
    * Creates a new Download object.
    *
    * @param aProperties
    *        Provides the initial properties for the newly created download.
    *        This matches the serializable representation of a Download object.
    *        Some of the most common properties in this object include:
--- a/toolkit/components/osfile/modules/osfile_async_front.jsm
+++ b/toolkit/components/osfile/modules/osfile_async_front.jsm
@@ -1242,18 +1242,22 @@ var DirectoryIterator = function Directo
    */
   this.__itmsg = Scheduler.post(
     "new_DirectoryIterator", [Type.path.toMsg(path), options],
     path
   );
   this._isClosed = false;
 };
 DirectoryIterator.prototype = {
-  iterator: function () this,
-  __iterator__: function () this,
+  iterator: function () {
+    return this;
+  },
+  __iterator__: function () {
+    return this;
+  },
 
   // Once close() is called, _itmsg should reject with a
   // StopIteration. However, we don't want to create the promise until
   // it's needed because it might never be used. In that case, we
   // would get a warning on the console.
   get _itmsg() {
     if (!this.__itmsg) {
       this.__itmsg = Promise.reject(StopIteration);
--- a/toolkit/components/passwordmgr/LoginManagerContent.jsm
+++ b/toolkit/components/passwordmgr/LoginManagerContent.jsm
@@ -950,17 +950,17 @@ var LoginManagerContent = {
       var selectedLogin;
       if (!clobberUsername && usernameField && (usernameField.value ||
                                                 usernameField.disabled ||
                                                 usernameField.readOnly)) {
         // If username was specified in the field, it's disabled or it's readOnly, only fill in the
         // password if we find a matching login.
         var username = usernameField.value.toLowerCase();
 
-        let matchingLogins = logins.filter(function(l)
+        let matchingLogins = logins.filter(l =>
                                            l.username.toLowerCase() == username);
         if (matchingLogins.length == 0) {
           log("Password not filled. None of the stored logins match the username already present.");
           recordAutofillResult(AUTOFILL_RESULT.EXISTING_USERNAME);
           return;
         }
 
         // If there are multiple, and one matches case, use it
@@ -977,19 +977,19 @@ var LoginManagerContent = {
         selectedLogin = logins[0];
       } else {
         // We have multiple logins. Handle a special case here, for sites
         // which have a normal user+pass login *and* a password-only login
         // (eg, a PIN). Prefer the login that matches the type of the form
         // (user+pass or pass-only) when there's exactly one that matches.
         let matchingLogins;
         if (usernameField)
-          matchingLogins = logins.filter(function(l) l.username);
+          matchingLogins = logins.filter(l => l.username);
         else
-          matchingLogins = logins.filter(function(l) !l.username);
+          matchingLogins = logins.filter(l => !l.username);
 
         if (matchingLogins.length != 1) {
           log("Multiple logins for form, so not filling any.");
           recordAutofillResult(AUTOFILL_RESULT.MULTIPLE_LOGINS);
           return;
         }
 
         selectedLogin = matchingLogins[0];
--- a/toolkit/components/passwordmgr/LoginStore.jsm
+++ b/toolkit/components/passwordmgr/LoginStore.jsm
@@ -276,17 +276,20 @@ LoginStore.prototype = {
     this.data.version = kDataVersion;
 
     this.dataReady = true;
   },
 
   /**
    * Called when the data changed, this triggers asynchronous serialization.
    */
-  saveSoon: function () this._saver.arm(),
+  saveSoon: function ()
+  {
+    return this._saver.arm();
+  },
 
   /**
    * DeferredTask that handles the save operation.
    */
   _saver: null,
 
   /**
    * Saves persistent data from memory to the file.
--- a/toolkit/components/passwordmgr/content/passwordManager.js
+++ b/toolkit/components/passwordmgr/content/passwordManager.js
@@ -308,17 +308,17 @@ function SignonMatchesFilter(aSignon, aF
       aSignon.password.toLowerCase().indexOf(aFilterValue) != -1)
     return true;
 
   return false;
 }
 
 function FilterPasswords(aFilterValue, view) {
   aFilterValue = aFilterValue.toLowerCase();
-  return signons.filter(function (s) SignonMatchesFilter(s, aFilterValue));
+  return signons.filter(s => SignonMatchesFilter(s, aFilterValue));
 }
 
 function SignonSaveState() {
   // Save selection
   var seln = signonsTreeView.selection;
   signonsTreeView._lastSelectedRanges = [];
   var rangeCount = seln.getRangeCount();
   for (var i = 0; i < rangeCount; ++i) {
--- a/toolkit/components/passwordmgr/nsLoginManager.js
+++ b/toolkit/components/passwordmgr/nsLoginManager.js
@@ -293,17 +293,17 @@ LoginManager.prototype = {
       throw new Error("Can't add a login without a httpRealm or formSubmitURL.");
     }
 
 
     // Look for an existing entry.
     var logins = this.findLogins({}, login.hostname, login.formSubmitURL,
                                  login.httpRealm);
 
-    if (logins.some(function(l) login.matches(l, true)))
+    if (logins.some(l => login.matches(l, true)))
       throw new Error("This login already exists.");
 
     log("Adding login");
     return this._storage.addLogin(login);
   },
 
   /*
    * removeLogin
--- a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js
+++ b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js
@@ -1328,17 +1328,17 @@ LoginManagerPrompter.prototype = {
    *       function fills in .username and .usernameField with the values
    *       from the login selected by the user.
    *
    * Note; XPCOM stupidity: |count| is just |logins.length|.
    */
   promptToChangePasswordWithUsernames : function (logins, count, aNewLogin) {
     const buttonFlags = Ci.nsIPrompt.STD_YES_NO_BUTTONS;
 
-    var usernames = logins.map(function (l) l.username);
+    var usernames = logins.map(l => l.username);
     var dialogText  = this._getLocalizedString("userSelectText");
     var dialogTitle = this._getLocalizedString("passwordChangeTitle");
     var selectedIndex = { value: null };
 
     // If user selects ok, outparam.value is set to the index
     // of the selected username.
     var ok = this._promptService.select(this._window,
                             dialogTitle, dialogText,
--- a/toolkit/components/passwordmgr/storage-mozStorage.js
+++ b/toolkit/components/passwordmgr/storage-mozStorage.js
@@ -496,17 +496,17 @@ LoginManagerStorage_mozStorage.prototype
         default:
           throw new Error("Unexpected field: " + field);
       }
     }
 
     // Build query
     let query = "SELECT * FROM moz_logins";
     if (conditions.length) {
-      conditions = conditions.map(function(c) "(" + c + ")");
+      conditions = conditions.map(c => "(" + c + ")");
       query += " WHERE " + conditions.join(" AND ");
     }
 
     let stmt;
     let logins = [], ids = [], fallbackLogins = [], fallbackIds = [];
     try {
       stmt = this._dbCreateStatement(query, params);
       // We can't execute as usual here, since we're iterating over rows
@@ -708,17 +708,17 @@ LoginManagerStorage_mozStorage.prototype
 
     let _countLoginsHelper = (hostname, formSubmitURL, httpRealm) => {
       // Do checks for null and empty strings, adjust conditions and params
       let [conditions, params] =
           this._buildConditionsAndParams(hostname, formSubmitURL, httpRealm);
 
       let query = "SELECT COUNT(1) AS numLogins FROM moz_logins";
       if (conditions.length) {
-        conditions = conditions.map(function(c) "(" + c + ")");
+        conditions = conditions.map(c => "(" + c + ")");
         query += " WHERE " + conditions.join(" AND ");
       }
 
       let stmt, numLogins;
       try {
         stmt = this._dbCreateStatement(query, params);
         stmt.executeStep();
         numLogins = stmt.row.numLogins;
--- a/toolkit/components/places/PlacesBackups.jsm
+++ b/toolkit/components/places/PlacesBackups.jsm
@@ -86,17 +86,19 @@ this.PlacesBackups = {
   /**
    * Matches the backup filename:
    *  0: file name
    *  1: date in form Y-m-d
    *  2: bookmarks count
    *  3: contents hash
    *  4: file extension
    */
-  get filenamesRegex() filenamesRegex,
+  get filenamesRegex() {
+    return filenamesRegex;
+  },
 
   get folder() {
     Deprecated.warning(
       "PlacesBackups.folder is deprecated and will be removed in a future version",
       "https://bugzilla.mozilla.org/show_bug.cgi?id=859695");
     return this._folder;
   },
 
@@ -128,17 +130,19 @@ this.PlacesBackups = {
       }
       let profileDir = OS.Constants.Path.profileDir;
       let backupsDirPath = OS.Path.join(profileDir, this.profileRelativeFolderPath);
       yield OS.File.makeDir(backupsDirPath, { ignoreExisting: true });
       return this._backupFolder = backupsDirPath;
     }.bind(this));
   },
 
-  get profileRelativeFolderPath() "bookmarkbackups",
+  get profileRelativeFolderPath() {
+    return "bookmarkbackups";
+  },
 
   /**
    * Cache current backups in a sorted (by date DESC) array.
    */
   get entries() {
     Deprecated.warning(
       "PlacesBackups.entries is deprecated and will be removed in a future version",
       "https://bugzilla.mozilla.org/show_bug.cgi?id=859695");
--- a/toolkit/components/places/PlacesDBUtils.jsm
+++ b/toolkit/components/places/PlacesDBUtils.jsm
@@ -183,18 +183,19 @@ this.PlacesDBUtils = {
   },
 
   /**
    * Checks integrity but does not try to fix the database through a reindex.
    *
    * @param [optional] aTasks
    *        Tasks object to execute.
    */
-  _checkIntegritySkipReindex: function PDBU__checkIntegritySkipReindex(aTasks)
-    this.checkIntegrity(aTasks, true),
+  _checkIntegritySkipReindex: function PDBU__checkIntegritySkipReindex(aTasks) {
+    return this.checkIntegrity(aTasks, true);
+  },
 
   /**
    * Checks integrity and tries to fix the database through a reindex.
    *
    * @param [optional] aTasks
    *        Tasks object to execute.
    * @param [optional] aSkipdReindex
    *        Whether to try to reindex database or not.
@@ -272,17 +273,17 @@ this.PlacesDBUtils = {
         else {
           tasks.log("- Unable to check database coherence");
           tasks.clear();
         }
 
         PlacesDBUtils._executeTasks(tasks);
       }
     });
-    stmts.forEach(function (aStmt) aStmt.finalize());
+    stmts.forEach(aStmt => aStmt.finalize());
   },
 
   _getBoundCoherenceStatements: function PDBU__getBoundCoherenceStatements()
   {
     let cleanupStatements = [];
 
     // MOZ_ANNO_ATTRIBUTES
     // A.1 remove obsolete annotations from moz_annos.
@@ -1115,39 +1116,48 @@ Tasks.prototype = {
     this._list.unshift(aNewElt);
   },
 
   /**
    * Returns and consumes next task.
    *
    * @return next task or undefined if no task is left.
    */
-  pop: function T_pop() this._list.shift(),
+  pop: function T_pop()
+  {
+    return this._list.shift();
+  },
 
   /**
    * Removes all tasks.
    */
   clear: function T_clear()
   {
     this._list.length = 0;
   },
 
   /**
    * Returns array of tasks ordered from the next to be run to the latest.
    */
-  get list() this._list.slice(0, this._list.length),
+  get list()
+  {
+    return this._list.slice(0, this._list.length);
+  },
 
   /**
    * Adds a message to the log.
    *
    * @param aMsg
    *        String message to be added.
    */
   log: function T_log(aMsg)
   {
     this._log.push(aMsg);
   },
 
   /**
    * Returns array of log messages ordered from oldest to newest.
    */
-  get messages() this._log.slice(0, this._log.length),
+  get messages()
+  {
+    return this._log.slice(0, this._log.length);
+  },
 }
--- a/toolkit/components/places/PlacesTransactions.jsm
+++ b/toolkit/components/places/PlacesTransactions.jsm
@@ -191,17 +191,19 @@ Components.utils.importGlobalProperties(
 
 var TransactionsHistory = [];
 TransactionsHistory.__proto__ = {
   __proto__: Array.prototype,
 
   // The index of the first undo entry (if any) - See the documentation
   // at the top of this file.
   _undoPosition: 0,
-  get undoPosition() this._undoPosition,
+  get undoPosition() {
+    return this._undoPosition;
+  },
 
   // Handy shortcuts
   get topUndoEntry() {
     return this.undoPosition < this.length ? this[this.undoPosition] : null;
   },
   get topRedoEntry() {
     return this.undoPosition > 0 ? this[this.undoPosition - 1] : null;
   },
--- a/toolkit/components/places/PlacesUtils.jsm
+++ b/toolkit/components/places/PlacesUtils.jsm
@@ -66,18 +66,22 @@ function QI_node(aNode, aIID) {
   var result = null;
   try {
     result = aNode.QueryInterface(aIID);
   }
   catch (e) {
   }
   return result;
 }
-function asContainer(aNode) QI_node(aNode, Ci.nsINavHistoryContainerResultNode);
-function asQuery(aNode) QI_node(aNode, Ci.nsINavHistoryQueryResultNode);
+function asContainer(aNode) {
+  return QI_node(aNode, Ci.nsINavHistoryContainerResultNode);
+}
+function asQuery(aNode) {
+  return QI_node(aNode, Ci.nsINavHistoryQueryResultNode);
+}
 
 /**
  * Sends a bookmarks notification through the given observers.
  *
  * @param observers
  *        array of nsINavBookmarkObserver objects.
  * @param notification
  *        the notification name.
@@ -236,18 +240,18 @@ this.PlacesUtils = {
   TOPIC_EXPIRATION_FINISHED: "places-expiration-finished",
   TOPIC_FEEDBACK_UPDATED: "places-autocomplete-feedback-updated",
   TOPIC_FAVICONS_EXPIRED: "places-favicons-expired",
   TOPIC_VACUUM_STARTING: "places-vacuum-starting",
   TOPIC_BOOKMARKS_RESTORE_BEGIN: "bookmarks-restore-begin",
   TOPIC_BOOKMARKS_RESTORE_SUCCESS: "bookmarks-restore-success",
   TOPIC_BOOKMARKS_RESTORE_FAILED: "bookmarks-restore-failed",
 
-  asContainer: function(aNode) asContainer(aNode),
-  asQuery: function(aNode) asQuery(aNode),
+  asContainer: aNode => asContainer(aNode),
+  asQuery: aNode => asQuery(aNode),
 
   endl: NEWLINE,
 
   /**
    * Makes a URI from a spec.
    * @param   aSpec
    *          The string spec of the URI
    * @returns A URI object for the spec.
@@ -2534,78 +2538,102 @@ function updateCommandsOnActiveWindow()
  * @note To avoid leaks any non-primitive property should be copied.
  * @note Used internally, DO NOT EXPORT.
  */
 function TransactionItemCache()
 {
 }
 
 TransactionItemCache.prototype = {
-  set id(v)
-    this._id = (parseInt(v) > 0 ? v : null),
-  get id()
-    this._id || -1,
-  set parentId(v)
-    this._parentId = (parseInt(v) > 0 ? v : null),
-  get parentId()
-    this._parentId || -1,
+  set id(v) {
+    this._id = (parseInt(v) > 0 ? v : null);
+  },
+  get id() {
+    return this._id || -1;
+  },
+  set parentId(v) {
+    this._parentId = (parseInt(v) > 0 ? v : null);
+  },
+  get parentId() {
+    return this._parentId || -1;
+  },
   keyword: null,
   title: null,
   dateAdded: null,
   lastModified: null,
   postData: null,
   itemType: null,
-  set uri(v)
-    this._uri = (v instanceof Ci.nsIURI ? v.clone() : null),
-  get uri()
-    this._uri || null,
-  set feedURI(v)
-    this._feedURI = (v instanceof Ci.nsIURI ? v.clone() : null),
-  get feedURI()
-    this._feedURI || null,
-  set siteURI(v)
-    this._siteURI = (v instanceof Ci.nsIURI ? v.clone() : null),
-  get siteURI()
-    this._siteURI || null,
-  set index(v)
-    this._index = (parseInt(v) >= 0 ? v : null),
+  set uri(v) {
+    this._uri = (v instanceof Ci.nsIURI ? v.clone() : null);
+  },
+  get uri() {
+    return this._uri || null;
+  },
+  set feedURI(v) {
+    this._feedURI = (v instanceof Ci.nsIURI ? v.clone() : null);
+  },
+  get feedURI() {
+    return this._feedURI || null;
+  },
+  set siteURI(v) {
+    this._siteURI = (v instanceof Ci.nsIURI ? v.clone() : null);
+  },
+  get siteURI() {
+    return this._siteURI || null;
+  },
+  set index(v) {
+    this._index = (parseInt(v) >= 0 ? v : null);
+  },
   // Index can be 0.
-  get index()
-    this._index != null ? this._index : PlacesUtils.bookmarks.DEFAULT_INDEX,
-  set annotations(v)
-    this._annotations = Array.isArray(v) ? Cu.cloneInto(v, {}) : null,
-  get annotations()
-    this._annotations || null,
-  set tags(v)
-    this._tags = (v && Array.isArray(v) ? Array.slice(v) : null),
-  get tags()
-    this._tags || null,
+  get index() {
+    return this._index != null ? this._index : PlacesUtils.bookmarks.DEFAULT_INDEX;
+  },
+  set annotations(v) {
+    this._annotations = Array.isArray(v) ? Cu.cloneInto(v, {}) : null;
+  },
+  get annotations() {
+    return this._annotations || null;
+  },
+  set tags(v) {
+    this._tags = (v && Array.isArray(v) ? Array.slice(v) : null);
+  },
+  get tags() {
+    return this._tags || null;
+  },
 };
 
 
 /**
  * Base transaction implementation.
  *
  * @note used internally, DO NOT EXPORT.
  */
 function BaseTransaction()
 {
 }
 
 BaseTransaction.prototype = {
   name: null,
-  set childTransactions(v)
-    this._childTransactions = (Array.isArray(v) ? Array.slice(v) : null),
-  get childTransactions()
-    this._childTransactions || null,
+  set childTransactions(v) {
+    this._childTransactions = (Array.isArray(v) ? Array.slice(v) : null);
+  },
+  get childTransactions() {
+    return this._childTransactions || null;
+  },
   doTransaction: function BTXN_doTransaction() {},
-  redoTransaction: function BTXN_redoTransaction() this.doTransaction(),
+  redoTransaction: function BTXN_redoTransaction() {
+    return this.doTransaction();
+  },
   undoTransaction: function BTXN_undoTransaction() {},
-  merge: function BTXN_merge() false,
-  get isTransient() false,
+  merge: function BTXN_merge() {
+    return false;
+  },
+  get isTransient() {
+    return false;
+  },
   QueryInterface: XPCOMUtils.generateQI([
     Ci.nsITransaction
   ]),
 };
 
 
 /**
  * Transaction for performing several Places Transactions in a single batch. 
--- a/toolkit/components/places/UnifiedComplete.js
+++ b/toolkit/components/places/UnifiedComplete.js
@@ -501,31 +501,33 @@ XPCOMUtils.defineLazyGetter(this, "Prefs
 /**
  * Used to unescape encoded URI strings and drop information that we do not
  * care about.
  *
  * @param spec
  *        The text to unescape and modify.
  * @return the modified spec.
  */
-function fixupSearchText(spec)
-  textURIService.unEscapeURIForUI("UTF-8", stripPrefix(spec));
+function fixupSearchText(spec) {
+  return textURIService.unEscapeURIForUI("UTF-8", stripPrefix(spec));
+}
 
 /**
  * Generates the tokens used in searching from a given string.
  *
  * @param searchString
  *        The string to generate tokens from.
  * @return an array of tokens.
  * @note Calling split on an empty string will return an array containing one
  *       empty string.  We don't want that, as it'll break our logic, so return
  *       an empty array then.
  */
-function getUnfilteredSearchTokens(searchString)
-  searchString.length ? searchString.split(REGEXP_SPACES) : [];
+function getUnfilteredSearchTokens(searchString) {
+  return searchString.length ? searchString.split(REGEXP_SPACES) : [];
+}
 
 /**
  * Strip prefixes from the URI that we don't care about for searching.
  *
  * @param spec
  *        The text to modify.
  * @return the modified spec.
  */
@@ -1567,45 +1569,49 @@ Search.prototype = {
   },
 
   /**
    * Obtains the query to search for switch-to-tab entries.
    *
    * @return an array consisting of the correctly optimized query to search the
    *         database with and an object containing the params to bound.
    */
-  get _switchToTabQuery() [
-    SQL_SWITCHTAB_QUERY,
-    {
-      query_type: QUERYTYPE_FILTERED,
-      matchBehavior: this._matchBehavior,
-      searchBehavior: this._behavior,
-      // We only want to search the tokens that we are left with - not the
-      // original search string.
-      searchString: this._searchTokens.join(" "),
-      maxResults: Prefs.maxRichResults
-    }
-  ],
+  get _switchToTabQuery() {
+    return [
+      SQL_SWITCHTAB_QUERY,
+      {
+        query_type: QUERYTYPE_FILTERED,
+        matchBehavior: this._matchBehavior,
+        searchBehavior: this._behavior,
+        // We only want to search the tokens that we are left with - not the
+        // original search string.
+        searchString: this._searchTokens.join(" "),
+        maxResults: Prefs.maxRichResults
+      }
+    ];
+  },
 
   /**
    * Obtains the query to search for adaptive results.
    *
    * @return an array consisting of the correctly optimized query to search the
    *         database with and an object containing the params to bound.
    */
-  get _adaptiveQuery() [
-    SQL_ADAPTIVE_QUERY,
-    {
-      parent: PlacesUtils.tagsFolderId,
-      search_string: this._searchString,
-      query_type: QUERYTYPE_FILTERED,
-      matchBehavior: this._matchBehavior,
-      searchBehavior: this._behavior
-    }
-  ],
+  get _adaptiveQuery() {
+    return [
+      SQL_ADAPTIVE_QUERY,
+      {
+        parent: PlacesUtils.tagsFolderId,
+        search_string: this._searchString,
+        query_type: QUERYTYPE_FILTERED,
+        matchBehavior: this._matchBehavior,
+        searchBehavior: this._behavior
+      }
+    ];
+  },
 
   /**
    * Whether we should try to autoFill.
    */
   get _shouldAutofill() {
     // First of all, check for the autoFill pref.
     if (!Prefs.autofill)
       return false;
--- a/toolkit/components/places/nsLivemarkService.js
+++ b/toolkit/components/places/nsLivemarkService.js
@@ -448,17 +448,19 @@ function Livemark(aLivemarkInfo)
   // the container itself.
   this._nodes = new Map();
 
   this.loadGroup = null;
   this.expireTime = 0;
 }
 
 Livemark.prototype = {
-  get status() this._status,
+  get status() {
+    return this._status;
+  },
   set status(val) {
     if (this._status != val) {
       this._status = val;
       this._invalidateRegisteredContainers();
     }
     return this._status;
   },
 
@@ -548,17 +550,19 @@ Livemark.prototype = {
       this.status = Ci.mozILivemark.STATUS_FAILED;
     }
   },
 
   reload(aForceUpdate) {
     this.updateChildren(aForceUpdate);
   },
 
-  get children() this._children,
+  get children() {
+    return this._children;
+  },
   set children(val) {
     this._children = val;
 
     // Discard the previous cached nodes, new ones should be generated.
     for (let container of this._resultObservers.keys()) {
       this._nodes.delete(container);
     }
 
@@ -586,33 +590,58 @@ Livemark.prototype = {
     let now = Date.now() * 1000;
     for (let child of this.children) {
       // Workaround for bug 449811.
       let localChild = child;
       let node = {
         // The QueryInterface is needed cause aContainerNode is a jsval.
         // This is required to avoid issues with scriptable wrappers that would
         // not allow the view to correctly set expandos.
-        get parent()
-          aContainerNode.QueryInterface(Ci.nsINavHistoryContainerResultNode),
-        get parentResult() this.parent.parentResult,
-        get uri() localChild.uri.spec,
-        get type() Ci.nsINavHistoryResultNode.RESULT_TYPE_URI,
-        get title() localChild.title,
-        get accessCount()
-          Number(livemark._isURIVisited(NetUtil.newURI(this.uri))),
-        get time() 0,
-        get icon() "",
-        get indentLevel() this.parent.indentLevel + 1,
-        get bookmarkIndex() -1,
-        get itemId() -1,
-        get dateAdded() now,
-        get lastModified() now,
-        get tags()
-          PlacesUtils.tagging.getTagsForURI(NetUtil.newURI(this.uri)).join(", "),
+        get parent() {
+          return aContainerNode.QueryInterface(Ci.nsINavHistoryContainerResultNode);
+        },
+        get parentResult() {
+          return this.parent.parentResult;
+        },
+        get uri() {
+          return localChild.uri.spec;
+        },
+        get type() {
+          return Ci.nsINavHistoryResultNode.RESULT_TYPE_URI;
+        },
+        get title() {
+          return localChild.title;
+        },
+        get accessCount() {
+          return Number(livemark._isURIVisited(NetUtil.newURI(this.uri)));
+        },
+        get time() {
+          return 0;
+        },
+        get icon() {
+          return "";
+        },
+        get indentLevel() {
+          return this.parent.indentLevel + 1;
+        },
+        get bookmarkIndex() {
+            return -1;
+        },
+        get itemId() {
+            return -1;
+        },
+        get dateAdded() {
+          return now;
+        },
+        get lastModified() {
+          return now;
+        },
+        get tags() {
+          return PlacesUtils.tagging.getTagsForURI(NetUtil.newURI(this.uri)).join(", ");
+        },
         QueryInterface: XPCOMUtils.generateQI([Ci.nsINavHistoryResultNode])
       };
       nodes.push(node);
     }
     this._nodes.set(aContainerNode, nodes);
     return nodes;
   },
 
--- a/toolkit/components/places/nsPlacesAutoComplete.js
+++ b/toolkit/components/places/nsPlacesAutoComplete.js
@@ -716,18 +716,19 @@ nsPlacesAutoComplete.prototype = {
       this._loadPrefs(false, aTopic, aData);
       this._ignoreNotifications = false;
     }
   },
 
   //////////////////////////////////////////////////////////////////////////////
   //// nsPlacesAutoComplete
 
-  get _databaseInitialized()
-    Object.getOwnPropertyDescriptor(this, "_db").value !== undefined,
+  get _databaseInitialized() {
+    return Object.getOwnPropertyDescriptor(this, "_db").value !== undefined;
+  },
 
   /**
    * Generates the tokens used in searching from a given string.
    *
    * @param aSearchString
    *        The string to generate tokens from.
    * @return an array of tokens.
    */
--- a/toolkit/components/places/nsPlacesExpiration.js
+++ b/toolkit/components/places/nsPlacesExpiration.js
@@ -716,17 +716,19 @@ nsPlacesExpiration.prototype = {
       this._status = aNewStatus;
       this._newTimer();
       // If needed add/remove the cleanup step on idle.  We want to expire on
       // idle only if history is dirty, to preserve mobile devices batteries.
       this.expireOnIdle = aNewStatus == STATUS.DIRTY;
     }
     return aNewStatus;
   },
-  get status() this._status,
+  get status() {
+    return this._status;
+  },
 
   _isIdleObserver: false,
   _expireOnIdle: false,
   set expireOnIdle(aExpireOnIdle) {
     // Observe idle regardless aExpireOnIdle, since we always want to stop
     // timed expiration on idle, to preserve mobile battery life.
     if (!this._isIdleObserver && !this._shuttingDown) {
       this._idle.addIdleObserver(this, IDLE_TIMEOUT_SECONDS);
@@ -741,17 +743,19 @@ nsPlacesExpiration.prototype = {
     // but idle cleanup could activate in the middle, since tinderboxes are
     // permanently idle.  That would cause unexpected oranges, so disable it.
     if (this._debugLimit !== undefined)
       this._expireOnIdle = false;
     else
       this._expireOnIdle = aExpireOnIdle;
     return this._expireOnIdle;
   },
-  get expireOnIdle() this._expireOnIdle,
+  get expireOnIdle() {
+    return this._expireOnIdle;
+  },
 
   _loadPrefs: function PEX__loadPrefs() {
     // Get the user's limit, if it was set.
     try {
       // We want to silently fail since getIntPref throws if it does not exist,
       // and use a default to fallback to.
       this._urisLimit = this._prefBranch.getIntPref(PREF_MAX_URIS);
     }
--- a/toolkit/components/places/nsTaggingService.js
+++ b/toolkit/components/places/nsTaggingService.js
@@ -517,17 +517,19 @@ TagAutoCompleteResult.prototype = {
 
   /**
    * The number of matches
    */
   get matchCount() {
     return this._results.length;
   },
 
-  get typeAheadResult() false,
+  get typeAheadResult() {
+    return false;
+  },
 
   /**
    * Get the value of the result at the given index
    */
   getValueAt: function PTACR_getValueAt(index) {
     return this._results[index];
   },
 
--- a/toolkit/components/prompts/src/CommonDialog.jsm
+++ b/toolkit/components/prompts/src/CommonDialog.jsm
@@ -136,17 +136,17 @@ CommonDialog.prototype = {
             this.ui.checkboxContainer.hidden = false;
             this.setLabelForNode(this.ui.checkbox, label);
             this.ui.checkbox.checked = this.args.checked;
         }
 
         // set the icon
         let icon = this.ui.infoIcon;
         if (icon)
-            this.iconClass.forEach(function(el,idx,arr) icon.classList.add(el));
+            this.iconClass.forEach((el,idx,arr) => icon.classList.add(el));
 
         // set default result to cancelled
         this.args.ok = false;
         this.args.buttonNumClicked = 1;
 
 
         // Set the default button
         let b = (this.args.defaultButtonNum || 0);
--- a/toolkit/components/satchel/AutoCompleteE10S.jsm
+++ b/toolkit/components/satchel/AutoCompleteE10S.jsm
@@ -51,17 +51,19 @@ var AutoCompleteE10SView = {
   cycleHeader: function(column) { },
   cycleCell: function(idx, column) { },
   selectionChanged: function() { },
   performAction: function(action) { },
   performActionOnCell: function(action, index, column) { },
   getColumnProperties: function(column) { return ""; },
 
   // nsIAutoCompleteController
-  get matchCount() this.rowCount,
+  get matchCount() {
+    return this.rowCount;
+  },
 
   handleEnter: function(aIsPopupSelection) {
     AutoCompleteE10S.handleEnter(aIsPopupSelection);
   },
 
   stopSearch: function(){},
 
   // Internal JS-only API
--- a/toolkit/components/satchel/FormHistory.jsm
+++ b/toolkit/components/satchel/FormHistory.jsm
@@ -596,17 +596,17 @@ function dbClose(aShutdown) {
   log("dbClose finalize statements");
   for (let stmt of dbStmts.values()) {
     stmt.finalize();
   }
 
   dbStmts = new Map();
 
   let closed = false;
-  _dbConnection.asyncClose(function () closed = true);
+  _dbConnection.asyncClose(() => closed = true);
 
   if (!aShutdown) {
     let thread = Services.tm.currentThread;
     while (!closed) {
       thread.processNextEvent(true);
     }
   }
 }
@@ -768,17 +768,19 @@ function expireOldEntriesVacuum(aExpireT
     },
     handleError: function(aError) {
       log("expireEndCountFailure");
     }
   });
 }
 
 this.FormHistory = {
-  get enabled() Prefs.enabled,
+  get enabled() {
+    return Prefs.enabled;
+  },
 
   search : function formHistorySearch(aSelectTerms, aSearchData, aCallbacks) {
     // if no terms selected, select everything
     aSelectTerms = (aSelectTerms) ?  aSelectTerms : validFields;
     validateSearchData(aSearchData, "Search");
 
     let stmt = makeSearchStatement(aSearchData, aSelectTerms);
 
--- a/toolkit/components/satchel/nsFormAutoComplete.js
+++ b/toolkit/components/satchel/nsFormAutoComplete.js
@@ -237,17 +237,17 @@ FormAutoComplete.prototype = {
             // We have a list of results for a shorter search string, so just
             // filter them further based on the new search string and add to a new array.
             let entries = wrappedResult.entries;
             let filteredEntries = [];
             for (let i = 0; i < entries.length; i++) {
                 let entry = entries[i];
                 // Remove results that do not contain the token
                 // XXX bug 394604 -- .toLowerCase can be wrong for some intl chars
-                if(searchTokens.some(function (tok) entry.textLowerCase.indexOf(tok) < 0))
+                if(searchTokens.some(tok => entry.textLowerCase.indexOf(tok) < 0))
                     continue;
                 this._calculateScore(entry, searchString, searchTokens);
                 this.log("Reusing autocomplete entry '" + entry.text +
                          "' (" + entry.frecency +" / " + entry.totalScore + ")");
                 filteredEntries.push(entry);
             }
             filteredEntries.sort(sortBytotalScore);
             wrappedResult.entries = filteredEntries;
--- a/toolkit/components/search/nsSearchService.js
+++ b/toolkit/components/search/nsSearchService.js
@@ -1008,18 +1008,19 @@ function sanitizeName(aName) {
 }
 
 /**
  * Retrieve a pref from the search param branch.
  *
  * @param prefName
  *        The name of the pref.
  **/
-function getMozParamPref(prefName)
-  Services.prefs.getCharPref(BROWSER_SEARCH_PREF + "param." + prefName);
+function getMozParamPref(prefName) {
+  return Services.prefs.getCharPref(BROWSER_SEARCH_PREF + "param." + prefName);
+}
 
 /**
  * Notifies watchers of SEARCH_ENGINE_TOPIC about changes to an engine or to
  * the state of the search service.
  *
  * @param aEngine
  *        The nsISearchEngine object to which the change applies.
  * @param aVerb
@@ -1236,18 +1237,19 @@ EngineURL.prototype = {
     return new Submission(makeURI(url), postData);
   },
 
   _getTermsParameterName: function SRCH_EURL__getTermsParameterName() {
     let queryParam = this.params.find(p => p.value == USER_DEFINED);
     return queryParam ? queryParam.name : "";
   },
 
-  _hasRelation: function SRC_EURL__hasRelation(aRel)
-    this.rels.some(function(e) e == aRel.toLowerCase()),
+  _hasRelation: function SRC_EURL__hasRelation(aRel) {
+    return this.rels.some(e => e == aRel.toLowerCase());
+  },
 
   _initWithJSON: function SRC_EURL__initWithJSON(aJson, aEngine) {
     if (!aJson.params)
       return;
 
     this.rels = aJson.rels;
 
     for (let i = 0; i < aJson.params.length; ++i) {
@@ -1280,18 +1282,19 @@ EngineURL.prototype = {
       resultDomain: this.resultDomain
     };
 
     if (this.type != URLTYPE_SEARCH_HTML)
       json.type = this.type;
     if (this.method != "GET")
       json.method = this.method;
 
-    function collapseMozParams(aParam)
-      this.mozparams[aParam.name] || aParam;
+    function collapseMozParams(aParam) {
+      return this.mozparams[aParam.name] || aParam;
+    }
     json.params = this.params.map(collapseMozParams, this);
 
     return json;
   },
 
   /**
    * Serializes the engine object to a OpenSearch Url element.
    * @param aDoc
@@ -3189,20 +3192,22 @@ SearchService.prototype = {
 
     let toLoad = chromeFiles.concat(distDirs, otherDirs);
 
     function modifiedDir(aDir) {
       return (!cache.directories || !cache.directories[aDir.path] ||
               cache.directories[aDir.path].lastModifiedTime != aDir.lastModifiedTime);
     }
 
-    function notInCachePath(aPathToLoad)
-      cachePaths.indexOf(aPathToLoad.path) == -1;
-    function notInCacheVisibleEngines(aEngineName)
-      cache.visibleDefaultEngines.indexOf(aEngineName) == -1;
+    function notInCachePath(aPathToLoad) {
+      return cachePaths.indexOf(aPathToLoad.path) == -1;
+    }
+    function notInCacheVisibleEngines(aEngineName) {
+      return cache.visibleDefaultEngines.indexOf(aEngineName) == -1;
+    }
 
     let buildID = Services.appinfo.platformBuildID;
     let cachePaths = [path for (path in cache.directories)];
 
     let rebuildCache = !cache.directories ||
                        cache.version != CACHE_VERSION ||
                        cache.locale != getLocale() ||
                        cache.buildID != buildID ||
@@ -3311,20 +3316,22 @@ SearchService.prototype = {
               modifiedDir = true;
               break;
             }
           }
           throw new Task.Result(modifiedDir);
         });
       }
 
-      function notInCachePath(aPathToLoad)
-        cachePaths.indexOf(aPathToLoad.path) == -1;
-      function notInCacheVisibleEngines(aEngineName)
-        cache.visibleDefaultEngines.indexOf(aEngineName) == -1;
+      function notInCachePath(aPathToLoad) {
+        return cachePaths.indexOf(aPathToLoad.path) == -1;
+      }
+      function notInCacheVisibleEngines(aEngineName) {
+        return cache.visibleDefaultEngines.indexOf(aEngineName) == -1;
+      }
 
       let buildID = Services.appinfo.platformBuildID;
       let cachePaths = [path for (path in cache.directories)];
 
       let rebuildCache = !cache.directories ||
                          cache.version != CACHE_VERSION ||
                          cache.locale != getLocale() ||
                          cache.buildID != buildID ||
@@ -3743,17 +3750,17 @@ SearchService.prototype = {
 
       this._parseListTxt(list, jarPackaging, chromeFiles, uris);
       throw new Task.Result([chromeFiles, uris]);
     }.bind(this));
   },
 
   _parseListTxt: function SRCH_SVC_parseListTxt(list, jarPackaging,
                                                 chromeFiles, uris) {
-    let names = list.split("\n").filter(function (n) !!n);
+    let names = list.split("\n").filter(n => !!n);
     // This maps the names of our built-in engines to a boolean
     // indicating whether it should be hidden by default.
     let jarNames = new Map();
     for (let name of names) {
       if (name.endsWith(":hidden")) {
         name = name.split(":")[0];
         jarNames.set(name, true);
       } else {
@@ -4908,18 +4915,20 @@ var engineMetadataService = {
     if (changed) {
       this._commit();
     }
   },
 
   /**
    * Flush any waiting write.
    */
-  finalize: function () this._lazyWriter ? this._lazyWriter.finalize()
-                                         : Promise.resolve(),
+  finalize: function () {
+    return this._lazyWriter ? this._lazyWriter.finalize()
+                            : Promise.resolve();
+  },
 
   /**
    * Commit changes to disk, asynchronously.
    *
    * Calls to this function are actually delayed by LAZY_SERIALIZE_DELAY
    * (= 100ms). If the function is called again before the expiration of
    * the delay, commits are merged and the function is again delayed by
    * the same amount of time.
--- a/toolkit/components/social/MessagePortBase.jsm
+++ b/toolkit/components/social/MessagePortBase.jsm
@@ -23,17 +23,19 @@ AbstractPort.prototype = {
     throw new Error("not implemented");
   },
 
   // and concrete methods shared by client and workers.
   toString: function fw_AbstractPort_toString() {
     return "MessagePort(portType='" + this._portType + "', portId="
            + this._portid + (this._closed ? ", closed=true" : "") + ")";
   },
-  _JSONParse: function fw_AbstractPort_JSONParse(data) JSON.parse(data),
+  _JSONParse: function fw_AbstractPort_JSONParse(data) {
+    return JSON.parse(data);
+  },
 
  _postControlMessage: function fw_AbstractPort_postControlMessage(topic, data) {
     let postData = {
       portTopic: topic,
       portId: this._portid,
       portFromType: this._portType,
       data: data
     };
--- a/toolkit/components/social/SocialService.jsm
+++ b/toolkit/components/social/SocialService.jsm
@@ -29,17 +29,19 @@ XPCOMUtils.defineLazyServiceGetter(this,
 /**
  * The SocialService is the public API to social providers - it tracks which
  * providers are installed and enabled, and is the entry-point for access to
  * the provider itself.
  */
 
 // Internal helper methods and state
 var SocialServiceInternal = {
-  get enabled() this.providerArray.length > 0,
+  get enabled() {
+    return this.providerArray.length > 0;
+  },
 
   get providerArray() {
     return [p for ([, p] of Iterator(this.providers))];
   },
   get manifests() {
     // Retrieve the manifests of installed providers from prefs
     let MANIFEST_PREFS = Services.prefs.getBranch("social.manifest.");
     let prefs = MANIFEST_PREFS.getChildList("", []);
@@ -117,17 +119,17 @@ var SocialServiceInternal = {
           Cu.reportError(aError.message + " (Result = " + aError.result + ")");
         },
         handleCompletion: function(aReason) {
           // the query may not have returned all our providers, so we have
           // stamped the frecency on the provider and sort here. This makes sure
           // all enabled providers get sorted even with frecency zero.
           let providerList = SocialServiceInternal.providerArray;
           // reverse sort
-          aCallback(providerList.sort(function(a, b) b.frecency - a.frecency));
+          aCallback(providerList.sort((a, b) => b.frecency - a.frecency));
         }
       });
     } finally {
       stmt.finalize();
     }
   }
 };
 
--- a/toolkit/components/thumbnails/PageThumbs.jsm
+++ b/toolkit/components/thumbnails/PageThumbs.jsm
@@ -110,27 +110,33 @@ this.PageThumbs = {
    * The calculated width and height of the thumbnails.
    */
   _thumbnailWidth : 0,
   _thumbnailHeight : 0,
 
   /**
    * The scheme to use for thumbnail urls.
    */
-  get scheme() "moz-page-thumb",
+  get scheme() {
+    return "moz-page-thumb";
+  },
 
   /**
    * The static host to use for thumbnail urls.
    */
-  get staticHost() "thumbnail",
+  get staticHost() {
+    return "thumbnail";
+  },
 
   /**
    * The thumbnails' image type.
    */
-  get contentType() "image/png",
+  get contentType() {
+    return "image/png";
+  },
 
   init: function PageThumbs_init() {
     if (!this._initialized) {
       this._initialized = true;
       PlacesUtils.history.addObserver(PageThumbsHistoryObserver, false);
 
       // Migrate the underlying storage, if needed.
       PageThumbsStorageMigrator.migrate();
--- a/toolkit/components/thumbnails/PageThumbsProtocol.js
+++ b/toolkit/components/thumbnails/PageThumbsProtocol.js
@@ -35,22 +35,26 @@ XPCOMUtils.defineLazyModuleGetter(this, 
  */
 function Protocol() {
 }
 
 Protocol.prototype = {
   /**
    * The scheme used by this protocol.
    */
-  get scheme() PageThumbs.scheme,
+  get scheme() {
+    return PageThumbs.scheme;
+  },
 
   /**
    * The default port for this protocol (we don't support ports).
    */
-  get defaultPort() -1,
+  get defaultPort() {
+    return -1;
+  },
 
   /**
    * The flags specific to this protocol implementation.
    */
   get protocolFlags() {
     return Ci.nsIProtocolHandler.URI_DANGEROUS_TO_LOAD |
            Ci.nsIProtocolHandler.URI_IS_LOCAL_RESOURCE |
            Ci.nsIProtocolHandler.URI_NORELATIVE |
@@ -87,17 +91,17 @@ Protocol.prototype = {
   newChannel: function Proto_newChannel(aURI) {
     return this.newChannel2(aURI, null);
   },
 
   /**
    * Decides whether to allow a blacklisted port.
    * @return Always false, we'll never allow ports.
    */
-  allowPort: function () false,
+  allowPort: () => false,
 
   classID: Components.ID("{5a4ae9b5-f475-48ae-9dce-0b4c1d347884}"),
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolHandler])
 };
 
 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([Protocol]);
 
 /**
--- a/toolkit/components/urlformatter/nsURLFormatter.js
+++ b/toolkit/components/urlformatter/nsURLFormatter.js
@@ -82,49 +82,49 @@ function nsURLFormatterService() {
   });
 }
 
 nsURLFormatterService.prototype = {
   classID: Components.ID("{e6156350-2be8-11db-a98b-0800200c9a66}"),
   QueryInterface: XPCOMUtils.generateQI([Ci.nsIURLFormatter]),
 
   _defaults: {
-    LOCALE:           function() Cc["@mozilla.org/chrome/chrome-registry;1"].
-                                 getService(Ci.nsIXULChromeRegistry).
-                                 getSelectedLocale('global'),
+    LOCALE:           () => Cc["@mozilla.org/chrome/chrome-registry;1"].
+                            getService(Ci.nsIXULChromeRegistry).
+                            getSelectedLocale('global'),
     REGION:           function() {
       try {
         // When the geoip lookup failed to identify the region, we fallback to
         // the 'ZZ' region code to mean 'unknown'.
         return Services.prefs.getCharPref("browser.search.region") || "ZZ";
       } catch(e) {
         return "ZZ";
       }
     },
-    VENDOR:           function() this.appInfo.vendor,
-    NAME:             function() this.appInfo.name,
-    ID:               function() this.appInfo.ID,
-    VERSION:          function() this.appInfo.version,
-    APPBUILDID:       function() this.appInfo.appBuildID,
-    PLATFORMVERSION:  function() this.appInfo.platformVersion,
-    PLATFORMBUILDID:  function() this.appInfo.platformBuildID,
-    APP:              function() this.appInfo.name.toLowerCase().replace(/ /, ""),
-    OS:               function() this.appInfo.OS,
-    XPCOMABI:         function() this.ABI,
-    BUILD_TARGET:     function() this.appInfo.OS + "_" + this.ABI,
-    OS_VERSION:       function() this.OSVersion,
-    CHANNEL:          function() UpdateUtils.UpdateChannel,
-    MOZILLA_API_KEY:   function() "@MOZ_MOZILLA_API_KEY@",
-    GOOGLE_API_KEY:   function() "@MOZ_GOOGLE_API_KEY@",
-    GOOGLE_OAUTH_API_CLIENTID:function() "@MOZ_GOOGLE_OAUTH_API_CLIENTID@",
-    GOOGLE_OAUTH_API_KEY:     function() "@MOZ_GOOGLE_OAUTH_API_KEY@",
-    BING_API_CLIENTID:function() "@MOZ_BING_API_CLIENTID@",
-    BING_API_KEY:     function() "@MOZ_BING_API_KEY@",
-    DISTRIBUTION:     function() this.distribution.id,
-    DISTRIBUTION_VERSION: function() this.distribution.version
+    VENDOR:           function() { return this.appInfo.vendor; },
+    NAME:             function() { return this.appInfo.name; },
+    ID:               function() { return this.appInfo.ID; },
+    VERSION:          function() { return this.appInfo.version; },
+    APPBUILDID:       function() { return this.appInfo.appBuildID; },
+    PLATFORMVERSION:  function() { return this.appInfo.platformVersion; },
+    PLATFORMBUILDID:  function() { return this.appInfo.platformBuildID; },
+    APP:              function() { return this.appInfo.name.toLowerCase().replace(/ /, ""); },
+    OS:               function() { return this.appInfo.OS; },
+    XPCOMABI:         function() { return this.ABI; },
+    BUILD_TARGET:     function() { return this.appInfo.OS + "_" + this.ABI; },
+    OS_VERSION:       function() { return this.OSVersion; },
+    CHANNEL:          () => UpdateUtils.UpdateChannel,
+    MOZILLA_API_KEY:  () => "@MOZ_MOZILLA_API_KEY@",
+    GOOGLE_API_KEY:   () => "@MOZ_GOOGLE_API_KEY@",
+    GOOGLE_OAUTH_API_CLIENTID:() => "@MOZ_GOOGLE_OAUTH_API_CLIENTID@",
+    GOOGLE_OAUTH_API_KEY:     () => "@MOZ_GOOGLE_OAUTH_API_KEY@",
+    BING_API_CLIENTID:() => "@MOZ_BING_API_CLIENTID@",
+    BING_API_KEY:     () => "@MOZ_BING_API_KEY@",
+    DISTRIBUTION:     function() { return this.distribution.id; },
+    DISTRIBUTION_VERSION: function() { return this.distribution.version; }
   },
 
   formatURL: function uf_formatURL(aFormat) {
     var _this = this;
     var replacementCallback = function(aMatch, aKey) {
       if (aKey in _this._defaults) {
         return _this._defaults[aKey].call(_this);
       }