blob: 61a680bdca2276ed2f1ad1e63c87ea96bc6323bf [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
<script>
description("Tests RTCDataChannel.");
var pc = null;
var dc = null;
var data;
var array;
function dc_onclose() {
testPassed("dc_onclose was called");
shouldBe("dc.readyState", "'closed'");
finishJSTest();
}
function dc_onmessage_arraybufferview(e) {
testPassed("dc_onmessage_arraybufferview was called");
data = e.data;
shouldBe("data.byteLength", "2");
array = new Int8Array(e.data);
shouldBe("array[0]", "11");
shouldBe("array[1]", "13");
dc.onclose = dc_onclose;
dc.close();
}
function dc_onmessage_arraybuffer(e) {
testPassed("dc_onmessage_arraybuffer was called");
data = e.data;
shouldBe("data.byteLength", "2");
array = new Int8Array(e.data);
shouldBe("array[0]", "17");
shouldBe("array[1]", "19");
array[0] = 11;
array[1] = 13;
dc.onmessage = dc_onmessage_arraybufferview;
shouldNotThrow("dc.send(array);");
}
function dc_onmessage_string(e) {
testPassed("dc_onmessage_string was called");
data = e.data;
shouldBe("data", "'xyzzy'");
dc.binaryType = "arraybuffer";
buffer = new ArrayBuffer(2);
var array = new Int8Array(buffer);
array[0] = 17;
array[1] = 19;
dc.onmessage = dc_onmessage_arraybuffer;
shouldNotThrow("dc.send(buffer);");
}
function dc_onopen() {
testPassed("dc_onopen was called");
shouldBe("dc.readyState", "'open'");
shouldBe("dc.label", "'label'");
dc.onmessage = dc_onmessage_string;
shouldNotThrow("dc.send('xyzzy');");
shouldThrow("dc.send(null);");
shouldThrow("dc.send(undefined);");
}
function pc_ondatachannel(e) {
testPassed("pc_ondatachannel was called");
}
function pc_onicechange() {
if (pc.iceConnectionState === "completed") {
testPassed("pc is connected");
shouldNotThrow('dc = pc.createDataChannel("label");');
shouldBe("dc.readyState", "'connecting'");
dc.onopen = dc_onopen;
}
}
pc = new RTCPeerConnection({iceServers:[{urls:'stun:foo.com'}]});
shouldThrow('dc = pc.createDataChannel("label", {maxRetransmitTime:0, maxRetransmits:0});');
shouldNotThrow('dc = pc.createDataChannel("label1");');
shouldNotThrow('dc = pc.createDataChannel("label2", {});');
shouldNotThrow('dc = pc.createDataChannel("label3", {ordered:true});');
shouldNotThrow('dc = pc.createDataChannel("label3", {ordered:false});');
shouldNotThrow('dc = pc.createDataChannel("label3", {maxRetransmits:0});');
shouldNotThrow('dc = pc.createDataChannel("label3", {maxRetransmitTime:0});');
pc = new RTCPeerConnection({iceServers:[{urls:'stun:foo.com'}]});
pc.oniceconnectionstatechange = pc_onicechange;
pc.ondatachannel = pc_ondatachannel;
window.jsTestIsAsync = true;
window.successfullyParsed = true;
setTimeout(function() {
testFailed("Test timed out");
finishJSTest();
}, 2000);
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>