You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

51 lines
1.8 KiB

/* 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);
}
}
};