eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 1 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| 2 | <html> |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 3 | <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.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 10 | description("Tests MediaStreamTrack::onended callback."); |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 11 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 12 | function error() { |
| 13 | testFailed('Stream generation failed.'); |
| 14 | finishJSTest(); |
| 15 | } |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 16 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 17 | 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.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 25 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 26 | var stream; |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 27 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 28 | function streamEnded2() { |
| 29 | debug(""); |
| 30 | testPassed('streamEnded2 was called.'); |
lauro.neto@openbossa.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 31 | shouldBeTrue('track.readyState == "ended"'); |
| 32 | shouldBeTrue('trackClone.readyState == "ended"'); |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 33 | finishJSTest(); |
| 34 | } |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 35 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 36 | function gotStream2(s) { |
| 37 | debug(""); |
| 38 | testPassed('gotStream2 was called.'); |
wenson_hsieh@apple.com | 578f29c | 2015-11-16 22:04:32 +0000 | [diff] [blame] | 39 | stream = new MediaStream(s); |
lauro.neto@openbossa.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 40 | track = stream.getAudioTracks()[0]; |
| 41 | trackClone = track.clone(); |
| 42 | shouldBeFalse('track.readyState == "ended"'); |
| 43 | shouldBeFalse('trackClone.readyState == "ended"'); |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 44 | try { |
lauro.neto@openbossa.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 45 | trackClone.onended = streamEnded2; |
| 46 | track.stop(); |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 47 | } catch (e) { |
| 48 | testFailed('MediaStream threw exception :' + e); |
| 49 | finishJSTest(); |
| 50 | } |
| 51 | } |
commit-queue@webkit.org | 4246640 | 2013-09-11 22:32:26 +0000 | [diff] [blame] | 52 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 53 | function streamEnded() { |
| 54 | debug(""); |
| 55 | testPassed('streamEnded was called.'); |
lauro.neto@openbossa.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 56 | shouldBeTrue('track.readyState == "ended"'); |
| 57 | shouldBeTrue('trackClone.readyState == "ended"'); |
commit-queue@webkit.org | 4246640 | 2013-09-11 22:32:26 +0000 | [diff] [blame] | 58 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 59 | getUserMedia({audio:true, video:true}, gotStream2); |
| 60 | } |
commit-queue@webkit.org | 4246640 | 2013-09-11 22:32:26 +0000 | [diff] [blame] | 61 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 62 | function gotStream(s) { |
| 63 | debug(""); |
| 64 | testPassed('gotStream was called.'); |
| 65 | stream = s; |
lauro.neto@openbossa.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 66 | // 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.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 72 | try { |
lauro.neto@openbossa.org | 1aa1edc | 2013-12-02 17:20:52 +0000 | [diff] [blame] | 73 | trackClone.onended = streamEnded; |
| 74 | track.stop(); |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 75 | } catch (e) { |
| 76 | testFailed('MediaStream threw exception :' + e); |
| 77 | finishJSTest(); |
| 78 | } |
| 79 | } |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 80 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 81 | getUserMedia({audio:true, video:true}, gotStream); |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 82 | |
commit-queue@webkit.org | 7796bc4 | 2013-11-09 04:17:42 +0000 | [diff] [blame] | 83 | window.jsTestIsAsync = true; |
| 84 | window.successfullyParsed = true; |
| 85 | </script> |
| 86 | <script src="../../resources/js-test-post.js"></script> |
| 87 | </body> |
eric.carlson@apple.com | 1d6ed97 | 2013-09-07 15:34:21 +0000 | [diff] [blame] | 88 | </html> |