From 4c54129877a3273f96f925c45f652483e830d0c0 Mon Sep 17 00:00:00 2001 From: Josh Matthews Date: Tue, 11 Jul 2017 10:37:58 -0400 Subject: [PATCH] Avoid panic when postMessage targets closed window. --- components/script/dom/window.rs | 3 ++- tests/wpt/mozilla/meta/MANIFEST.json | 10 ++++++++++ .../mozilla/tests/mozilla/postmessage_closed.html | 14 ++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/wpt/mozilla/tests/mozilla/postmessage_closed.html diff --git a/components/script/dom/window.rs b/components/script/dom/window.rs index 59c3c678fb3..e7f781fecee 100644 --- a/components/script/dom/window.rs +++ b/components/script/dom/window.rs @@ -2000,7 +2000,8 @@ impl Runnable for PostMessageHandler { impl Window { pub fn post_message(&self, origin: Option, data: StructuredCloneData) { let runnable = PostMessageHandler::new(self, origin, data); - let msg = CommonScriptMsg::RunnableMsg(ScriptThreadEventCategory::DomEvent, box runnable); + let runnable = self.get_runnable_wrapper().wrap_runnable(box runnable); + let msg = CommonScriptMsg::RunnableMsg(ScriptThreadEventCategory::DomEvent, runnable); // TODO(#12718): Use the "posted message task source". let _ = self.script_chan.send(msg); } diff --git a/tests/wpt/mozilla/meta/MANIFEST.json b/tests/wpt/mozilla/meta/MANIFEST.json index e9a237feec4..b974d5eee2a 100644 --- a/tests/wpt/mozilla/meta/MANIFEST.json +++ b/tests/wpt/mozilla/meta/MANIFEST.json @@ -13929,6 +13929,12 @@ {} ] ], + "mozilla/postmessage_closed.html": [ + [ + "/_mozilla/mozilla/postmessage_closed.html", + {} + ] + ], "mozilla/preferences.html": [ [ "/_mozilla/mozilla/preferences.html", @@ -26770,6 +26776,10 @@ "47c91f505cb8120a7f4b310b260f13408f06b8fc", "testharness" ], + "mozilla/postmessage_closed.html": [ + "70fc1b9dad5f611285f8f4ed04454800283e223c", + "testharness" + ], "mozilla/preferences.html": [ "7584699a938adf516ea3b7d6f22fd11d0b0942cf", "testharness" diff --git a/tests/wpt/mozilla/tests/mozilla/postmessage_closed.html b/tests/wpt/mozilla/tests/mozilla/postmessage_closed.html new file mode 100644 index 00000000000..c54e371b270 --- /dev/null +++ b/tests/wpt/mozilla/tests/mozilla/postmessage_closed.html @@ -0,0 +1,14 @@ + + +Window.postMessage does not panic when a window is closed before the message is received + + + +