summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/anonymous-iframe/cache-storage.tentative.https.window.js
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/anonymous-iframe/cache-storage.tentative.https.window.js')
-rw-r--r--testing/web-platform/tests/html/anonymous-iframe/cache-storage.tentative.https.window.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/anonymous-iframe/cache-storage.tentative.https.window.js b/testing/web-platform/tests/html/anonymous-iframe/cache-storage.tentative.https.window.js
new file mode 100644
index 0000000000..b816de4cd5
--- /dev/null
+++ b/testing/web-platform/tests/html/anonymous-iframe/cache-storage.tentative.https.window.js
@@ -0,0 +1,60 @@
+// META: script=/common/get-host-info.sub.js
+// META: script=/common/utils.js
+// META: script=/common/dispatcher/dispatcher.js
+// META: script=/html/cross-origin-embedder-policy/credentialless/resources/common.js
+// META: script=./resources/common.js
+
+// A script storing a value into the CacheStorage.
+const store_script = (key, value, done) => `
+ const request = new Request("/${key}.txt");
+ const response = new Response("${value}", {
+ headers: { "content-type": "plain/txt" }
+ });
+ const cache = await caches.open("v1");
+ const value = await cache.put(request, response.clone());
+ send("${done}", "stored");
+`;
+
+// A script loading a value from the CacheStorage.
+const load_script = (key, done) => `
+ const cache = await caches.open("v1");
+ const request = new Request("/${key}.txt");
+ try {
+ const response = await cache.match(request);
+ const value = await response.text();
+ send("${done}", value);
+ } catch (error) {
+ send("${done}", "not found");
+ }
+`;
+
+promise_test(async test => {
+ const origin = get_host_info().HTTPS_REMOTE_ORIGIN;
+ const key_1 = token();
+ const key_2 = token();
+
+ // 2 actors: A credentialless iframe and a normal one.
+ const iframe_credentialless = newIframeCredentialless(origin);
+ const iframe_normal = newIframe(origin);
+ const response_queue_1 = token();
+ const response_queue_2 = token();
+
+ // 1. Each of them store a value in CacheStorage with different keys.
+ send(iframe_credentialless , store_script(key_1, "value_1", response_queue_1));
+ send(iframe_normal, store_script(key_2, "value_2", response_queue_2));
+ assert_equals(await receive(response_queue_1), "stored");
+ assert_equals(await receive(response_queue_2), "stored");
+
+ // 2. Each of them tries to retrieve the value from opposite side, without
+ // success.
+ send(iframe_credentialless , load_script(key_2, response_queue_1));
+ send(iframe_normal, load_script(key_1, response_queue_2));
+ assert_equals(await receive(response_queue_1), "not found");
+ assert_equals(await receive(response_queue_2), "not found");
+
+ // 3. Each of them tries to retrieve the value from their side, with success:
+ send(iframe_credentialless , load_script(key_1, response_queue_1));
+ send(iframe_normal, load_script(key_2, response_queue_2));
+ assert_equals(await receive(response_queue_1), "value_1");
+ assert_equals(await receive(response_queue_2), "value_2");
+})