diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-28 14:29:10 +0000 |
commit | 2aa4a82499d4becd2284cdb482213d541b8804dd (patch) | |
tree | b80bf8bf13c3766139fbacc530efd0dd9d54394c /dom/media/webrtc/tests/mochitests/test_ondevicechange.html | |
parent | Initial commit. (diff) | |
download | firefox-upstream.tar.xz firefox-upstream.zip |
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/media/webrtc/tests/mochitests/test_ondevicechange.html')
-rw-r--r-- | dom/media/webrtc/tests/mochitests/test_ondevicechange.html | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/dom/media/webrtc/tests/mochitests/test_ondevicechange.html b/dom/media/webrtc/tests/mochitests/test_ondevicechange.html new file mode 100644 index 0000000000..185ad1e278 --- /dev/null +++ b/dom/media/webrtc/tests/mochitests/test_ondevicechange.html @@ -0,0 +1,62 @@ +<!DOCTYPE HTML> +<html> +<head> + <meta charset="utf-8"> + <script type="application/javascript" src="mediaStreamPlayback.js"></script> +</head> +<body> +<script type="application/javascript"> +"use strict"; + +createHTML({ + title: "ondevicechange tests", + bug: "1152383" +}); + +const RESPONSE_WAIT_TIME_MS = 3000; + +async function maybeReceiveDevicechangeEvent() { + return Promise.race([ + new Promise(r => navigator.mediaDevices.ondevicechange = () => r(true)), + wait(RESPONSE_WAIT_TIME_MS).then(() => false) + ]); +} + +runTest(async () => { + SimpleTest.requestCompleteLog(); + + await pushPrefs( + // Ensure there are continuous fake devicechange events throughout this test + ["media.ondevicechange.fakeDeviceChangeEvent.enabled", true], + // Make fake devices count as real, permission-wise, or devicechange events + // won't be exposed + ["media.navigator.permission.fake", true], + // Ensure this precondition to the below tests + ["media.navigator.permission.disabled", true] + ); + + const stream = await getUserMedia({video: true, fake: true}); + const [track] = stream.getVideoTracks(); + await pushPrefs(["media.navigator.permission.disabled", false]); + try { + ok(await maybeReceiveDevicechangeEvent(), + "devicechange event is fired when gUM is in use without permanent " + + "permission granted"); + } finally { + track.stop(); + } + + ok(!await maybeReceiveDevicechangeEvent(), + "devicechange event is NOT fired when gUM is NOT in use and " + + "permanent permission is NOT granted"); + + await pushPrefs(["media.navigator.permission.disabled", true]); + ok(await maybeReceiveDevicechangeEvent(), + "devicechange event is fired when gUM is NOT in use and permanent "+ + "permission is granted"); +}); + +</script> +</pre> +</body> +</html> |