Source code

Revision control

Other Tools

1
/* This Source Code Form is subject to the terms of the Mozilla Public
2
* License, v. 2.0. If a copy of the MPL was not distributed with this
3
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
5
#include "nsISupports.idl"
6
7
interface nsIAuthPromptCallback;
8
interface nsIChannel;
9
interface nsICancelable;
10
interface nsIAuthInformation;
11
12
/**
13
* An interface allowing to prompt for a username and password. This interface
14
* is usually acquired using getInterface on notification callbacks or similar.
15
* It can be used to prompt users for authentication information, either
16
* synchronously or asynchronously.
17
*/
18
[scriptable, uuid(651395EB-8612-4876-8AC0-A88D4DCE9E1E)]
19
interface nsIAuthPrompt2 : nsISupports
20
{
21
/** @name Security Levels */
22
/* @{ */
23
/**
24
* The password will be sent unencrypted. No security provided.
25
*/
26
const uint32_t LEVEL_NONE = 0;
27
/**
28
* Password will be sent encrypted, but the connection is otherwise
29
* insecure.
30
*/
31
const uint32_t LEVEL_PW_ENCRYPTED = 1;
32
/**
33
* The connection, both for password and data, is secure.
34
*/
35
const uint32_t LEVEL_SECURE = 2;
36
/* @} */
37
38
/**
39
* Requests a username and a password. Implementations will commonly show a
40
* dialog with a username and password field, depending on flags also a
41
* domain field.
42
*
43
* @param aChannel
44
* The channel that requires authentication.
45
* @param level
46
* One of the level constants from above. See there for descriptions
47
* of the levels.
48
* @param authInfo
49
* Authentication information object. The implementation should fill in
50
* this object with the information entered by the user before
51
* returning.
52
*
53
* @retval true
54
* Authentication can proceed using the values in the authInfo
55
* object.
56
* @retval false
57
* Authentication should be cancelled, usually because the user did
58
* not provide username/password.
59
*
60
* @note Exceptions thrown from this function will be treated like a
61
* return value of false.
62
*/
63
boolean promptAuth(in nsIChannel aChannel,
64
in uint32_t level,
65
in nsIAuthInformation authInfo);
66
67
/**
68
* Asynchronously prompt the user for a username and password.
69
* This has largely the same semantics as promptUsernameAndPassword(),
70
* but must return immediately after calling and return the entered
71
* data in a callback.
72
*
73
* If the user closes the dialog using a cancel button or similar,
74
* the callback's nsIAuthPromptCallback::onAuthCancelled method must be
75
* called.
76
* Calling nsICancelable::cancel on the returned object SHOULD close the
77
* dialog and MUST call nsIAuthPromptCallback::onAuthCancelled on the provided
78
* callback.
79
*
80
* This implementation may:
81
*
82
* 1) Coalesce identical prompts. This means prompts that are guaranteed to
83
* want the same auth information from the user. A single prompt will be
84
* shown; then the callbacks for all the coalesced prompts will be notified
85
* with the resulting auth information.
86
* 2) Serialize prompts that are all in the same "context" (this might mean
87
* application-wide, for a given window, or something else depending on
88
* the user interface) so that the user is not deluged with prompts.
89
*
90
* @throw
91
* This method may throw any exception when the prompt fails to queue e.g
92
* because of out-of-memory error. It must not throw when the prompt
93
* could already be potentially shown to the user. In that case information
94
* about the failure has to come through the callback. This way we
95
* prevent multiple dialogs shown to the user because consumer may fall
96
* back to synchronous prompt on synchronous failure of this method.
97
*/
98
nsICancelable asyncPromptAuth(in nsIChannel aChannel,
99
in nsIAuthPromptCallback aCallback,
100
in nsISupports aContext,
101
in uint32_t level,
102
in nsIAuthInformation authInfo);
103
};