| Index: third_party/WebKit/LayoutTests/external/wpt/webmessaging/message-channels/close.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/webmessaging/message-channels/close.html b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/message-channels/close.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..912aacda52ccae805625c2d9a9589c56bf2fb02c
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/webmessaging/message-channels/close.html
|
| @@ -0,0 +1,74 @@
|
| +<!DOCTYPE html>
|
| +<meta charset=utf-8>
|
| +<link rel="help" href="https://html.spec.whatwg.org/multipage/comms.html#dom-messageport-close">
|
| +<script src="/resources/testharness.js"></script>
|
| +<script src="/resources/testharnessreport.js"></script>
|
| +<script>
|
| +// How long (in ms) these tests should wait before deciding no further messages
|
| +// will be received.
|
| +const time_to_wait_for_messages = 100;
|
| +
|
| +async_test(t => {
|
| + const c = new MessageChannel();
|
| + c.port1.onmessage = t.unreached_func('Should not have delivered message');
|
| + c.port1.close();
|
| + c.port2.postMessage('TEST');
|
| + setTimeout(t.step_func_done(), time_to_wait_for_messages);
|
| + }, 'Message sent to closed port should not arrive.');
|
| +
|
| +async_test(t => {
|
| + const c = new MessageChannel();
|
| + c.port1.onmessage = t.unreached_func('Should not have delivered message');
|
| + c.port2.close();
|
| + c.port2.postMessage('TEST');
|
| + setTimeout(t.step_func_done(), time_to_wait_for_messages);
|
| + }, 'Message sent from closed port should not arrive.');
|
| +
|
| +async_test(t => {
|
| + const c = new MessageChannel();
|
| + c.port1.onmessage = t.unreached_func('Should not have delivered message');
|
| + c.port1.close();
|
| + const c2 = new MessageChannel();
|
| + c2.port1.onmessage = t.step_func(e => {
|
| + e.ports[0].postMessage('TESTMSG');
|
| + setTimeout(t.step_func_done(), time_to_wait_for_messages);
|
| + });
|
| + c2.port2.postMessage('TEST', [c.port2]);
|
| + }, 'Message sent to closed port from transferred port should not arrive.');
|
| +
|
| +async_test(t => {
|
| + const c = new MessageChannel();
|
| + c.port1.onmessage = t.unreached_func('Should not have delivered message');
|
| + c.port2.close();
|
| + const c2 = new MessageChannel();
|
| + c2.port1.onmessage = t.step_func(e => {
|
| + e.ports[0].postMessage('TESTMSG');
|
| + setTimeout(t.step_func_done(), time_to_wait_for_messages);
|
| + });
|
| + c2.port2.postMessage('TEST', [c.port2]);
|
| + }, 'Message sent from transferred closed port should not arrive.');
|
| +
|
| +async_test(t => {
|
| + const c = new MessageChannel();
|
| + let isClosed = false;
|
| + c.port1.onmessage = t.step_func_done(e => {
|
| + assert_true(isClosed);
|
| + assert_equals(e.data, 'TEST');
|
| + });
|
| + c.port2.postMessage('TEST');
|
| + c.port2.close();
|
| + isClosed = true;
|
| + }, 'Inflight messages should be delivered even when sending port is closed afterwards.');
|
| +
|
| +async_test(t => {
|
| + const c = new MessageChannel();
|
| + c.port1.onmessage = t.step_func_done(e => {
|
| + if (e.data == 'DONE') t.done();
|
| + assert_equals(e.data, 'TEST');
|
| + c.port1.close();
|
| + });
|
| + c.port2.postMessage('TEST');
|
| + c.port2.postMessage('DONE');
|
| + }, 'Close in onmessage should not cancel inflight messages.');
|
| +
|
| +</script>
|
|
|