зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1348791 - Add a test for autocomplete master password timeout. r=MattN
MozReview-Commit-ID: GTZQhI4VUv8 --HG-- extra : rebase_source : 9c7aa29301e06816a7d9fcf91a7511d46418bb1f
This commit is contained in:
Родитель
43e38cffa3
Коммит
d3a523f13c
|
@ -54,6 +54,7 @@ support-files =
|
|||
[browser_insecurePasswordConsoleWarning.js]
|
||||
support-files =
|
||||
form_cross_origin_insecure_action.html
|
||||
[browser_master_password_autocomplete.js]
|
||||
[browser_notifications.js]
|
||||
[browser_notifications_username.js]
|
||||
[browser_notifications_password.js]
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
const HOST = "https://example.com";
|
||||
const URL = HOST + "/browser/toolkit/components/passwordmgr/test/browser/form_basic.html";
|
||||
const TIMEOUT_PREF = "signon.masterPasswordReprompt.timeout_ms";
|
||||
|
||||
// Waits for the master password prompt and cancels it.
|
||||
function waitForDialog() {
|
||||
let dialogShown = TestUtils.topicObserved("common-dialog-loaded");
|
||||
return dialogShown.then(function([subject]) {
|
||||
let dialog = subject.Dialog;
|
||||
is(dialog.args.title, "Password Required");
|
||||
dialog.ui.button1.click();
|
||||
});
|
||||
}
|
||||
|
||||
// Test that autocomplete does not trigger a master password prompt
|
||||
// for a certain time after it was cancelled.
|
||||
add_task(function* test_mpAutocompleteTimeout() {
|
||||
let login = LoginTestUtils.testData.formLogin({
|
||||
hostname: "https://example.com",
|
||||
formSubmitURL: "https://example.com",
|
||||
username: "username",
|
||||
password: "password",
|
||||
});
|
||||
Services.logins.addLogin(login);
|
||||
LoginTestUtils.masterPassword.enable();
|
||||
|
||||
registerCleanupFunction(function() {
|
||||
LoginTestUtils.masterPassword.disable();
|
||||
Services.logins.removeAllLogins();
|
||||
});
|
||||
|
||||
// Set master password prompt timeout to 3s.
|
||||
// If this test goes intermittent, you likely have to increase this value.
|
||||
yield SpecialPowers.pushPrefEnv({set: [[TIMEOUT_PREF, 3000]]});
|
||||
|
||||
// Wait for initial master password dialog after opening the tab.
|
||||
let dialogShown = waitForDialog();
|
||||
|
||||
yield BrowserTestUtils.withNewTab(URL, function*(browser) {
|
||||
yield dialogShown;
|
||||
|
||||
yield ContentTask.spawn(browser, null, function*() {
|
||||
// Focus the password field to trigger autocompletion.
|
||||
content.document.getElementById("form-basic-password").focus();
|
||||
});
|
||||
|
||||
// Wait 4s, dialog should not have been shown
|
||||
// (otherwise the code below will not work).
|
||||
yield new Promise((c) => setTimeout(c, 4000));
|
||||
|
||||
dialogShown = waitForDialog();
|
||||
yield ContentTask.spawn(browser, null, function*() {
|
||||
// Re-focus the password field to trigger autocompletion.
|
||||
content.document.getElementById("form-basic-username").focus();
|
||||
content.document.getElementById("form-basic-password").focus();
|
||||
});
|
||||
yield dialogShown;
|
||||
});
|
||||
});
|
Загрузка…
Ссылка в новой задаче