/**
* 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();
}