Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
- Manifest: dom/quota/test/xpcshell/xpcshell.toml
/**
* Any copyright is dedicated to the Public Domain.
*/
const { AppConstants } = ChromeUtils.importESModule(
"resource://gre/modules/AppConstants.sys.mjs"
);
async function testSteps() {
const GiB = 1024 * 1024 * 1024;
// Set the limit to some random value that is less than 50 GiB.
const globalLimitBytes = 1 * GiB;
const globalLimitKib = globalLimitBytes / 1024;
setGlobalLimit(globalLimitKib);
let request = init();
await requestFinished(request);
request = initTemporaryStorage();
await requestFinished(request);
request = estimateOrigin(principal);
await requestFinished(request);
const perGroupPercentage = 0.2;
const expectedGroupLimitBytes = Math.floor(
globalLimitBytes * perGroupPercentage
);
is(expectedGroupLimitBytes, request.result.limit);
// Verify the RFP override is applied.
request = reset();
await requestFinished(request);
const spoofedLimitBytes = 50 * GiB;
Services.prefs.setBoolPref("privacy.resistFingerprinting", true);
request = init();
await requestFinished(request);
request = initTemporaryStorage();
await requestFinished(request);
request = estimateOrigin(principal);
await requestFinished(request);
const expectedSpoofedGroupLimitBytes = Math.floor(
spoofedLimitBytes * perGroupPercentage
);
is(
expectedSpoofedGroupLimitBytes,
request.result.limit,
"RFP limit should be applied"
);
Services.prefs.clearUserPref("privacy.resistFingerprinting");
resetGlobalLimit();
request = reset();
await requestFinished(request);
}