| Index: third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html
|
| diff --git a/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..cb05e2ca068032c43a41c5554a4a31a6eab93126
|
| --- /dev/null
|
| +++ b/third_party/WebKit/LayoutTests/external/wpt/webrtc/RTCPeerConnection-createDataChannel.html
|
| @@ -0,0 +1,128 @@
|
| +<!doctype html>
|
| +<meta charset=utf-8>
|
| +<title>RTCPeerConnection createDataChannel method</title>
|
| +<script src=/resources/testharness.js></script>
|
| +<script src=/resources/testharnessreport.js></script>
|
| +<script>
|
| +'use strict';
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + assert_equals(pc.createDataChannel.length, 1);
|
| + assert_throws(new TypeError, () => pc.createDataChannel());
|
| +}, 'createDataChannel required arguments');
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + pc.close();
|
| + assert_equals(pc.signalingState, 'closed', 'signaling state');
|
| + assert_throws('InvalidStateError', () => pc.createDataChannel(''));
|
| +}, 'createDataChannel with closed connection');
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('');
|
| + assert_true(channel instanceof RTCDataChannel, 'is RTCDataChannel');
|
| + assert_equals(channel.label, '', 'label');
|
| + assert_equals(channel.ordered, true, 'ordered');
|
| + assert_equals(channel.maxPacketLifeTime, null, 'maxPacketLifeTime');
|
| + assert_equals(channel.maxRetransmits, null, 'maxRetransmits');
|
| + assert_equals(channel.protocol, '', 'protocol');
|
| + assert_equals(channel.negotiated, false, 'negotiated');
|
| + // Initial id value is not defined.
|
| + assert_equals(typeof channel.id, 'number', 'id type');
|
| + assert_equals(channel.priority, 'low', 'priority');
|
| +}, 'createDataChannel defaults');
|
| +
|
| +const labels = [
|
| + ['"foo"', 'foo', 'foo'],
|
| + ['null', null, 'null'],
|
| + ['undefined', undefined, 'undefined'],
|
| + ['lone surrogate', '\uD800', '\uFFFD'],
|
| +];
|
| +for (const [description, label, expected] of labels) {
|
| + test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel(label);
|
| + assert_equals(channel.label, expected);
|
| + }, 'createDataChannel with label ' + description);
|
| +}
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('', { ordered: false });
|
| + assert_equals(channel.ordered, false);
|
| +}, 'createDataChannel with ordered false');
|
| +
|
| +// true as the default value of a boolean is confusing because null is converted
|
| +// to false while undefined is converted to true.
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel1 = pc.createDataChannel('', { ordered: null });
|
| + assert_equals(channel1.ordered, false);
|
| + const channel2 = pc.createDataChannel('', { ordered: undefined });
|
| + assert_equals(channel2.ordered, true);
|
| +}, 'createDataChannel with ordered null/undefined');
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('', { maxPacketLifeTime: 0 });
|
| + assert_equals(channel.maxPacketLifeTime, 0);
|
| +}, 'createDataChannel with maxPacketLifeTime 0');
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('', { maxRetransmits: 0 });
|
| + assert_equals(channel.maxRetransmits, 0);
|
| +}, 'createDataChannel with maxRetransmits 0');
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + assert_throws('SyntaxError', () => pc.createDataChannel('', {
|
| + maxPacketLifeTime: 0,
|
| + maxRetransmits: 0
|
| + }));
|
| +}, 'createDataChannel with both maxPacketLifeTime and maxRetransmits');
|
| +
|
| +const protocols = [
|
| + ['"foo"', 'foo', 'foo'],
|
| + ['null', null, 'null'],
|
| + ['undefined', undefined, ''],
|
| + ['lone surrogate', '\uD800', '\uFFFD'],
|
| +];
|
| +for (const [description, protocol, expected] of protocols) {
|
| + test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('', { protocol: protocol });
|
| + assert_equals(channel.protocol, expected);
|
| + }, 'createDataChannel with protocol ' + description);
|
| +}
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('', { negotiated: true });
|
| + assert_equals(channel.negotiated, true);
|
| +}, 'createDataChannel with negotiated true');
|
| +
|
| +// |id| is an unsigned short using [EnforceRange]. Additionally,
|
| +// https://w3c.github.io/webrtc-pc/#dom-rtcpeerconnection-createdatachannel
|
| +// says: "If id is equal to 65535, which is greater than the maximum allowed ID
|
| +// of 65534 but still qualifies as an unsigned short, throw a TypeError."
|
| +for (const id of [-1, 0, 1, 65534, 65535, 65536]) {
|
| + test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + if (id >= 0 && id <= 65534) {
|
| + const channel = pc.createDataChannel('', { id: id });
|
| + assert_equals(channel.id, id);
|
| + } else {
|
| + assert_throws(new TypeError, () => pc.createDataChannel('', { id: id }));
|
| + }
|
| + }, 'createDataChannel with id ' + id);
|
| +}
|
| +
|
| +test(() => {
|
| + const pc = new RTCPeerConnection;
|
| + const channel = pc.createDataChannel('', { priority: "high" });
|
| + assert_equals(channel.priority, "high");
|
| +}, 'createDataChannel with priority "high"');
|
| +</script>
|
|
|