// Support script for test that use getUserMedia. This allows explicit // configuration of prefs which affect gUM. See also // `testing/mochitest/runtests.py` for how the harness configures values.
// Setup preconditions for tests using getUserMedia. This functions helps // manage different prefs that affect gUM calls in tests and makes explicit // the expected state before test runs.
async function pushGetUserMediaTestPrefs({
fakeAudio = false,
fakeVideo = false,
loopbackAudio = false,
loopbackVideo = false,
}) { // Make sure we have sensical arguments if (!fakeAudio && !loopbackAudio) { thrownew Error( "pushGetUserMediaTestPrefs: Should have fake or loopback audio!"
);
} elseif (fakeAudio && loopbackAudio) { thrownew Error( "pushGetUserMediaTestPrefs: Should not have both fake and loopback audio!"
);
} if (!fakeVideo && !loopbackVideo) { thrownew Error( "pushGetUserMediaTestPrefs: Should have fake or loopback video!"
);
} elseif (fakeVideo && loopbackVideo) { thrownew Error( "pushGetUserMediaTestPrefs: Should not have both fake and loopback video!"
);
}
let testPrefs = []; if (fakeAudio) { // Unset the loopback device so it doesn't take precedence
testPrefs.push(["media.audio_loopback_dev", ""]); // Setup fake streams pref
testPrefs.push(["media.navigator.streams.fake", true]);
} if (loopbackAudio) { // If audio loopback is requested we expect the test harness to have set // the loopback device pref, make sure it's set
let audioLoopDev = SpecialPowers.getCharPref( "media.audio_loopback_dev", ""
); if (!audioLoopDev) { thrownew Error( "pushGetUserMediaTestPrefs: Loopback audio requested but " + "media.audio_loopback_dev does not appear to be set!"
);
}
} if (fakeVideo) { // Unset the loopback device so it doesn't take precedence
testPrefs.push(["media.video_loopback_dev", ""]); // Setup fake streams pref
testPrefs.push(["media.navigator.streams.fake", true]);
} if (loopbackVideo) { // If video loopback is requested we expect the test harness to have set // the loopback device pref, make sure it's set
let videoLoopDev = SpecialPowers.getCharPref( "media.video_loopback_dev", ""
); if (!videoLoopDev) { thrownew Error( "pushGetUserMediaTestPrefs: Loopback video requested but " + "media.video_loopback_dev does not appear to be set!"
);
}
} // Prevent presentation of the gUM permission prompt.
testPrefs.push(["media.navigator.permission.disabled", true]); return SpecialPowers.pushPrefEnv({ set: testPrefs });
}
// Setup preconditions for tests using getUserMedia. This function will // configure prefs to select loopback device(s) if it can find loopback device // names already set in the prefs. If no loopback device name can be found then // prefs are setup such that a fake device is used.
async function setupGetUserMediaTestPrefs() {
let prefRequests = {};
let audioLoopDev = SpecialPowers.getCharPref("media.audio_loopback_dev", ""); if (audioLoopDev) {
prefRequests.fakeAudio = false;
prefRequests.loopbackAudio = true;
} else {
prefRequests.fakeAudio = true;
prefRequests.loopbackAudio = false;
}
let videoLoopDev = SpecialPowers.getCharPref("media.video_loopback_dev", ""); if (videoLoopDev) {
prefRequests.fakeVideo = false;
prefRequests.loopbackVideo = true;
} else {
prefRequests.fakeVideo = true;
prefRequests.loopbackVideo = false;
} return pushGetUserMediaTestPrefs(prefRequests);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.