Chromium Code Reviews| Index: content/test/data/media/mediarecorder_test.html |
| diff --git a/content/test/data/media/mediarecorder_test.html b/content/test/data/media/mediarecorder_test.html |
| index 52ebcf2055cb67d4d029ed0f84d620e2c71c981a..126e7f1708918e8a6d96c4d070a544aa76abdd07 100644 |
| --- a/content/test/data/media/mediarecorder_test.html |
| +++ b/content/test/data/media/mediarecorder_test.html |
| @@ -19,32 +19,23 @@ const DEFAULT_CONSTRAINTS= {audio:true, video:true}; |
| const DEFAULT_RECORDER_MIME_TYPE = 'video/vp8'; |
| const DEFAULT_TIME_SLICE = 100; |
| -function createAndStartMediaRecorder(stream, mimeType) { |
| +function createAndStartMediaRecorder(stream, mimeType, slice) { |
| return new Promise(function(resolve, reject) { |
| - console.log('Starting MediaRecorder instance'); |
| document.getElementById("video").src = URL.createObjectURL(stream); |
| var recorder = new MediaRecorder(stream, {"mimeType" : mimeType}); |
| console.log('Recorder object created.'); |
| - recorder.start(); |
| - resolve(recorder); |
| - }); |
| -} |
| - |
| -function createAndStartWithTimeSliceMediaRecorder(stream, mimeType, slice) { |
| - return new Promise(function(resolve, reject) { |
| - console.log('Starting MediaRecorder instance'); |
| - document.getElementById("video").src = URL.createObjectURL(stream); |
| - var recorder = new MediaRecorder(stream, {"mimeType" : mimeType}); |
| - console.log('Recorder object created.'); |
| - recorder.start(slice); |
| - console.log('Recorder started with time slice', slice); |
| + if (slice != undefined) { |
| + recorder.start(slice); |
| + console.log('Recorder started with time slice', slice); |
| + } else { |
| + recorder.start(); |
| + } |
| resolve(recorder); |
| }); |
| } |
| function createMediaRecorder(stream, mimeType) { |
| return new Promise(function(resolve, reject) { |
| - console.log('Starting MediaRecorder instance'); |
| document.getElementById("video").src = URL.createObjectURL(stream); |
| var recorder = new MediaRecorder(stream, {"mimeType" : mimeType}); |
| console.log('Recorder object created.'); |
| @@ -53,7 +44,6 @@ function createMediaRecorder(stream, mimeType) { |
| } |
| function testStartAndRecorderState() { |
| - console.log('testStartAndRecorderState started.'); |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| .then(function(stream) { |
| return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| @@ -70,7 +60,6 @@ function testStartAndRecorderState() { |
| } |
| function testStartStopAndRecorderState() { |
| - console.log('testStartStopAndRecorderState started.'); |
| var theRecorder; |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| .then(function(stream) { |
| @@ -92,7 +81,6 @@ function testStartStopAndRecorderState() { |
| } |
| function testStartAndDataAvailable() { |
| - console.log('testStartAndDataAvailable started.'); |
| var videoSize = 0; |
| var emptyBlobs = 0; |
| var timeStamps = []; |
| @@ -129,14 +117,13 @@ function testStartAndDataAvailable() { |
| } |
| function testStartWithTimeSlice() { |
| - console.log('testStartWithTimeSlice started.'); |
| var videoSize = 0; |
| var emptyBlobs = 0; |
| var timeStamps = []; |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| .then(function(stream) { |
| - return createAndStartWithTimeSliceMediaRecorder(stream, |
| - DEFAULT_RECORDER_MIME_TYPE, DEFAULT_TIME_SLICE); |
| + return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE, |
| + DEFAULT_TIME_SLICE); |
| }) |
| .then(function(recorder) { |
| recorder.ondataavailable = function(event) { |
| @@ -154,12 +141,6 @@ function testStartWithTimeSlice() { |
| }); |
| }) |
| .then(function() { |
| - var timeDeltas = getTimeStampDeltas(timeStamps); |
| - timeDeltas.forEach(function(timeDelta) { |
| - assertTrue(timeDelta >= DEFAULT_TIME_SLICE, 'A time slice was ' + |
| - timeDelta + ' ms which is shorter than the expected minimum ' |
| - + DEFAULT_TIME_SLICE + 'ms'); |
| - }); |
| assertTrue(emptyBlobs == 0, 'Recording has ' + emptyBlobs + |
| ' empty blobs, there should be no such empty blobs.'); |
| }) |
| @@ -172,7 +153,6 @@ function testStartWithTimeSlice() { |
| } |
| function testStartAndStartEventTriggered() { |
| - console.log('testStartAndStartEventTriggered started.'); |
| var theRecorder; |
| var startEventReceived = false; |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| @@ -203,7 +183,6 @@ function testStartAndStartEventTriggered() { |
| } |
| function testStartStopAndStopEventTriggered() { |
| - console.log('testStartStopAndStopEventTriggered started.'); |
| var theRecorder; |
| var stopEventReceived = false; |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| @@ -232,7 +211,6 @@ function testStartStopAndStopEventTriggered() { |
| function testResumeAndRecorderState() { |
| var theRecorder; |
| - console.log('testResumeAndRecorderState started.'); |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| .then(function(stream) { |
| return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| @@ -258,7 +236,6 @@ function testResumeAndRecorderState() { |
| function testResumeAndResumeEventTriggered() { |
| var theRecorder; |
| var resumeEventReceived = false; |
| - console.log('testStartAndResumeEventTriggered started.'); |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| .then(function(stream) { |
| return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| @@ -288,7 +265,6 @@ function testResumeAndResumeEventTriggered() { |
| } |
| function testNoResumeWhileRecorderInactive() { |
| - console.log('testNoResumeWhileRecorderInactive started.'); |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| .then(function(stream) { |
| return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| @@ -296,16 +272,15 @@ function testNoResumeWhileRecorderInactive() { |
| .then(function(recorder) { |
| recorder.resume(); |
| }) |
| - .catch(function(err) { |
| - reportTestSuccess(); |
| - }) |
| .then(function() { |
| return failTest('Recorder resumed recording from inactive state.'); |
| + }) |
| + .catch(function(err) { |
| + reportTestSuccess(); |
| }); |
| } |
| function testResumeAndDataAvailable() { |
| - console.log('testResumeAndDataAvailable started.'); |
| var theRecorder; |
| var videoSize = 0; |
| var emptyBlobs = 0; |
| @@ -349,6 +324,132 @@ function testResumeAndDataAvailable() { |
| }); |
| } |
| +function testPauseAndRecorderState() { |
| + var theRecorder; |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createAndStartMediaRecorder(stream, |
| + DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + theRecorder = recorder; |
| + theRecorder.pause(); |
| + }) |
| + .then(function() { |
| + assertEquals('paused', theRecorder.state); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testPauseStopAndRecorderState() { |
| + var theRecorder; |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createAndStartMediaRecorder(stream, |
| + DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + theRecorder = recorder; |
| + theRecorder.pause(); |
| + }) |
| + .then(function() { |
| + theRecorder.stop(); |
| + }) |
| + .then(function() { |
| + assertEquals('inactive', theRecorder.state); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testPauseAndPauseEventTriggered() { |
| + var pauseEventReceived = false; |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createAndStartMediaRecorder(stream, |
| + DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + recorder.onpause = function(event) { |
| + pauseEventReceived = true; |
| + } |
| + recorder.pause(); |
| + }) |
| + .then(function() { |
| + return waitFor('Making sure the pause event has been received', |
| + function() { |
| + return pauseEventReceived == true; |
| + }); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testPauseAndNoDataAvailable() { |
| + var theRecorder; |
| + var videoSize = 0; |
| + var emptyBlobs = 0; |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
|
phoglund_chromium
2015/12/14 12:54:13
Does this test actually test anything? It looks li
cpaulin (no longer in chrome)
2015/12/14 18:56:50
Sometimes a bit of waiting does not hurt. New patc
phoglund_chromium
2015/12/14 19:00:28
Yes, I may have said earlier that "never sleep in
|
| + .then(function(stream) { |
| + return createAndStartMediaRecorder(stream, |
| + DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + theRecorder = recorder; |
| + theRecorder.pause(); |
| + }) |
| + .then(function() { |
| + theRecorder.ondataavailable = function(event) { |
| + if (event.data.size > 0) { |
|
phoglund_chromium
2015/12/14 12:54:13
I think this can be simplified to
theRecorder.on
cpaulin (no longer in chrome)
2015/12/14 18:56:50
Good idea
|
| + videoSize += event.data.size; |
| + } else { |
| + emptyBlobs += 1; |
| + } |
| + }; |
| + }) |
| + .then(function() { |
| + return waitFor('Make sure no dataavailable events are received', |
| + function() { |
| + return videoSize == 0 && emptyBlobs == 0; |
| + }); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testNoPauseWhileRecorderInactive() { |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + recorder.pause(); |
| + }) |
| + .then(function() { |
| + return failTest('Recorder paused recording from inactive state.'); |
| + }) |
| + .catch(function(err) { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| </script> |
| </body> |
| </html> |