OLD | NEW |
1 <!doctype HTML> | 1 <!doctype HTML> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title>moving <source> element test</title> | 4 <title>moving <source> element test</title> |
| 5 <!-- TODO(philipj): Convert test to testharness.js. crbug.com/588956 |
| 6 (Please avoid writing new tests using video-test.js) --> |
5 <script src=video-test.js></script> | 7 <script src=video-test.js></script> |
6 <script src=media-file.js></script> | 8 <script src=media-file.js></script> |
7 <script> | 9 <script> |
8 | 10 |
9 var testInfo = | 11 var testInfo = |
10 { | 12 { |
11 current : -1, | 13 current : -1, |
12 tests : | 14 tests : |
13 [ | 15 [ |
14 { fcn : moveToEnd, errorCount : 0, moved : null, done : fals
e, iteration : 1}, | 16 { fcn : moveToEnd, errorCount : 0, moved : null, done : fals
e, iteration : 1}, |
15 { fcn : moveToEnd, errorCount : 0, moved : null, done : fals
e, iteration : 2}, | 17 { fcn : moveToEnd, errorCount : 0, moved : null, done : fals
e, iteration : 2}, |
16 { fcn : moveToEnd, errorCount : 0, moved : null, done : fals
e, iteration : 3}, | 18 { fcn : moveToEnd, errorCount : 0, moved : null, done : fals
e, iteration : 3}, |
17 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 1 }, | 19 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 1 }, |
18 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 2 }, | 20 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 2 }, |
19 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 3 }, | 21 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 3 }, |
20 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 4 } | 22 { fcn : moveEarlier, errorCount : 0, moved : null, iteration
: 4 } |
21 ] | 23 ] |
22 }; | 24 }; |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 video.insertBefore(test.moved, video.firstChild); | 85 video.insertBefore(test.moved, video.firstChild); |
84 break; | 86 break; |
85 | 87 |
86 default: | 88 default: |
87 // We should never get an error for the element we moved
. | 89 // We should never get an error for the element we moved
. |
88 if (event.target == test.moved) { | 90 if (event.target == test.moved) { |
89 failTest("Error fired for <source> moved to be
ginning of list."); | 91 failTest("Error fired for <source> moved to be
ginning of list."); |
90 test.done = true; | 92 test.done = true; |
91 return; | 93 return; |
92 } else if (!event.target.nextSibling) { | 94 } else if (!event.target.nextSibling) { |
93 logResult(true, "<source> moved was not proces
sed"); | 95 logResult(true, "<source> moved was not proces
sed"); |
94 setTimeout(configureNextTest, 100); | 96 setTimeout(configureNextTest, 100); |
95 } | 97 } |
96 break; | 98 break; |
97 } | 99 } |
98 } | 100 } |
99 | 101 |
100 function moveToEnd(test, event) | 102 function moveToEnd(test, event) |
101 { | 103 { |
102 switch (++test.errorCount) | 104 switch (++test.errorCount) |
103 { | 105 { |
(...skipping 21 matching lines...) Expand all Loading... |
125 failTest("Malformed test data!"); | 127 failTest("Malformed test data!"); |
126 break; | 128 break; |
127 } | 129 } |
128 | 130 |
129 testExpected(test.moved, null, '!='); | 131 testExpected(test.moved, null, '!='); |
130 video.appendChild(test.moved); | 132 video.appendChild(test.moved); |
131 break; | 133 break; |
132 | 134 |
133 default: | 135 default: |
134 if (event.target == test.moved) { | 136 if (event.target == test.moved) { |
135 logResult(true, "<source> moved was processed
a second time."); | 137 logResult(true, "<source> moved was processed
a second time."); |
136 setTimeout(configureNextTest, 100); | 138 setTimeout(configureNextTest, 100); |
137 } else if (!event.target.nextSibling) { | 139 } else if (!event.target.nextSibling) { |
138 // We should never reach the end of the source list
since the tests stops | 140 // We should never reach the end of the source list
since the tests stops |
139 // when the error fires for the moved element. | 141 // when the error fires for the moved element. |
140 failTest("Error never fired for <source> moved
!"); | 142 failTest("Error never fired for <source> moved
!"); |
141 } | 143 } |
142 break; | 144 break; |
143 } | 145 } |
144 } | 146 } |
145 | 147 |
146 function runOneTest(evt) | 148 function runOneTest(evt) |
147 { | 149 { |
148 var test = testInfo.tests[testInfo.current]; | 150 var test = testInfo.tests[testInfo.current]; |
149 test.fcn(test, evt); | 151 test.fcn(test, evt); |
150 } | 152 } |
151 | 153 |
152 function addSource(index) | 154 function addSource(index) |
153 { | 155 { |
154 var source = document.createElement('source'); | 156 var source = document.createElement('source'); |
155 source.src = findMediaFile("video", index + "-" + Date.now()); | 157 source.src = findMediaFile("video", index + "-" + Date.now()); |
156 source.type = mimeTypeForExtension(source.src.split('.').pop()); | 158 source.type = mimeTypeForExtension(source.src.split('.').pop()); |
157 video.appendChild(source); | 159 video.appendChild(source); |
158 } | 160 } |
159 | 161 |
160 function runNextTest() | 162 function runNextTest() |
161 { | 163 { |
162 consoleWrite(""); | 164 consoleWrite(""); |
163 if (++testInfo.current >= testInfo.tests.length) { | 165 if (++testInfo.current >= testInfo.tests.length) { |
164 consoleWrite("PASS<br>"); | 166 consoleWrite("PASS<br>"); |
165 endTest(); | 167 endTest(); |
166 return; | 168 return; |
167 } | 169 } |
168 | 170 |
169 testInfo.errorCount = 0; | 171 testInfo.errorCount = 0; |
170 video = mediaElement = document.createElement('video'); | 172 video = mediaElement = document.createElement('video'); |
171 document.body.appendChild(video); | 173 document.body.appendChild(video); |
172 | 174 |
173 // Add a bunch of source elements with bogus urls because we wan
t to rearrange elements | 175 // Add a bunch of source elements with bogus urls because we wan
t to rearrange elements |
174 // after the media engine begins processing sources, and we can'
t predict the delay | 176 // after the media engine begins processing sources, and we can'
t predict the delay |
175 // between when the media element fires an 'error' event and our
handler is called, | 177 // between when the media element fires an 'error' event and our
handler is called, |
176 // but we need to guarantee that there are <source> elements tha
t haven't been processed | 178 // but we need to guarantee that there are <source> elements tha
t haven't been processed |
177 // when we run the test. | 179 // when we run the test. |
178 for (var ndx = 1; ndx <= 10; ndx++) | 180 for (var ndx = 1; ndx <= 10; ndx++) |
179 addSource(ndx); | 181 addSource(ndx); |
180 } | 182 } |
181 | 183 |
182 function configureNextTest() | 184 function configureNextTest() |
183 { | 185 { |
184 var videos = document.querySelectorAll('video'); | 186 var videos = document.querySelectorAll('video'); |
185 for (var ndx = 0; ndx < videos.length; ++ndx) | 187 for (var ndx = 0; ndx < videos.length; ++ndx) |
186 videos[ndx].parentNode.removeChild(videos[ndx]); | 188 videos[ndx].parentNode.removeChild(videos[ndx]); |
187 video = mediaElement = null; | 189 video = mediaElement = null; |
188 setTimeout(runNextTest, 100); | 190 setTimeout(runNextTest, 100); |
189 } | 191 } |
190 | 192 |
191 function setup() | 193 function setup() |
192 { | 194 { |
193 document.addEventListener("error", runOneTest, true); | 195 document.addEventListener("error", runOneTest, true); |
194 configureNextTest(); | 196 configureNextTest(); |
195 } | 197 } |
196 | 198 |
197 </script> | 199 </script> |
198 </head> | 200 </head> |
199 | 201 |
200 <body> | 202 <body> |
201 <div>Test to make sure a <source> moved after the media element be
gins processing | 203 <div>Test to make sure a <source> moved after the media element be
gins processing |
202 is handled correctly.</div> | 204 is handled correctly.</div> |
203 <script>setup()</script> | 205 <script>setup()</script> |
204 </body> | 206 </body> |
205 </html> | 207 </html> |
OLD | NEW |