| 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 f82f9bd146a8068e5b1c877d2de061c963eed13a..f75b68ecaa654f54f8d5e516eaa38cb58e5d2ec0 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) { | 
| @@ -166,7 +153,6 @@ function testStartWithTimeSlice() { | 
| } | 
|  | 
| function testStartAndStartEventTriggered() { | 
| -  console.log('testStartAndStartEventTriggered started.'); | 
| var theRecorder; | 
| var startEventReceived = false; | 
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 
| @@ -197,7 +183,6 @@ function testStartAndStartEventTriggered() { | 
| } | 
|  | 
| function testStartStopAndStopEventTriggered() { | 
| -  console.log('testStartStopAndStopEventTriggered started.'); | 
| var theRecorder; | 
| var stopEventReceived = false; | 
| navigator.mediaDevices.getUserMedia(DEFAULT_CONSTRAINTS) | 
| @@ -226,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); | 
| @@ -252,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); | 
| @@ -282,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); | 
| @@ -290,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; | 
| @@ -343,6 +324,121 @@ 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) | 
| +      .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() { | 
| +  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> | 
|  |