Files
tubestation/browser/components/preferences/clearSiteData.js
Johann Hofmann 08312ab421 Bug 1422160 - Merge cache and site data in about:preferences. r=jaws
This commit removes most of the cache section in about:preferences,
following the UX concept from bug 1421690. This is in the general
interest of de-cluttering privacy preferences and giving users controls
that are easier to understand and use.

The cache size is instead shown in the site data section and the cache
can be cleared using the "Clear Data" button in that same section.

MozReview-Commit-ID: 7PDTDgllFFI
2018-02-13 12:33:29 +01:00

82 lines
2.9 KiB
JavaScript

/* 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/. */
ChromeUtils.import("resource://gre/modules/Services.jsm");
ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
ChromeUtils.import("resource://gre/modules/DownloadUtils.jsm");
ChromeUtils.import("resource:///modules/SiteDataManager.jsm");
var gClearSiteDataDialog = {
_clearSiteDataCheckbox: null,
_clearCacheCheckbox: null,
_clearButton: null,
init() {
this._bundle = Services.strings
.createBundle("chrome://browser/locale/preferences/clearSiteData.properties");
SiteDataManager.getTotalUsage().then(bytes => {
// Size is an array of amount and unit, e.g. [20, "MB"].
let size = DownloadUtils.convertByteUnits(bytes);
document.getElementById("clearSiteDataLabel").value =
this._bundle.formatStringFromName("clearSiteDataWithEstimates.label", size, 2);
});
SiteDataManager.getCacheSize().then(bytes => {
// Size is an array of amount and unit, e.g. [20, "MB"].
let size = DownloadUtils.convertByteUnits(bytes);
document.getElementById("clearCacheLabel").value =
this._bundle.formatStringFromName("clearCacheWithEstimates.label", size, 2);
});
this._clearButton = document.getElementById("clearButton");
this._cancelButton = document.getElementById("cancelButton");
this._clearSiteDataCheckbox = document.getElementById("clearSiteData");
this._clearCacheCheckbox = document.getElementById("clearCache");
window.addEventListener("keypress", this.onWindowKeyPress);
this._cancelButton.addEventListener("command", window.close);
this._clearButton.addEventListener("command", () => this.onClear());
this._clearSiteDataCheckbox.addEventListener("command", e => this.onCheckboxCommand(e));
this._clearCacheCheckbox.addEventListener("command", e => this.onCheckboxCommand(e));
},
onWindowKeyPress(event) {
if (event.keyCode == KeyEvent.DOM_VK_ESCAPE)
window.close();
},
onCheckboxCommand(event) {
this._clearButton.disabled =
!(this._clearSiteDataCheckbox.checked || this._clearCacheCheckbox.checked);
},
onClear() {
let allowed = true;
if (this._clearCacheCheckbox.checked && allowed) {
SiteDataManager.removeCache();
// If we're not clearing site data, we need to tell the
// SiteDataManager to signal that it's updating.
if (!this._clearSiteDataCheckbox.checked) {
SiteDataManager.updateSites();
}
}
if (this._clearSiteDataCheckbox.checked) {
allowed = SiteDataManager.promptSiteDataRemoval(window);
if (allowed) {
SiteDataManager.removeSiteData();
}
}
if (allowed) {
window.close();
}
},
};
window.addEventListener("load", () => gClearSiteDataDialog.init());