| /* ***** BEGIN LICENSE BLOCK ***** |
| * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
| * |
| * The contents of this file are subject to the Mozilla Public License Version |
| * 1.1 (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * http://www.mozilla.org/MPL/ |
| * |
| * Software distributed under the License is distributed on an "AS IS" basis, |
| * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
| * for the specific language governing rights and limitations under the |
| * License. |
| * |
| * The Original Code is mozilla.org code. |
| * |
| * The Initial Developer of the Original Code is Mozilla Corporation. |
| * Portions created by the Initial Developer are Copyright (C) 2007 |
| * the Initial Developer. All Rights Reserved. |
| * |
| * Contributor(s): |
| * Justin Dolske <dolske@mozilla.com> (original author) |
| * |
| * Alternatively, the contents of this file may be used under the terms of |
| * either the GNU General Public License Version 2 or later (the "GPL"), or |
| * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
| * in which case the provisions of the GPL or the LGPL are applicable instead |
| * of those above. If you wish to allow use of your version of this file only |
| * under the terms of either the GPL or the LGPL, and not to allow others to |
| * use your version of this file under the terms of the MPL, indicate your |
| * decision by deleting the provisions above and replace them with the notice |
| * and other provisions required by the GPL or the LGPL. If you do not delete |
| * the provisions above, a recipient may use your version of this file under |
| * the terms of any one of the MPL, the GPL or the LGPL. |
| * |
| * ***** END LICENSE BLOCK ***** */ |
| |
| |
| #include "nsISupports.idl" |
| |
| interface nsIFile; |
| interface nsILoginInfo; |
| |
| [scriptable, uuid(18b5acbd-36dc-496d-9212-6f1a3c068a84)] |
| |
| /* |
| * NOTE: This interface is intended to be implemented by modules |
| * providing storage mechanisms for the login manager. |
| * Other code should use the login manager's interfaces |
| * (nsILoginManager), and should not call storage modules |
| * directly. |
| */ |
| interface nsILoginManagerStorage : nsISupports { |
| /** |
| * Initialize the component. Not invoked automatically. |
| */ |
| void init(); |
| |
| |
| /** |
| * Initialize the component, but override the default filename |
| * locations. This is primarily used to the unit tests and profile |
| * migration. |
| * |
| * @param aInputFile |
| * File to read for stored logins. |
| * @param aOutputFile |
| * If non-null, file to output logins to. |
| * |
| */ |
| void initWithFile(in nsIFile aInputFile, in nsIFile aOutputFile); |
| |
| |
| /** |
| * Store a new login. |
| * |
| * @param aLogin |
| * The login to be added. |
| */ |
| void addLogin(in nsILoginInfo aLogin); |
| |
| |
| /** |
| * Remove a login from the login manager. |
| * |
| * @param aLogin |
| * The login to be removed. |
| */ |
| void removeLogin(in nsILoginInfo aLogin); |
| |
| |
| /** |
| * Modify an existing login in the login manager. |
| * |
| * @param aLogin |
| * The login to be modified. |
| */ |
| void modifyLogin(in nsILoginInfo oldLogin, in nsILoginInfo newLogin); |
| |
| |
| /** |
| * Remove all stored logins. |
| * |
| * The browser sanitization feature allows the user to clear any stored |
| * passwords. This interface allows that to be done without getting each |
| * login first (which might require knowing the master password). |
| * |
| */ |
| void removeAllLogins(); |
| |
| |
| /** |
| * Fetch all logins in the login manager. An array is always returned; |
| * if there are no logins the array is empty. |
| * |
| * @param count |
| * The number of elements in the array. JS callers can simply use |
| * the array's .length property, and supply an dummy object for |
| * this out param. For example: |getAllLogins({})| |
| * @param logins |
| * An array of nsILoginInfo objects. |
| * |
| * NOTE: This can be called from JS as: |
| * var logins = pwmgr.getAllLogins({}); |
| * (|logins| is an array). |
| */ |
| void getAllLogins(out unsigned long count, |
| [retval, array, size_is(count)] out nsILoginInfo logins); |
| |
| |
| /** |
| * Obtain a list of all hosts for which password saving is disabled. |
| * |
| * @param count |
| * The number of elements in the array. JS callers can simply use |
| * the array's .length property, and supply an dummy object for |
| * this out param. For example: |getAllDisabledHosts({})| |
| * @param hostnames |
| * An array of hostname strings, in origin URL format without a |
| * pathname. For example: "https://www.site.com". |
| * |
| * NOTE: This can be called from JS as: |
| * var logins = pwmgr.getAllDisabledHosts({}); |
| */ |
| void getAllDisabledHosts(out unsigned long count, |
| [retval, array, size_is(count)] out wstring hostnames); |
| |
| |
| /** |
| * Check to see if saving logins has been disabled for a host. |
| * |
| * @param aHost |
| * The hostname to check. This argument should be in the origin |
| * URL format, without a pathname. For example: "http://foo.com". |
| */ |
| boolean getLoginSavingEnabled(in AString aHost); |
| |
| |
| /** |
| * Disable (or enable) storing logins for the specified host. When |
| * disabled, the login manager will not prompt to store logins for |
| * that host. Existing logins are not affected. |
| * |
| * @param aHost |
| * The hostname to set. This argument should be in the origin |
| * URL format, without a pathname. For example: "http://foo.com". |
| * @param isEnabled |
| * Specify if saving logins should be enabled (true) or |
| * disabled (false) |
| */ |
| void setLoginSavingEnabled(in AString aHost, in boolean isEnabled); |
| |
| |
| /** |
| * Search for logins matching the specified criteria. Called when looking |
| * for logins that might be applicable to a form or authentication request. |
| * |
| * @param count |
| * The number of elements in the array. JS callers can simply use |
| * the array's .length property, and supply an dummy object for |
| * this out param. For example: |findLogins({}, hostname, ...)| |
| * @param aHostname |
| * The hostname to restrict searches to, in URL format. For |
| * example: "http://www.site.com". |
| * @param aActionURL |
| * For form logins, this argument should be the URL to which the |
| * form will be submitted. For protocol logins, specify null. |
| * @param aHttpRealm |
| * For protocol logins, this argument should be the HTTP Realm |
| * for which the login applies. This is obtained from the |
| * WWW-Authenticate header. See RFC2617. For form logins, |
| * specify null. |
| * @param logins |
| * An array of nsILoginInfo objects. |
| * |
| * NOTE: This can be called from JS as: |
| * var logins = pwmgr.findLogins({}, hostname, ...); |
| * |
| */ |
| void findLogins(out unsigned long count, in AString aHostname, |
| in AString aActionURL, in AString aHttpRealm, |
| [retval, array, size_is(count)] out nsILoginInfo logins); |
| |
| |
| /** |
| * Search for logins matching the specified criteria, as with |
| * findLogins(). This interface only returns the number of matching |
| * logins (and not the logins themselves), which allows a caller to |
| * check for logins without causing the user to be prompted for a master |
| * password to decrypt the logins. |
| * |
| * @param aHostname |
| * The hostname to restrict searches to. Specify an empty string |
| * to match all hosts. A null value will not match any logins, and |
| * will thus always return a count of 0. |
| * @param aActionURL |
| * The URL to which a form login will be submitted. To match any |
| * form login, specify an empty string. To not match any form |
| * login, specify null. |
| * @param aHttpRealm |
| * The HTTP Realm for which the login applies. To match logins for |
| * any realm, specify an empty string. To not match logins for any |
| * realm, specify null. |
| */ |
| unsigned long countLogins(in AString aHostname, in AString aActionURL, |
| in AString aHttpRealm); |
| }; |