blob: 067795c1633ad2311805f8982cfe6d3cfd81de15 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<script>
var mediaStream = null;
var mediaStreamTrack = null;
var timer = null;
window.jsTestIsAsync = true;
description("This tests the constructor for the MediaStreamTrackEvent DOM class.");
function endTest()
{
clearTimeout(timer);
finishJSTest();
}
function error()
{
testFailed('Stream generation failed.');
endTest();
}
function getUserMedia(constraints, callback)
{
try {
navigator.webkitGetUserMedia(constraints, callback, error);
} catch (e) {
testFailed('webkitGetUserMedia threw exception :' + e);
endTest();
}
}
function testMediaStreamTrackEvent()
{
debug("<br>*** No initializer passed ***");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent').bubbles", "false");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent').cancelable", "false");
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent').track");
debug("<br>*** Bubbles and cancelable true, track is missing ***");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true }).bubbles", "true");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true }).cancelable", "true");
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true }).track");
debug("<br>*** Bubbles and cancelable true, invalid track ***");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: MediaStreamTrack }).bubbles", "true");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: MediaStreamTrack }).cancelable", "true");
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: MediaStreamTrack }).track");
debug("<br>*** Initialize 'track' with a invalid values ***");
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: 10 }).track");
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: \'string\' }).track");
emptyObject = { };
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: emptyObject }).track");
shouldBeNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: document }).track");
debug("<br>*** Bubbles and cancelable true, valid track ***");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: mediaStreamTrack }).bubbles", "true");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { bubbles: true, cancelable: true, track: mediaStreamTrack }).cancelable", "true");
debug("<br>*** Initialize 'track' with valid track object ***");
shouldBeNonNull("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: mediaStreamTrack }).track");
shouldBe("new MediaStreamTrackEvent('MediaStreamTrackEvent', { track: mediaStreamTrack }).track", "mediaStreamTrack");
debug("");
endTest();
}
function gotStream(stream)
{
clearTimeout(timer);
debug("<br>*** getUserMedia() succeeded, test stream ***");
mediaStream = stream;
shouldBeNonNull("mediaStream");
shouldBeNonNull("mediaStream.getVideoTracks()[0]");
mediaStreamTrack = mediaStream.getVideoTracks()[0];
testMediaStreamTrackEvent();
}
function primeTimeout(msg)
{
clearTimeout(timer);
timer = setTimeout(function() { testFailed(msg); endTest() }, 4000);
}
function test()
{
primeTimeout("Timeout waiting for getUserMedia()");
shouldNotThrow('getUserMedia({audio:true, video:true}, gotStream)');
}
</script>
<script src="../../resources/js-test-post.js"></script>
<body onload="test()">
</body>
</html>