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 754c4886a0615bc9c15fd7b8162711de5914b96f..c19999fb3200cd86dca5c86e9bfed4f446438365 100644 |
| --- a/content/test/data/media/mediarecorder_test.html |
| +++ b/content/test/data/media/mediarecorder_test.html |
| @@ -42,6 +42,16 @@ function createAndStartWithTimeSliceMediaRecorder(stream, mimeType, slice) { |
| }); |
| } |
| +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); |
| + console.log('Recorder object created.'); |
| + resolve(recorder); |
| + }); |
| +} |
| + |
| function testStartAndRecorderState() { |
| console.log('testStartAndRecorderState started.'); |
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| @@ -171,6 +181,188 @@ function testStartWithTimeSlice() { |
| }); |
| } |
| +function testStartAndStartEventTriggered() { |
| + console.log('testStartAndStartEventTriggered started.'); |
| + var theRecorder; |
| + var startEventReceived = false; |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + theRecorder = recorder; |
| + 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.
|
| + startEventReceived = true; |
| + }; |
| + }) |
| + .then(function() { |
| + theRecorder.start(); |
| + }) |
| + .then(function() { |
| + 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.
|
| + function() { |
| + return startEventReceived == true; |
| + }); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testStartStopAndStopEventTriggered() { |
| + console.log('testStartStopAndStopEventTriggered started.'); |
| + var theRecorder; |
| + var stopEventReceived = false; |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + recorder.onstop = function(event) { |
| + stopEventReceived = true; |
| + }; |
| + recorder.stop(); |
| + }) |
| + .then(function() { |
| + return waitFor('Make sure the stop event was received', |
| + function() { |
| + return stopEventReceived == true; |
| + }); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testResumeAndRecorderState() { |
| + var theRecorder; |
| + console.log('testResumeAndRecorderState started.'); |
| + 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.resume(); |
| + }) |
| + .then(function() { |
| + assertEquals('recording', theRecorder.state); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +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); |
| + }) |
| + .then(function(recorder) { |
| + theRecorder = recorder; |
| + theRecorder.pause(); |
| + }) |
| + .then(function() { |
| + theRecorder.onresume = function(event) { |
| + resumeEventReceived = true; |
| + } |
| + theRecorder.resume(); |
| + }) |
| + .then(function() { |
| + return waitFor('Making sure the resume event has been received', |
| + function() { |
| + return resumeEventReceived == true; |
| + }); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| +function testNoResumeWhileRecorderInactive() { |
| + console.log('testNoResumeWhileRecorderInactive started.'); |
| + navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
| + .then(function(stream) { |
| + return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
| + }) |
| + .then(function(recorder) { |
| + recorder.resume(); |
| + }) |
| + .catch(function(err) { |
| + reportTestSuccess(); |
| + }) |
| + .then(function() { |
| + return failTest('Recorder resumed recording from inactive state.'); |
| + }); |
| +} |
| + |
| +function testResumeAndDataAvailable() { |
| + console.log('testResumeAndDataAvailable started.'); |
| + var theRecorder; |
| + var videoSize = 0; |
| + var emptyBlobs = 0; |
| + 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.ondataavailable = function(event) { |
| + if (event.data.size > 0) { |
| + videoSize += event.data.size; |
| + } else { |
| + console.log('This dataavailable event is empty', event); |
| + emptyBlobs += 1; |
| + } |
| + }; |
| + }) |
| + .then(function() { |
| + theRecorder.resume(); |
| + }) |
| + .then(function() { |
| + return waitFor('Make sure the recording has data after resuming', |
| + function() { |
| + return videoSize > 0; |
| + }); |
| + }) |
| + .then(function() { |
| + // There should be no empty blob while recording. |
| + assertTrue(emptyBlobs == 0, 'Recording has ' + emptyBlobs + |
| + ' empty blobs, there should be no such empty blobs.'); |
| + }) |
| + .catch(function(err) { |
| + return failTest(err.toString()); |
| + }) |
| + .then(function() { |
| + reportTestSuccess(); |
| + }); |
| +} |
| + |
| + |
| </script> |
| </body> |
| </html> |