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

Unified Diff: content/test/data/media/mediarecorder_test.html

Issue 1504063003: MediaRecorder tests for Pause functionality (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixing non sense in testPauseAndNoDataAvailable 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 side-by-side diff with in-line comments
Download patch
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..0ddde4cd19bfa162a82eac2cb1f39772d05ad963 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) {
mcasas 2015/12/14 23:48:49 !== 'undefined' ? http://stackoverflow.com/questi
cpaulin (no longer in chrome) 2015/12/15 22:44:19 |slice != undefined| is correct, more explicit wou
+ 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,125 @@ function testResumeAndDataAvailable() {
});
}
+function testPauseAndRecorderState() {
+ var theRecorder;
+ navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
+ .then(function(stream) {
+ return createAndStartMediaRecorder(stream,
+ DEFAULT_RECORDER_MIME_TYPE);
mcasas 2015/12/14 23:48:50 nit: fits in one line, here and elsewhere.
cpaulin (no longer in chrome) 2015/12/15 22:44:19 Acknowledged.
+ })
+ .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();
mcasas 2015/12/14 23:48:49 I would just bundle here the checking assertEqual
cpaulin (no longer in chrome) 2015/12/15 22:44:19 Acknowledged.
+ })
+ .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)
+ .then(function(stream) {
+ return createAndStartMediaRecorder(stream,
+ DEFAULT_RECORDER_MIME_TYPE);
+ })
+ .then(function(recorder) {
+ theRecorder = recorder;
+ theRecorder.pause();
+ })
+ .then(function() {
+ theRecorder.ondataavailable = function(event) {
+ failTest("Received unexpected data after pause!");
+ };
+ })
+ .then(function() {
+ return waitDuration(2000);
+ })
+ .catch(function(err) {
+ return failTest(err.toString());
+ })
+ .then(function() {
+ reportTestSuccess();
+ });
+}
+
+function testNoPauseWhileRecorderInactive() {
mcasas 2015/12/14 23:48:50 It'd be great to have a one liner description per
cpaulin (no longer in chrome) 2015/12/15 22:44:19 I will address it in: crbug.com/570074
+ navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS)
+ .then(function(stream) {
+ return createMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE);
+ })
+ .then(function(recorder) {
+ recorder.pause();
mcasas 2015/12/14 23:48:49 This test is a great candidate for // Verify tha
cpaulin (no longer in chrome) 2015/12/15 22:44:19 I will address this in crbug/570074
+ })
+ .then(function() {
+ return failTest('Recorder paused recording from inactive state.');
+ })
+ .catch(function(err) {
+ reportTestSuccess();
+ });
+}
+
</script>
</body>
</html>

Powered by Google App Engine
This is Rietveld 408576698