tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 1 | <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| 2 | <html> |
| 3 | <head> |
| 4 | <link rel="stylesheet" href="../js/resources/js-test-style.css"> |
mark.lam@apple.com | 82bfeb6 | 2013-09-08 00:09:19 +0000 | [diff] [blame^] | 5 | <script src="../../resources/js-test-pre.js"></script> |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 6 | </head> |
| 7 | <body> |
| 8 | <p id="description"></p> |
| 9 | <div id="console"></div> |
| 10 | <script> |
| 11 | description("Tests MediaStreamTrack callbacks."); |
| 12 | |
| 13 | // Note that the below behaviour doesn't reflect how it works outside of LayoutTests. |
| 14 | // The underlying mock is modified to trigger the events when certain functions are called. |
| 15 | // This modified behaviour allows us to test the MediaStreamTrack class properly. |
| 16 | |
| 17 | var stream; |
| 18 | var track; |
| 19 | |
| 20 | function error() { |
| 21 | testFailed('Stream generation failed.'); |
| 22 | finishJSTest(); |
| 23 | } |
| 24 | |
| 25 | function getUserMedia(constraints, callback) { |
| 26 | try { |
| 27 | navigator.webkitGetUserMedia(constraints, callback, error); |
| 28 | } catch (e) { |
| 29 | testFailed('webkitGetUserMedia threw exception :' + e); |
| 30 | finishJSTest(); |
| 31 | } |
| 32 | } |
| 33 | |
| 34 | function onTrackEnded() { |
| 35 | testPassed('Track onended callback succeeded.'); |
| 36 | |
tommyw@google.com | d1a9a21 | 2013-01-16 09:34:29 +0000 | [diff] [blame] | 37 | shouldBeEqualToString('track.readyState', 'ended'); |
| 38 | |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 39 | finishJSTest(); |
| 40 | } |
| 41 | |
| 42 | function onTrackUnmute() { |
| 43 | testPassed('Track onunmute callback succeeded.'); |
| 44 | |
tommyw@google.com | d1a9a21 | 2013-01-16 09:34:29 +0000 | [diff] [blame] | 45 | shouldBeEqualToString('track.readyState', 'live'); |
| 46 | |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 47 | stream.stop(); |
| 48 | } |
| 49 | |
| 50 | function onTrackMute() { |
| 51 | testPassed('Track onmute callback succeeded.'); |
| 52 | |
tommyw@google.com | d1a9a21 | 2013-01-16 09:34:29 +0000 | [diff] [blame] | 53 | shouldBeEqualToString('track.readyState', 'muted'); |
| 54 | |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 55 | track.enabled = true; |
| 56 | } |
| 57 | |
| 58 | function gotStream(s) { |
| 59 | testPassed('getUserMedia succeeded.'); |
| 60 | |
| 61 | stream = s; |
tommyw@google.com | fd01ce1 | 2013-01-14 13:31:01 +0000 | [diff] [blame] | 62 | track = stream.getVideoTracks()[0]; |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 63 | |
tommyw@google.com | d1a9a21 | 2013-01-16 09:34:29 +0000 | [diff] [blame] | 64 | shouldBeEqualToString('track.readyState', 'live'); |
| 65 | |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 66 | track.onunmute = onTrackUnmute; |
| 67 | track.onmute = onTrackMute; |
| 68 | track.onended = onTrackEnded; |
| 69 | |
| 70 | track.enabled = false; |
| 71 | } |
| 72 | |
| 73 | getUserMedia({audio:true, video:true}, gotStream); |
| 74 | |
| 75 | window.jsTestIsAsync = true; |
| 76 | window.successfullyParsed = true; |
| 77 | </script> |
mark.lam@apple.com | 82bfeb6 | 2013-09-08 00:09:19 +0000 | [diff] [blame^] | 78 | <script src="../../resources/js-test-post.js"></script> |
tommyw@google.com | dbbc75e | 2012-07-25 16:52:56 +0000 | [diff] [blame] | 79 | </body> |
| 80 | </html> |