summaryrefslogtreecommitdiffstats
path: root/toolkit/components/passwordmgr/test/browser/browser_autocomplete_generated_password_private_window.js
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/passwordmgr/test/browser/browser_autocomplete_generated_password_private_window.js')
-rw-r--r--toolkit/components/passwordmgr/test/browser/browser_autocomplete_generated_password_private_window.js111
1 files changed, 111 insertions, 0 deletions
diff --git a/toolkit/components/passwordmgr/test/browser/browser_autocomplete_generated_password_private_window.js b/toolkit/components/passwordmgr/test/browser/browser_autocomplete_generated_password_private_window.js
new file mode 100644
index 0000000000..f28a7a1d52
--- /dev/null
+++ b/toolkit/components/passwordmgr/test/browser/browser_autocomplete_generated_password_private_window.js
@@ -0,0 +1,111 @@
+// 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);
+});