80 lines
2 KiB
JavaScript
80 lines
2 KiB
JavaScript
/**
|
|
* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/
|
|
*/
|
|
|
|
loadScript("dom/quota/test/xpcshell/common/utils.js");
|
|
|
|
async function verifyOriginEstimation(principal, expectedUsage, expectedLimit) {
|
|
info("Estimating origin");
|
|
|
|
const request = estimateOrigin(principal);
|
|
await requestFinished(request);
|
|
|
|
is(request.result.usage, expectedUsage, "Correct usage");
|
|
is(request.result.limit, expectedLimit, "Correct limit");
|
|
}
|
|
|
|
async function testSteps() {
|
|
// The group limit is calculated as 20% of the global limit and the minimum
|
|
// value of the group limit is 10 MB.
|
|
|
|
const groupLimitKB = 10 * 1024;
|
|
const groupLimitBytes = groupLimitKB * 1024;
|
|
const globalLimitKB = groupLimitKB * 5;
|
|
const globalLimitBytes = globalLimitKB * 1024;
|
|
|
|
info("Setting limits");
|
|
|
|
setGlobalLimit(globalLimitKB);
|
|
|
|
info("Clearing");
|
|
|
|
let request = clear();
|
|
await requestFinished(request);
|
|
|
|
info("Filling origins");
|
|
|
|
await fillOrigin(getPrincipal("https://foo1.example1.com"), 100);
|
|
await fillOrigin(getPrincipal("https://foo2.example1.com"), 200);
|
|
await fillOrigin(getPrincipal("https://foo1.example2.com"), 300);
|
|
await fillOrigin(getPrincipal("https://foo2.example2.com"), 400);
|
|
|
|
info("Verifying origin estimations");
|
|
|
|
await verifyOriginEstimation(
|
|
getPrincipal("https://foo1.example1.com"),
|
|
300,
|
|
groupLimitBytes
|
|
);
|
|
await verifyOriginEstimation(
|
|
getPrincipal("https://foo2.example1.com"),
|
|
300,
|
|
groupLimitBytes
|
|
);
|
|
await verifyOriginEstimation(
|
|
getPrincipal("https://foo1.example2.com"),
|
|
700,
|
|
groupLimitBytes
|
|
);
|
|
await verifyOriginEstimation(
|
|
getPrincipal("https://foo2.example2.com"),
|
|
700,
|
|
groupLimitBytes
|
|
);
|
|
|
|
info("Persisting origin");
|
|
|
|
request = persist(getPrincipal("https://foo2.example2.com"));
|
|
await requestFinished(request);
|
|
|
|
info("Verifying origin estimation");
|
|
|
|
await verifyOriginEstimation(
|
|
getPrincipal("https://foo2.example2.com"),
|
|
1000,
|
|
globalLimitBytes
|
|
);
|
|
|
|
finishTest();
|
|
}
|