Bug 1330791 - Enable no-else-return rule for eslint in /services and fix associated errors. r=markh
☠☠ backed out by e34a208d8ac2 ☠ ☠
authorJared Wein <jwein@mozilla.com>
Thu, 12 Jan 2017 18:14:54 -0500
changeset 374804 ef7356099bd38f041de27e5a9b2a2e04fec0b056
parent 374803 a5fe483288dba9c1c3ad594b712f063c4eccc798
child 374805 46f9c247550deabca94cbe67c68e92e8f25226ab
push id6996
push userjlorenzo@mozilla.com
push dateMon, 06 Mar 2017 20:48:21 +0000
treeherdermozilla-beta@d89512dab048 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmarkh
bugs1330791
milestone53.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 1330791 - Enable no-else-return rule for eslint in /services and fix associated errors. r=markh MozReview-Commit-ID: 7Os4uZQCDox
services/.eslintrc.js
services/common/stringbundle.js
services/crypto/modules/utils.js
services/fxaccounts/FxAccountsProfile.jsm
services/fxaccounts/FxAccountsProfileClient.jsm
services/fxaccounts/tests/xpcshell/test_web_channel.js
services/sync/modules/addonsreconciler.js
services/sync/modules/addonutils.js
services/sync/modules/browserid_identity.js
services/sync/modules/service.js
services/sync/tests/unit/test_browserid_identity.js
services/sync/tps/extensions/tps/resource/modules/bookmarks.jsm
services/sync/tps/extensions/tps/resource/modules/forms.jsm
--- a/services/.eslintrc.js
+++ b/services/.eslintrc.js
@@ -6,17 +6,16 @@ module.exports = {
   ],
   rules: {
     /* These rules are only set to warn temporarily
        until they get fixed, at which point their
        respective line in this file should be removed. */
     "brace-style": "warn",
     "consistent-return": "warn",
     "no-cond-assign": "warn",
-    "no-else-return": "warn",
     "no-ex-assign": "warn",
     "no-func-assign": "warn",
     "no-native-reassign": "warn",
     "no-nested-ternary": "warn",
     "no-octal": "warn",
     "no-redeclare": "warn",
     "no-unreachable": "warn",
     "no-unsafe-finally": "warn",
--- a/services/common/stringbundle.js
+++ b/services/common/stringbundle.js
@@ -87,18 +87,17 @@ StringBundle.prototype = {
    * @param args {array} [optional]
    *        an array of arguments that replace occurrences of %S in the string
    *
    * @returns {String} the value of the string
    */
   get(key, args) {
     if (args)
       return this.stringBundle.formatStringFromName(key, args, args.length);
-    else
-      return this.stringBundle.GetStringFromName(key);
+    return this.stringBundle.GetStringFromName(key);
   },
 
   /**
    * Get all the strings in the bundle.
    *
    * @returns {Array}
    *          an array of objects with key and value properties
    */
--- a/services/crypto/modules/utils.js
+++ b/services/crypto/modules/utils.js
@@ -255,22 +255,21 @@ this.CryptoUtils = {
   },
 
   deriveKeyFromPassphrase: function deriveKeyFromPassphrase(passphrase,
                                                             salt,
                                                             keyLength,
                                                             forceJS) {
     if (Svc.Crypto.deriveKeyFromPassphrase && !forceJS) {
       return Svc.Crypto.deriveKeyFromPassphrase(passphrase, salt, keyLength);
-    } else {
-      // Fall back to JS implementation.
-      // 4096 is hardcoded in WeaveCrypto, so do so here.
-      return CryptoUtils.pbkdf2Generate(passphrase, atob(salt), 4096,
-                                        keyLength);
     }
+    // Fall back to JS implementation.
+    // 4096 is hardcoded in WeaveCrypto, so do so here.
+    return CryptoUtils.pbkdf2Generate(passphrase, atob(salt), 4096,
+                                      keyLength);
   },
 
   /**
    * Compute the HTTP MAC SHA-1 for an HTTP request.
    *
    * @param  identifier
    *         (string) MAC Key Identifier.
    * @param  key
--- a/services/fxaccounts/FxAccountsProfile.jsm
+++ b/services/fxaccounts/FxAccountsProfile.jsm
@@ -25,19 +25,18 @@ XPCOMUtils.defineLazyModuleGetter(this, 
   "resource://gre/modules/FxAccountsProfileClient.jsm");
 
 // Based off of deepEqual from Assert.jsm
 function deepEqual(actual, expected) {
   if (actual === expected) {
     return true;
   } else if (typeof actual != "object" && typeof expected != "object") {
     return actual == expected;
-  } else {
-    return objEquiv(actual, expected);
   }
+  return objEquiv(actual, expected);
 }
 
 function isUndefinedOrNull(value) {
   return value === null || value === undefined;
 }
 
 function objEquiv(a, b) {
   if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) {
--- a/services/fxaccounts/FxAccountsProfileClient.jsm
+++ b/services/fxaccounts/FxAccountsProfileClient.jsm
@@ -156,24 +156,23 @@ this.FxAccountsProfileClient.prototype =
             code: request.response.status,
             message: request.response.body,
           }));
         }
 
         // "response.success" means status code is 200
         if (request.response.success) {
           return resolve(body);
-        } else {
-          return reject(new FxAccountsProfileClientError({
-            error: body.error || ERROR_UNKNOWN,
-            errno: body.errno || ERRNO_UNKNOWN_ERROR,
-            code: request.response.status,
-            message: body.message || body,
-          }));
         }
+        return reject(new FxAccountsProfileClientError({
+          error: body.error || ERROR_UNKNOWN,
+          errno: body.errno || ERRNO_UNKNOWN_ERROR,
+          code: request.response.status,
+          message: body.message || body,
+        }));
       };
 
       if (method === "GET") {
         request.get();
       } else {
         // method not supported
         return reject(new FxAccountsProfileClientError({
           error: ERROR_NETWORK,
--- a/services/fxaccounts/tests/xpcshell/test_web_channel.js
+++ b/services/fxaccounts/tests/xpcshell/test_web_channel.js
@@ -486,14 +486,13 @@ function makeObserver(aObserveTopic, aOb
 }
 
 function validationHelper(params, expected) {
   try {
     new FxAccountsWebChannel(params);
   } catch (e) {
     if (typeof expected === "string") {
       return do_check_eq(e.toString(), expected);
-    } else {
-      return do_check_true(e.toString().match(expected));
     }
+    return do_check_true(e.toString().match(expected));
   }
   throw new Error("Validation helper error");
 }
--- a/services/sync/modules/addonsreconciler.js
+++ b/services/sync/modules/addonsreconciler.js
@@ -291,19 +291,18 @@ AddonsReconciler.prototype = {
    * @param listener
    *        Listener instance to remove.
    */
   removeChangeListener: function removeChangeListener(listener) {
     this._listeners = this._listeners.filter(function(element) {
       if (element == listener) {
         this._log.debug("Removing change listener.");
         return false;
-      } else {
-        return true;
       }
+      return true;
     }.bind(this));
   },
 
   /**
    * Tells the instance to start listening for AddonManager changes.
    *
    * This is typically called automatically when Sync is loaded.
    */
--- a/services/sync/modules/addonutils.js
+++ b/services/sync/modules/addonutils.js
@@ -309,19 +309,18 @@ AddonUtilsInternal.prototype = {
             continue;
           }
 
           let params = addon.sourceURI.query.split("&").map(
             function rewrite(param) {
 
             if (param.indexOf("src=") == 0) {
               return "src=sync";
-            } else {
-              return param;
             }
+            return param;
           });
 
           addon.sourceURI.query = params.join("&");
         }
 
         expectedInstallCount = toInstall.length;
 
         if (!expectedInstallCount) {
--- a/services/sync/modules/browserid_identity.js
+++ b/services/sync/modules/browserid_identity.js
@@ -402,19 +402,18 @@ this.BrowserIDManager.prototype = {
     if (this.syncKeyBundle) {
       // TODO: This is probably fine because the code shouldn't be
       // using the sync key directly (it should use the sync key
       // bundle), but I don't like it. We should probably refactor
       // code that is inspecting this to not do validation on this
       // field directly and instead call a isSyncKeyValid() function
       // that we can override.
       return "99999999999999999999999999";
-    } else {
-      return null;
     }
+    return null;
   },
 
   set syncKey(value) {
     throw "syncKey setter should be not used in BrowserIDManager";
   },
 
   get syncKeyBundle() {
     return this._syncKeyBundle;
--- a/services/sync/modules/service.js
+++ b/services/sync/modules/service.js
@@ -657,21 +657,19 @@ Sync11Service.prototype = {
           // If _freshStart fails to clear the server or upload keys, it will
           // throw.
           this._freshStart();
           return true;
         }
 
         // Last-ditch case.
         return false;
-      } else {
-        // No update needed: we're good!
-        return true;
       }
-
+      // No update needed: we're good!
+      return true;
     } catch (ex) {
       // This means no keys are present, or there's a network error.
       this._log.debug("Failed to fetch and verify keys", ex);
       this.errorHandler.checkServerError(ex);
       return false;
     }
   },
 
@@ -1218,29 +1216,28 @@ Sync11Service.prototype = {
       // bug 545725 - re-verify creds and fail sanely
       if (!this.verifyLogin()) {
         this.status.sync = CREDENTIALS_CHANGED;
         this._log.info("Credentials have changed, aborting sync and forcing re-login.");
         return false;
       }
 
       return true;
-    } else {
-      if (!this.upgradeSyncKey(meta.payload.syncID)) {
-        this._log.warn("Failed to upgrade sync key. Failing remote setup.");
-        return false;
-      }
+    }
+    if (!this.upgradeSyncKey(meta.payload.syncID)) {
+      this._log.warn("Failed to upgrade sync key. Failing remote setup.");
+      return false;
+    }
 
-      if (!this.verifyAndFetchSymmetricKeys(infoResponse)) {
-        this._log.warn("Failed to fetch symmetric keys. Failing remote setup.");
-        return false;
-      }
+    if (!this.verifyAndFetchSymmetricKeys(infoResponse)) {
+      this._log.warn("Failed to fetch symmetric keys. Failing remote setup.");
+      return false;
+    }
 
-      return true;
-    }
+    return true;
   },
 
   /**
    * Return whether we should attempt login at the start of a sync.
    *
    * Note that this function has strong ties to _checkSync: callers
    * of this function should typically use _checkSync to verify that
    * any necessary login took place.
--- a/services/sync/tests/unit/test_browserid_identity.js
+++ b/services/sync/tests/unit/test_browserid_identity.js
@@ -468,30 +468,29 @@ add_task(async function test_refreshCert
   let mockTSC = mockTokenServer(() => {
     if (getCertCount <= 1) {
       didReturn401 = true;
       return {
         status: 401,
         headers: {"content-type": "application/json"},
         body: JSON.stringify({}),
       };
-    } else {
-      didReturn200 = true;
-      return {
-        status: 200,
-        headers: {"content-type": "application/json"},
-        body: JSON.stringify({
-          id:           "id",
-          key:          "key",
-          api_endpoint: "http://example.com/",
-          uid:          "uid",
-          duration:     300,
-        })
-      };
     }
+    didReturn200 = true;
+    return {
+      status: 200,
+      headers: {"content-type": "application/json"},
+      body: JSON.stringify({
+        id:           "id",
+        key:          "key",
+        api_endpoint: "http://example.com/",
+        uid:          "uid",
+        duration:     300,
+      })
+    };
   });
 
   browseridManager._tokenServerClient = mockTSC;
 
   await browseridManager.initializeWithCurrentIdentity();
   await browseridManager.whenReadyToAuthenticate.promise;
 
   do_check_eq(getCertCount, 2);
--- a/services/sync/tps/extensions/tps/resource/modules/bookmarks.jsm
+++ b/services/sync/tps/extensions/tps/resource/modules/bookmarks.jsm
@@ -212,19 +212,18 @@ PlacesItem.prototype = {
     let folder_id = PlacesUtils.bookmarks[this._bookmarkFolders[folder_parts[0]]];
     for (let i = 1; i < folder_parts.length; i++) {
       let subfolder_id = this.GetPlacesNodeId(
         folder_id,
         Ci.nsINavHistoryResultNode.RESULT_TYPE_FOLDER,
         folder_parts[i]);
       if (subfolder_id == -1) {
         return -1;
-      } else {
-        folder_id = subfolder_id;
       }
+      folder_id = subfolder_id;
     }
     return folder_id;
   },
 
   /**
    * CreateFolder
    *
    * Creates a bookmark folder.
--- a/services/sync/tps/extensions/tps/resource/modules/forms.jsm
+++ b/services/sync/tps/extensions/tps/resource/modules/forms.jsm
@@ -162,22 +162,21 @@ FormData.prototype = {
     Logger.AssertTrue(this.fieldname != null && this.value != null,
       "Must specify both fieldname and value");
 
     return FormDB.getDataForValue(this.fieldname, this.value).then(formdata => {
       if (!formdata) {
         // this item doesn't exist yet in the db, so we need to insert it
         return FormDB.insertValue(this.fieldname, this.value,
                                   this.hours_to_us(this.date));
-      } else {
-        /* Right now, we ignore this case.  If bug 552531 is ever fixed,
-           we might need to add code here to update the firstUsed or
-           lastUsed fields, as appropriate.
-         */
       }
+      /* Right now, we ignore this case.  If bug 552531 is ever fixed,
+         we might need to add code here to update the firstUsed or
+         lastUsed fields, as appropriate.
+       */
     });
   },
 
   /**
    * Find
    *
    * Attempts to locate an entry in the moz_formhistory database that
    * matches the fieldname and value for this FormData object.