| <!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> |