Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Side by Side Diff: content/test/data/media/mediarecorder_test.html

Issue 1464313008: MediaRecorder testing of resume functionality and more start tests (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « content/browser/media/webrtc_media_recorder_browsertest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <title>MediaStream Recoder Browser Test (w/ MediaSource)</title> 4 <title>MediaStream Recoder Browser Test (w/ MediaSource)</title>
5 </head> 5 </head>
6 <body> 6 <body>
7 <div> Record Real-Time video content browser test.</div> 7 <div> Record Real-Time video content browser test.</div>
8 <video id="video" autoplay></video> 8 <video id="video" autoplay></video>
9 </body> 9 </body>
10 <script type="text/javascript" src="mediarecorder_test_utils.js"></script> 10 <script type="text/javascript" src="mediarecorder_test_utils.js"></script>
(...skipping 24 matching lines...) Expand all
35 console.log('Starting MediaRecorder instance'); 35 console.log('Starting MediaRecorder instance');
36 document.getElementById("video").src = URL.createObjectURL(stream); 36 document.getElementById("video").src = URL.createObjectURL(stream);
37 var recorder = new MediaRecorder(stream, mimeType); 37 var recorder = new MediaRecorder(stream, mimeType);
38 console.log('Recorder object created.'); 38 console.log('Recorder object created.');
39 recorder.start(slice); 39 recorder.start(slice);
40 console.log('Recorder started with time slice', slice); 40 console.log('Recorder started with time slice', slice);
41 resolve(recorder); 41 resolve(recorder);
42 }); 42 });
43 } 43 }
44 44
45 function createMediaRecorder(stream, mimeType) {
46 return new Promise(function(resolve, reject) {
47 console.log('Starting MediaRecorder instance');
48 document.getElementById("video").src = URL.createObjectURL(stream);
49 var recorder = new MediaRecorder(stream, mimeType);
50 console.log('Recorder object created.');
51 resolve(recorder);
52 });
53 }
54
45 function testStartAndRecorderState() { 55 function testStartAndRecorderState() {
46 console.log('testStartAndRecorderState started.'); 56 console.log('testStartAndRecorderState started.');
47 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) 57 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
48 .then(function(stream) { 58 .then(function(stream) {
49 return createAndStartMediaRecorder(stream, 59 return createAndStartMediaRecorder(stream,
50 DEFAULT_RECORDER_MIME_TYPE); 60 DEFAULT_RECORDER_MIME_TYPE);
51 }) 61 })
52 .then(function(recorder) { 62 .then(function(recorder) {
53 assertEquals('recording', recorder.state); 63 assertEquals('recording', recorder.state);
54 }) 64 })
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 ' empty blobs, there should be no such empty blobs.'); 174 ' empty blobs, there should be no such empty blobs.');
165 }) 175 })
166 .catch(function(err) { 176 .catch(function(err) {
167 return failTest(err.toString()); 177 return failTest(err.toString());
168 }) 178 })
169 .then(function() { 179 .then(function() {
170 reportTestSuccess(); 180 reportTestSuccess();
171 }); 181 });
172 } 182 }
173 183
184 function testStartAndStartEventTriggered() {
185 console.log('testStartAndStartEventTriggered started.');
186 var theRecorder;
187 var startEventReceived = false;
188 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
189 .then(function(stream) {
190 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE);
191 })
192 .then(function(recorder) {
193 theRecorder = recorder;
194 theRecorder.onstart = function(event) {
phoglund_chromium 2015/11/30 20:42:56 While I think this is fine, it would have been coo
cpaulin (no longer in chrome) 2015/12/02 00:05:53 Acknowledged.
195 startEventReceived = true;
196 };
197 })
198 .then(function() {
199 theRecorder.start();
200 })
201 .then(function() {
202 return waitFor('Make sure the start event was received',
phoglund_chromium 2015/11/30 20:42:56 I realized I actually had to read up a bit to unde
cpaulin (no longer in chrome) 2015/12/02 00:05:54 Acknowledged.
203 function() {
204 return startEventReceived == true;
205 });
206 })
207 .catch(function(err) {
208 return failTest(err.toString());
209 })
210 .then(function() {
211 reportTestSuccess();
212 });
213 }
214
215 function testStartStopAndStopEventTriggered() {
216 console.log('testStartStopAndStopEventTriggered started.');
217 var theRecorder;
218 var stopEventReceived = false;
219 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
220 .then(function(stream) {
221 return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE);
222 })
223 .then(function(recorder) {
224 recorder.onstop = function(event) {
225 stopEventReceived = true;
226 };
227 recorder.stop();
228 })
229 .then(function() {
230 return waitFor('Make sure the stop event was received',
231 function() {
232 return stopEventReceived == true;
233 });
234 })
235 .catch(function(err) {
236 return failTest(err.toString());
237 })
238 .then(function() {
239 reportTestSuccess();
240 });
241 }
242
243 function testResumeAndRecorderState() {
244 var theRecorder;
245 console.log('testResumeAndRecorderState started.');
246 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
247 .then(function(stream) {
248 return createAndStartMediaRecorder(stream,
249 DEFAULT_RECORDER_MIME_TYPE);
250 })
251 .then(function(recorder) {
252 theRecorder = recorder;
253 theRecorder.pause();
254 })
255 .then(function() {
256 theRecorder.resume();
257 })
258 .then(function() {
259 assertEquals('recording', theRecorder.state);
260 })
261 .catch(function(err) {
262 return failTest(err.toString());
263 })
264 .then(function() {
265 reportTestSuccess();
266 });
267 }
268
269 function testResumeAndResumeEventTriggered() {
270 var theRecorder;
271 var resumeEventReceived = false;
272 console.log('testStartAndResumeEventTriggered started.');
273 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
274 .then(function(stream) {
275 return createAndStartMediaRecorder(stream,
276 DEFAULT_RECORDER_MIME_TYPE);
277 })
278 .then(function(recorder) {
279 theRecorder = recorder;
280 theRecorder.pause();
281 })
282 .then(function() {
283 theRecorder.onresume = function(event) {
284 resumeEventReceived = true;
285 }
286 theRecorder.resume();
287 })
288 .then(function() {
289 return waitFor('Making sure the resume event has been received',
290 function() {
291 return resumeEventReceived == true;
292 });
293 })
294 .catch(function(err) {
295 return failTest(err.toString());
296 })
297 .then(function() {
298 reportTestSuccess();
299 });
300 }
301
302 function testNoResumeWhileRecorderInactive() {
303 console.log('testNoResumeWhileRecorderInactive started.');
304 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
305 .then(function(stream) {
306 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE);
307 })
308 .then(function(recorder) {
309 recorder.resume();
310 })
311 .catch(function(err) {
312 reportTestSuccess();
313 })
314 .then(function() {
315 return failTest('Recorder resumed recording from inactive state.');
316 });
317 }
318
319 function testResumeAndDataAvailable() {
320 console.log('testResumeAndDataAvailable started.');
321 var theRecorder;
322 var videoSize = 0;
323 var emptyBlobs = 0;
324 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
325 .then(function(stream) {
326 return createAndStartMediaRecorder(stream,
327 DEFAULT_RECORDER_MIME_TYPE);
328 })
329 .then(function(recorder) {
330 theRecorder = recorder;
331 theRecorder.pause();
332 })
333 .then(function() {
334 theRecorder.ondataavailable = function(event) {
335 if (event.data.size > 0) {
336 videoSize += event.data.size;
337 } else {
338 console.log('This dataavailable event is empty', event);
339 emptyBlobs += 1;
340 }
341 };
342 })
343 .then(function() {
344 theRecorder.resume();
345 })
346 .then(function() {
347 return waitFor('Make sure the recording has data after resuming',
348 function() {
349 return videoSize > 0;
350 });
351 })
352 .then(function() {
353 // There should be no empty blob while recording.
354 assertTrue(emptyBlobs == 0, 'Recording has ' + emptyBlobs +
355 ' empty blobs, there should be no such empty blobs.');
356 })
357 .catch(function(err) {
358 return failTest(err.toString());
359 })
360 .then(function() {
361 reportTestSuccess();
362 });
363 }
364
365
174 </script> 366 </script>
175 </body> 367 </body>
176 </html> 368 </html>
OLDNEW
« no previous file with comments | « content/browser/media/webrtc_media_recorder_browsertest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698