mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-08-22 04:13:06 +09:00
51 lines
1.8 KiB
JavaScript
51 lines
1.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/. */
|
|
|
|
this.EXPORTED_SYMBOLS = ["QuotaManagerHelper"];
|
|
|
|
Components.utils.import('resource://gre/modules/Services.jsm');
|
|
|
|
const Ci = Components.interfaces;
|
|
const Cc = Components.classes;
|
|
const Cu = Components.utils;
|
|
|
|
this.QuotaManagerHelper = {
|
|
clear: function(isShutDown) {
|
|
try {
|
|
var stord = Services.dirsvc.get("ProfD", Ci.nsIFile);
|
|
stord.append("storage");
|
|
if (stord.exists() && stord.isDirectory()) {
|
|
var doms = {};
|
|
for (var stor of ["default", "permanent", "temporary"]) {
|
|
var storsubd = stord.clone();
|
|
storsubd.append(stor);
|
|
if (storsubd.exists() && storsubd.isDirectory()) {
|
|
var entries = storsubd.directoryEntries;
|
|
while(entries.hasMoreElements()) {
|
|
var host, entry = entries.getNext();
|
|
entry.QueryInterface(Ci.nsIFile);
|
|
if ((host = /^(https?|file)\+\+\+(.+)$/.exec(entry.leafName)) !== null) {
|
|
if (isShutDown) {
|
|
entry.remove(true);
|
|
} else {
|
|
doms[host[1] + "://" + host[2]] = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
var qm = Cc["@mozilla.org/dom/quota-manager-service;1"]
|
|
.getService(Ci.nsIQuotaManagerService);
|
|
for (var dom in doms) {
|
|
var uri = Services.io.newURI(dom, null, null);
|
|
let principal = Services.scriptSecurityManager
|
|
.createCodebasePrincipal(uri, {});
|
|
qm.clearStoragesForPrincipal(principal);
|
|
}
|
|
}
|
|
} catch(er) {
|
|
Cu.reportError(er);
|
|
}
|
|
}
|
|
};
|