Bug 1451024 - Cookie settings should be disabled when the related prefs are locked
Also adds too the cookie tests to ensure this takes effect.
MozReview-Commit-ID: A85kv20BcnI
--- a/browser/components/enterprisepolicies/tests/browser/browser_policy_cookie_settings.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_cookie_settings.js
@@ -77,16 +77,36 @@ async function test_cookie_settings({
}
is(Services.cookies.countCookiesFromHost(firstPartyURI.host), expectedCookieCount,
"Number of cookies was not what expected after restarting session");
is(Services.prefs.prefIsLocked("network.cookie.cookieBehavior"), cookieSettingsLocked,
"Cookie behavior pref lock status should be what is expected");
is(Services.prefs.prefIsLocked("network.cookie.lifetimePolicy"), cookieSettingsLocked,
"Cookie lifetime pref lock status should be what is expected");
+
+ let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:preferences");
+ // eslint-disable-next-line no-shadow
+ await ContentTask.spawn(tab.linkedBrowser, {cookiesEnabled, cookieSettingsLocked}, async function({cookiesEnabled, cookieSettingsLocked}) {
+ let acceptThirdPartyLabel = content.document.getElementById("acceptThirdPartyLabel");
+ let acceptThirdPartyMenu = content.document.getElementById("acceptThirdPartyMenu");
+ let keepUntilLabel = content.document.getElementById("keepUntil");
+ let keepUntilMenu = content.document.getElementById("keepCookiesUntil");
+
+ let expectControlsDisabled = !cookiesEnabled || cookieSettingsLocked;
+ is(acceptThirdPartyLabel.disabled, expectControlsDisabled,
+ "\"Accept Third Party Cookies\" Label disabled status should match expected");
+ is(acceptThirdPartyMenu.disabled, expectControlsDisabled,
+ "\"Accept Third Party Cookies\" Menu disabled status should match expected");
+ is(keepUntilLabel.disabled, expectControlsDisabled,
+ "\"Keep Cookies Until\" Label disabled status should match expected");
+ is(keepUntilMenu.disabled, expectControlsDisabled,
+ "\"Keep Cookies Until\" Menu disabled status should match expected");
+ });
+ BrowserTestUtils.removeTab(tab);
}
add_task(async function test_initial_state() {
await test_cookie_settings({
cookiesEnabled: true,
thirdPartyCookiesEnabled: true,
cookiesExpireAfterSession: false,
cookieSettingsLocked: false
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -821,33 +821,38 @@ var gPrivacyPane = {
return Ci.nsICookieService.ACCEPT_NORMALLY;
}
return lifetimePolicy;
},
/**
* Reads the network.cookie.cookieBehavior preference value and
- * enables/disables the rest of the cookie UI accordingly, returning true
- * if cookies are enabled.
+ * enables/disables the rest of the cookie UI accordingly.
+ *
+ * Returns "0" if cookies are accepted and "2" if they are entirely disabled.
*/
readAcceptCookies() {
- var pref = Preferences.get("network.cookie.cookieBehavior");
- var acceptThirdPartyLabel = document.getElementById("acceptThirdPartyLabel");
- var acceptThirdPartyMenu = document.getElementById("acceptThirdPartyMenu");
- var keepUntil = document.getElementById("keepUntil");
- var menu = document.getElementById("keepCookiesUntil");
+ let pref = Preferences.get("network.cookie.cookieBehavior");
+ let acceptThirdPartyLabel = document.getElementById("acceptThirdPartyLabel");
+ let acceptThirdPartyMenu = document.getElementById("acceptThirdPartyMenu");
+ let keepUntilLabel = document.getElementById("keepUntil");
+ let keepUntilMenu = document.getElementById("keepCookiesUntil");
// enable the rest of the UI for anything other than "disable all cookies"
- var acceptCookies = (pref.value != 2);
+ let acceptCookies = (pref.value != 2);
+ let cookieBehaviorLocked = Services.prefs.prefIsLocked("network.cookie.cookieBehavior");
+ const acceptThirdPartyControlsDisabled = !acceptCookies || cookieBehaviorLocked;
- acceptThirdPartyLabel.disabled = acceptThirdPartyMenu.disabled = !acceptCookies;
+ acceptThirdPartyLabel.disabled = acceptThirdPartyMenu.disabled = acceptThirdPartyControlsDisabled;
let privateBrowsing = Preferences.get("browser.privatebrowsing.autostart").value;
- keepUntil.disabled = menu.disabled = privateBrowsing || !acceptCookies;
+ let cookieExpirationLocked = Services.prefs.prefIsLocked("network.cookie.lifetimePolicy");
+ const keepUntilControlsDisabled = privateBrowsing || !acceptCookies || cookieExpirationLocked;
+ keepUntilLabel.disabled = keepUntilMenu.disabled = keepUntilControlsDisabled;
// Our top-level setting is a radiogroup that only sets "enable all"
// and "disable all", so convert the pref value accordingly.
return acceptCookies ? "0" : "2";
},
/**
* Updates the "accept third party cookies" menu based on whether the