102 lines
4.1 KiB
HTML
102 lines
4.1 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
|
|
<html>
|
|
<head>
|
|
<script src="../../resources/js-test-pre.js"></script>
|
|
<script src="./resources/getUserMedia-helper.js"></script>
|
|
</head>
|
|
<body>
|
|
<p id="description"></p>
|
|
<div id="console"></div>
|
|
<script>
|
|
description("Tests MediaStream.");
|
|
|
|
var undefined;
|
|
var stream;
|
|
var newStream;
|
|
var nAudio;
|
|
var nVideo;
|
|
var idArray = new Array();
|
|
|
|
function checkIdAttribute(id) {
|
|
if (id.length != 36)
|
|
return false;
|
|
for (var i = 0; i < id.length; i++) {
|
|
charCode = id.charCodeAt(i);
|
|
if (charCode == 0x21
|
|
|| (charCode >= 0x23 && charCode <= 0x27)
|
|
|| (charCode >= 0x2A && charCode <= 0x2B)
|
|
|| (charCode >= 0x2D && charCode <= 0x2E)
|
|
|| (charCode >= 0x30 && charCode <= 0x39)
|
|
|| (charCode >= 0x41 && charCode <= 0x5A)
|
|
|| (charCode >= 0x5E && charCode <= 0x7E))
|
|
continue;
|
|
return false;
|
|
}
|
|
for (var i = 0; i < idArray.length; i++) {
|
|
if (id === idArray[i])
|
|
return false;
|
|
}
|
|
idArray.push(id);
|
|
|
|
return true;
|
|
}
|
|
|
|
function gotStream(s) {
|
|
localStream = s;
|
|
testPassed('Got local stream.');
|
|
shouldBe('localStream.getAudioTracks().length', '1');
|
|
shouldBe('localStream.getVideoTracks().length', '1');
|
|
|
|
shouldBeTrue("typeof MediaStream === 'function'");
|
|
shouldBeTrue('checkIdAttribute(localStream.id)');
|
|
testConstructor(localStream);
|
|
}
|
|
|
|
function testConstructor(s) {
|
|
stream = s;
|
|
shouldThrow('new MediaStream(document)');
|
|
shouldThrow('new MediaStream([document])');
|
|
shouldThrow('new MediaStream([stream.getAudioTracks()[0], document])');
|
|
shouldThrow('new MediaStream([null])');
|
|
shouldThrow('new MediaStream([undefined])');
|
|
shouldThrow('new MediaStream(null)');
|
|
shouldThrow('new MediaStream(undefined)');
|
|
|
|
verifyStream("new MediaStream()", 0, 0);
|
|
verifyStream("new MediaStream([])", 0, 0);
|
|
|
|
verifyStream("new MediaStream(stream)", s.getAudioTracks().length, s.getVideoTracks().length);
|
|
|
|
verifyStream("new MediaStream([stream.getAudioTracks()[0]])", 1, 0);
|
|
verifyStream("new MediaStream([stream.getVideoTracks()[0]])", 0, 1);
|
|
verifyStream("new MediaStream([stream.getAudioTracks()[0], stream.getVideoTracks()[0]])", 1, 1);
|
|
verifyStream("new MediaStream([stream.getVideoTracks()[0], stream.getAudioTracks()[0], stream.getVideoTracks()[0]])", 1, 1);
|
|
|
|
finishJSTest();
|
|
}
|
|
|
|
function verifyStream(script, numAudioTracks, numVideoTracks) {
|
|
debug("<br>*** testing \"" + script + "\"");
|
|
newStream = eval(script);
|
|
nAudio = numAudioTracks;
|
|
nVideo = numVideoTracks;
|
|
|
|
testPassed('Stream constructed');
|
|
shouldBeNonNull(newStream);
|
|
shouldBeDefined(newStream);
|
|
shouldBeEqualToString("newStream.constructor.toString()", "function MediaStream() {\n [native code]\n}");
|
|
shouldBe('newStream.getAudioTracks().length', 'nAudio');
|
|
shouldBe('newStream.getVideoTracks().length', 'nVideo');
|
|
|
|
shouldBeTrue('checkIdAttribute(newStream.id)');
|
|
}
|
|
|
|
getUserMedia("allow", {video:true, audio:true}, gotStream);
|
|
|
|
window.jsTestIsAsync = true;
|
|
window.successfullyParsed = true;
|
|
</script>
|
|
<script src="../../resources/js-test-post.js"></script>
|
|
</body>
|
|
</html>
|