diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 19:33:14 +0000 |
commit | 36d22d82aa202bb199967e9512281e9a53db42c9 (patch) | |
tree | 105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/tests/mochitest/whatwg/postMessage_helper.html | |
parent | Initial commit. (diff) | |
download | firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.tar.xz firefox-esr-36d22d82aa202bb199967e9512281e9a53db42c9.zip |
Adding upstream version 115.7.0esr.upstream/115.7.0esrupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/tests/mochitest/whatwg/postMessage_helper.html')
-rw-r--r-- | dom/tests/mochitest/whatwg/postMessage_helper.html | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/dom/tests/mochitest/whatwg/postMessage_helper.html b/dom/tests/mochitest/whatwg/postMessage_helper.html new file mode 100644 index 0000000000..352edb5ca7 --- /dev/null +++ b/dom/tests/mochitest/whatwg/postMessage_helper.html @@ -0,0 +1,103 @@ +<!DOCTYPE html> +<html> +<head> + <title>postMessage message receiver</title> + <script type="application/javascript"> + function $(id) { return document.getElementById(id); } + + function setup() + { + var target = $("domain"); + target.textContent = location.hostname + ":" + (location.port || 80); + } + + function receiveMessage(evt) + { + var response = evt.data + "-response"; + + if (evt.lastEventId !== "") + response += " wrong-lastEventId(" + evt.lastEventId + ")"; + + if (evt.source !== window.parent) + { + response += " unexpected-source(" + evt.source + ")"; + response += " window-parent-is(" + window.parent + ")"; + response += " location(" + window.location.href + ")"; + } + + if (evt.type != "message") + response += " wrong-type(" + evt.type + ")"; + + var data = evt.data; + if (data == "post-to-other-same-domain") + { + receiveSame(evt, response); + } + else if (data == "post-to-other-cross-domain") + { + receiveCross(evt, response); + } + else + { + response += " unexpected-message-to(" + window.location.href + ")"; + window.parent.postMessage(response, "http://mochi.test:8888"); + return; + } + } + + function receiveSame(evt, response) + { + var source = evt.source; + try + { + if (evt.origin != "http://mochi.test:8888") + response += " unexpected-origin(" + evt.origin + ")"; + + try + { + var threw = false; + var privateVariable = source.privateVariable; + } + catch (e) + { + threw = true; + } + if (threw || privateVariable !== window.parent.privateVariable) + response += " accessed-source!!!"; + + } + finally + { + source.postMessage(response, evt.origin); + } + } + + function receiveCross(evt, response) + { + var source = evt.source; + if (evt.origin != "http://mochi.test:8888") + response += " unexpected-origin(" + evt.origin + ")"; + + try + { + var threw = false; + var privateVariable = source.privateVariable; + } + catch (e) + { + threw = true; + } + if (!threw || privateVariable !== undefined) + response += " accessed-source!!!"; + + source.postMessage(response, evt.origin); + } + + window.addEventListener("load", setup); + window.addEventListener("message", receiveMessage); + </script> +</head> +<body> +<h1 id="domain"></h1> +</body> +</html> |