| <!doctype html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Testing basic data channel creation</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <script> |
| var longString = "abcdefgh"; |
| for (var cptr = 0; cptr < 16; ++cptr) |
| longString += longString; |
| |
| test(() => { |
| var pc = new RTCPeerConnection(); |
| assert_throws(new TypeError, () => { pc.createDataChannel(longString); }); |
| }, "Creating data channel with very long label"); |
| |
| test(() => { |
| var pc = new RTCPeerConnection(); |
| pc.close(); |
| assert_throws("InvalidStateError", () => { pc.createDataChannel('sendDataChannel'); }); |
| }, "Creating data channel after closing the connection"); |
| |
| function testWrongDataChannelInit(init, title) |
| { |
| return test(() => { |
| var pc = new RTCPeerConnection(); |
| assert_throws(new TypeError, () => { pc.createDataChannel('sendDataChannel', init); }); |
| }, "Wrong data channel init: " + title); |
| } |
| |
| function testRightDataChannelInit(init, title) |
| { |
| return test(() => { |
| var pc = new RTCPeerConnection(); |
| channel = pc.createDataChannel('sendDataChannel', init); |
| |
| if (!init) |
| init = { }; |
| if (init.ordered === undefined) |
| init.ordered = true; |
| if (init.maxPacketLifeTime === undefined) |
| init.maxPacketLifeTime = null; |
| if (init.maxRetransmits === undefined) |
| init.maxRetransmits = null; |
| if (init.protocol === undefined) |
| init.protocol = ""; |
| if (init.negotiated === undefined) |
| init.negotiated = false; |
| if (init.id === undefined) |
| init.id = null; |
| |
| assert_equals(channel.ordered, init.ordered, "ordered"); |
| assert_equals(channel.maxPacketLifeTime, init.maxPacketLifeTime, "maxPacketLifeTime"); |
| assert_equals(channel.maxRetransmitTime, init.maxRetransmitTime, "maxRetransmitTime"); |
| assert_equals(channel.maxRetransmits, init.maxRetransmits, "maxRetransmits"); |
| assert_equals(channel.protocol, init.protocol, "protocol"); |
| assert_equals(channel.negotiated, init.negotiated, "negotiated"); |
| assert_equals(channel.id, init.id, "id"); |
| }, "Right data channel init: " + title); |
| } |
| |
| testWrongDataChannelInit({negotiated: false, protocol: longString}, "long protocol"); |
| testWrongDataChannelInit({id: 65535}, "long id"); |
| testWrongDataChannelInit({maxPacketLifeTime: 1, maxRetransmits: 1}, "maxPacketLifeTime and maxRetransmits"); |
| |
| testRightDataChannelInit({ordered: true, maxRetransmit: 11, protocol: "whatever", negotiated: false, id: 1 }, "ordered init"); |
| testRightDataChannelInit({ordered: false, maxPacketLifeTime: 10, protocol: "whatever", negotiated: false, id: 2 }, "unordered init"); |
| testRightDataChannelInit({protocol: "whatever", negotiated: false, id: 123 }, "default ordered init with id"); |
| testRightDataChannelInit(undefined, "no init"); |
| testRightDataChannelInit(null, "null"); |
| </script> |
| </body> |
| </html> |