blob: 238aa1ec7029561128d3ae5d6de0cf3fa9031395 [file] [log] [blame]
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +00001<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2<html>
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +00003 <head>
4 <script src="../../resources/js-test-pre.js"></script>
5 </head>
6 <body>
7 <p id="description"></p>
8 <div id="console"></div>
9 <script>
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000010 description("Tests MediaStreamTrack::onended callback.");
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000011
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000012 function error() {
13 testFailed('Stream generation failed.');
14 finishJSTest();
15 }
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000016
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000017 function getUserMedia(dictionary, callback) {
18 try {
19 navigator.webkitGetUserMedia(dictionary, callback, error);
20 } catch (e) {
21 testFailed('webkitGetUserMedia threw exception :' + e);
22 finishJSTest();
23 }
24 }
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000025
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000026 var stream;
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000027
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000028 function streamEnded2() {
29 debug("");
30 testPassed('streamEnded2 was called.');
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000031 shouldBeTrue('track.readyState == "ended"');
32 shouldBeTrue('trackClone.readyState == "ended"');
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000033 finishJSTest();
34 }
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000035
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000036 function gotStream2(s) {
37 debug("");
38 testPassed('gotStream2 was called.');
wenson_hsieh@apple.com578f29c2015-11-16 22:04:32 +000039 stream = new MediaStream(s);
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000040 track = stream.getAudioTracks()[0];
41 trackClone = track.clone();
42 shouldBeFalse('track.readyState == "ended"');
43 shouldBeFalse('trackClone.readyState == "ended"');
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000044 try {
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000045 trackClone.onended = streamEnded2;
46 track.stop();
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000047 } catch (e) {
48 testFailed('MediaStream threw exception :' + e);
49 finishJSTest();
50 }
51 }
commit-queue@webkit.org42466402013-09-11 22:32:26 +000052
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000053 function streamEnded() {
54 debug("");
55 testPassed('streamEnded was called.');
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000056 shouldBeTrue('track.readyState == "ended"');
57 shouldBeTrue('trackClone.readyState == "ended"');
commit-queue@webkit.org42466402013-09-11 22:32:26 +000058
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000059 getUserMedia({audio:true, video:true}, gotStream2);
60 }
commit-queue@webkit.org42466402013-09-11 22:32:26 +000061
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000062 function gotStream(s) {
63 debug("");
64 testPassed('gotStream was called.');
65 stream = s;
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000066 // A second track is required as calling stop will not fire the ended
67 // event on the object it was called.
68 track = stream.getAudioTracks()[0];
69 trackClone = track.clone();
70 shouldBeFalse('track.readyState == "ended"');
71 shouldBeFalse('trackClone.readyState == "ended"');
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000072 try {
lauro.neto@openbossa.org1aa1edc2013-12-02 17:20:52 +000073 trackClone.onended = streamEnded;
74 track.stop();
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000075 } catch (e) {
76 testFailed('MediaStream threw exception :' + e);
77 finishJSTest();
78 }
79 }
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000080
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000081 getUserMedia({audio:true, video:true}, gotStream);
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000082
commit-queue@webkit.org7796bc42013-11-09 04:17:42 +000083 window.jsTestIsAsync = true;
84 window.successfullyParsed = true;
85 </script>
86 <script src="../../resources/js-test-post.js"></script>
87 </body>
eric.carlson@apple.com1d6ed972013-09-07 15:34:21 +000088</html>