gecko-dev/testing/web-platform/tests/audio-output/enumerateDevices-permissions-policy.https.html
Karl Tomlinson d4b472d375 Bug 1577199 Test speaker-selection permissions policy on enumerateDevices() r=jib
Mozilla will usually run enumerateDevices-permissions-policy.https.html
without media.navigator.streams.fake because fake input devices are in
different groups to the output devices.  The exception is Mozilla's Mac test
machines because they have no real audio input device.  With fake input
devices, there are no exposed output devices to test.

Differential Revision: https://phabricator.services.mozilla.com/D119865
2021-08-02 00:13:56 +00:00

32 lines
1.2 KiB
HTML

<!DOCTYPE html>
<head>
<title>
Test permissions policy on enumerateDevices() after getUserMedia()
</title>
<link rel="help" href="https://w3c.github.io/mediacapture-output/#privacy-obtaining-consent">
<meta charset=utf-8>
<body>
<p class="instructions">If prompted, <strong>please allow</strong> access to
a microphone device.</p>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/common/get-host-info.sub.js"></script>
<script src="/permissions-policy/resources/permissions-policy.js"></script>
<script>
'use strict';
promise_test(async () => {
const frame = document.createElement('iframe');
frame.allow = "speaker-selection 'none'"
const promise_load = new Promise(r => frame.onload = r);
document.body.appendChild(frame);
await promise_load;
const fDevices = frame.contentWindow.navigator.mediaDevices;
await fDevices.getUserMedia({ audio: true });
const list = await fDevices.enumerateDevices();
const outputDevicesList = list.filter(({kind}) => kind == "audiooutput");
assert_equals(outputDevicesList.length, 0, "number of output devices.");
}, "permissions policy on enumerateDevices() after getUserMedia()");
</script>
</body>