forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			287 lines
		
	
	
	
		
			8.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			287 lines
		
	
	
	
		
			8.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|  * http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| /*
 | |
|  * With no custom cleaning categories set and sanitizeOnShutdown disabled,
 | |
|  * the checkboxes "alwaysClear" and "deleteOnClose" should share the same state.
 | |
|  * The state of the cleaning categories cookies, cache and offlineApps should be in the state of the "deleteOnClose" box.
 | |
|  */
 | |
| add_task(async function test_syncWithoutCustomPrefs() {
 | |
|   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   let document = gBrowser.contentDocument;
 | |
|   let deleteOnCloseBox = document.getElementById("deleteOnClose");
 | |
|   let alwaysClearBox = document.getElementById("alwaysClear");
 | |
| 
 | |
|   ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
 | |
|   ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
 | |
| 
 | |
|   deleteOnCloseBox.click();
 | |
| 
 | |
|   ok(deleteOnCloseBox.checked, "DeleteOnClose is selected");
 | |
|   is(
 | |
|     deleteOnCloseBox.checked,
 | |
|     alwaysClearBox.checked,
 | |
|     "DeleteOnClose sets alwaysClear in the same state, selected"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
 | |
|     "Cookie cleaning pref is set"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.cache"),
 | |
|     "Cache cleaning pref is set"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
 | |
|     "OfflineApps cleaning pref is set"
 | |
|   );
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.downloads"),
 | |
|     "Downloads cleaning pref is not set"
 | |
|   );
 | |
| 
 | |
|   deleteOnCloseBox.click();
 | |
| 
 | |
|   ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected");
 | |
|   is(
 | |
|     deleteOnCloseBox.checked,
 | |
|     alwaysClearBox.checked,
 | |
|     "DeleteOnclose sets alwaysClear in the same state, deselected"
 | |
|   );
 | |
| 
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
 | |
|     "Cookie cleaning pref is reset"
 | |
|   );
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.cache"),
 | |
|     "Cache cleaning pref is reset"
 | |
|   );
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
 | |
|     "OfflineApps cleaning pref is reset"
 | |
|   );
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.downloads"),
 | |
|     "Downloads cleaning pref is not set"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   Services.prefs.clearUserPref("privacy.clearOnShutdown.downloads");
 | |
|   Services.prefs.clearUserPref("privacy.clearOnShutdown.offlineApps");
 | |
|   Services.prefs.clearUserPref("privacy.clearOnShutdown.cache");
 | |
|   Services.prefs.clearUserPref("privacy.clearOnShutdown.cookies");
 | |
|   Services.prefs.clearUserPref("privacy.sanitize.sanitizeOnShutdown");
 | |
| });
 | |
| 
 | |
| /*
 | |
|  * With custom cleaning category already set and SanitizeOnShutdown enabled,
 | |
|  * deselecting "deleteOnClose" should not change the state of "alwaysClear".
 | |
|  * The state of the cleaning categories cookies, cache and offlineApps should be in the state of the "deleteOnClose" box.
 | |
|  */
 | |
| add_task(async function test_syncWithCustomPrefs() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["privacy.clearOnShutdown.history", true],
 | |
|       ["privacy.sanitize.sanitizeOnShutdown", true],
 | |
|     ],
 | |
|   });
 | |
| 
 | |
|   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   let document = gBrowser.contentDocument;
 | |
|   let deleteOnCloseBox = document.getElementById("deleteOnClose");
 | |
|   let alwaysClearBox = document.getElementById("alwaysClear");
 | |
| 
 | |
|   ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
 | |
|   ok(alwaysClearBox.checked, "AlwaysClear initial state is selected");
 | |
| 
 | |
|   deleteOnCloseBox.click();
 | |
| 
 | |
|   ok(deleteOnCloseBox.checked, "DeleteOnClose is selected");
 | |
|   is(
 | |
|     deleteOnCloseBox.checked,
 | |
|     alwaysClearBox.checked,
 | |
|     "AlwaysClear and deleteOnClose are in the same state, selected"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
 | |
|     "History cleaning pref is still set"
 | |
|   );
 | |
| 
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
 | |
|     "Cookie cleaning pref is set"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.cache"),
 | |
|     "Cache cleaning pref is set"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
 | |
|     "OfflineApps cleaning pref is set"
 | |
|   );
 | |
| 
 | |
|   deleteOnCloseBox.click();
 | |
| 
 | |
|   ok(!deleteOnCloseBox.checked, "DeleteOnClose is deselected");
 | |
|   is(
 | |
|     !deleteOnCloseBox.checked,
 | |
|     alwaysClearBox.checked,
 | |
|     "AlwaysClear is not synced with deleteOnClose, only deleteOnClose is deselected"
 | |
|   );
 | |
| 
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.cookies"),
 | |
|     "Cookie cleaning pref is reset"
 | |
|   );
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.cache"),
 | |
|     "Cache cleaning pref is reset"
 | |
|   );
 | |
|   ok(
 | |
|     !Services.prefs.getBoolPref("privacy.clearOnShutdown.offlineApps"),
 | |
|     "OfflineApps cleaning pref is reset"
 | |
|   );
 | |
|   ok(
 | |
|     Services.prefs.getBoolPref("privacy.clearOnShutdown.history"),
 | |
|     "History cleaning pref is still set"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | |
| 
 | |
| /*
 | |
|  * Setting/resetting cleaning prefs for cookies, cache, offline apps
 | |
|  * and selecting/deselecting the "alwaysClear" Box, also selects/deselects
 | |
|  * the "deleteOnClose" box.
 | |
|  */
 | |
| 
 | |
| add_task(async function test_syncWithCustomPrefs() {
 | |
|   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   let document = gBrowser.contentDocument;
 | |
|   let deleteOnCloseBox = document.getElementById("deleteOnClose");
 | |
|   let alwaysClearBox = document.getElementById("alwaysClear");
 | |
| 
 | |
|   ok(!deleteOnCloseBox.checked, "DeleteOnClose initial state is deselected");
 | |
|   ok(!alwaysClearBox.checked, "AlwaysClear initial state is deselected");
 | |
| 
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["privacy.clearOnShutdown.cookies", true],
 | |
|       ["privacy.clearOnShutdown.cache", true],
 | |
|       ["privacy.clearOnShutdown.offlineApps", true],
 | |
|       ["privacy.sanitize.sanitizeOnShutdown", true],
 | |
|     ],
 | |
|   });
 | |
| 
 | |
|   ok(alwaysClearBox.checked, "AlwaysClear is selected");
 | |
|   is(
 | |
|     deleteOnCloseBox.checked,
 | |
|     alwaysClearBox.checked,
 | |
|     "AlwaysClear and deleteOnClose are in the same state, selected"
 | |
|   );
 | |
| 
 | |
|   alwaysClearBox.click();
 | |
| 
 | |
|   ok(!alwaysClearBox.checked, "AlwaysClear is deselected");
 | |
|   is(
 | |
|     deleteOnCloseBox.checked,
 | |
|     alwaysClearBox.checked,
 | |
|     "AlwaysClear and deleteOnClose are in the same state, deselected"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | |
| 
 | |
| /*
 | |
|  * On loading the page, the ClearOnClose box should be set according to the pref selection
 | |
|  */
 | |
| add_task(async function test_initialState() {
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["privacy.clearOnShutdown.cookies", true],
 | |
|       ["privacy.clearOnShutdown.cache", true],
 | |
|       ["privacy.clearOnShutdown.offlineApps", true],
 | |
|       ["privacy.sanitize.sanitizeOnShutdown", true],
 | |
|     ],
 | |
|   });
 | |
| 
 | |
|   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   let document = gBrowser.contentDocument;
 | |
|   let deleteOnCloseBox = document.getElementById("deleteOnClose");
 | |
| 
 | |
|   ok(
 | |
|     deleteOnCloseBox.checked,
 | |
|     "DeleteOnClose is set accordingly to the prefs, selected"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
| 
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["privacy.clearOnShutdown.cookies", false],
 | |
|       ["privacy.clearOnShutdown.cache", false],
 | |
|       ["privacy.clearOnShutdown.offlineApps", false],
 | |
|       ["privacy.sanitize.sanitizeOnShutdown", true],
 | |
|       ["privacy.clearOnShutdown.history", true],
 | |
|     ],
 | |
|   });
 | |
| 
 | |
|   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   document = gBrowser.contentDocument;
 | |
|   deleteOnCloseBox = document.getElementById("deleteOnClose");
 | |
| 
 | |
|   ok(
 | |
|     !deleteOnCloseBox.checked,
 | |
|     "DeleteOnClose is set accordingly to the prefs, deselected"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
| 
 | |
|   // When private browsing mode autostart is selected, the deleteOnClose Box is selected always
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [
 | |
|       ["privacy.clearOnShutdown.cookies", false],
 | |
|       ["privacy.clearOnShutdown.cache", false],
 | |
|       ["privacy.clearOnShutdown.offlineApps", false],
 | |
|       ["privacy.sanitize.sanitizeOnShutdown", false],
 | |
|       ["browser.privatebrowsing.autostart", true],
 | |
|     ],
 | |
|   });
 | |
| 
 | |
|   await openPreferencesViaOpenPreferencesAPI("panePrivacy", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   document = gBrowser.contentDocument;
 | |
|   deleteOnCloseBox = document.getElementById("deleteOnClose");
 | |
| 
 | |
|   ok(
 | |
|     deleteOnCloseBox.checked,
 | |
|     "DeleteOnClose is set accordingly to the private Browsing autostart pref, selected"
 | |
|   );
 | |
| 
 | |
|   // Reset history mode
 | |
|   let historyMode = document.getElementById("historyMode");
 | |
|   historyMode.value = "remember";
 | |
|   historyMode.doCommand();
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | 
