commit 1e84ee418f199a3a1f3ea780299795e6dfa4b821
parent 551ebf0dfb122f7d43eb9e7a6f1778540fd5fa60
Author: Michael Kaply <345868+mkaply@users.noreply.github.com>
Date: Tue, 25 Nov 2025 12:59:08 +0000
Bug 2001459 - Don't show reveal button if DisablePasswordReveal policy is set. r=mtigley,credential-management-reviewers
Differential Revision: https://phabricator.services.mozilla.com/D273648
Diffstat:
2 files changed, 42 insertions(+), 7 deletions(-)
diff --git a/browser/components/aboutlogins/content/components/login-item.mjs b/browser/components/aboutlogins/content/components/login-item.mjs
@@ -971,13 +971,6 @@ export default class LoginItem extends HTMLElement {
}
_updatePasswordRevealState() {
- if (
- window.AboutLoginsUtils &&
- window.AboutLoginsUtils.passwordRevealVisible === false
- ) {
- this._revealCheckbox.hidden = true;
- }
-
let { checked } = this._revealCheckbox;
let inputType = checked ? "text" : "password";
this._passwordInput.type = inputType;
@@ -990,6 +983,13 @@ export default class LoginItem extends HTMLElement {
this._revealCheckbox.hidden = false;
}
+ if (
+ window.AboutLoginsUtils &&
+ window.AboutLoginsUtils.passwordRevealVisible === false
+ ) {
+ this._revealCheckbox.hidden = true;
+ }
+
// Swap which <input> is in the document depending on whether we need the
// real .value (which means that the primary password was already entered,
// if applicable)
diff --git a/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_password_reveal.js b/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_password_reveal.js
@@ -4,6 +4,41 @@
"use strict";
add_task(async function test_hidden_reveal_password() {
+ let login = Cc["@mozilla.org/login-manager/loginInfo;1"].createInstance(
+ Ci.nsILoginInfo
+ );
+ login.init("https://example.com", "", null, "username", "password");
+ login.QueryInterface(Ci.nsILoginMetaInfo);
+ login.timePasswordChanged = Date.now();
+ await Services.logins.addLoginAsync(login);
+
+ await setupPolicyEngineWithJson({
+ policies: {
+ DisablePasswordReveal: true,
+ },
+ });
+
+ let aboutLoginsTab = await BrowserTestUtils.openNewForegroundTab({
+ gBrowser,
+ url: "about:logins",
+ });
+
+ let browser = gBrowser.selectedBrowser;
+
+ await SpecialPowers.spawn(browser, [], () => {
+ let loginItem = Cu.waiveXrays(content.document.querySelector("login-item"));
+
+ let passwordReveal = loginItem.shadowRoot.querySelector(
+ ".reveal-password-checkbox"
+ );
+ is(passwordReveal.hidden, true, "Password reveal button should be hidden");
+ });
+ BrowserTestUtils.removeTab(aboutLoginsTab);
+
+ await Services.logins.removeAllLogins();
+});
+
+add_task(async function test_bug_1696948() {
await setupPolicyEngineWithJson({
policies: {
DisablePasswordReveal: true,