blob: 79bf06eb53af4d55211cc9e06272acf7d8af61ca [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
<script src="./resources/getUserMedia-helper.js"></script>
<script>
var stream1;
var stream2;
var audioTrack;
var videoTrack;
var allTracks;
var id;
function tryAddTrack(stream, track)
{
try {
stream.addTrack(track);
testPassed("track added to stream.");
} catch (exception) {
testFailed("addTrack threw an exception.");
finishJSTest();
}
}
function createStreamAndAddTracks()
{
shouldBe('stream2.getTracks().length', '2');
debug('getAudioTracks(), getVideoTracks() and getTracks() must return a new sequence at every invocation');
shouldBeTrue('stream2.getAudioTracks() != stream2.getAudioTracks()');
shouldBeTrue('stream2.getVideoTracks() != stream2.getVideoTracks()');
shouldBeTrue('stream2.getTracks() != stream2.getTracks()');
audioTrack = stream1.getAudioTracks()[0];
tryAddTrack(stream2, audioTrack);
shouldBe('stream2.getAudioTracks().length', '2');
shouldBe('stream2.getVideoTracks().length', '1');
shouldBe('stream2.getTracks().length', '3');
videoTrack = stream1.getVideoTracks()[0];
tryAddTrack(stream2, videoTrack);
shouldBe('stream2.getAudioTracks().length', '2');
shouldBe('stream2.getVideoTracks().length', '2');
allTracks = stream2.getTracks();
shouldBe('allTracks.length', '4');
allTracks.forEach(function (track) {
id = track.id;
shouldBeNonNull('stream2.getTrackById(id)');
})
shouldBeNull('stream2.getTrackById("foo-id")');
finishJSTest();
}
function gotStream2(s)
{
stream2 = s;
createStreamAndAddTracks();
}
function gotStream1(s)
{
stream1 = s;
shouldBe('stream1.getTracks().length', '2');
getUserMedia("allow", {audio:true, video:true}, gotStream2);
}
function startMedia()
{
description("Test the different methods to get tracks from a MediaStream.");
getUserMedia("allow", {audio:true, video:true}, gotStream1);
}
window.jsTestIsAsync = true;
window.successfullyParsed = true;
</script>
<script src="../../resources/js-test-post.js"></script>
</head>
<body onload="startMedia()">
<p id="description"></p>
<div id="console"></div>
</body>
</html>