Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(23)

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/webmessaging/message-channels/close.html

Issue 2558423002: Import wpt/webmessaging tests (Closed)
Patch Set: rebase again Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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>

Powered by Google App Engine
This is Rietveld 408576698