/** * Any copyright is dedicated to the Public Domain. * http://creativecommons.org/publicdomain/zero/1.0/ */ const { AppConstants } = ChromeUtils.importESModule( "resource://gre/modules/AppConstants.sys.mjs" ); async function testSteps() { const principal = getPrincipal("http://example.com"); 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); }