Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// The origin for the test URIs.
const TEST_ORIGIN = "https://example.com";
const FORM_PAGE_PATH =
"/browser/toolkit/components/passwordmgr/test/browser/form_basic.html";
const passwordInputSelector = "#form-basic-password";
add_setup(async function () {
Services.telemetry.clearEvents();
TelemetryTestUtils.assertEvents([], {
category: "pwmgr",
method: "autocomplete_shown",
});
});
add_task(async function test_autocomplete_new_password_popup_item_visible() {
await BrowserTestUtils.withNewTab(
{
gBrowser,
url: TEST_ORIGIN,
},
async function (browser) {
info("Generate and cache a password for a non-private context");
let lmp =
browser.browsingContext.currentWindowGlobal.getActor("LoginManager");
await lmp.getGeneratedPassword();
Assert.equal(
LoginManagerParent.getGeneratedPasswordsByPrincipalOrigin().size,
1,
"Non-Private password should be cached"
);
}
);
await LoginTestUtils.addLogin({ username: "username", password: "pass1" });
const win = await BrowserTestUtils.openNewBrowserWindow({ private: true });
const doc = win.document;
await BrowserTestUtils.withNewTab(
{
gBrowser: win.gBrowser,
url: TEST_ORIGIN + FORM_PAGE_PATH,
},
async function (browser) {
await SimpleTest.promiseFocus(browser.ownerGlobal);
await ContentTask.spawn(
browser,
[passwordInputSelector],
function openAutocomplete(sel) {
content.document.querySelector(sel).autocomplete = "new-password";
}
);
let popup = doc.getElementById("PopupAutoComplete");
Assert.ok(popup, "Got popup");
await openACPopup(popup, browser, passwordInputSelector);
let item = popup.querySelector(`[originaltype="generatedPassword"]`);
Assert.ok(item, "Should get 'Generate password' richlistitem");
let onPopupClosed = BrowserTestUtils.waitForCondition(
() => !popup.popupOpen,
"Popup should get closed"
);
await TestUtils.waitForTick();
TelemetryTestUtils.assertEvents(
[["pwmgr", "autocomplete_shown", "generatedpassword"]],
{ category: "pwmgr", method: "autocomplete_shown" }
);
await closePopup(popup);
await onPopupClosed;
}
);
let lastPBContextExitedPromise = TestUtils.topicObserved(
"last-pb-context-exited"
).then(() => TestUtils.waitForTick());
await BrowserTestUtils.closeWindow(win);
await lastPBContextExitedPromise;
Assert.equal(
LoginManagerParent.getGeneratedPasswordsByPrincipalOrigin().size,
1,
"Only private-context passwords should be cleared"
);
});
add_task(async function test_autocomplete_menu_item_enabled() {
const win = await BrowserTestUtils.openNewBrowserWindow({ private: true });
const doc = win.document;
await BrowserTestUtils.withNewTab(
{
gBrowser: win.gBrowser,
url: TEST_ORIGIN + FORM_PAGE_PATH,
},
async function (browser) {
await SimpleTest.promiseFocus(browser);
await openPasswordContextMenu(browser, passwordInputSelector);
let generatedPasswordItem = doc.getElementById(
"fill-login-generated-password"
);
Assert.equal(
generatedPasswordItem.disabled,
false,
"Generate password context menu item should be enabled in PB mode"
);
await closePopup(document.getElementById("contentAreaContextMenu"));
}
);
await BrowserTestUtils.closeWindow(win);
});