mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-27 09:48:38 +09:00
705 lines
24 KiB
HTML
705 lines
24 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test prompter.{prompt,promptPassword,promptUsernameAndPassword}</title>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="text/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
|
|
<script type="text/javascript" src="pwmgr_common.js"></script>
|
|
<script type="text/javascript" src="prompt_common.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
|
|
</head>
|
|
<body>
|
|
<p id="display"></p>
|
|
|
|
<div id="content" style="display: none">
|
|
</div>
|
|
|
|
<pre id="test">
|
|
<script class="testbody" type="text/javascript">
|
|
var state, action;
|
|
var uname = { value: null };
|
|
var pword = { value: null };
|
|
var result = { value: null };
|
|
var isOk;
|
|
|
|
// Force parent to not look for tab-modal prompts, as they're not used for auth prompts.
|
|
isTabModal = false;
|
|
|
|
let prompterParent = runInParent(() => {
|
|
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
|
|
const promptFac = Cc["@mozilla.org/passwordmanager/authpromptfactory;1"].
|
|
getService(Ci.nsIPromptFactory);
|
|
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
let chromeWin = Services.wm.getMostRecentWindow("navigator:browser");
|
|
let prompter1 = promptFac.getPrompt(chromeWin, Ci.nsIAuthPrompt);
|
|
|
|
addMessageListener("proxyPrompter", function onMessage(msg) {
|
|
let rv = prompter1[msg.methodName](...msg.args);
|
|
return {
|
|
rv,
|
|
// Send the args back to content so out/inout args can be checked.
|
|
args: msg.args,
|
|
};
|
|
});
|
|
});
|
|
|
|
let prompter1 = new PrompterProxy(prompterParent);
|
|
|
|
const defaultTitle = "the title";
|
|
const defaultMsg = "the message";
|
|
|
|
function initLogins() {
|
|
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
|
|
var login1, login2A, login2B, login2C, login2D, login2E;
|
|
var pwmgr = Cc["@mozilla.org/login-manager;1"].
|
|
getService(Ci.nsILoginManager);
|
|
|
|
login1 = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
|
createInstance(Ci.nsILoginInfo);
|
|
login2A = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
|
createInstance(Ci.nsILoginInfo);
|
|
login2B = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
|
createInstance(Ci.nsILoginInfo);
|
|
login2C = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
|
createInstance(Ci.nsILoginInfo);
|
|
login2D = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
|
createInstance(Ci.nsILoginInfo);
|
|
login2E = Cc["@mozilla.org/login-manager/loginInfo;1"].
|
|
createInstance(Ci.nsILoginInfo);
|
|
|
|
login1.init("http://example.com", null, "http://example.com",
|
|
"", "examplepass", "", "");
|
|
login2A.init("http://example2.com", null, "http://example2.com",
|
|
"user1name", "user1pass", "", "");
|
|
login2B.init("http://example2.com", null, "http://example2.com",
|
|
"user2name", "user2pass", "", "");
|
|
login2C.init("http://example2.com", null, "http://example2.com",
|
|
"user3.name@host", "user3pass", "", "");
|
|
login2D.init("http://example2.com", null, "http://example2.com",
|
|
"100@beef", "user3pass", "", "");
|
|
login2E.init("http://example2.com", null, "http://example2.com",
|
|
"100%beef", "user3pass", "", "");
|
|
|
|
pwmgr.addLogin(login1);
|
|
pwmgr.addLogin(login2A);
|
|
pwmgr.addLogin(login2B);
|
|
pwmgr.addLogin(login2C);
|
|
pwmgr.addLogin(login2D);
|
|
pwmgr.addLogin(login2E);
|
|
}
|
|
|
|
add_task(function* setup() {
|
|
runInParent(initLogins);
|
|
});
|
|
|
|
add_task(function* test_prompt_accept() {
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "abc",
|
|
passValue : "",
|
|
iconClass : "question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : true,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
textField : "xyz",
|
|
};
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.prompt(defaultTitle, defaultMsg, "http://example.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, "abc", result);
|
|
yield promptDone;
|
|
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(result.value, "xyz", "Checking prompt() returned value");
|
|
});
|
|
|
|
add_task(function* test_prompt_cancel() {
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "abc",
|
|
passValue : "",
|
|
iconClass : "question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : true,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "cancel",
|
|
};
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.prompt(defaultTitle, defaultMsg, "http://example.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, "abc", result);
|
|
yield promptDone;
|
|
ok(!isOk, "Checking dialog return value (cancel)");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_defaultAccept() {
|
|
// Default password provided, existing logins are ignored.
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "inputpw",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : true,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "passField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "secret",
|
|
};
|
|
pword.value = "inputpw";
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://example.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "secret", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_defaultCancel() {
|
|
// Default password provided, existing logins are ignored.
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "inputpw",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : true,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "passField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "cancel",
|
|
};
|
|
pword.value = "inputpw";
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://example.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
yield promptDone;
|
|
ok(!isOk, "Checking dialog return value (cancel)");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_emptyAccept() {
|
|
// No default password provided, realm does not match existing login.
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : true,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "passField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "secret",
|
|
};
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://nonexample.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "secret", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_saved() {
|
|
// No default password provided, matching login is returned w/o prompting.
|
|
pword.value = null;
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://example.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "examplepass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_noMatchingPasswordForEmptyUN() {
|
|
// No default password provided, none of the logins from this host are
|
|
// password-only so the user is prompted.
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : true,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "passField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "secret",
|
|
};
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "secret", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_matchingPWForUN() {
|
|
// No default password provided, matching login is returned w/o prompting.
|
|
pword.value = null;
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://user1name@example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "user1pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_matchingPWForUN2() {
|
|
// No default password provided, matching login is returned w/o prompting.
|
|
pword.value = null;
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://user2name@example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "user2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_matchingPWForUN3() {
|
|
// No default password provided, matching login is returned w/o prompting.
|
|
pword.value = null;
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://user3%2Ename%40host@example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "user3pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_extraAt() {
|
|
// No default password provided, matching login is returned w/o prompting.
|
|
pword.value = null;
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://100@beef@example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "user3pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_usernameEncoding() {
|
|
// No default password provided, matching login is returned w/o prompting.
|
|
pword.value = null;
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "http://100%25beef@example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "user3pass", "Checking returned password");
|
|
|
|
// XXX test saving a password with Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY
|
|
});
|
|
|
|
add_task(function* test_promptPassword_realm() {
|
|
// We don't pre-fill or save for NS_GetAuthKey-generated realms, but we should still prompt
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : true,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "passField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "fill2pass",
|
|
};
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "example2.com:80 (somerealm)",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "fill2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptPassword_realm2() {
|
|
// We don't pre-fill or save for NS_GetAuthKey-generated realms, but we should still prompt
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : true,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "passField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "fill2pass",
|
|
};
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptPassword(defaultTitle, defaultMsg, "example2.com:80 (somerealm)",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(pword.value, "fill2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_accept() {
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "inuser",
|
|
passValue : "inpass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
textField : "outuser",
|
|
passField : "outpass",
|
|
};
|
|
uname.value = "inuser";
|
|
pword.value = "inpass";
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://nonexample.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "outuser", "Checking returned username");
|
|
is(pword.value, "outpass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_cancel() {
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "inuser",
|
|
passValue : "inpass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "cancel",
|
|
};
|
|
uname.value = "inuser";
|
|
pword.value = "inpass";
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://nonexample.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, uname, pword);
|
|
yield promptDone;
|
|
ok(!isOk, "Checking dialog return value (cancel)");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_autofill() {
|
|
// test filling in existing password-only login
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "examplepass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : false,
|
|
checkMsg : "Use Password Manager to remember this password.",
|
|
checked : true,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
};
|
|
uname.value = null;
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://example.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "", "Checking returned username");
|
|
is(pword.value, "examplepass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_multipleExisting() {
|
|
// test filling in existing login (undetermined from multiple selection)
|
|
// user2name/user2pass would also be valid to fill here.
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "user1name",
|
|
passValue : "user1pass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : false,
|
|
checkMsg : "Use Password Manager to remember this password.",
|
|
checked : true,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
};
|
|
uname.value = null;
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
ok(uname.value == "user1name" || uname.value == "user2name", "Checking returned username");
|
|
ok(pword.value == "user1pass" || uname.value == "user2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_multipleExisting1() {
|
|
// test filling in existing login (user1 from multiple selection)
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "user1name",
|
|
passValue : "user1pass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : false,
|
|
checkMsg : "Use Password Manager to remember this password.",
|
|
checked : true,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
};
|
|
uname.value = "user1name";
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "user1name", "Checking returned username");
|
|
is(pword.value, "user1pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_multipleExisting2() {
|
|
// test filling in existing login (user2 from multiple selection)
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "user2name",
|
|
passValue : "user2pass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : false,
|
|
checkMsg : "Use Password Manager to remember this password.",
|
|
checked : true,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
};
|
|
uname.value = "user2name";
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "user2name", "Checking returned username");
|
|
is(pword.value, "user2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_passwordChange() {
|
|
// test changing password
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "user2name",
|
|
passValue : "user2pass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : false,
|
|
checkMsg : "Use Password Manager to remember this password.",
|
|
checked : true,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "NEWuser2pass",
|
|
};
|
|
uname.value = "user2name";
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "user2name", "Checking returned username");
|
|
is(pword.value, "NEWuser2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_changePasswordBack() {
|
|
// test changing password (back to original value)
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "user2name",
|
|
passValue : "NEWuser2pass",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : false,
|
|
checkMsg : "Use Password Manager to remember this password.",
|
|
checked : true,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
passField : "user2pass",
|
|
};
|
|
uname.value = "user2name";
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "http://example2.com",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "user2name", "Checking returned username");
|
|
is(pword.value, "user2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_realm() {
|
|
// We don't pre-fill or save for NS_GetAuthKey-generated realms, but we should still prompt
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
textField : "fill2user",
|
|
passField : "fill2pass",
|
|
};
|
|
uname.value = null;
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "example2.com:80 (somerealm)",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_NEVER, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "fill2user", "Checking returned username");
|
|
is(pword.value, "fill2pass", "Checking returned password");
|
|
});
|
|
|
|
add_task(function* test_promptUsernameAndPassword_realm2() {
|
|
// We don't pre-fill or save for NS_GetAuthKey-generated realms, but we should still prompt
|
|
state = {
|
|
msg : "the message",
|
|
title : "the title",
|
|
textValue : "",
|
|
passValue : "",
|
|
iconClass : "authentication-icon question-icon",
|
|
titleHidden : true,
|
|
textHidden : false,
|
|
passHidden : false,
|
|
checkHidden : true,
|
|
checkMsg : "",
|
|
checked : false,
|
|
focused : "textField",
|
|
defButton : "button0",
|
|
};
|
|
action = {
|
|
buttonClick : "ok",
|
|
textField : "fill2user",
|
|
passField : "fill2pass",
|
|
};
|
|
uname.value = null;
|
|
pword.value = null;
|
|
promptDone = handlePrompt(state, action);
|
|
isOk = prompter1.promptUsernameAndPassword(defaultTitle, defaultMsg, "example2.com:80 (somerealm)",
|
|
Ci.nsIAuthPrompt.SAVE_PASSWORD_PERMANENTLY, uname, pword);
|
|
yield promptDone;
|
|
ok(isOk, "Checking dialog return value (accept)");
|
|
is(uname.value, "fill2user", "Checking returned username");
|
|
is(pword.value, "fill2pass", "Checking returned password");
|
|
});
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|