Bug 1350646: Part 19 - Remove SDK passwords modules. r=Mossop
☠☠ backed out by 9f7d0c809762 ☠ ☠
authorKris Maglione <maglione.k@gmail.com>
Sat, 05 Aug 2017 22:46:28 -0700
changeset 373649 79e77c06ff440b310bbc8f02189d1e730ff199ad
parent 373648 5584fdcd2ee0bed1cb94f91e7fca416f93d0aa0d
child 373650 ee8f7fa9d4102d6b20e8e541b954be7d5290b3e8
push id93571
push usermaglione.k@gmail.com
push dateWed, 09 Aug 2017 22:31:31 +0000
treeherdermozilla-inbound@c3108aebee35 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersMossop
bugs1350646
milestone57.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 1350646: Part 19 - Remove SDK passwords modules. r=Mossop MozReview-Commit-ID: Htgixg6LI4x
addon-sdk/moz.build
addon-sdk/source/lib/sdk/passwords.js
addon-sdk/source/lib/sdk/passwords/utils.js
--- a/addon-sdk/moz.build
+++ b/addon-sdk/moz.build
@@ -54,18 +54,16 @@ modules = [
     'sdk/io/file.js',
     'sdk/lang/functional.js',
     'sdk/lang/functional/concurrent.js',
     'sdk/lang/functional/core.js',
     'sdk/lang/functional/helpers.js',
     'sdk/lang/type.js',
     'sdk/lang/weak-set.js',
     'sdk/net/url.js',
-    'sdk/passwords.js',
-    'sdk/passwords/utils.js',
     'sdk/platform/xpcom.js',
     'sdk/preferences/service.js',
     'sdk/preferences/utils.js',
     'sdk/private-browsing.js',
     'sdk/private-browsing/utils.js',
     'sdk/querystring.js',
     'sdk/self.js',
     'sdk/system.js',
deleted file mode 100644
--- a/addon-sdk/source/lib/sdk/passwords.js
+++ /dev/null
@@ -1,61 +0,0 @@
-/* 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';
-
-module.metadata = {
-  "stability": "stable"
-};
-
-const { search, remove, store } = require("./passwords/utils");
-const { defer, delay } = require("./lang/functional");
-
-/**
- * Utility function that returns `onComplete` and `onError` callbacks form the
- * given `options` objects. Also properties are removed from the passed
- * `options` objects.
- * @param {Object} options
- *    Object that is passed to the exported functions of this module.
- * @returns {Function[]}
- *    Array with two elements `onComplete` and `onError` functions.
- */
-function getCallbacks(options) {
-  let value = [
-    'onComplete' in options ? options.onComplete : null,
-    'onError' in options ? defer(options.onError) : console.exception
-  ];
-
-  delete options.onComplete;
-  delete options.onError;
-
-  return value;
-};
-
-/**
- * Creates a wrapper function that tries to call `onComplete` with a return
- * value of the wrapped function or falls back to `onError` if wrapped function
- * throws an exception.
- */
-function createWrapperMethod(wrapped) {
-  return function (options) {
-    let [ onComplete, onError ] = getCallbacks(options);
-    try {
-      let value = wrapped(options);
-      if (onComplete) {
-        delay(function() {
-          try {
-            onComplete(value);
-          } catch (exception) {
-            onError(exception);
-          }
-        });
-      }
-    } catch (exception) {
-      onError(exception);
-    }
-  };
-}
-
-exports.search = createWrapperMethod(search);
-exports.store = createWrapperMethod(store);
-exports.remove = createWrapperMethod(remove);
deleted file mode 100644
--- a/addon-sdk/source/lib/sdk/passwords/utils.js
+++ /dev/null
@@ -1,107 +0,0 @@
-/* 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";
-
-module.metadata = {
-  "stability": "unstable"
-};
-
-const { Cc, Ci, CC } = require("chrome");
-const { uri: ADDON_URI } = require("../self");
-const loginManager = Cc["@mozilla.org/login-manager;1"].
-                     getService(Ci.nsILoginManager);
-const { URL: parseURL } = require("../url");
-const LoginInfo = CC("@mozilla.org/login-manager/loginInfo;1",
-                     "nsILoginInfo", "init");
-
-function filterMatchingLogins(loginInfo) {
-  return Object.keys(this).every(key => loginInfo[key] === this[key], this);
-}
-
-/**
- * Removes `user`, `password` and `path` fields from the given `url` if it's
- * 'http', 'https' or 'ftp'. All other URLs are returned unchanged.
- * @example
- * http://user:pass@www.site.com/foo/?bar=baz#bang -> http://www.site.com
- */
-function normalizeURL(url) {
-  let { scheme, host, port } = parseURL(url);
-  // We normalize URL only if it's `http`, `https` or `ftp`. All other types of
-  // URLs (`resource`, `chrome`, etc..) should not be normalized as they are
-  // used with add-on associated credentials path.
-  return scheme === "http" || scheme === "https" || scheme === "ftp" ?
-         scheme + "://" + (host || "") + (port ? ":" + port : "") :
-         url
-}
-
-function Login(options) {
-  let login = Object.create(Login.prototype);
-  Object.keys(options || {}).forEach(function(key) {
-    if (key === 'url')
-      login.hostname = normalizeURL(options.url);
-    else if (key === 'formSubmitURL')
-      login.formSubmitURL = options.formSubmitURL ?
-                            normalizeURL(options.formSubmitURL) : null;
-    else if (key === 'realm')
-      login.httpRealm = options.realm;
-    else 
-      login[key] = options[key];
-  });
-
-  return login;
-}
-Login.prototype.toJSON = function toJSON() {
-  return {
-    url: this.hostname || ADDON_URI,
-    realm: this.httpRealm || null,
-    formSubmitURL: this.formSubmitURL || null,
-    username: this.username || null,
-    password: this.password || null,
-    usernameField: this.usernameField || '',
-    passwordField: this.passwordField || '',
-  }
-};
-Login.prototype.toLoginInfo = function toLoginInfo() {
-  let { url, realm, formSubmitURL, username, password, usernameField,
-        passwordField } = this.toJSON();
-
-  return new LoginInfo(url, formSubmitURL, realm, username, password,
-                       usernameField, passwordField);
-};
-
-function loginToJSON(value) {
-  return Login(value).toJSON();
-}
-
-/**
- * Returns array of `nsILoginInfo` objects that are stored in the login manager
- * and have all the properties with matching values as a given `options` object.
- * @param {Object} options
- * @returns {nsILoginInfo[]}
- */
-exports.search = function search(options) {
-  return loginManager.getAllLogins()
-                     .filter(filterMatchingLogins, Login(options))
-                     .map(loginToJSON);
-};
-
-/**
- * Stores login info created from the given `options` to the applications
- * built-in login management system.
- * @param {Object} options.
- */
-exports.store = function store(options) {
-  loginManager.addLogin(Login(options).toLoginInfo());
-};
-
-/**
- * Removes login info from the applications built-in login management system.
- * _Please note: When removing a login info the specified properties must
- * exactly match to the one that is already stored or exception will be thrown._
- * @param {Object} options.
- */
-exports.remove = function remove(options) {
-  loginManager.removeLogin(Login(options).toLoginInfo());
-};