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

Unified 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, 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/media/webrtc_media_recorder_browsertest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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>
« 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