Bug 1899500 - Implement explicit resource management in Baseline compiler. r=arai
[gecko.git] / browser / components / preferences / tests / browser_privacy_syncDataClearing_v2.js
blob28a40f21ceede3027833489ebe60bc5abccd4b53
1 /* Any copyright is dedicated to the Public Domain.
2  * http://creativecommons.org/publicdomain/zero/1.0/ */
4 /*
5  * With no custom cleaning categories set and sanitizeOnShutdown disabled,
6  * the checkboxes "alwaysClear" and "deleteOnClose" should share the same state.
7  * The state of the cleaning categories cookiesAndStorage and cache should be in the state of the "deleteOnClose" box.
8  */
9 add_setup(async function () {
10   await SpecialPowers.pushPrefEnv({
11     set: [
12       ["privacy.clearOnShutdown.cookies", true],
13       ["privacy.sanitize.useOldClearHistoryDialog", false],
14     ],
15   });
16 });
18 add_task(async function test_syncWithoutCustomPrefs() {
19   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
20     leaveOpen: true,
21   });
23   let document = gBrowser.contentDocument;
24   let deleteOnCloseBox = document.getElementById("deleteOnClose");
25   let alwaysClearBox = document.getElementById("alwaysClear");
27   ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
28   ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
30   deleteOnCloseBox.click();
32   ok(deleteOnCloseBox.checked, "DeleteOnClose is selected");
33   is(
34     deleteOnCloseBox.checked,
35     alwaysClearBox.checked,
36     "DeleteOnClose sets alwaysClear in the same state, selected"
37   );
38   ok(
39     Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
40     "Cookie cleaning pref is set"
41   );
42   ok(
43     Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
44     "Cache cleaning pref is set"
45   );
46   ok(
47     Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
48     "Old cookie cleaning pref is not changed"
49   );
50   ok(
51     !Services.prefs.getBoolPref(
52       "privacy.clearOnShutdown_v2.historyFormDataAndDownloads"
53     ),
54     "History cleaning pref is not set"
55   );
56   ok(
57     !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
58     "Site settings cleaning pref is not set"
59   );
60   ok(
61     !Services.prefs.getBoolPref("privacy.clearOnShutdown.siteSettings"),
62     "Old Site settings cleaning pref is not set"
63   );
65   deleteOnCloseBox.click();
67   ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected");
68   is(
69     deleteOnCloseBox.checked,
70     alwaysClearBox.checked,
71     "DeleteOnclose sets alwaysClear in the same state, deselected"
72   );
74   ok(
75     !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
76     "Cookie cleaning pref is reset"
77   );
78   ok(
79     !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
80     "Cache cleaning pref is reset"
81   );
82   ok(
83     Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
84     "Old cookie cleaning pref is not changed"
85   );
86   ok(
87     !Services.prefs.getBoolPref(
88       "privacy.clearOnShutdown_v2.historyFormDataAndDownloads"
89     ),
90     "History cleaning pref is not set"
91   );
92   ok(
93     !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
94     "Site settings cleaning pref is not set"
95   );
97   BrowserTestUtils.removeTab(gBrowser.selectedTab);
98   Services.prefs.clearUserPref(
99     "privacy.clearOnShutdown_v2.historyFormDataAndDownloads"
100   );
101   Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.siteSettings");
102   Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.cache");
103   Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.cookiesAndStorage");
104   Services.prefs.clearUserPref("privacy.sanitize.sanitizeOnShutdown");
108  * With custom cleaning category already set and SanitizeOnShutdown enabled,
109  * deselecting "deleteOnClose" should not change the state of "alwaysClear".
110  * The state of the cleaning categories cookiesAndStorage and cache should be in the state of the "deleteOnClose" box.
111  */
112 add_task(async function test_syncWithCustomPrefs() {
113   await SpecialPowers.pushPrefEnv({
114     set: [
115       ["privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true],
116       ["privacy.clearOnShutdown.history", false],
117       ["privacy.clearOnShutdown_v2.siteSettings", true],
118       ["privacy.sanitize.sanitizeOnShutdown", true],
119     ],
120   });
122   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
123     leaveOpen: true,
124   });
126   let document = gBrowser.contentDocument;
127   let deleteOnCloseBox = document.getElementById("deleteOnClose");
128   let alwaysClearBox = document.getElementById("alwaysClear");
130   ok(deleteOnCloseBox.checked, "DeleteOnClose initial state is selected");
131   ok(alwaysClearBox.checked, "AlwaysClear initial state is selected");
133   is(
134     deleteOnCloseBox.checked,
135     alwaysClearBox.checked,
136     "AlwaysClear and deleteOnClose are in the same state, selected"
137   );
138   ok(
139     Services.prefs.getBoolPref(
140       "privacy.clearOnShutdown_v2.historyFormDataAndDownloads"
141     ),
142     "History cleaning pref is still set"
143   );
144   ok(
145     !Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
146     "Old history cleaning pref is not changed"
147   );
148   ok(
149     Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
150     "Site settings cleaning pref is still set"
151   );
153   ok(
154     Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
155     "Cookie cleaning pref is set"
156   );
157   ok(
158     Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
159     "Cache cleaning pref is set"
160   );
162   deleteOnCloseBox.click();
164   ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected");
165   is(
166     !deleteOnCloseBox.checked,
167     alwaysClearBox.checked,
168     "AlwaysClear is not synced with deleteOnClose, only deleteOnClose is deselected"
169   );
171   ok(
172     !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"),
173     "Cookie cleaning pref is reset"
174   );
175   ok(
176     !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"),
177     "Cache cleaning pref is reset"
178   );
179   ok(
180     Services.prefs.getBoolPref(
181       "privacy.clearOnShutdown_v2.historyFormDataAndDownloads"
182     ),
183     "History cleaning pref is still set"
184   );
185   ok(
186     Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"),
187     "Site settings cleaning pref is still set"
188   );
190   BrowserTestUtils.removeTab(gBrowser.selectedTab);
191   await SpecialPowers.popPrefEnv();
195  * Setting/resetting cleaning prefs for cookies, cache, offline apps
196  * and selecting/deselecting the "alwaysClear" Box, also selects/deselects
197  * the "deleteOnClose" box.
198  */
200 add_task(async function test_syncWithCustomPrefs() {
201   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
202     leaveOpen: true,
203   });
205   let document = gBrowser.contentDocument;
206   let deleteOnCloseBox = document.getElementById("deleteOnClose");
207   let alwaysClearBox = document.getElementById("alwaysClear");
209   ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
210   ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
212   await SpecialPowers.pushPrefEnv({
213     set: [
214       ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
215       ["privacy.clearOnShutdown_v2.cache", true],
216       ["privacy.sanitize.sanitizeOnShutdown", true],
217     ],
218   });
220   ok(alwaysClearBox.checked, "AlwaysClear is selected");
221   is(
222     deleteOnCloseBox.checked,
223     alwaysClearBox.checked,
224     "AlwaysClear and deleteOnClose are in the same state, selected"
225   );
227   alwaysClearBox.click();
229   ok(!alwaysClearBox.checked, "AlwaysClear is deselected");
230   is(
231     deleteOnCloseBox.checked,
232     alwaysClearBox.checked,
233     "AlwaysClear and deleteOnClose are in the same state, deselected"
234   );
236   BrowserTestUtils.removeTab(gBrowser.selectedTab);
237   await SpecialPowers.popPrefEnv();
241  * On loading the page, the ClearOnClose box should be set according to the pref selection
242  */
243 add_task(async function test_initialState() {
244   await SpecialPowers.pushPrefEnv({
245     set: [
246       ["privacy.clearOnShutdown_v2.cookiesAndStorage", true],
247       ["privacy.clearOnShutdown_v2.cache", true],
248       ["privacy.sanitize.sanitizeOnShutdown", true],
249     ],
250   });
252   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
253     leaveOpen: true,
254   });
256   let document = gBrowser.contentDocument;
257   let deleteOnCloseBox = document.getElementById("deleteOnClose");
259   ok(
260     deleteOnCloseBox.checked,
261     "DeleteOnClose is set accordingly to the prefs, selected"
262   );
264   BrowserTestUtils.removeTab(gBrowser.selectedTab);
266   await SpecialPowers.pushPrefEnv({
267     set: [
268       ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
269       ["privacy.clearOnShutdown_v2.cache", false],
270       ["privacy.sanitize.sanitizeOnShutdown", true],
271       ["privacy.clearOnShutdown_v2.historyFormDataAndDownloads", true],
272     ],
273   });
275   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
276     leaveOpen: true,
277   });
279   document = gBrowser.contentDocument;
280   deleteOnCloseBox = document.getElementById("deleteOnClose");
282   ok(
283     !deleteOnCloseBox.checked,
284     "DeleteOnClose is set accordingly to the prefs, deselected"
285   );
287   BrowserTestUtils.removeTab(gBrowser.selectedTab);
289   // When private browsing mode autostart is selected, the deleteOnClose Box is selected always
290   await SpecialPowers.pushPrefEnv({
291     set: [
292       ["privacy.clearOnShutdown_v2.cookiesAndStorage", false],
293       ["privacy.clearOnShutdown_v2.cache", false],
294       ["privacy.sanitize.sanitizeOnShutdown", false],
295       ["browser.privatebrowsing.autostart", true],
296     ],
297   });
299   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
300     leaveOpen: true,
301   });
303   document = gBrowser.contentDocument;
304   deleteOnCloseBox = document.getElementById("deleteOnClose");
306   ok(
307     deleteOnCloseBox.checked,
308     "DeleteOnClose is set accordingly to the private Browsing autostart pref, selected"
309   );
311   // Reset history mode
312   let historyMode = document.getElementById("historyMode");
313   historyMode.value = "remember";
314   historyMode.doCommand();
315   BrowserTestUtils.removeTab(gBrowser.selectedTab);
316   await SpecialPowers.popPrefEnv();