summaryrefslogtreecommitdiffstats
path: root/dom/quota/test/xpcshell/test_estimateOrigin.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/quota/test/xpcshell/test_estimateOrigin.js')
-rw-r--r--dom/quota/test/xpcshell/test_estimateOrigin.js80
1 files changed, 80 insertions, 0 deletions
diff --git a/dom/quota/test/xpcshell/test_estimateOrigin.js b/dom/quota/test/xpcshell/test_estimateOrigin.js
new file mode 100644
index 0000000000..31d6f01686
--- /dev/null
+++ b/dom/quota/test/xpcshell/test_estimateOrigin.js
@@ -0,0 +1,80 @@
+/**
+ * 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();
+}