зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset c93e30cbbed8 (bug 1269039)
This commit is contained in:
Родитель
5be95fc3fc
Коммит
9448d792be
|
@ -38,7 +38,7 @@ skip-if = toolkit == 'android' # Bug 1259768
|
||||||
[test_input_events.html]
|
[test_input_events.html]
|
||||||
[test_input_events_for_identical_values.html]
|
[test_input_events_for_identical_values.html]
|
||||||
[test_master_password.html]
|
[test_master_password.html]
|
||||||
skip-if = toolkit == 'android' # Tests desktop prompts
|
skip-if = toolkit == 'android' || e10s # Tests desktop prompts
|
||||||
support-files =
|
support-files =
|
||||||
subtst_master_pass.html
|
subtst_master_pass.html
|
||||||
[test_maxlength.html]
|
[test_maxlength.html]
|
||||||
|
|
|
@ -17,29 +17,29 @@ Login Manager test: master password.
|
||||||
// Force parent to not look for tab-modal prompts, as they're not used for auth prompts.
|
// Force parent to not look for tab-modal prompts, as they're not used for auth prompts.
|
||||||
isTabModal = false;
|
isTabModal = false;
|
||||||
|
|
||||||
var chromeScript = runChecksAfterCommonInit();
|
commonInit();
|
||||||
SimpleTest.requestFlakyTimeout("untriaged");
|
SimpleTest.requestFlakyTimeout("untriaged");
|
||||||
|
|
||||||
|
var pwmgr = SpecialPowers.Cc["@mozilla.org/login-manager;1"]
|
||||||
|
.getService(SpecialPowers.Ci.nsILoginManager);
|
||||||
|
var pwcrypt = SpecialPowers.Cc["@mozilla.org/login-manager/crypto/SDR;1"]
|
||||||
|
.getService(Ci.nsILoginManagerCrypto);
|
||||||
|
|
||||||
|
var nsLoginInfo = new SpecialPowers.wrap(SpecialPowers.Components).Constructor("@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo);
|
||||||
|
|
||||||
var exampleCom = "http://example.com/tests/toolkit/components/passwordmgr/test/mochitest/";
|
var exampleCom = "http://example.com/tests/toolkit/components/passwordmgr/test/mochitest/";
|
||||||
var exampleOrg = "http://example.org/tests/toolkit/components/passwordmgr/test/mochitest/";
|
var exampleOrg = "http://example.org/tests/toolkit/components/passwordmgr/test/mochitest/";
|
||||||
|
|
||||||
runInParent(() => {
|
var login1 = new nsLoginInfo();
|
||||||
const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
|
var login2 = new nsLoginInfo();
|
||||||
var pwmgr = Cc["@mozilla.org/login-manager;1"].getService(Ci.nsILoginManager);
|
|
||||||
|
|
||||||
var nsLoginInfo = new Components.Constructor("@mozilla.org/login-manager/loginInfo;1", Ci.nsILoginInfo);
|
login1.init("http://example.com", "http://example.com", null,
|
||||||
|
"user1", "pass1", "uname", "pword");
|
||||||
|
login2.init("http://example.org", "http://example.org", null,
|
||||||
|
"user2", "pass2", "uname", "pword");
|
||||||
|
|
||||||
var login1 = new nsLoginInfo();
|
pwmgr.addLogin(login1);
|
||||||
var login2 = new nsLoginInfo();
|
pwmgr.addLogin(login2);
|
||||||
|
|
||||||
login1.init("http://example.com", "http://example.com", null,
|
|
||||||
"user1", "pass1", "uname", "pword");
|
|
||||||
login2.init("http://example.org", "http://example.org", null,
|
|
||||||
"user2", "pass2", "uname", "pword");
|
|
||||||
|
|
||||||
pwmgr.addLogin(login1);
|
|
||||||
pwmgr.addLogin(login2);
|
|
||||||
});
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<p id="display"></p>
|
<p id="display"></p>
|
||||||
|
@ -55,9 +55,9 @@ var iframe1 = document.getElementById("iframe1");
|
||||||
var iframe2 = document.getElementById("iframe2");
|
var iframe2 = document.getElementById("iframe2");
|
||||||
|
|
||||||
add_task(function* test_1() {
|
add_task(function* test_1() {
|
||||||
ok(isLoggedIn(), "should be initially logged in (no MP)");
|
ok(pwcrypt.isLoggedIn, "should be initially logged in (no MP)");
|
||||||
enableMasterPassword();
|
enableMasterPassword();
|
||||||
ok(!isLoggedIn(), "should be logged out after setting MP");
|
ok(!pwcrypt.isLoggedIn, "should be logged out after setting MP");
|
||||||
|
|
||||||
// Trigger a MP prompt via the API
|
// Trigger a MP prompt via the API
|
||||||
var state = {
|
var state = {
|
||||||
|
@ -80,14 +80,14 @@ add_task(function* test_1() {
|
||||||
};
|
};
|
||||||
var promptDone = handlePrompt(state, action);
|
var promptDone = handlePrompt(state, action);
|
||||||
|
|
||||||
var logins = chromeScript.sendSyncMessage("getAllLogins")[0][0];
|
var logins = pwmgr.getAllLogins();
|
||||||
|
|
||||||
yield promptDone;
|
yield promptDone;
|
||||||
is(logins.length, 3, "expected number of logins");
|
is(logins.length, 3, "expected number of logins");
|
||||||
|
|
||||||
ok(isLoggedIn(), "should be logged in after MP prompt");
|
ok(pwcrypt.isLoggedIn, "should be logged in after MP prompt");
|
||||||
logoutMasterPassword();
|
logoutMasterPassword();
|
||||||
ok(!isLoggedIn(), "should be logged out");
|
ok(!pwcrypt.isLoggedIn, "should be logged out");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(function* test_2() {
|
add_task(function* test_2() {
|
||||||
|
@ -114,12 +114,12 @@ add_task(function* test_2() {
|
||||||
var failedAsExpected = false;
|
var failedAsExpected = false;
|
||||||
var logins = null;
|
var logins = null;
|
||||||
try {
|
try {
|
||||||
logins = chromeScript.sendSyncMessage("getAllLogins")[0][0];
|
logins = pwmgr.getAllLogins();
|
||||||
} catch (e) { failedAsExpected = true; }
|
} catch (e) { failedAsExpected = true; }
|
||||||
yield promptDone;
|
yield promptDone;
|
||||||
ok(failedAsExpected, "getAllLogins should have thrown");
|
ok(failedAsExpected, "getAllLogins should have thrown");
|
||||||
is(logins, null, "shouldn't have gotten logins");
|
is(logins, null, "shouldn't have gotten logins");
|
||||||
ok(!isLoggedIn(), "should still be logged out");
|
ok(!pwcrypt.isLoggedIn, "should still be logged out");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(function* test_3() {
|
add_task(function* test_3() {
|
||||||
|
@ -161,9 +161,9 @@ add_task(function* test_3() {
|
||||||
is(u.value, "user1", "checking expected user to have been filled in");
|
is(u.value, "user1", "checking expected user to have been filled in");
|
||||||
is(p.value, "pass1", "checking expected pass to have been filled in");
|
is(p.value, "pass1", "checking expected pass to have been filled in");
|
||||||
|
|
||||||
ok(isLoggedIn(), "should be logged in");
|
ok(pwcrypt.isLoggedIn, "should be logged in");
|
||||||
logoutMasterPassword();
|
logoutMasterPassword();
|
||||||
ok(!isLoggedIn(), "should be logged out");
|
ok(!pwcrypt.isLoggedIn, "should be logged out");
|
||||||
});
|
});
|
||||||
|
|
||||||
add_task(function* test_4() {
|
add_task(function* test_4() {
|
||||||
|
@ -197,7 +197,7 @@ add_task(function* test_4() {
|
||||||
is(u.value, "", "checking expected empty user");
|
is(u.value, "", "checking expected empty user");
|
||||||
is(p.value, "", "checking expected empty pass");
|
is(p.value, "", "checking expected empty pass");
|
||||||
|
|
||||||
ok(!isLoggedIn(), "should be logged out");
|
ok(!pwcrypt.isLoggedIn, "should be logged out");
|
||||||
|
|
||||||
// XXX check that there's 1 MP window open
|
// XXX check that there's 1 MP window open
|
||||||
|
|
||||||
|
@ -223,7 +223,7 @@ add_task(function* test_4() {
|
||||||
is(p.value, "", "checking expected empty pass");
|
is(p.value, "", "checking expected empty pass");
|
||||||
|
|
||||||
// XXX check that there's 1 MP window open
|
// XXX check that there's 1 MP window open
|
||||||
ok(!isLoggedIn(), "should be logged out");
|
ok(!pwcrypt.isLoggedIn, "should be logged out");
|
||||||
|
|
||||||
// Ok, now enter the MP. The MP prompt is already up.
|
// Ok, now enter the MP. The MP prompt is already up.
|
||||||
|
|
||||||
|
@ -243,7 +243,7 @@ add_task(function* test_4() {
|
||||||
// filling of iframe2's data. We notify observers synchronously, so
|
// filling of iframe2's data. We notify observers synchronously, so
|
||||||
// iframe2's observer will process iframe2 before iframe1 even finishes
|
// iframe2's observer will process iframe2 before iframe1 even finishes
|
||||||
// processing the form.
|
// processing the form.
|
||||||
ok(isLoggedIn(), "should be logged in");
|
ok(pwcrypt.isLoggedIn, "should be logged in");
|
||||||
|
|
||||||
// check contents of iframe1 fields
|
// check contents of iframe1 fields
|
||||||
u = SpecialPowers.wrap(iframe1).contentDocument.getElementById("userfield");
|
u = SpecialPowers.wrap(iframe1).contentDocument.getElementById("userfield");
|
||||||
|
@ -262,6 +262,9 @@ add_task(function* test_4() {
|
||||||
|
|
||||||
SimpleTest.registerCleanupFunction(function finishTest() {
|
SimpleTest.registerCleanupFunction(function finishTest() {
|
||||||
disableMasterPassword();
|
disableMasterPassword();
|
||||||
|
|
||||||
|
pwmgr.removeLogin(login1);
|
||||||
|
pwmgr.removeLogin(login2);
|
||||||
});
|
});
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -207,19 +207,26 @@ function disableMasterPassword() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function setMasterPassword(enable) {
|
function setMasterPassword(enable) {
|
||||||
chromeScript.sendSyncMessage("setMasterPassword", { enable });
|
var oldPW, newPW;
|
||||||
|
if (enable) {
|
||||||
|
oldPW = "";
|
||||||
|
newPW = masterPassword;
|
||||||
|
} else {
|
||||||
|
oldPW = masterPassword;
|
||||||
|
newPW = "";
|
||||||
|
}
|
||||||
|
// Set master password. Note that this does not log you in, so the next
|
||||||
|
// invocation of pwmgr can trigger a MP prompt.
|
||||||
|
|
||||||
|
var pk11db = Cc["@mozilla.org/security/pk11tokendb;1"].getService(Ci.nsIPK11TokenDB);
|
||||||
|
var token = pk11db.findTokenByName("");
|
||||||
|
info("MP change from " + oldPW + " to " + newPW);
|
||||||
|
token.changePassword(oldPW, newPW);
|
||||||
}
|
}
|
||||||
|
|
||||||
function logoutMasterPassword() {
|
function logoutMasterPassword() {
|
||||||
runInParent(function parent_logoutMasterPassword() {
|
var sdr = Cc["@mozilla.org/security/sdr;1"].getService(Ci.nsISecretDecoderRing);
|
||||||
const { classes: Cc, interfaces: Ci, results: Cr, utils: Cu } = Components;
|
sdr.logoutAndTeardown();
|
||||||
var sdr = Cc["@mozilla.org/security/sdr;1"].getService(Ci.nsISecretDecoderRing);
|
|
||||||
sdr.logoutAndTeardown();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function isLoggedIn() {
|
|
||||||
return chromeScript.sendSyncMessage("isLoggedIn")[0][0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function dumpLogins(pwmgr) {
|
function dumpLogins(pwmgr) {
|
||||||
|
@ -354,7 +361,6 @@ if (this.addMessageListener) {
|
||||||
// Ignore ok/is in commonInit since they aren't defined in a chrome script.
|
// Ignore ok/is in commonInit since they aren't defined in a chrome script.
|
||||||
ok = is = () => {}; // eslint-disable-line no-native-reassign
|
ok = is = () => {}; // eslint-disable-line no-native-reassign
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/LoginHelper.jsm");
|
|
||||||
Cu.import("resource://gre/modules/Services.jsm");
|
Cu.import("resource://gre/modules/Services.jsm");
|
||||||
Cu.import("resource://gre/modules/Task.jsm");
|
Cu.import("resource://gre/modules/Task.jsm");
|
||||||
|
|
||||||
|
@ -389,32 +395,6 @@ if (this.addMessageListener) {
|
||||||
return Services.logins.countLogins(formOrigin, submitOrigin, httpRealm);
|
return Services.logins.countLogins(formOrigin, submitOrigin, httpRealm);
|
||||||
});
|
});
|
||||||
|
|
||||||
addMessageListener("getAllLogins", () => {
|
|
||||||
return LoginHelper.loginsToVanillaObjects(Services.logins.getAllLogins());
|
|
||||||
});
|
|
||||||
|
|
||||||
addMessageListener("isLoggedIn", () => {
|
|
||||||
return Services.logins.isLoggedIn;
|
|
||||||
});
|
|
||||||
|
|
||||||
addMessageListener("setMasterPassword", ({ enable }) => {
|
|
||||||
var oldPW, newPW;
|
|
||||||
if (enable) {
|
|
||||||
oldPW = "";
|
|
||||||
newPW = masterPassword;
|
|
||||||
} else {
|
|
||||||
oldPW = masterPassword;
|
|
||||||
newPW = "";
|
|
||||||
}
|
|
||||||
// Set master password. Note that this does not log you in, so the next
|
|
||||||
// invocation of pwmgr can trigger a MP prompt.
|
|
||||||
|
|
||||||
var pk11db = Cc["@mozilla.org/security/pk11tokendb;1"].getService(Ci.nsIPK11TokenDB);
|
|
||||||
var token = pk11db.findTokenByName("");
|
|
||||||
dump("MP change from " + oldPW + " to " + newPW + "\n");
|
|
||||||
token.changePassword(oldPW, newPW);
|
|
||||||
});
|
|
||||||
|
|
||||||
var globalMM = Cc["@mozilla.org/globalmessagemanager;1"].getService(Ci.nsIMessageListenerManager);
|
var globalMM = Cc["@mozilla.org/globalmessagemanager;1"].getService(Ci.nsIMessageListenerManager);
|
||||||
globalMM.addMessageListener("RemoteLogins:onFormSubmit", function onFormSubmit(message) {
|
globalMM.addMessageListener("RemoteLogins:onFormSubmit", function onFormSubmit(message) {
|
||||||
sendAsyncMessage("formSubmissionProcessed", message.data, message.objects);
|
sendAsyncMessage("formSubmissionProcessed", message.data, message.objects);
|
||||||
|
|
|
@ -1,4 +1,7 @@
|
||||||
const { Cc, Ci } = SpecialPowers;
|
const Ci = SpecialPowers.Ci;
|
||||||
|
const Cc = SpecialPowers.Cc;
|
||||||
|
ok(Ci != null, "Access Ci");
|
||||||
|
ok(Cc != null, "Access Cc");
|
||||||
|
|
||||||
function hasTabModalPrompts() {
|
function hasTabModalPrompts() {
|
||||||
var prefName = "prompts.tab_modal.enabled";
|
var prefName = "prompts.tab_modal.enabled";
|
||||||
|
|
Загрузка…
Ссылка в новой задаче