summaryrefslogtreecommitdiffstats
path: root/application/basilisk/components/preferences/privacy.js
diff options
context:
space:
mode:
Diffstat (limited to 'application/basilisk/components/preferences/privacy.js')
-rw-r--r--application/basilisk/components/preferences/privacy.js695
1 files changed, 0 insertions, 695 deletions
diff --git a/application/basilisk/components/preferences/privacy.js b/application/basilisk/components/preferences/privacy.js
deleted file mode 100644
index 81e480efd..000000000
--- a/application/basilisk/components/preferences/privacy.js
+++ /dev/null
@@ -1,695 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-Components.utils.import("resource://gre/modules/PluralForm.jsm");
-
-XPCOMUtils.defineLazyModuleGetter(this, "ContextualIdentityService",
- "resource://gre/modules/ContextualIdentityService.jsm");
-XPCOMUtils.defineLazyModuleGetter(this, "PluralForm",
- "resource://gre/modules/PluralForm.jsm");
-
-var gPrivacyPane = {
-
- /**
- * Whether the use has selected the auto-start private browsing mode in the UI.
- */
- _autoStartPrivateBrowsing: false,
-
- /**
- * Whether the prompt to restart Firefox should appear when changing the autostart pref.
- */
- _shouldPromptForRestart: true,
-
- /**
- * Show the Tracking Protection UI depending on the
- * privacy.trackingprotection.ui.enabled pref, and linkify its Learn More link
- */
- _initTrackingProtection() {
- if (!Services.prefs.getBoolPref("privacy.trackingprotection.ui.enabled")) {
- return;
- }
-
- let link = document.getElementById("trackingProtectionLearnMore");
- let url = Services.urlFormatter.formatURLPref("app.support.baseURL") + "tracking-protection";
- link.setAttribute("href", url);
-
- this.trackingProtectionReadPrefs();
-
- document.getElementById("trackingprotectionbox").hidden = false;
- document.getElementById("trackingprotectionpbmbox").hidden = true;
- },
-
- /**
- * Linkify the Learn More link of the Private Browsing Mode Tracking
- * Protection UI.
- */
- _initTrackingProtectionPBM() {
- let link = document.getElementById("trackingProtectionPBMLearnMore");
- let url = Services.urlFormatter.formatURLPref("app.support.baseURL") + "tracking-protection-pbm";
- link.setAttribute("href", url);
- },
-
- /**
- * Initialize autocomplete to ensure prefs are in sync.
- */
- _initAutocomplete() {
- Components.classes["@mozilla.org/autocomplete/search;1?name=unifiedcomplete"]
- .getService(Components.interfaces.mozIPlacesAutoComplete);
- },
-
- /**
- * Show the Containers UI depending on the privacy.userContext.ui.enabled pref.
- */
- _initBrowserContainers() {
- if (!Services.prefs.getBoolPref("privacy.userContext.ui.enabled")) {
- return;
- }
-
- let link = document.getElementById("browserContainersLearnMore");
- link.href = Services.urlFormatter.formatURLPref("app.support.baseURL") + "containers";
-
- document.getElementById("browserContainersbox").hidden = false;
-
- document.getElementById("browserContainersCheckbox").checked =
- Services.prefs.getBoolPref("privacy.userContext.enabled");
- },
-
- _checkBrowserContainers(event) {
- let checkbox = document.getElementById("browserContainersCheckbox");
- if (checkbox.checked) {
- Services.prefs.setBoolPref("privacy.userContext.enabled", true);
- return;
- }
-
- let count = ContextualIdentityService.countContainerTabs();
- if (count == 0) {
- Services.prefs.setBoolPref("privacy.userContext.enabled", false);
- return;
- }
-
- let bundlePreferences = document.getElementById("bundlePreferences");
-
- let title = bundlePreferences.getString("disableContainersAlertTitle");
- let message = PluralForm.get(count, bundlePreferences.getString("disableContainersMsg"))
- .replace("#S", count)
- let okButton = PluralForm.get(count, bundlePreferences.getString("disableContainersOkButton"))
- .replace("#S", count)
- let cancelButton = bundlePreferences.getString("disableContainersButton2");
-
- let buttonFlags = (Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_0) +
- (Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_1);
-
- let rv = Services.prompt.confirmEx(window, title, message, buttonFlags,
- okButton, cancelButton, null, null, {});
- if (rv == 0) {
- ContextualIdentityService.closeContainerTabs();
- Services.prefs.setBoolPref("privacy.userContext.enabled", false);
- return;
- }
-
- checkbox.checked = true;
- },
-
- /**
- * Sets up the UI for the number of days of history to keep, and updates the
- * label of the "Clear Now..." button.
- */
- init() {
- function setEventListener(aId, aEventType, aCallback) {
- document.getElementById(aId)
- .addEventListener(aEventType, aCallback.bind(gPrivacyPane));
- }
-
- this._updateSanitizeSettingsButton();
- this.initializeHistoryMode();
- this.updateHistoryModePane();
- this.updatePrivacyMicroControls();
- this.initAutoStartPrivateBrowsingReverter();
- this._initTrackingProtection();
- this._initTrackingProtectionPBM();
- this._initAutocomplete();
- this._initBrowserContainers();
-
- setEventListener("privacy.sanitize.sanitizeOnShutdown", "change",
- gPrivacyPane._updateSanitizeSettingsButton);
- setEventListener("browser.privatebrowsing.autostart", "change",
- gPrivacyPane.updatePrivacyMicroControls);
- setEventListener("historyMode", "command", function() {
- gPrivacyPane.updateHistoryModePane();
- gPrivacyPane.updateHistoryModePrefs();
- gPrivacyPane.updatePrivacyMicroControls();
- gPrivacyPane.updateAutostart();
- });
- setEventListener("historyRememberClear", "click", function() {
- gPrivacyPane.clearPrivateDataNow(false);
- return false;
- });
- setEventListener("historyRememberCookies", "click", function() {
- gPrivacyPane.showCookies();
- return false;
- });
- setEventListener("historyDontRememberClear", "click", function() {
- gPrivacyPane.clearPrivateDataNow(true);
- return false;
- });
- setEventListener("doNotTrackSettings", "click", function() {
- gPrivacyPane.showDoNotTrackSettings();
- return false;
- });
- setEventListener("privateBrowsingAutoStart", "command",
- gPrivacyPane.updateAutostart);
- setEventListener("cookieExceptions", "command",
- gPrivacyPane.showCookieExceptions);
- setEventListener("showCookiesButton", "command",
- gPrivacyPane.showCookies);
- setEventListener("clearDataSettings", "command",
- gPrivacyPane.showClearPrivateDataSettings);
- setEventListener("trackingProtectionRadioGroup", "command",
- gPrivacyPane.trackingProtectionWritePrefs);
- setEventListener("trackingProtectionExceptions", "command",
- gPrivacyPane.showTrackingProtectionExceptions);
- setEventListener("changeBlockList", "command",
- gPrivacyPane.showBlockLists);
- setEventListener("changeBlockListPBM", "command",
- gPrivacyPane.showBlockLists);
- setEventListener("browserContainersCheckbox", "command",
- gPrivacyPane._checkBrowserContainers);
- setEventListener("browserContainersSettings", "command",
- gPrivacyPane.showContainerSettings);
- },
-
- // TRACKING PROTECTION MODE
-
- /**
- * Selects the right item of the Tracking Protection radiogroup.
- */
- trackingProtectionReadPrefs() {
- let enabledPref = document.getElementById("privacy.trackingprotection.enabled");
- let pbmPref = document.getElementById("privacy.trackingprotection.pbmode.enabled");
- let radiogroup = document.getElementById("trackingProtectionRadioGroup");
-
- // Global enable takes precedence over enabled in Private Browsing.
- if (enabledPref.value) {
- radiogroup.value = "always";
- } else if (pbmPref.value) {
- radiogroup.value = "private";
- } else {
- radiogroup.value = "never";
- }
- },
-
- /**
- * Sets the pref values based on the selected item of the radiogroup.
- */
- trackingProtectionWritePrefs() {
- let enabledPref = document.getElementById("privacy.trackingprotection.enabled");
- let pbmPref = document.getElementById("privacy.trackingprotection.pbmode.enabled");
- let radiogroup = document.getElementById("trackingProtectionRadioGroup");
-
- switch (radiogroup.value) {
- case "always":
- enabledPref.value = true;
- pbmPref.value = true;
- break;
- case "private":
- enabledPref.value = false;
- pbmPref.value = true;
- break;
- case "never":
- enabledPref.value = false;
- pbmPref.value = false;
- break;
- }
- },
-
- // HISTORY MODE
-
- /**
- * The list of preferences which affect the initial history mode settings.
- * If the auto start private browsing mode pref is active, the initial
- * history mode would be set to "Don't remember anything".
- * If ALL of these preferences are set to the values that correspond
- * to keeping some part of history, and the auto-start
- * private browsing mode is not active, the initial history mode would be
- * set to "Remember everything".
- * Otherwise, the initial history mode would be set to "Custom".
- *
- * Extensions adding their own preferences can set values here if needed.
- */
- prefsForKeepingHistory: {
- "places.history.enabled": true, // History is enabled
- "browser.formfill.enable": true, // Form information is saved
- "network.cookie.cookieBehavior": 0, // All cookies are enabled
- "network.cookie.lifetimePolicy": 0, // Cookies use supplied lifetime
- "privacy.sanitize.sanitizeOnShutdown": false, // Private date is NOT cleared on shutdown
- },
-
- /**
- * The list of control IDs which are dependent on the auto-start private
- * browsing setting, such that in "Custom" mode they would be disabled if
- * the auto-start private browsing checkbox is checked, and enabled otherwise.
- *
- * Extensions adding their own controls can append their IDs to this array if needed.
- */
- dependentControls: [
- "rememberHistory",
- "rememberForms",
- "keepUntil",
- "keepCookiesUntil",
- "alwaysClear",
- "clearDataSettings"
- ],
-
- /**
- * Check whether preferences values are set to keep history
- *
- * @param aPrefs an array of pref names to check for
- * @returns boolean true if all of the prefs are set to keep history,
- * false otherwise
- */
- _checkHistoryValues(aPrefs) {
- for (let pref of Object.keys(aPrefs)) {
- if (document.getElementById(pref).value != aPrefs[pref])
- return false;
- }
- return true;
- },
-
- /**
- * Initialize the history mode menulist based on the privacy preferences
- */
- initializeHistoryMode() {
- let mode;
- let getVal = aPref => document.getElementById(aPref).value;
-
- if (getVal("privacy.history.custom"))
- mode = "custom";
- else if (this._checkHistoryValues(this.prefsForKeepingHistory)) {
- if (getVal("browser.privatebrowsing.autostart"))
- mode = "dontremember";
- else
- mode = "remember";
- } else
- mode = "custom";
-
- document.getElementById("historyMode").value = mode;
- },
-
- /**
- * Update the selected pane based on the history mode menulist
- */
- updateHistoryModePane() {
- let selectedIndex = -1;
- switch (document.getElementById("historyMode").value) {
- case "remember":
- selectedIndex = 0;
- break;
- case "dontremember":
- selectedIndex = 1;
- break;
- case "custom":
- selectedIndex = 2;
- break;
- }
- document.getElementById("historyPane").selectedIndex = selectedIndex;
- document.getElementById("privacy.history.custom").value = selectedIndex == 2;
- },
-
- /**
- * Update the private browsing auto-start pref and the history mode
- * micro-management prefs based on the history mode menulist
- */
- updateHistoryModePrefs() {
- let pref = document.getElementById("browser.privatebrowsing.autostart");
- switch (document.getElementById("historyMode").value) {
- case "remember":
- if (pref.value)
- pref.value = false;
-
- // select the remember history option if needed
- let rememberHistoryCheckbox = document.getElementById("rememberHistory");
- if (!rememberHistoryCheckbox.checked)
- rememberHistoryCheckbox.checked = true;
-
- // select the remember forms history option
- document.getElementById("browser.formfill.enable").value = true;
-
- // select the allow cookies option
- document.getElementById("network.cookie.cookieBehavior").value = 0;
- // select the cookie lifetime policy option
- document.getElementById("network.cookie.lifetimePolicy").value = 0;
-
- // select the clear on close option
- document.getElementById("privacy.sanitize.sanitizeOnShutdown").value = false;
- break;
- case "dontremember":
- if (!pref.value)
- pref.value = true;
- break;
- }
- },
-
- /**
- * Update the privacy micro-management controls based on the
- * value of the private browsing auto-start checkbox.
- */
- updatePrivacyMicroControls() {
- if (document.getElementById("historyMode").value == "custom") {
- let disabled = this._autoStartPrivateBrowsing =
- document.getElementById("privateBrowsingAutoStart").checked;
- this.dependentControls.forEach(function(aElement) {
- let control = document.getElementById(aElement);
- let preferenceId = control.getAttribute("preference");
- if (!preferenceId) {
- let dependentControlId = control.getAttribute("control");
- if (dependentControlId) {
- let dependentControl = document.getElementById(dependentControlId);
- preferenceId = dependentControl.getAttribute("preference");
- }
- }
-
- let preference = preferenceId ? document.getElementById(preferenceId) : {};
- control.disabled = disabled || preference.locked;
- });
-
- // adjust the cookie controls status
- this.readAcceptCookies();
- let lifetimePolicy = document.getElementById("network.cookie.lifetimePolicy").value;
- if (lifetimePolicy != Ci.nsICookieService.ACCEPT_NORMALLY &&
- lifetimePolicy != Ci.nsICookieService.ACCEPT_SESSION &&
- lifetimePolicy != Ci.nsICookieService.ACCEPT_FOR_N_DAYS) {
- lifetimePolicy = Ci.nsICookieService.ACCEPT_NORMALLY;
- }
- document.getElementById("keepCookiesUntil").value = disabled ? 2 : lifetimePolicy;
-
- // adjust the checked state of the sanitizeOnShutdown checkbox
- document.getElementById("alwaysClear").checked = disabled ? false :
- document.getElementById("privacy.sanitize.sanitizeOnShutdown").value;
-
- // adjust the checked state of the remember history checkboxes
- document.getElementById("rememberHistory").checked = disabled ? false :
- document.getElementById("places.history.enabled").value;
- document.getElementById("rememberForms").checked = disabled ? false :
- document.getElementById("browser.formfill.enable").value;
-
- if (!disabled) {
- // adjust the Settings button for sanitizeOnShutdown
- this._updateSanitizeSettingsButton();
- }
- }
- },
-
- // PRIVATE BROWSING
-
- /**
- * Initialize the starting state for the auto-start private browsing mode pref reverter.
- */
- initAutoStartPrivateBrowsingReverter() {
- let mode = document.getElementById("historyMode");
- let autoStart = document.getElementById("privateBrowsingAutoStart");
- this._lastMode = mode.selectedIndex;
- this._lastCheckState = autoStart.hasAttribute("checked");
- },
-
- _lastMode: null,
- _lastCheckState: null,
- updateAutostart() {
- let mode = document.getElementById("historyMode");
- let autoStart = document.getElementById("privateBrowsingAutoStart");
- let pref = document.getElementById("browser.privatebrowsing.autostart");
- if ((mode.value == "custom" && this._lastCheckState == autoStart.checked) ||
- (mode.value == "remember" && !this._lastCheckState) ||
- (mode.value == "dontremember" && this._lastCheckState)) {
- // These are all no-op changes, so we don't need to prompt.
- this._lastMode = mode.selectedIndex;
- this._lastCheckState = autoStart.hasAttribute("checked");
- return;
- }
-
- if (!this._shouldPromptForRestart) {
- // We're performing a revert. Just let it happen.
- return;
- }
-
- let buttonIndex = confirmRestartPrompt(autoStart.checked, 1,
- true, false);
- if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) {
- pref.value = autoStart.hasAttribute("checked");
- let appStartup = Cc["@mozilla.org/toolkit/app-startup;1"]
- .getService(Ci.nsIAppStartup);
- appStartup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
- return;
- }
-
- this._shouldPromptForRestart = false;
-
- if (this._lastCheckState) {
- autoStart.checked = "checked";
- } else {
- autoStart.removeAttribute("checked");
- }
- pref.value = autoStart.hasAttribute("checked");
- mode.selectedIndex = this._lastMode;
- mode.doCommand();
-
- this._shouldPromptForRestart = true;
- },
-
- /**
- * Displays fine-grained, per-site preferences for tracking protection.
- */
- showTrackingProtectionExceptions() {
- let bundlePreferences = document.getElementById("bundlePreferences");
- let params = {
- permissionType: "trackingprotection",
- hideStatusColumn: true,
- windowTitle: bundlePreferences.getString("trackingprotectionpermissionstitle"),
- introText: bundlePreferences.getString("trackingprotectionpermissionstext"),
- };
- gSubDialog.open("chrome://browser/content/preferences/permissions.xul",
- null, params);
- },
-
- /**
- * Displays container panel for customising and adding containers.
- */
- showContainerSettings() {
- gotoPref("containers");
- },
-
- /**
- * Displays the available block lists for tracking protection.
- */
- showBlockLists() {
- var bundlePreferences = document.getElementById("bundlePreferences");
- let brandName = document.getElementById("bundleBrand")
- .getString("brandShortName");
- var params = { brandShortName: brandName,
- windowTitle: bundlePreferences.getString("blockliststitle"),
- introText: bundlePreferences.getString("blockliststext") };
- gSubDialog.open("chrome://browser/content/preferences/blocklists.xul",
- null, params);
- },
-
- /**
- * Displays the Do Not Track settings dialog.
- */
- showDoNotTrackSettings() {
- gSubDialog.open("chrome://browser/content/preferences/donottrack.xul",
- "resizable=no");
- },
-
- // HISTORY
-
- /*
- * Preferences:
- *
- * places.history.enabled
- * - whether history is enabled or not
- * browser.formfill.enable
- * - true if entries in forms and the search bar should be saved, false
- * otherwise
- */
-
- // COOKIES
-
- /*
- * Preferences:
- *
- * network.cookie.cookieBehavior
- * - determines how the browser should handle cookies:
- * 0 means enable all cookies
- * 1 means reject all third party cookies
- * 2 means disable all cookies
- * 3 means reject third party cookies unless at least one is already set for the eTLD
- * see netwerk/cookie/src/nsCookieService.cpp for details
- * network.cookie.lifetimePolicy
- * - determines how long cookies are stored:
- * 0 means keep cookies until they expire
- * 2 means keep cookies until the browser is closed
- */
-
- /**
- * Reads the network.cookie.cookieBehavior preference value and
- * enables/disables the rest of the cookie UI accordingly, returning true
- * if cookies are enabled.
- */
- readAcceptCookies() {
- var pref = document.getElementById("network.cookie.cookieBehavior");
- var acceptThirdPartyLabel = document.getElementById("acceptThirdPartyLabel");
- var acceptThirdPartyMenu = document.getElementById("acceptThirdPartyMenu");
- var keepUntil = document.getElementById("keepUntil");
- var menu = document.getElementById("keepCookiesUntil");
-
- // enable the rest of the UI for anything other than "disable all cookies"
- var acceptCookies = (pref.value != 2);
-
- acceptThirdPartyLabel.disabled = acceptThirdPartyMenu.disabled = !acceptCookies;
- keepUntil.disabled = menu.disabled = this._autoStartPrivateBrowsing || !acceptCookies;
-
- return acceptCookies;
- },
-
- /**
- * Enables/disables the "keep until" label and menulist in response to the
- * "accept cookies" checkbox being checked or unchecked.
- */
- writeAcceptCookies() {
- var accept = document.getElementById("acceptCookies");
- var acceptThirdPartyMenu = document.getElementById("acceptThirdPartyMenu");
-
- // if we're enabling cookies, automatically select 'accept third party always'
- if (accept.checked)
- acceptThirdPartyMenu.selectedIndex = 0;
-
- return accept.checked ? 0 : 2;
- },
-
- /**
- * Converts between network.cookie.cookieBehavior and the third-party cookie UI
- */
- readAcceptThirdPartyCookies() {
- var pref = document.getElementById("network.cookie.cookieBehavior");
- switch (pref.value) {
- case 0:
- return "always";
- case 1:
- return "never";
- case 2:
- return "never";
- case 3:
- return "visited";
- default:
- return undefined;
- }
- },
-
- writeAcceptThirdPartyCookies() {
- var accept = document.getElementById("acceptThirdPartyMenu").selectedItem;
- switch (accept.value) {
- case "always":
- return 0;
- case "visited":
- return 3;
- case "never":
- return 1;
- default:
- return undefined;
- }
- },
-
- /**
- * Displays fine-grained, per-site preferences for cookies.
- */
- showCookieExceptions() {
- var bundlePreferences = document.getElementById("bundlePreferences");
- var params = { blockVisible : true,
- sessionVisible : true,
- allowVisible : true,
- prefilledHost : "",
- permissionType : "cookie",
- windowTitle : bundlePreferences.getString("cookiepermissionstitle"),
- introText : bundlePreferences.getString("cookiepermissionstext") };
- gSubDialog.open("chrome://browser/content/preferences/permissions.xul",
- null, params);
- },
-
- /**
- * Displays all the user's cookies in a dialog.
- */
- showCookies(aCategory) {
- gSubDialog.open("chrome://browser/content/preferences/cookies.xul");
- },
-
- // CLEAR PRIVATE DATA
-
- /*
- * Preferences:
- *
- * privacy.sanitize.sanitizeOnShutdown
- * - true if the user's private data is cleared on startup according to the
- * Clear Private Data settings, false otherwise
- */
-
- /**
- * Displays the Clear Private Data settings dialog.
- */
- showClearPrivateDataSettings() {
- gSubDialog.open("chrome://browser/content/preferences/sanitize.xul", "resizable=no");
- },
-
-
- /**
- * Displays a dialog from which individual parts of private data may be
- * cleared.
- */
- clearPrivateDataNow(aClearEverything) {
- var ts = document.getElementById("privacy.sanitize.timeSpan");
- var timeSpanOrig = ts.value;
-
- if (aClearEverything) {
- ts.value = 0;
- }
-
- gSubDialog.open("chrome://browser/content/sanitize.xul", "resizable=no", null, () => {
- // reset the timeSpan pref
- if (aClearEverything) {
- ts.value = timeSpanOrig;
- }
-
- Services.obs.notifyObservers(null, "clear-private-data", null);
- });
- },
-
- /**
- * Enables or disables the "Settings..." button depending
- * on the privacy.sanitize.sanitizeOnShutdown preference value
- */
- _updateSanitizeSettingsButton() {
- var settingsButton = document.getElementById("clearDataSettings");
- var sanitizeOnShutdownPref = document.getElementById("privacy.sanitize.sanitizeOnShutdown");
-
- settingsButton.disabled = !sanitizeOnShutdownPref.value;
- },
-
- // CONTAINERS
-
- /*
- * preferences:
- *
- * privacy.userContext.enabled
- * - true if containers is enabled
- */
-
- /**
- * Enables/disables the Settings button used to configure containers
- */
- readBrowserContainersCheckbox() {
- var pref = document.getElementById("privacy.userContext.enabled");
- var settings = document.getElementById("browserContainersSettings");
-
- settings.disabled = !pref.value;
- }
-
-};