diff options
Diffstat (limited to 'testing/web-platform/tests/webstorage/resources/sessionStorage-about-blank-partitioned-iframe.html')
-rw-r--r-- | testing/web-platform/tests/webstorage/resources/sessionStorage-about-blank-partitioned-iframe.html | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/testing/web-platform/tests/webstorage/resources/sessionStorage-about-blank-partitioned-iframe.html b/testing/web-platform/tests/webstorage/resources/sessionStorage-about-blank-partitioned-iframe.html new file mode 100644 index 0000000000..dd530a7c22 --- /dev/null +++ b/testing/web-platform/tests/webstorage/resources/sessionStorage-about-blank-partitioned-iframe.html @@ -0,0 +1,44 @@ +<!doctype html> +<meta charset="utf-8"> +<script> + +function getOrCreateID(key) { + if (!sessionStorage.getItem(key)) { + const newID = new Date() + "-" + Math.random(); + sessionStorage.setItem(key, newID); + } + return sessionStorage.getItem(key); +} + +window.addEventListener("load", () => { + // In this testing set-up, only cross-site iframes will have an opener. + if (parent.opener) { + const payload = { + message: "cross-site window iframe loaded", + userID: getOrCreateID("userID"), + } + // Once the cross-site iframe has loaded, we send a message back to + // the main window with the ID from sessionStorage. + parent.opener.postMessage(payload, parent.opener.origin); + } +}); + +window.addEventListener("message", (e) => { + if (e.data.command == "create ID") { + // e.data.key is equivalent to "userID" + getOrCreateID(e.data.key); + + const payload = { + message: "ID created", + userID: sessionStorage.getItem("userID"), + } + // Return the ID from sessionStorage to the main window. + e.source.postMessage(payload, e.source.origin); + } + + // Additional functionality for clean-up at the end of the test. + if (e.data.command == "clearStorage") { + sessionStorage.clear(); + } +}); +</script> |