Index: third_party/WebKit/LayoutTests/broadcastchannel/interface.html |
diff --git a/third_party/WebKit/LayoutTests/broadcastchannel/interface.html b/third_party/WebKit/LayoutTests/broadcastchannel/interface.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a928aed10137a41a1e618dbbc225510304787ca6 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/broadcastchannel/interface.html |
@@ -0,0 +1,73 @@ |
+<!DOCTYPE html> |
+<meta charset=utf-8> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
+<script> |
+ |
+test(() => assert_throws(new TypeError(), () => new BroadcastChannel()), |
+ 'Should throw if no name is provided'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(null); |
+ assert_equals(c.name, 'null'); |
+ }, 'Null name should not throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(undefined); |
+ assert_equals(c.name, 'undefined'); |
+ }, 'Undefined name should not throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel('fooBar'); |
+ assert_equals(c.name, 'fooBar'); |
+ }, 'Non-empty name should not throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(123); |
+ assert_equals(c.name, '123'); |
+ }, 'Non-string name should not throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ assert_throws(new TypeError(), () => c.postMessage()); |
+ }, 'postMessage without parameters should throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ c.postMessage(null); |
+ }, 'postMessage with null should not throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ c.close(); |
+ }, 'close should not throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ c.close(); |
+ c.close(); |
+ }, 'close should not throw when called multiple times'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ c.close(); |
+ assert_throws('InvalidStateError', () => c.postMessage('')); |
+ }, 'postMessage after close should throw'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ assert_not_equals(c.onmessage, undefined); |
+ }, 'BroadcastChannel should have an onmessage event'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ assert_throws('DataCloneError', () => c.postMessage(Symbol())); |
+ }, 'postMessage should throw with uncloneable data'); |
+ |
+test(() => { |
+ let c = new BroadcastChannel(''); |
+ c.close(); |
+ assert_throws('InvalidStateError', () => c.postMessage(Symbol())); |
+ }, 'postMessage should throw InvalidStateError after close, even with uncloneable data'); |
+ |
+</script> |