Bug 1281866 - Test gUM's NotReadableError.
MozReview-Commit-ID: UrMmhTFvrc
--- a/dom/media/tests/mochitest/test_getUserMedia_constraints.html
+++ b/dom/media/tests/mochitest/test_getUserMedia_constraints.html
@@ -42,16 +42,22 @@ var tests = [
constraint: "mediaSource" },
{ message: "unknown mediaSource in audio fails",
constraints: { audio: { mediaSource: 'uncle' } },
error: "OverconstrainedError",
constraint: "mediaSource" },
{ message: "emtpy constraint fails",
constraints: { },
error: "NotSupportedError" },
+ { message: "Triggering mock failure in default video device fails",
+ constraints: { video: { deviceId: 'bad device' }, fake: true },
+ error: "NotReadableError" },
+ { message: "Triggering mock failure in default audio device fails",
+ constraints: { audio: { deviceId: 'bad device' }, fake: true },
+ error: "NotReadableError" },
{ message: "Success-path: optional video facingMode + audio ignoring facingMode",
constraints: { audio: { mediaSource: 'microphone',
facingMode: 'left',
foo: 0,
advanced: [{ facingMode: 'environment' },
{ facingMode: 'user' },
{ bar: 0 }] },
video: { mediaSource: 'camera',
--- a/dom/media/webrtc/MediaEngineDefault.cpp
+++ b/dom/media/webrtc/MediaEngineDefault.cpp
@@ -90,16 +90,22 @@ MediaEngineDefaultVideoSource::Allocate(
const MediaEnginePrefs &aPrefs,
const nsString& aDeviceId,
const nsACString& aOrigin)
{
if (mState != kReleased) {
return NS_ERROR_FAILURE;
}
+ // Mock failure for automated tests.
+ if (aConstraints.mDeviceId.IsString() &&
+ aConstraints.mDeviceId.GetAsString().EqualsASCII("bad device")) {
+ return NS_ERROR_FAILURE;
+ }
+
mOpts = aPrefs;
mOpts.mWidth = mOpts.mWidth ? mOpts.mWidth : MediaEngine::DEFAULT_43_VIDEO_WIDTH;
mOpts.mHeight = mOpts.mHeight ? mOpts.mHeight : MediaEngine::DEFAULT_43_VIDEO_HEIGHT;
mState = kAllocated;
return NS_OK;
}
nsresult
@@ -403,16 +409,22 @@ MediaEngineDefaultAudioSource::Allocate(
const MediaEnginePrefs &aPrefs,
const nsString& aDeviceId,
const nsACString& aOrigin)
{
if (mState != kReleased) {
return NS_ERROR_FAILURE;
}
+ // Mock failure for automated tests.
+ if (aConstraints.mDeviceId.IsString() &&
+ aConstraints.mDeviceId.GetAsString().EqualsASCII("bad device")) {
+ return NS_ERROR_FAILURE;
+ }
+
mState = kAllocated;
// generate sine wave (default 1KHz)
mSineGenerator = new SineWaveGenerator(AUDIO_RATE,
static_cast<uint32_t>(aPrefs.mFreq ? aPrefs.mFreq : 1000));
return NS_OK;
}
nsresult