summaryrefslogtreecommitdiffstats
path: root/dom/tests/browser/file_postMessage_parent.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 19:33:14 +0000
commit36d22d82aa202bb199967e9512281e9a53db42c9 (patch)
tree105e8c98ddea1c1e4784a60a5a6410fa416be2de /dom/tests/browser/file_postMessage_parent.html
parentInitial commit. (diff)
downloadfirefox-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/browser/file_postMessage_parent.html')
-rw-r--r--dom/tests/browser/file_postMessage_parent.html48
1 files changed, 48 insertions, 0 deletions
diff --git a/dom/tests/browser/file_postMessage_parent.html b/dom/tests/browser/file_postMessage_parent.html
new file mode 100644
index 0000000000..f9aa63a8c7
--- /dev/null
+++ b/dom/tests/browser/file_postMessage_parent.html
@@ -0,0 +1,48 @@
+<!doctype html>
+<script>
+ dump("Content running top level script " + window.location.href + "\n");
+
+ var winID = SpecialPowers.wrap(this).windowGlobalChild.innerWindowId;
+
+ var observer = {
+ observe(subject, topic) {
+ var currID = SpecialPowers.wrap(subject).QueryInterface(SpecialPowers.Ci.nsISupportsPRUint64).data;
+ if (currID != winID) {
+ return;
+ }
+ // We should be able to wrap the inner window when the outer
+ // window has navigated out of process.
+ SpecialPowers.Cu.getGlobalForObject({});
+
+ SpecialPowers.removeObserver(observer, "inner-window-nuked");
+ }
+ };
+ SpecialPowers.addObserver(observer, "inner-window-nuked");
+
+ // Unfortunately, we don't currently fire the onload event on a remote iframe,
+ // so we can't listen for the load event directly on the iframe. Instead, we
+ // postMessage from the iframe when the load event would be fired.
+ window.addEventListener("load", function onload() {
+ dump("Content got load of " + window.location.href + "\n");
+ if (window.parent) {
+ window.parent.postMessage({
+ event: "load",
+ location: window.location.href,
+ }, "*");
+ }
+
+ let h1 = document.createElement("h1");
+ h1.textContent = window.location.href;
+ document.body.appendChild(h1);
+ }, { once: true });
+
+ // In addition, we listen to the message event to trigger navigations of
+ // ourself when requested, as we don't fully support our embedder triggering
+ // us being navigated yet for Totally Not Buggy Reasons.
+ window.addEventListener("message", function onmessage(event) {
+ dump("Content got event " + window.location.href + " " + JSON.stringify(event.data) + "\n");
+ if (event.data.action === "navigate") {
+ window.location = event.data.location;
+ }
+ });
+</script>