79 lines
2.8 KiB
JavaScript
79 lines
2.8 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._clearSiteDataCheckbox.checked) {
|
|
allowed = SiteDataManager.promptSiteDataRemoval(window);
|
|
if (allowed) {
|
|
SiteDataManager.removeSiteData();
|
|
}
|
|
}
|
|
|
|
if (this._clearCacheCheckbox.checked && allowed) {
|
|
SiteDataManager.removeCache();
|
|
// Update cache UI in about:preferences
|
|
window.opener.gPrivacyPane.updateActualCacheSize();
|
|
}
|
|
|
|
if (allowed) {
|
|
window.close();
|
|
}
|
|
},
|
|
};
|
|
|
|
window.addEventListener("load", () => gClearSiteDataDialog.init());
|