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 8644fb58b5996710a6db74541f929e82e4d24b41..bd242c6fce80f15676d18f96d94c5b5af0412e08 100644 |
--- a/content/test/data/media/mediarecorder_test.html |
+++ b/content/test/data/media/mediarecorder_test.html |
@@ -109,21 +109,18 @@ function createMediaRecorder(stream, mimeType) { |
// Tests that the MediaRecorder's start() function will cause the |state| to be |
// 'recording' and that a 'start' event is fired. |
function testStartAndRecorderState() { |
- 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) { |
+ recorder = recorder; |
+ recorder.onstart = function(event) { |
startEventReceived = true; |
- assertEquals('recording', theRecorder.state); |
+ assertEquals('recording', recorder.state); |
}; |
- }) |
- .then(function() { |
- theRecorder.start(); |
+ recorder.start(); |
}) |
.then(function() { |
return waitFor('Make sure the start event was received', |
@@ -142,7 +139,6 @@ function testStartAndRecorderState() { |
// Tests that the MediaRecorder's stop() function will effectively cause the |
// |state| to be 'inactive' and that a 'stop' event is fired. |
function testStartStopAndRecorderState() { |
- var theRecorder; |
var stopEventReceived = false; |
navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
.then(function(stream) { |
@@ -151,7 +147,7 @@ function testStartStopAndRecorderState() { |
.then(function(recorder) { |
recorder.onstop = function(event) { |
stopEventReceived = true; |
- assertEquals('inactive', theRecorder.state); |
+ assertEquals('inactive', recorder.state); |
}; |
recorder.stop(); |
}) |
@@ -295,7 +291,6 @@ function testIllegalResumeThrowsDOMError() { |
// Tests that MediaRecorder sends data blobs when resume() is called. |
function testResumeAndDataAvailable() { |
- var theRecorder; |
var videoSize = 0; |
var emptyBlobs = 0; |
navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
@@ -303,11 +298,8 @@ function testResumeAndDataAvailable() { |
return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
}) |
.then(function(recorder) { |
- theRecorder = recorder; |
- theRecorder.pause(); |
- }) |
- .then(function() { |
- theRecorder.ondataavailable = function(event) { |
+ recorder.pause(); |
+ recorder.ondataavailable = function(event) { |
if (event.data.size > 0) { |
videoSize += event.data.size; |
} else { |
@@ -315,9 +307,7 @@ function testResumeAndDataAvailable() { |
emptyBlobs += 1; |
} |
}; |
- }) |
- .then(function() { |
- theRecorder.resume(); |
+ recorder.resume(); |
}) |
.then(function() { |
return waitFor('Make sure the recording has data after resuming', |
@@ -341,19 +331,17 @@ function testResumeAndDataAvailable() { |
// Tests that when paused the recorder will transition |state| to |paused| and |
// then trigger a |pause| event. |
function testPauseAndRecorderState() { |
- var theRecorder; |
var pauseEventReceived = false; |
navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
.then(function(stream) { |
return createAndStartMediaRecorder(stream, DEFAULT_RECORDER_MIME_TYPE); |
}) |
.then(function(recorder) { |
- theRecorder = recorder; |
- theRecorder.onpause = function(event) { |
+ recorder.onpause = function(event) { |
pauseEventReceived = true; |
- assertEquals('paused', theRecorder.state); |
- }; |
- theRecorder.pause(); |
+ assertEquals('paused', recorder.state); |
+ } |
+ recorder.pause(); |
}) |
.then(function() { |
return waitFor('Making sure the pause event has been received', |
@@ -372,20 +360,14 @@ function testPauseAndRecorderState() { |
// Tests that is is possible to stop a paused MediaRecorder and that the |state| |
// becomes 'inactive'. |
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); |
+ recorder.pause(); |
+ recorder.stop(); |
+ assertEquals('inactive', recorder.state); |
}) |
.catch(function(err) { |
return failTest(err.toString()); |
@@ -398,17 +380,13 @@ function testPauseStopAndRecorderState() { |
// Tests that no dataavailable event is fired after MediaRecorder's pause() |
// function is called. |
function testPausePreventsDataavailableFromBeingFired() { |
- 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.ondataavailable = function(event) { |
+ recorder.pause(); |
+ recorder.ondataavailable = function(event) { |
failTest('Received unexpected data after pause!'); |
}; |
}) |
@@ -556,6 +534,69 @@ function testIllegalRequestDataThrowsDOMError() { |
}); |
} |
+// Tests that MediaRecorder fires an Error Event when the associated MediaStream |
+// gets a Track added. |
+function testAddingTrackToMediaStreamFiresErrorEvent() { |
+ var theStream; |
+ var errorEventReceived = false; |
+ navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
+ .then(function(stream) { |
+ theStream = stream; |
+ return createMediaRecorder(stream); |
+ }) |
+ .then(function(recorder) { |
+ recorder.onerror = function(event) { |
+ errorEventReceived = true; |
+ }; |
+ recorder.start(); |
+ // Add a new track, copy of an existing one for simplicity. |
+ theStream.addTrack(theStream.getTracks()[1].clone()); |
+ }) |
+ .then(function() { |
+ return waitFor('Waiting for the Error Event', |
+ function() { |
+ return errorEventReceived; |
+ }); |
+ }) |
+ .catch(function(err) { |
+ return failTest(err.toString()); |
+ }) |
+ .then(function() { |
+ reportTestSuccess(); |
+ }); |
+} |
+ |
+// Tests that MediaRecorder fires an Error Event when the associated MediaStream |
+// gets a Track removed. |
+function testRemovingTrackFromMediaStreamFiresErrorEvent() { |
+ var theStream; |
+ var errorEventReceived = false; |
+ navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) |
+ .then(function(stream) { |
+ theStream = stream; |
+ return createMediaRecorder(stream); |
+ }) |
+ .then(function(recorder) { |
+ recorder.onerror = function(event) { |
+ errorEventReceived = true; |
+ }; |
+ recorder.start(); |
+ theStream.removeTrack(theStream.getTracks()[1]); |
+ }) |
+ .then(function() { |
+ return waitFor('Waiting for the Error Event', |
+ function() { |
+ return errorEventReceived; |
+ }); |
+ }) |
+ .catch(function(err) { |
+ return failTest(err.toString()); |
+ }) |
+ .then(function() { |
+ reportTestSuccess(); |
+ }); |
+} |
+ |
</script> |
</body> |
</html> |