diff --git a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js index 41acf0f60783..e841bad713c3 100644 --- a/toolkit/components/passwordmgr/nsLoginManagerPrompter.js +++ b/toolkit/components/passwordmgr/nsLoginManagerPrompter.js @@ -974,11 +974,16 @@ LoginManagerPrompter.prototype = { toggleBtn.setAttribute("accesskey", togglePasswordAccessKey); toggleBtn.setAttribute("hidden", LoginHelper.isMasterPasswordSet()); } + if (this.wasDismissed) { + chromeDoc.getElementById("password-notification-visibilityToggle") + .setAttribute("hidden", true); + } break; case "shown": writeDataToUI(); break; case "dismissed": + this.wasDismissed = true; readDataFromUI(); // Fall through. case "removed": diff --git a/toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js b/toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js index 1dfce9a0910b..fd5eb14cde41 100644 --- a/toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js +++ b/toolkit/components/passwordmgr/test/browser/browser_capture_doorhanger.js @@ -553,5 +553,28 @@ add_task(function* test_recipeCaptureFields_ExistingLogin() { Services.logins.removeAllLogins(); }); +add_task(function* test_noShowPasswordOnDismissal() { + info("Check for no Show Password field when the doorhanger is dismissed"); + + yield testSubmittingLoginForm("subtst_notifications_1.html", function*(fieldValues) { + info("Opening popup"); + let notif = getCaptureDoorhanger("password-save"); + let { panel } = PopupNotifications; + + info("Hiding popup."); + let promiseHidden = BrowserTestUtils.waitForEvent(panel, "popuphidden"); + panel.hidePopup(); + yield promiseHidden; + + info("Clicking on anchor to reshow popup.") + let promiseShown = BrowserTestUtils.waitForEvent(panel, "popupshown"); + notif.anchorElement.click(); + yield promiseShown; + + let passwordVisiblityToggle = panel.querySelector("#password-notification-visibilityToggle"); + is(passwordVisiblityToggle.hidden, true, "Check that the Show Password field is Hidden"); + }); +}); + // TODO: // * existing login test, form has different password --> change password, no save prompt