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

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

Issue 2444153002: MediaRecorder: bugfix start() means buffer-forever (Closed)
Patch Set: s/start(1)/start(0)/ Created 4 years, 1 month 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
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 <video id="remoteVideo" autoplay></video> 9 <video id="remoteVideo" autoplay></video>
10 </body> 10 </body>
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 85
86 function createAndStartMediaRecorder(stream, mimeType, slice) { 86 function createAndStartMediaRecorder(stream, mimeType, slice) {
87 return new Promise(function(resolve, reject) { 87 return new Promise(function(resolve, reject) {
88 document.getElementById('video').src = URL.createObjectURL(stream); 88 document.getElementById('video').src = URL.createObjectURL(stream);
89 var recorder = new MediaRecorder(stream, {'mimeType' : mimeType}); 89 var recorder = new MediaRecorder(stream, {'mimeType' : mimeType});
90 console.log('Recorder object created, mimeType = ' + mimeType); 90 console.log('Recorder object created, mimeType = ' + mimeType);
91 if (slice != undefined) { 91 if (slice != undefined) {
92 recorder.start(slice); 92 recorder.start(slice);
93 console.log('Recorder started with time slice', slice); 93 console.log('Recorder started with time slice', slice);
94 } else { 94 } else {
95 recorder.start(); 95 recorder.start(0);
96 } 96 }
97 resolve(recorder); 97 resolve(recorder);
98 }); 98 });
99 } 99 }
100 100
101 function createMediaRecorder(stream, mimeType) { 101 function createMediaRecorder(stream, mimeType) {
102 return new Promise(function(resolve, reject) { 102 return new Promise(function(resolve, reject) {
103 var recorder = new MediaRecorder(stream, {'mimeType' : mimeType}); 103 var recorder = new MediaRecorder(stream, {'mimeType' : mimeType});
104 console.log('Recorder object created.'); 104 console.log('Recorder object created.');
105 resolve(recorder); 105 resolve(recorder);
106 }); 106 });
107 } 107 }
108 108
109 // Tests that the MediaRecorder's start() function will cause the |state| to be 109 // Tests that the MediaRecorder's start(0) function will cause the |state| to be
110 // 'recording' and that a 'start' event is fired. 110 // 'recording' and that a 'start' event is fired.
111 function testStartAndRecorderState() { 111 function testStartAndRecorderState() {
112 var startEventReceived = false; 112 var startEventReceived = false;
113 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) 113 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
114 .then(function(stream) { 114 .then(function(stream) {
115 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); 115 return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE);
116 }) 116 })
117 .then(function(recorder) { 117 .then(function(recorder) {
118 recorder = recorder; 118 recorder = recorder;
119 recorder.onstart = function(event) { 119 recorder.onstart = function(event) {
120 startEventReceived = true; 120 startEventReceived = true;
121 assertEquals('recording', recorder.state); 121 assertEquals('recording', recorder.state);
122 }; 122 };
123 recorder.start(); 123 recorder.start(0);
124 }) 124 })
125 .then(function() { 125 .then(function() {
126 return waitFor('Make sure the start event was received', 126 return waitFor('Make sure the start event was received',
127 function() { 127 function() {
128 return startEventReceived; 128 return startEventReceived;
129 }); 129 });
130 }) 130 })
131 .catch(function(err) { 131 .catch(function(err) {
132 return failTest(err.toString()); 132 return failTest(err.toString());
133 }) 133 })
(...skipping 24 matching lines...) Expand all
158 }); 158 });
159 }) 159 })
160 .catch(function(err) { 160 .catch(function(err) {
161 return failTest(err.toString()); 161 return failTest(err.toString());
162 }) 162 })
163 .then(function() { 163 .then(function() {
164 reportTestSuccess(); 164 reportTestSuccess();
165 }); 165 });
166 } 166 }
167 167
168 // Tests that when MediaRecorder's start() function is called, some data is 168 // Tests that when MediaRecorder's start(0) function is called, some data is
169 // made available by media recorder via dataavailable events, containing non 169 // made available by media recorder via dataavailable events, containing non
170 // empty blob data. 170 // empty blob data.
171 function testStartAndDataAvailable(codec) { 171 function testStartAndDataAvailable(codec) {
172 var videoSize = 0; 172 var videoSize = 0;
173 var emptyBlobs = 0; 173 var emptyBlobs = 0;
174 var timeStamps = []; 174 var timeStamps = [];
175 const mimeType = codec ? "video/webm;codecs=" + String(codec) : ""; 175 const mimeType = codec ? "video/webm;codecs=" + String(codec) : "";
176 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) 176 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
177 .then(function(stream) { 177 .then(function(stream) {
178 return createAndStartMediaRecorder(stream, mimeType); 178 return createAndStartMediaRecorder(stream, mimeType);
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 return setupPeerConnection(localStream); 422 return setupPeerConnection(localStream);
423 }) 423 })
424 .then(function(remoteStream) { 424 .then(function(remoteStream) {
425 return createMediaRecorder(remoteStream, mimeType); 425 return createMediaRecorder(remoteStream, mimeType);
426 }) 426 })
427 .then(function(recorder) { 427 .then(function(recorder) {
428 recorder.ondataavailable = function(event) { 428 recorder.ondataavailable = function(event) {
429 timeStamps.push(event.timeStamp); 429 timeStamps.push(event.timeStamp);
430 videoSize += event.data.size; 430 videoSize += event.data.size;
431 }; 431 };
432 recorder.start(); 432 recorder.start(0);
433 }) 433 })
434 .then(function() { 434 .then(function() {
435 return waitFor('Making sure the recording has data', 435 return waitFor('Making sure the recording has data',
436 function() { 436 function() {
437 return videoSize > 0 && timeStamps.length > 100; 437 return videoSize > 0 && timeStamps.length > 100;
438 }); 438 });
439 }) 439 })
440 .catch(function(err) { 440 .catch(function(err) {
441 return failTest(err.toString()); 441 return failTest(err.toString());
442 }) 442 })
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 oscillator.type = 'sine'; 493 oscillator.type = 'sine';
494 oscillator.frequency.value = FREQUENCY; 494 oscillator.frequency.value = FREQUENCY;
495 var dest = context.createMediaStreamDestination(); 495 var dest = context.createMediaStreamDestination();
496 dest.channelCount = 2; 496 dest.channelCount = 2;
497 oscillator.connect(dest); 497 oscillator.connect(dest);
498 createMediaRecorder(dest.stream, DEFAULT_RECORDER_MIME_TYPE) 498 createMediaRecorder(dest.stream, DEFAULT_RECORDER_MIME_TYPE)
499 .then(function(recorder) { 499 .then(function(recorder) {
500 recorder.ondataavailable = function(event) { 500 recorder.ondataavailable = function(event) {
501 audioSize += event.data.size; 501 audioSize += event.data.size;
502 }; 502 };
503 recorder.start(); 503 recorder.start(0);
504 oscillator.start(); 504 oscillator.start();
505 context.startRendering(); 505 context.startRendering();
506 }) 506 })
507 .then(function() { 507 .then(function() {
508 return waitFor('Make sure the recording has data', 508 return waitFor('Make sure the recording has data',
509 function() { 509 function() {
510 return audioSize > 0; 510 return audioSize > 0;
511 }); 511 });
512 }) 512 })
513 .catch(function(err) { 513 .catch(function(err) {
(...skipping 26 matching lines...) Expand all
540 var errorEventReceived = false; 540 var errorEventReceived = false;
541 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) 541 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
542 .then(function(stream) { 542 .then(function(stream) {
543 theStream = stream; 543 theStream = stream;
544 return createMediaRecorder(stream); 544 return createMediaRecorder(stream);
545 }) 545 })
546 .then(function(recorder) { 546 .then(function(recorder) {
547 recorder.onerror = function(event) { 547 recorder.onerror = function(event) {
548 errorEventReceived = true; 548 errorEventReceived = true;
549 }; 549 };
550 recorder.start(); 550 recorder.start(0);
551 // Add a new track, copy of an existing one for simplicity. 551 // Add a new track, copy of an existing one for simplicity.
552 theStream.addTrack(theStream.getTracks()[1].clone()); 552 theStream.addTrack(theStream.getTracks()[1].clone());
553 }) 553 })
554 .then(function() { 554 .then(function() {
555 return waitFor('Waiting for the Error Event', 555 return waitFor('Waiting for the Error Event',
556 function() { 556 function() {
557 return errorEventReceived; 557 return errorEventReceived;
558 }); 558 });
559 }) 559 })
560 .catch(function(err) { 560 .catch(function(err) {
(...skipping 11 matching lines...) Expand all
572 var errorEventReceived = false; 572 var errorEventReceived = false;
573 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) 573 navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
574 .then(function(stream) { 574 .then(function(stream) {
575 theStream = stream; 575 theStream = stream;
576 return createMediaRecorder(stream); 576 return createMediaRecorder(stream);
577 }) 577 })
578 .then(function(recorder) { 578 .then(function(recorder) {
579 recorder.onerror = function(event) { 579 recorder.onerror = function(event) {
580 errorEventReceived = true; 580 errorEventReceived = true;
581 }; 581 };
582 recorder.start(); 582 recorder.start(0);
583 theStream.removeTrack(theStream.getTracks()[1]); 583 theStream.removeTrack(theStream.getTracks()[1]);
584 }) 584 })
585 .then(function() { 585 .then(function() {
586 return waitFor('Waiting for the Error Event', 586 return waitFor('Waiting for the Error Event',
587 function() { 587 function() {
588 return errorEventReceived; 588 return errorEventReceived;
589 }); 589 });
590 }) 590 })
591 .catch(function(err) { 591 .catch(function(err) {
592 return failTest(err.toString()); 592 return failTest(err.toString());
593 }) 593 })
594 .then(function() { 594 .then(function() {
595 reportTestSuccess(); 595 reportTestSuccess();
596 }); 596 });
597 } 597 }
598 598
599 </script> 599 </script>
600 </body> 600 </body>
601 </html> 601 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698