Index: LayoutTests/fast/events/message-port-start-and-close-different-microtask.html |
diff --git a/LayoutTests/fast/events/message-port-close.html b/LayoutTests/fast/events/message-port-start-and-close-different-microtask.html |
similarity index 50% |
copy from LayoutTests/fast/events/message-port-close.html |
copy to LayoutTests/fast/events/message-port-start-and-close-different-microtask.html |
index 0dabcd830f60b1ba2cd64a5034db250616fb1fd5..ca440fe80c38464ffd3a89f64068ff691651d2f5 100644 |
--- a/LayoutTests/fast/events/message-port-close.html |
+++ b/LayoutTests/fast/events/message-port-start-and-close-different-microtask.html |
@@ -1,6 +1,6 @@ |
<body> |
-<p>Test Closed MessagePort Whether Receive Message Or Not.</p> |
-<p>Should be a START message, followed with DONE.</p> |
+<p>Test whether opening and closing a messageport in different microtasks correctly receives an in-flight message.</p> |
+<p>Should be a START message, followed by a HELLO message then DONE.</p> |
<pre id=log></pre> |
<script> |
function log(message) |
@@ -16,13 +16,21 @@ if (window.testRunner) { |
log("START"); |
var channel = new MessageChannel; |
-channel.port1.onmessage = function(evt) { |
- log("Closed port receiving: FAIL. Got Message: " + evt.data + " after close"); |
-} |
-channel.port1.close(); |
-channel.port2.postMessage("This message can't be received"); |
+channel.port2.postMessage("HELLO"); |
+openThenPostClose(); |
done(); |
+function openThenPostClose() { |
+ setTimeout(function() { |
+ channel.port1.onmessage = function(evt) { |
+ log("PASS. Got Message: " + evt.data + " before close"); |
+ } |
+ setTimeout(function() { |
+ channel.port1.close(); |
+ }, 0); |
+ }, 0); |
+} |
+ |
function done() { |
// Wait a short period of time to ensure no messages come in from previous tests. |
setTimeout(function() { |