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 |