StorageUtils.sys.mjs (2299B)
1 /** 2 * Any copyright is dedicated to the Public Domain. 3 * http://creativecommons.org/publicdomain/zero/1.0/ 4 */ 5 6 class RequestError extends Error { 7 constructor(resultCode, resultName) { 8 super(`Request failed (code: ${resultCode}, name: ${resultName})`); 9 this.name = "RequestError"; 10 this.resultCode = resultCode; 11 this.resultName = resultName; 12 } 13 } 14 15 export function setStoragePrefs(optionalPrefsToSet) { 16 const prefsToSet = [["dom.quotaManager.testing", true]]; 17 18 if (Services.appinfo.OS === "WINNT") { 19 prefsToSet.push(["dom.quotaManager.useDOSDevicePathSyntax", true]); 20 } 21 22 if (optionalPrefsToSet) { 23 prefsToSet.push(...optionalPrefsToSet); 24 } 25 26 for (const pref of prefsToSet) { 27 Services.prefs.setBoolPref(pref[0], pref[1]); 28 } 29 } 30 31 export function clearStoragePrefs(optionalPrefsToClear) { 32 const prefsToClear = ["dom.quotaManager.testing", "dom.simpleDB.enabled"]; 33 34 if (Services.appinfo.OS === "WINNT") { 35 prefsToClear.push("dom.quotaManager.useDOSDevicePathSyntax"); 36 } 37 38 if (optionalPrefsToClear) { 39 prefsToClear.push(...optionalPrefsToClear); 40 } 41 42 for (const pref of prefsToClear) { 43 Services.prefs.clearUserPref(pref); 44 } 45 } 46 47 export async function getCachedUsageForOrigin(principal) { 48 const request = Services.qms.getCachedUsageForPrincipal( 49 principal, 50 function () {} 51 ); 52 53 await new Promise(function (resolve) { 54 request.callback = function () { 55 resolve(); 56 }; 57 }); 58 59 if (request.resultCode != Cr.NS_OK) { 60 throw new RequestError(request.resultCode, request.resultName); 61 } 62 63 return request.result; 64 } 65 66 export async function clearStoragesForOrigin(principal) { 67 const request = Services.qms.clearStoragesForPrincipal(principal); 68 69 await new Promise(function (resolve) { 70 request.callback = function () { 71 resolve(); 72 }; 73 }); 74 75 if (request.resultCode != Cr.NS_OK) { 76 throw new RequestError(request.resultCode, request.resultName); 77 } 78 79 return request.result; 80 } 81 82 export async function resetStorage() { 83 const request = Services.qms.reset(); 84 85 await new Promise(function (resolve) { 86 request.callback = function () { 87 resolve(); 88 }; 89 }); 90 91 if (request.resultCode != Cr.NS_OK) { 92 throw new RequestError(request.resultCode, request.resultName); 93 } 94 95 return request.result; 96 }