90 lines
2.9 KiB
HTML
90 lines
2.9 KiB
HTML
<!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;
|
|
|
|
function tryAddTrack(stream, track)
|
|
{
|
|
try {
|
|
stream.addTrack(track);
|
|
} catch (exception) {
|
|
testFailed("addTrack threw an exception.");
|
|
finishJSTest();
|
|
}
|
|
}
|
|
|
|
function shouldNotFireActive()
|
|
{
|
|
testFailed("stream2 should not become active if an ended track is added");
|
|
}
|
|
|
|
function shouldFireActive()
|
|
{
|
|
debug("*** stream2 is active again");
|
|
shouldBe('stream2.active', 'true');
|
|
finishJSTest();
|
|
}
|
|
|
|
function continueTest()
|
|
{
|
|
debug("*** extract videoTrack (and verify liveness)");
|
|
videoTrack = stream1.getVideoTracks()[0];
|
|
shouldBeEqualToString('videoTrack.readyState', 'live');
|
|
|
|
debug("*** add live videoTrack to stream2");
|
|
stream2.onactive = shouldFireActive;
|
|
tryAddTrack(stream2, videoTrack);
|
|
}
|
|
|
|
function createStreamAndAddTracks()
|
|
{
|
|
debug("*** extract audioTrack");
|
|
audioTrack = stream1.getAudioTracks()[0];
|
|
debug("*** stop audioTrack");
|
|
audioTrack.stop();
|
|
shouldBeEqualToString('audioTrack.readyState', 'ended');
|
|
|
|
debug("*** construct new 'empty' stream2")
|
|
stream2 = new MediaStream();
|
|
shouldBe('stream2.getTracks().length', '0');
|
|
shouldBe('stream2.active', 'false');
|
|
|
|
debug("*** add ended audioTrack to stream2");
|
|
stream2.onactive = shouldNotFireActive;
|
|
tryAddTrack(stream2, audioTrack);
|
|
|
|
debug("*** schedule continuation of test");
|
|
setTimeout(continueTest);
|
|
}
|
|
|
|
function gotStream(s)
|
|
{
|
|
stream1 = s;
|
|
shouldBe('stream1.getAudioTracks().length', '1');
|
|
shouldBe('stream1.getVideoTracks().length', '1');
|
|
createStreamAndAddTracks();
|
|
}
|
|
|
|
function startMedia()
|
|
{
|
|
description("Test adding tracks to inactive MediaStream.");
|
|
getUserMedia("allow", {audio:true, video:true}, gotStream);
|
|
}
|
|
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>
|