111 lines
4.0 KiB
HTML
111 lines
4.0 KiB
HTML
<!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>
|