96 lines
2.2 KiB
JavaScript
96 lines
2.2 KiB
JavaScript
/**
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
class RequestError extends Error {
|
|
constructor(resultCode, resultName) {
|
|
super(`Request failed (code: ${resultCode}, name: ${resultName})`);
|
|
this.name = "RequestError";
|
|
this.resultCode = resultCode;
|
|
this.resultName = resultName;
|
|
}
|
|
}
|
|
|
|
export function setStoragePrefs(optionalPrefsToSet) {
|
|
const prefsToSet = [["dom.quotaManager.testing", true]];
|
|
|
|
if (Services.appinfo.OS === "WINNT") {
|
|
prefsToSet.push(["dom.quotaManager.useDOSDevicePathSyntax", true]);
|
|
}
|
|
|
|
if (optionalPrefsToSet) {
|
|
prefsToSet.push(...optionalPrefsToSet);
|
|
}
|
|
|
|
for (const pref of prefsToSet) {
|
|
Services.prefs.setBoolPref(pref[0], pref[1]);
|
|
}
|
|
}
|
|
|
|
export function clearStoragePrefs(optionalPrefsToClear) {
|
|
const prefsToClear = ["dom.quotaManager.testing", "dom.simpleDB.enabled"];
|
|
|
|
if (Services.appinfo.OS === "WINNT") {
|
|
prefsToClear.push("dom.quotaManager.useDOSDevicePathSyntax");
|
|
}
|
|
|
|
if (optionalPrefsToClear) {
|
|
prefsToClear.push(...optionalPrefsToClear);
|
|
}
|
|
|
|
for (const pref of prefsToClear) {
|
|
Services.prefs.clearUserPref(pref);
|
|
}
|
|
}
|
|
|
|
export async function getCachedUsageForOrigin(principal) {
|
|
const request = Services.qms.getCachedUsageForPrincipal(
|
|
principal,
|
|
function () {}
|
|
);
|
|
|
|
await new Promise(function (resolve) {
|
|
request.callback = function () {
|
|
resolve();
|
|
};
|
|
});
|
|
|
|
if (request.resultCode != Cr.NS_OK) {
|
|
throw new RequestError(request.resultCode, request.resultName);
|
|
}
|
|
|
|
return request.result;
|
|
}
|
|
|
|
export async function clearStoragesForOrigin(principal) {
|
|
const request = Services.qms.clearStoragesForPrincipal(principal);
|
|
|
|
await new Promise(function (resolve) {
|
|
request.callback = function () {
|
|
resolve();
|
|
};
|
|
});
|
|
|
|
if (request.resultCode != Cr.NS_OK) {
|
|
throw new RequestError(request.resultCode, request.resultName);
|
|
}
|
|
|
|
return request.result;
|
|
}
|
|
|
|
export async function resetStorage() {
|
|
const request = Services.qms.reset();
|
|
|
|
await new Promise(function (resolve) {
|
|
request.callback = function () {
|
|
resolve();
|
|
};
|
|
});
|
|
|
|
if (request.resultCode != Cr.NS_OK) {
|
|
throw new RequestError(request.resultCode, request.resultName);
|
|
}
|
|
|
|
return request.result;
|
|
}
|