An interface allowing to prompt for a username and password. This interface
 is usually acquired using getInterface on notification callbacks or similar.
 It can be used to prompt users for authentication information, either
 synchronously or asynchronously.
[scriptable, uuid(447fc780-1d28-412a-91a1-466d48129c65)]
interface nsIAuthPrompt2 : nsISupports

Constants

 @name Security Levels */

 The password will be sent unencrypted. No security provided.
const PRUint32 LEVEL_NONE = 0
 Password will be sent encrypted, but the connection is otherwise
 insecure.
const PRUint32 LEVEL_PW_ENCRYPTED = 1
 The connection, both for password and data, is secure.
const PRUint32 LEVEL_SECURE = 2

Methods

 Asynchronously prompt the user for a username and password.
 This has largely the same semantics as promptUsernameAndPassword(),
 but must return immediately after calling and return the entered
 data in a callback.

 If the user closes the dialog using a cancel button or similar,
 the callback's nsIAuthPromptCallback::onAuthCancelled method must be
 called.
 Calling nsICancelable::cancel on the returned object SHOULD close the
 dialog and MUST call nsIAuthPromptCallback::onAuthCancelled on the provided
 callback.

 @throw NS_ERROR_NOT_IMPLEMENTED
        Asynchronous authentication prompts are not supported;
        the caller should fall back to promptUsernameAndPassword().
nsICancelable asyncPromptAuth(in nsIChannel aChannel, in nsIAuthPromptCallback aCallback, in nsISupports aContext, in PRUint32 level, in nsIAuthInformation authInfo)
 Requests a username and a password. Implementations will commonly show a
 dialog with a username and password field, depending on flags also a
 domain field.

 @param aChannel
        The channel that requires authentication.
 @param level
        One of the level constants from above. See there for descriptions
        of the levels.
 @param authInfo
        Authentication information object. The implementation should fill in
        this object with the information entered by the user before
        returning.

 @retval true
         Authentication can proceed using the values in the authInfo
         object.
 @retval false
         Authentication should be cancelled, usually because the user did
         not provide username/password.

 @note   Exceptions thrown from this function will be treated like a
         return value of false.
boolean promptAuth(in nsIChannel aChannel, in PRUint32 level, in nsIAuthInformation authInfo)