| OLD | NEW |
| 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| 2 <html> | 2 <html> |
| 3 <head> | 3 <head> |
| 4 <script src="../../resources/js-test.js"></script> | 4 <script src="../../resources/js-test.js"></script> |
| 5 </head> | 5 </head> |
| 6 <body> | 6 <body> |
| 7 <p id="description"></p> | 7 <p id="description"></p> |
| 8 <div id="console"></div> | 8 <div id="console"></div> |
| 9 <script> | 9 <script> |
| 10 description("Tests webkitMediaStream."); | 10 description("Tests MediaStream constructor."); |
| 11 | 11 |
| 12 var undefined; | 12 var undefined; |
| 13 var stream; | 13 var stream; |
| 14 var newStream; | 14 var newStream; |
| 15 var nAudio; | 15 var nAudio; |
| 16 var nVideo; | 16 var nVideo; |
| 17 var idArray = new Array(); | 17 var idArray = new Array(); |
| 18 | 18 |
| 19 function checkIdAttribute(id) { | 19 function checkIdAttribute(id) { |
| 20 if (id.length != 36) | 20 if (id.length != 36) |
| (...skipping 17 matching lines...) Expand all Loading... |
| 38 idArray.push(id); | 38 idArray.push(id); |
| 39 | 39 |
| 40 return true; | 40 return true; |
| 41 } | 41 } |
| 42 | 42 |
| 43 function error() { | 43 function error() { |
| 44 testFailed('Stream generation failed.'); | 44 testFailed('Stream generation failed.'); |
| 45 finishJSTest(); | 45 finishJSTest(); |
| 46 } | 46 } |
| 47 | 47 |
| 48 function testInterfaces() { |
| 49 debug('Interface tests.'); |
| 50 shouldBe('typeof MediaStream', "'function'"); |
| 51 shouldBe('MediaStream.length', '0'); |
| 52 shouldBe('MediaStream.name', "'MediaStream'"); |
| 53 shouldBe('Object.getPrototypeOf(MediaStream.prototype)', 'EventTarget.prototyp
e'); |
| 54 // webkitMediaStream is an alias of MediaStream |
| 55 shouldBe('window.MediaStream', 'window.webkitMediaStream'); |
| 56 } |
| 57 |
| 48 function getUserMedia(dictionary, callback) { | 58 function getUserMedia(dictionary, callback) { |
| 49 try { | 59 try { |
| 50 navigator.webkitGetUserMedia(dictionary, callback, error); | 60 navigator.webkitGetUserMedia(dictionary, callback, error); |
| 51 } catch (e) { | 61 } catch (e) { |
| 52 testFailed('webkitGetUserMedia threw exception :' + e); | 62 testFailed('webkitGetUserMedia threw exception :' + e); |
| 53 finishJSTest(); | 63 finishJSTest(); |
| 54 } | 64 } |
| 55 } | 65 } |
| 56 | 66 |
| 57 function gotStream(s) { | 67 function gotStream(s) { |
| 58 localStream = s; | 68 localStream = s; |
| 59 testPassed('Got local stream.'); | 69 debug('Got local stream.'); |
| 60 shouldBe('localStream.getAudioTracks().length', '1'); | 70 shouldBe('localStream.getAudioTracks().length', '1'); |
| 61 shouldBe('localStream.getVideoTracks().length', '1'); | 71 shouldBe('localStream.getVideoTracks().length', '1'); |
| 62 | 72 |
| 63 shouldBeTrue("typeof webkitMediaStream === 'function'"); | |
| 64 shouldBeTrue('checkIdAttribute(localStream.id)'); | 73 shouldBeTrue('checkIdAttribute(localStream.id)'); |
| 65 testConstructor(localStream); | 74 testConstructor(localStream); |
| 66 } | 75 } |
| 67 | 76 |
| 68 function testConstructor(s) { | 77 function testConstructor(s) { |
| 69 stream = s; | 78 stream = s; |
| 70 shouldThrow('new webkitMediaStream(document)'); | 79 shouldThrow('new MediaStream(document)'); |
| 71 shouldThrow('new webkitMediaStream([document])'); | 80 shouldThrow('new MediaStream([document])'); |
| 72 shouldThrow('new webkitMediaStream([stream.getAudioTracks()[0], document])')
; | 81 shouldThrow('new MediaStream([stream.getAudioTracks()[0], document])'); |
| 73 shouldThrow('new webkitMediaStream([null])'); | 82 shouldThrow('new MediaStream([null])'); |
| 74 shouldThrow('new webkitMediaStream([undefined])'); | 83 shouldThrow('new MediaStream([undefined])'); |
| 75 shouldThrow('new webkitMediaStream(null)'); | 84 shouldThrow('new MediaStream(null)'); |
| 76 shouldThrow('new webkitMediaStream(undefined)'); | 85 shouldThrow('new MediaStream(undefined)'); |
| 77 | 86 |
| 78 verifyStream(new webkitMediaStream(), 0, 0); | 87 verifyStream(new MediaStream(), 0, 0); |
| 79 verifyStream(new webkitMediaStream([]), 0, 0); | 88 verifyStream(new MediaStream([]), 0, 0); |
| 80 | 89 |
| 81 verifyStream(new webkitMediaStream(s), s.getAudioTracks().length, s.getVideo
Tracks().length); | 90 verifyStream(new MediaStream(s), s.getAudioTracks().length, s.getVideoTracks
().length); |
| 82 | 91 |
| 83 verifyStream(new webkitMediaStream([s.getAudioTracks()[0]]), 1, 0); | 92 verifyStream(new MediaStream([s.getAudioTracks()[0]]), 1, 0); |
| 84 verifyStream(new webkitMediaStream([s.getVideoTracks()[0]]), 0, 1); | 93 verifyStream(new MediaStream([s.getVideoTracks()[0]]), 0, 1); |
| 85 verifyStream(new webkitMediaStream([s.getAudioTracks()[0], s.getVideoTracks(
)[0]]), 1, 1); | 94 verifyStream(new MediaStream([s.getAudioTracks()[0], s.getVideoTracks()[0]])
, 1, 1); |
| 86 verifyStream(new webkitMediaStream([s.getVideoTracks()[0], s.getAudioTracks(
)[0], s.getVideoTracks()[0]]), 1, 1); | 95 verifyStream(new MediaStream([s.getVideoTracks()[0], s.getAudioTracks()[0],
s.getVideoTracks()[0]]), 1, 1); |
| 87 | 96 |
| 88 s.oninactive = function () { | 97 s.oninactive = function () { |
| 89 verifyStream(new webkitMediaStream([s.getAudioTracks()[0]]), 0, 0); | 98 verifyStream(new MediaStream([s.getAudioTracks()[0]]), 0, 0); |
| 90 verifyStream(new webkitMediaStream([s.getVideoTracks()[0]]), 0, 0); | 99 verifyStream(new MediaStream([s.getVideoTracks()[0]]), 0, 0); |
| 91 verifyStream(new webkitMediaStream([s.getAudioTracks()[0], s.getVideoTra
cks()[0]]), 0, 0); | 100 verifyStream(new MediaStream([s.getAudioTracks()[0], s.getVideoTracks()[
0]]), 0, 0); |
| 92 verifyStream(new webkitMediaStream(s), 0, 0); | 101 verifyStream(new MediaStream(s), 0, 0); |
| 93 | 102 |
| 94 finishJSTest(); | 103 finishJSTest(); |
| 95 }; | 104 }; |
| 96 | 105 |
| 97 s.getAudioTracks()[0].stop(); | 106 s.getAudioTracks()[0].stop(); |
| 98 s.getVideoTracks()[0].stop(); | 107 s.getVideoTracks()[0].stop(); |
| 99 } | 108 } |
| 100 | 109 |
| 101 function verifyStream(s, numAudioTracks, numVideoTracks) { | 110 function verifyStream(s, numAudioTracks, numVideoTracks) { |
| 102 newStream = s; | 111 newStream = s; |
| 103 nAudio = numAudioTracks; | 112 nAudio = numAudioTracks; |
| 104 nVideo = numVideoTracks; | 113 nVideo = numVideoTracks; |
| 105 | 114 |
| 106 testPassed('Stream constructed'); | 115 debug('Stream constructed'); |
| 107 shouldBeNonNull(newStream); | 116 shouldBeNonNull(newStream); |
| 108 shouldBeDefined(newStream); | 117 shouldBeDefined(newStream); |
| 109 shouldBe("newStream.constructor.name", "'MediaStream'"); | 118 shouldBe('newStream.constructor.name', "'MediaStream'"); |
| 110 shouldBe('newStream.getAudioTracks().length', 'nAudio'); | 119 shouldBe('newStream.getAudioTracks().length', 'nAudio'); |
| 111 shouldBe('newStream.getVideoTracks().length', 'nVideo'); | 120 shouldBe('newStream.getVideoTracks().length', 'nVideo'); |
| 112 | 121 |
| 113 if (!nAudio && !nVideo) | 122 if (!nAudio && !nVideo) |
| 114 shouldBe('newStream.active', 'false'); | 123 shouldBe('newStream.active', 'false'); |
| 115 else | 124 else |
| 116 shouldBe('newStream.active', 'true'); | 125 shouldBe('newStream.active', 'true'); |
| 117 | 126 |
| 118 shouldBeTrue('checkIdAttribute(newStream.id)'); | 127 shouldBeTrue('checkIdAttribute(newStream.id)'); |
| 119 } | 128 } |
| 120 | 129 |
| 130 testInterfaces(); |
| 121 getUserMedia({video:true, audio:true}, gotStream); | 131 getUserMedia({video:true, audio:true}, gotStream); |
| 122 | 132 |
| 123 window.jsTestIsAsync = true; | 133 window.jsTestIsAsync = true; |
| 124 window.successfullyParsed = true; | 134 window.successfullyParsed = true; |
| 125 </script> | 135 </script> |
| 126 </body> | 136 </body> |
| 127 </html> | 137 </html> |
| OLD | NEW |