summaryrefslogtreecommitdiffstats
path: root/dom/tests/mochitest/sessionstorage/test_sessionStorageClone_alwaysPartitioned_exempted.html
diff options
context:
space:
mode:
Diffstat (limited to 'dom/tests/mochitest/sessionstorage/test_sessionStorageClone_alwaysPartitioned_exempted.html')
-rw-r--r--dom/tests/mochitest/sessionstorage/test_sessionStorageClone_alwaysPartitioned_exempted.html110
1 files changed, 110 insertions, 0 deletions
diff --git a/dom/tests/mochitest/sessionstorage/test_sessionStorageClone_alwaysPartitioned_exempted.html b/dom/tests/mochitest/sessionstorage/test_sessionStorageClone_alwaysPartitioned_exempted.html
new file mode 100644
index 0000000000..3f9e3b331f
--- /dev/null
+++ b/dom/tests/mochitest/sessionstorage/test_sessionStorageClone_alwaysPartitioned_exempted.html
@@ -0,0 +1,110 @@
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<title>sessionStorage clone equal origins</title>
+
+<script src="/tests/SimpleTest/SimpleTest.js"></script>
+<script type="text/javascript" src="interOriginTest.js"></script>
+<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+
+<script type="text/javascript">
+
+var currentTest = 1;
+var currentStep = 1;
+
+async function doNextTest()
+{
+ // Bug 1746646: Make mochitests work with TCP enabled (cookieBehavior = 5)
+ // Acquire storage access permission here so that the sessionStorage object is
+ // shared between this window and the slave in xorigin tests. Without this,
+ // our storage would be isolated as a xorigin iframe.
+ if (isXOrigin) {
+ SpecialPowers.wrap(document).notifyUserGestureActivation();
+ await SpecialPowers.addPermission(
+ "storageAccessAPI",
+ true,
+ window.location.href
+ );
+ await SpecialPowers.wrap(document).requestStorageAccess();
+ }
+
+ await SpecialPowers.pushPrefEnv({
+ set: [
+ ["privacy.partition.always_partition_third_party_non_cookie_storage", true],
+ ["privacy.partition.always_partition_third_party_non_cookie_storage.exempt_sessionstorage", true]
+ ],
+ });
+
+ // We must perform the first step of the test
+ // to prepare the land.
+ currentStep = 1;
+ doStep();
+
+ let hash = "#";
+ if (isXOrigin) hash += "xorigin";
+
+ switch (currentTest)
+ {
+ case 1:
+ // Open a window from the same origin and check data
+ // are copied but not further modified on our side
+ slaveOrigin = "http://mochi.test:8888";
+ slave = window.open(slaveOrigin + slavePath + "frameEqual.html" + hash);
+ break;
+
+ case 2:
+ slave.close();
+ // Open a window from a different origin and check data
+ // are NOT copied and not modified on our side
+ slaveOrigin = "https://example.com";
+ slave = window.open(slaveOrigin + slavePath + "frameNotEqual.html" + hash);
+ break;
+
+ case 3:
+ slave.close();
+ sessionStorage.clear();
+ SimpleTest.finish();
+ break;
+ }
+
+ ++currentTest;
+}
+
+function doStep()
+{
+ switch (currentStep)
+ {
+ case 1:
+ sessionStorage.setItem("A", "1");
+ sessionStorage.setItem("B", "2");
+ is(sessionStorage.getItem("A"), "1", "A is 1 in the master");
+ is(sessionStorage.getItem("B"), "2", "B is 2 in the master");
+ is(sessionStorage.length, 2, "Num of items is 2");
+ break;
+
+ case 3:
+ is(sessionStorage.getItem("A"), "1", "A is 1 in the master");
+ is(sessionStorage.getItem("B"), "2", "B is 2 in the master");
+ is(sessionStorage.getItem("C"), null, "C is null in the master");
+ is(sessionStorage.length, 2, "Num of items is 2");
+
+ sessionStorage.setItem("C", "4");
+ is(sessionStorage.getItem("C"), "4", "C is 4 in the master");
+ is(sessionStorage.length, 3, "Num of items is 3");
+ break;
+ }
+
+ ++currentStep;
+ ++currentStep;
+
+ return true;
+}
+
+SimpleTest.waitForExplicitFinish();
+
+</script>
+
+</head>
+
+<body onload="doNextTest();">
+</body>
+</html>