diff options
Diffstat (limited to 'components/passwordmgr/public/nsILoginManager.idl')
-rw-r--r-- | components/passwordmgr/public/nsILoginManager.idl | 262 |
1 files changed, 262 insertions, 0 deletions
diff --git a/components/passwordmgr/public/nsILoginManager.idl b/components/passwordmgr/public/nsILoginManager.idl new file mode 100644 index 000000000..30b5a0449 --- /dev/null +++ b/components/passwordmgr/public/nsILoginManager.idl @@ -0,0 +1,262 @@ +/* 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/. */ + + +#include "nsISupports.idl" + +interface nsIURI; +interface nsILoginInfo; +interface nsIAutoCompleteResult; +interface nsIFormAutoCompleteObserver; +interface nsIDOMHTMLInputElement; +interface nsIDOMHTMLFormElement; +interface nsIPropertyBag; + +[scriptable, uuid(38c7f6af-7df9-49c7-b558-2776b24e6cc1)] +interface nsILoginManager : nsISupports { + /** + * This promise is resolved when initialization is complete, and is rejected + * in case initialization failed. This includes the initial loading of the + * login data as well as any migration from previous versions. + * + * Calling any method of nsILoginManager before this promise is resolved + * might trigger the synchronous initialization fallback. + */ + readonly attribute jsval initializationPromise; + + + /** + * Store a new login in the login manager. + * + * @param aLogin + * The login to be added. + * @return a clone of the login info with the guid set (even if it was not provided) + * + * Default values for the login's nsILoginMetaInfo properties will be + * created. However, if the caller specifies non-default values, they will + * be used instead. + */ + nsILoginInfo addLogin(in nsILoginInfo aLogin); + + + /** + * Remove a login from the login manager. + * + * @param aLogin + * The login to be removed. + * + * The specified login must exactly match a stored login. However, the + * values of any nsILoginMetaInfo properties are ignored. + */ + void removeLogin(in nsILoginInfo aLogin); + + + /** + * Modify an existing login in the login manager. + * + * @param oldLogin + * The login to be modified. + * @param newLoginData + * The new login values (either a nsILoginInfo or nsIProperyBag) + * + * If newLoginData is a nsILoginInfo, all of the old login's nsILoginInfo + * properties are changed to the values from newLoginData (but the old + * login's nsILoginMetaInfo properties are unmodified). + * + * If newLoginData is a nsIPropertyBag, only the specified properties + * will be changed. The nsILoginMetaInfo properties of oldLogin can be + * changed in this manner. + * + * If the propertybag contains an item named "timesUsedIncrement", the + * login's timesUsed property will be incremented by the item's value. + */ + void modifyLogin(in nsILoginInfo oldLogin, in nsISupports newLoginData); + + + /** + * Remove all logins known to login manager. + * + * 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 omit this param. + * @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([optional] 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 omit this param. + * @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.getDisabledAllLogins(); + */ + void getAllDisabledHosts([optional] 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". + * To find logins for a given nsIURI, you would typically pass in + * its prePath. + * @param aActionURL + * For form logins, this argument should be the URL to which the + * form will be submitted. For protocol logins, specify null. + * An empty string ("") will match any value (except 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. + * An empty string ("") will match any value (except 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); + + + /** + * Generate results for a userfield autocomplete menu. + * + * NOTE: This interface is provided for use only by the FormFillController, + * which calls it directly. This isn't really ideal, it should + * probably be callback registered through the FFC. + */ + void autoCompleteSearchAsync(in AString aSearchString, + in nsIAutoCompleteResult aPreviousResult, + in nsIDOMHTMLInputElement aElement, + in nsIFormAutoCompleteObserver aListener); + + /** + * Stop a previously-started async search. + */ + void stopSearch(); + + /** + * Search for 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: |searchLogins({}, matchData)| + * @param matchData + * The data used to search. This does not follow the same + * requirements as findLogins for those fields. Wildcard matches are + * simply not specified. + * @param logins + * An array of nsILoginInfo objects. + * + * NOTE: This can be called from JS as: + * var logins = pwmgr.searchLogins({}, matchData); + * (|logins| is an array). + */ + void searchLogins(out unsigned long count, in nsIPropertyBag matchData, + [retval, array, size_is(count)] out nsILoginInfo logins); + + /** + * True when a master password prompt is being displayed. + */ + readonly attribute boolean uiBusy; + + /** + * True when the master password has already been entered, and so a caller + * can ask for decrypted logins without triggering a prompt. + */ + readonly attribute boolean isLoggedIn; +}; + +%{C++ + +#define NS_LOGINMANAGER_CONTRACTID "@mozilla.org/login-manager;1" + +%} |