1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
/* 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/. */
const { SiteDataManager } = ChromeUtils.importESModule(
"resource:///modules/SiteDataManager.sys.mjs"
);
ChromeUtils.defineESModuleGetters(this, {
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
});
var gClearSiteDataDialog = {
_clearSiteDataCheckbox: null,
_clearCacheCheckbox: null,
onLoad() {
document.mozSubdialogReady = this.init();
},
async init() {
this._dialog = document.querySelector("dialog");
this._clearSiteDataCheckbox = document.getElementById("clearSiteData");
this._clearCacheCheckbox = document.getElementById("clearCache");
// We'll block init() on this because the result values may impact
// subdialog sizing.
await Promise.all([
SiteDataManager.getTotalUsage().then(bytes => {
let [amount, unit] = DownloadUtils.convertByteUnits(bytes);
document.l10n.setAttributes(
this._clearSiteDataCheckbox,
"clear-site-data-cookies-with-data",
{ amount, unit }
);
}),
SiteDataManager.getCacheSize().then(bytes => {
let [amount, unit] = DownloadUtils.convertByteUnits(bytes);
document.l10n.setAttributes(
this._clearCacheCheckbox,
"clear-site-data-cache-with-data",
{ amount, unit }
);
}),
]);
await document.l10n.translateElements([
this._clearCacheCheckbox,
this._clearSiteDataCheckbox,
]);
document.addEventListener("dialogaccept", event => this.onClear(event));
this._clearSiteDataCheckbox.addEventListener("command", e =>
this.onCheckboxCommand(e)
);
this._clearCacheCheckbox.addEventListener("command", e =>
this.onCheckboxCommand(e)
);
},
onCheckboxCommand() {
this._dialog.setAttribute(
"buttondisabledaccept",
!(this._clearSiteDataCheckbox.checked || this._clearCacheCheckbox.checked)
);
},
onClear(event) {
let clearSiteData = this._clearSiteDataCheckbox.checked;
let clearCache = this._clearCacheCheckbox.checked;
if (clearSiteData) {
// Ask for confirmation before clearing site data
if (!SiteDataManager.promptSiteDataRemoval(window)) {
clearSiteData = false;
// Prevent closing the dialog when the data removal wasn't allowed.
event.preventDefault();
}
}
if (clearSiteData) {
SiteDataManager.removeSiteData();
}
if (clearCache) {
SiteDataManager.removeCache();
// If we're not clearing site data, we need to tell the
// SiteDataManager to signal that it's updating.
if (!clearSiteData) {
SiteDataManager.updateSites();
}
}
},
};
window.addEventListener("load", () => gClearSiteDataDialog.onLoad());
|