Bug 1350646: Part 19 - Remove SDK passwords modules. r=Mossop
authorKris Maglione <maglione.k@gmail.com>
Sat, 05 Aug 2017 22:46:28 -0700
changeset 373718 d5030e86a3ff1b46639b74d9f6c7bac5895ce23e
parent 373717 2b1a563af91505aaeaa53e0645415031e3f86e87
child 373719 b0592041a69e22e41fa7b770b375a5b37ccbc24e
push id93584
push usermaglione.k@gmail.com
push dateThu, 10 Aug 2017 03:41:19 +0000
treeherdermozilla-inbound@24d5dbf3a9dc [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());
-};