Bug 1275856- Update tests to reflect new MediaRecorderErrorEvent. r?jib
MediaRecorderErrorEvent is now fired in response to async errors in the
MediaRecorder. This event wraps a DOMException and tests need to be updated to
reflect this new behaviour.
MozReview-Commit-ID: JIjIZlJJ8PE
--- a/dom/media/test/test_mediarecorder_creation_fail.html
+++ b/dom/media/test/test_mediarecorder_creation_fail.html
@@ -16,17 +16,17 @@ function startTest() {
// 2. ondataavailable
// 3. onstop
var callbackStep = 0;
var stream = new AudioContext().createMediaStreamDestination().stream;
var mediaRecorder = new MediaRecorder(stream);
mediaRecorder.onerror = function (e) {
is(callbackStep, 0, 'should fired onstop callback');
- is(e.name, 'GenericError', 'error name should be GenericError');
+ is(e.error.name, 'UnknownError', 'error name should be UnknownError');
is(mediaRecorder.mimeType, '', 'mimetype should be empty');
is(mediaRecorder.state, 'recording', 'state is recording');
info('onerror callback fired');
callbackStep = 1;
};
mediaRecorder.onwarning = function () {
ok(false, 'Unexpected onwarning callback fired');
--- a/dom/media/test/test_mediarecorder_getencodeddata.html
+++ b/dom/media/test/test_mediarecorder_getencodeddata.html
@@ -25,39 +25,41 @@ SpecialPowers.pushPrefEnv({"set": [["med
'Media recorder is inactive after being stopped');
ok(onErrorFired, 'onStop after onError');
ok(ondataavailableFired, 'ondataavailableFired');
//Apparently, as soon as the document is unloading, mediaRecorder.ondataavailable
//fires again, so set it to null to avoid failures
mediaRecorder.ondataavailable = null;
SimpleTest.finish();
- }
+ };
mediaRecorder.ondataavailable = function(evt) {
ondataavailableFired = true;
ok(evt instanceof BlobEvent,
'Events fired from ondataavailable should be BlobEvent');
is(evt.type, 'dataavailable',
'Event type should dataavailable');
is(evt.data.size, 0,
'Blob data size received is equal to zero');
is(evt.data.type, expectedMimeType,
'Blob data received should have type = ' + expectedMimeType);
is(evt.target.mimeType, expectedMimeType,
'Mime type in ondataavailable = ' + expectedMimeType);
- }
+ };
mediaRecorder.onerror = function(evt) {
- ok(evt instanceof RecordErrorEvent,
- 'Events fired from onerror should be RecordErrorEvent');
+ ok(evt instanceof MediaRecorderErrorEvent,
+ 'Events fired from onerror should be MediaRecorderErrorEvent');
is(evt.type, 'error',
- 'Event type should onerror');
- is(evt.name, 'GenericError',
- 'Event name is GenericError');
+ 'Event type is error');
+ ok(evt.error instanceof DOMException,
+ 'Events fired from onerror should have a DOMException in their error member');
+ is(evt.error.name, 'UnknownError', 'Error name should be UnknownError.');
+ is(evt.error.message, 'The operation failed for an unknown transient reason');
onErrorFired = true;
- }
+ };
mediaRecorder.start(0);
is(mediaRecorder.state, 'recording', 'Media recorder should be recording');
is(mediaRecorder.stream, stream,
'Media recorder stream = element stream at the start of recording');
mediaRecorder.requestData();
}, 100);
}
);
--- a/dom/media/test/test_mediarecorder_principals.html
+++ b/dom/media/test/test_mediarecorder_principals.html
@@ -84,19 +84,19 @@ function testPrincipals(resource) {
let msgOnStop = "mediaRecorder.onstop must also have fired";
return new Promise(resolve => video.onloadedmetadata = resolve).then(() => {
rec = new MediaRecorder(video.mozCaptureStreamUntilEnded());
rec.ondataavailable = e => data.push(e.data);
rec.start();
hasStopped = new Promise(resolve => rec.onstop = resolve);
video.play();
})
- .then(() => ok(true, msgNoThrow), e => is(e.name, null, msgNoThrow))
+ .then(() => ok(true, msgNoThrow), e => is(e.error.name, null, msgNoThrow))
.then(() => Promise.race([
- new Promise((_, reject) => rec.onerror = e => reject(new DOMException("", e.name))),
+ new Promise((_, reject) => rec.onerror = e => reject(e.error)),
hasEnded
]))
.then(() => ok(false, msgSecErr), e => is(e.name, "SecurityError", msgSecErr))
.then(() => Promise.race([hasStopped, hasEnded.then(() => Promise.reject())]))
.then(() => ok(true, msgOnStop), e => ok(false, msgOnStop))
.then(() => clearInterval(interval));
});
}
--- a/dom/media/test/test_mediarecorder_unsupported_src.html
+++ b/dom/media/test/test_mediarecorder_unsupported_src.html
@@ -37,17 +37,17 @@ function startTest() {
if (callbackStep == 1) {
try {
mediaRecorder.pause();
} catch(e) {
ok(false, 'Should not get exception in pause call.');
}
}
ok(callbackStep < 3, 'onerror callback fired as expected.');
- is(e.name, 'GenericError', 'Error name should be GenericError.');
+ is(e.error.name, 'UnknownError', 'Error name should be UnknownError.');
is(mediaRecorder.mimeType, '', 'mimetype should be empty');
is(mediaRecorder.state, 'recording', 'state is recording');
info('onerror callback fired');
}
mediaRecorder.onwarning = function () {
ok(false, 'Unexpected onwarning callback fired.');
};