Bug 1350646: Part 19 - Remove SDK passwords modules. r?Mossop draft
authorKris Maglione <maglione.k@gmail.com>
Sat, 05 Aug 2017 22:46:28 -0700
changeset 641200 8086deaefa401daba3a6d15a258fbbea1eed11a3
parent 641199 f7501988619f373b4a42cec702e2c84927500124
child 641201 631f69a287e93b1df7609acb0ce818116ab2f9f0
push id72469
push usermaglione.k@gmail.com
push dateSun, 06 Aug 2017 07:23:41 +0000
reviewersMossop
bugs1350646
milestone57.0a1
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());
-};