tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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:
Mbrowser/components/aboutlogins/content/components/login-item.mjs | 14+++++++-------
Mbrowser/components/enterprisepolicies/tests/browser/browser_policy_disable_password_reveal.js | 35+++++++++++++++++++++++++++++++++++
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,