Skip to content

Commit 5518feb

Browse files
committed
Bug 1888451 - Disable history dropdown when SanitizeOnShutdown locks the pref. r=mstriemer,bvandersloot
Differential Revision: https://phabricator.services.mozilla.com/D299827
1 parent bc6da1f commit 5518feb

3 files changed

Lines changed: 96 additions & 5 deletions

File tree

‎browser/components/enterprisepolicies/tests/browser/browser.toml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,8 @@ support-files = [
122122

123123
["browser_policy_privatebrowsingmodeavailability_srd.js"]
124124

125+
["browser_policy_sanitize_on_shutdown.js"]
126+
125127
["browser_policy_search_engine.js"]
126128

127129
["browser_policy_searchbar.js"]
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
/* Any copyright is dedicated to the Public Domain.
2+
* http://creativecommons.org/publicdomain/zero/1.0/ */
3+
4+
"use strict";
5+
6+
const SRD_ENABLED = Services.prefs.getBoolPref(
7+
"browser.settings-redesign.enabled",
8+
false
9+
);
10+
11+
async function checkPrivacyPreferences(expectedDisabled) {
12+
await BrowserTestUtils.withNewTab(
13+
"about:preferences#privacy",
14+
async browser => {
15+
await SpecialPowers.spawn(
16+
browser,
17+
[{ expectedDisabled, srdEnabled: SRD_ENABLED }],
18+
async ({ expectedDisabled: expected, srdEnabled }) => {
19+
let { historyMode, ...sub } = expected;
20+
is(
21+
content.document.getElementById("historyMode").disabled,
22+
historyMode,
23+
"#historyMode disabled state"
24+
);
25+
if (srdEnabled) {
26+
await content.gotoPref("paneHistory");
27+
await new Promise(r => content.requestAnimationFrame(r));
28+
}
29+
for (let [id, exp] of Object.entries(sub)) {
30+
let el = srdEnabled
31+
? content.document.querySelector(
32+
`setting-group[groupid='historyAdvanced'] #${id}`
33+
)
34+
: content.document.getElementById(id);
35+
is(el.disabled, exp, `#${id} disabled state`);
36+
}
37+
}
38+
);
39+
}
40+
);
41+
}
42+
43+
const ALL_DISABLED = {
44+
historyMode: true,
45+
privateBrowsingAutoStart: true,
46+
alwaysClear: true,
47+
rememberHistory: false,
48+
rememberForms: false,
49+
};
50+
51+
const NONE_DISABLED = {
52+
historyMode: false,
53+
privateBrowsingAutoStart: false,
54+
alwaysClear: false,
55+
rememberHistory: false,
56+
rememberForms: false,
57+
};
58+
59+
add_task(async function test_sanitizeOnShutdown_boolean_true() {
60+
await setupPolicyEngineWithJson({
61+
policies: { SanitizeOnShutdown: true },
62+
});
63+
await checkPrivacyPreferences(ALL_DISABLED);
64+
});
65+
66+
add_task(async function test_sanitizeOnShutdown_object_locked_true() {
67+
await setupPolicyEngineWithJson({
68+
policies: {
69+
SanitizeOnShutdown: { History: true, Locked: true },
70+
},
71+
});
72+
await checkPrivacyPreferences(ALL_DISABLED);
73+
});
74+
75+
add_task(async function test_sanitizeOnShutdown_object_locked_false() {
76+
await setupPolicyEngineWithJson({
77+
policies: {
78+
SanitizeOnShutdown: { History: true, Locked: false },
79+
},
80+
});
81+
await checkPrivacyPreferences(NONE_DISABLED);
82+
});

‎browser/components/preferences/config/privacy.mjs‎

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2882,9 +2882,13 @@ Preferences.addSetting({
28822882
});
28832883
}
28842884
},
2885-
disabled({ privateBrowsingAutoStart }) {
2886-
// Disable history dropdown if PBM autostart is locked on.
2887-
return privateBrowsingAutoStart.locked && privateBrowsingAutoStart.value;
2885+
disabled({ privateBrowsingAutoStart, sanitizeOnShutdown }) {
2886+
// Disable history dropdown if PBM autostart is locked on, or if
2887+
// SanitizeOnShutdown policy locks clear-on-shutdown on (forces "custom").
2888+
return (
2889+
(privateBrowsingAutoStart.locked && privateBrowsingAutoStart.value) ||
2890+
(sanitizeOnShutdown.locked && sanitizeOnShutdown.value)
2891+
);
28882892
},
28892893
getControlConfig(config, { privateBrowsingAutoStart }, setting) {
28902894
let l10nId = null;
@@ -2938,6 +2942,9 @@ Preferences.addSetting({
29382942
visible({ historyMode }) {
29392943
return PrivateBrowsingUtils.enabled && historyMode.value == "custom";
29402944
},
2945+
disabled({ historyMode }) {
2946+
return historyMode.disabled;
2947+
},
29412948
});
29422949
Preferences.addSetting({
29432950
id: "rememberHistory",
@@ -2968,8 +2975,8 @@ Preferences.addSetting({
29682975
visible({ historyMode }) {
29692976
return historyMode.value == "custom";
29702977
},
2971-
disabled({ privateBrowsingAutoStart }) {
2972-
return privateBrowsingAutoStart.value;
2978+
disabled({ privateBrowsingAutoStart, historyMode }) {
2979+
return privateBrowsingAutoStart.value || historyMode.disabled;
29732980
},
29742981
});
29752982

0 commit comments

Comments
 (0)