browser_privacy_syncDataClearing_v2.js (10149B)
1 /* Any copyright is dedicated to the Public Domain. 2 * http://creativecommons.org/publicdomain/zero/1.0/ */ 3 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 }); 17 18 add_task(async function test_syncWithoutCustomPrefs() { 19 await openPreferencesViaOpenPreferencesAPI("panePrivacy", { 20 leaveOpen: true, 21 }); 22 23 let document = gBrowser.contentDocument; 24 let deleteOnCloseBox = document.getElementById("deleteOnClose"); 25 let alwaysClearBox = document.getElementById("alwaysClear"); 26 27 ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected"); 28 ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected"); 29 30 deleteOnCloseBox.click(); 31 32 // Wait for UI to update. 33 await new Promise(resolve => requestAnimationFrame(resolve)); 34 35 ok(deleteOnCloseBox.checked, "DeleteOnClose is selected"); 36 is( 37 deleteOnCloseBox.checked, 38 alwaysClearBox.checked, 39 "DeleteOnClose sets alwaysClear in the same state, selected" 40 ); 41 ok( 42 Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"), 43 "Cookie cleaning pref is set" 44 ); 45 ok( 46 Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"), 47 "Cache cleaning pref is set" 48 ); 49 ok( 50 Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"), 51 "Old cookie cleaning pref is not changed" 52 ); 53 ok( 54 !Services.prefs.getBoolPref( 55 "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" 56 ), 57 "History cleaning pref is not set" 58 ); 59 ok( 60 !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"), 61 "Site settings cleaning pref is not set" 62 ); 63 ok( 64 !Services.prefs.getBoolPref("privacy.clearOnShutdown.siteSettings"), 65 "Old Site settings cleaning pref is not set" 66 ); 67 68 deleteOnCloseBox.click(); 69 70 // Wait for UI to update. 71 await new Promise(resolve => requestAnimationFrame(resolve)); 72 73 ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected"); 74 is( 75 deleteOnCloseBox.checked, 76 alwaysClearBox.checked, 77 "DeleteOnclose sets alwaysClear in the same state, deselected" 78 ); 79 80 ok( 81 !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"), 82 "Cookie cleaning pref is reset" 83 ); 84 ok( 85 !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"), 86 "Cache cleaning pref is reset" 87 ); 88 ok( 89 Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"), 90 "Old cookie cleaning pref is not changed" 91 ); 92 ok( 93 !Services.prefs.getBoolPref( 94 "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" 95 ), 96 "History cleaning pref is not set" 97 ); 98 ok( 99 !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"), 100 "Site settings cleaning pref is not set" 101 ); 102 103 BrowserTestUtils.removeTab(gBrowser.selectedTab); 104 Services.prefs.clearUserPref( 105 "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" 106 ); 107 Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.siteSettings"); 108 Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.cache"); 109 Services.prefs.clearUserPref("privacy.clearOnShutdown_v2.cookiesAndStorage"); 110 Services.prefs.clearUserPref("privacy.sanitize.sanitizeOnShutdown"); 111 }); 112 113 /* 114 * With custom cleaning category already set and SanitizeOnShutdown enabled, 115 * deselecting "deleteOnClose" should not change the state of "alwaysClear". 116 * The state of the cleaning categories cookiesAndStorage and cache should be in the state of the "deleteOnClose" box. 117 */ 118 add_task(async function test_syncWithCustomPrefs() { 119 await SpecialPowers.pushPrefEnv({ 120 set: [ 121 ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true], 122 ["privacy.clearOnShutdown.history", false], 123 ["privacy.clearOnShutdown_v2.siteSettings", true], 124 ["privacy.sanitize.sanitizeOnShutdown", true], 125 ], 126 }); 127 128 await openPreferencesViaOpenPreferencesAPI("panePrivacy", { 129 leaveOpen: true, 130 }); 131 132 let document = gBrowser.contentDocument; 133 let deleteOnCloseBox = document.getElementById("deleteOnClose"); 134 let alwaysClearBox = document.getElementById("alwaysClear"); 135 136 ok(deleteOnCloseBox.checked, "DeleteOnClose initial state is selected"); 137 ok(alwaysClearBox.checked, "AlwaysClear initial state is selected"); 138 139 is( 140 deleteOnCloseBox.checked, 141 alwaysClearBox.checked, 142 "AlwaysClear and deleteOnClose are in the same state, selected" 143 ); 144 ok( 145 Services.prefs.getBoolPref( 146 "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" 147 ), 148 "History cleaning pref is still set" 149 ); 150 ok( 151 !Services.prefs.getBoolPref("privacy.clearOnShutdown.history"), 152 "Old history cleaning pref is not changed" 153 ); 154 ok( 155 Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"), 156 "Site settings cleaning pref is still set" 157 ); 158 159 ok( 160 Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"), 161 "Cookie cleaning pref is set" 162 ); 163 ok( 164 Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"), 165 "Cache cleaning pref is set" 166 ); 167 168 deleteOnCloseBox.click(); 169 170 // Wait for UI to update. 171 await new Promise(resolve => requestAnimationFrame(resolve)); 172 173 ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected"); 174 is( 175 !deleteOnCloseBox.checked, 176 alwaysClearBox.checked, 177 "AlwaysClear is not synced with deleteOnClose, only deleteOnClose is deselected" 178 ); 179 180 ok( 181 !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cookiesAndStorage"), 182 "Cookie cleaning pref is reset" 183 ); 184 ok( 185 !Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.cache"), 186 "Cache cleaning pref is reset" 187 ); 188 ok( 189 Services.prefs.getBoolPref( 190 "privacy.clearOnShutdown_v2.browsingHistoryAndDownloads" 191 ), 192 "History cleaning pref is still set" 193 ); 194 ok( 195 Services.prefs.getBoolPref("privacy.clearOnShutdown_v2.siteSettings"), 196 "Site settings cleaning pref is still set" 197 ); 198 199 BrowserTestUtils.removeTab(gBrowser.selectedTab); 200 await SpecialPowers.popPrefEnv(); 201 }); 202 203 /* 204 * Setting/resetting cleaning prefs for cookies, cache, offline apps 205 * and selecting/deselecting the "alwaysClear" Box, also selects/deselects 206 * the "deleteOnClose" box. 207 */ 208 209 add_task(async function test_syncWithCustomPrefs() { 210 await openPreferencesViaOpenPreferencesAPI("panePrivacy", { 211 leaveOpen: true, 212 }); 213 214 let document = gBrowser.contentDocument; 215 let deleteOnCloseBox = document.getElementById("deleteOnClose"); 216 let alwaysClearBox = document.getElementById("alwaysClear"); 217 218 ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected"); 219 ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected"); 220 221 await SpecialPowers.pushPrefEnv({ 222 set: [ 223 ["privacy.clearOnShutdown_v2.cookiesAndStorage", true], 224 ["privacy.clearOnShutdown_v2.cache", true], 225 ["privacy.sanitize.sanitizeOnShutdown", true], 226 ], 227 }); 228 229 ok(alwaysClearBox.checked, "AlwaysClear is selected"); 230 is( 231 deleteOnCloseBox.checked, 232 alwaysClearBox.checked, 233 "AlwaysClear and deleteOnClose are in the same state, selected" 234 ); 235 236 alwaysClearBox.click(); 237 238 // Wait for UI to update. 239 await new Promise(resolve => requestAnimationFrame(resolve)); 240 241 ok(!alwaysClearBox.checked, "AlwaysClear is deselected"); 242 is( 243 deleteOnCloseBox.checked, 244 alwaysClearBox.checked, 245 "AlwaysClear and deleteOnClose are in the same state, deselected" 246 ); 247 248 BrowserTestUtils.removeTab(gBrowser.selectedTab); 249 await SpecialPowers.popPrefEnv(); 250 }); 251 252 /* 253 * On loading the page, the ClearOnClose box should be set according to the pref selection 254 */ 255 add_task(async function test_initialState() { 256 await SpecialPowers.pushPrefEnv({ 257 set: [ 258 ["privacy.clearOnShutdown_v2.cookiesAndStorage", true], 259 ["privacy.clearOnShutdown_v2.cache", true], 260 ["privacy.sanitize.sanitizeOnShutdown", true], 261 ], 262 }); 263 264 await openPreferencesViaOpenPreferencesAPI("panePrivacy", { 265 leaveOpen: true, 266 }); 267 268 let document = gBrowser.contentDocument; 269 let deleteOnCloseBox = document.getElementById("deleteOnClose"); 270 271 ok( 272 deleteOnCloseBox.checked, 273 "DeleteOnClose is set accordingly to the prefs, selected" 274 ); 275 276 BrowserTestUtils.removeTab(gBrowser.selectedTab); 277 278 await SpecialPowers.pushPrefEnv({ 279 set: [ 280 ["privacy.clearOnShutdown_v2.cookiesAndStorage", false], 281 ["privacy.clearOnShutdown_v2.cache", false], 282 ["privacy.sanitize.sanitizeOnShutdown", true], 283 ["privacy.clearOnShutdown_v2.browsingHistoryAndDownloads", true], 284 ], 285 }); 286 287 await openPreferencesViaOpenPreferencesAPI("panePrivacy", { 288 leaveOpen: true, 289 }); 290 291 document = gBrowser.contentDocument; 292 deleteOnCloseBox = document.getElementById("deleteOnClose"); 293 294 ok( 295 !deleteOnCloseBox.checked, 296 "DeleteOnClose is set accordingly to the prefs, deselected" 297 ); 298 299 BrowserTestUtils.removeTab(gBrowser.selectedTab); 300 301 // When private browsing mode autostart is selected, the deleteOnClose Box is selected always 302 await SpecialPowers.pushPrefEnv({ 303 set: [ 304 ["privacy.clearOnShutdown_v2.cookiesAndStorage", false], 305 ["privacy.clearOnShutdown_v2.cache", false], 306 ["privacy.sanitize.sanitizeOnShutdown", false], 307 ["browser.privatebrowsing.autostart", true], 308 ], 309 }); 310 311 await openPreferencesViaOpenPreferencesAPI("panePrivacy", { 312 leaveOpen: true, 313 }); 314 315 document = gBrowser.contentDocument; 316 deleteOnCloseBox = document.getElementById("deleteOnClose"); 317 318 ok( 319 deleteOnCloseBox.checked, 320 "DeleteOnClose is set accordingly to the private Browsing autostart pref, selected" 321 ); 322 323 // Reset history mode 324 await SpecialPowers.popPrefEnv(); 325 gBrowser.contentWindow.Preferences.getSetting("historyMode").value = 326 "remember"; 327 BrowserTestUtils.removeTab(gBrowser.selectedTab); 328 });