| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Test passing capture device IDs to getUserMedia</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| |
| function deviceFromLabel(devices, label) |
| { |
| for (let device of devices) { |
| if (device.label === label) |
| return device; |
| } |
| } |
| |
| promise_test(async (test) => { |
| const devices = await navigator.mediaDevices.enumerateDevices(); |
| devices.forEach((device) => { |
| assert_not_equals(device.kind, "audiooutput", "device.kind"); |
| }); |
| }, "Before gum, no audiooutput is exposed"); |
| |
| promise_test(async (test) => { |
| await navigator.mediaDevices.getUserMedia({ audio:true, video:true }) |
| const devices = await navigator.mediaDevices.enumerateDevices(); |
| assert_true(devices.length > 2, "after getting permission, more than 1 camera and 1 microphone are exposed"); |
| devices.forEach((device) => { |
| assert_not_equals(device.deviceId.length == 0 , "device.deviceId is empty before permission to capture"); |
| }); |
| |
| if (!window.internals) |
| return; |
| |
| const mic1 = deviceFromLabel(devices, "Mock audio device 1"); |
| const mic2 = deviceFromLabel(devices, "Mock audio device 2"); |
| const speaker1 = deviceFromLabel(devices, "Mock speaker device 1"); |
| const speaker2 = deviceFromLabel(devices, "Mock speaker device 2"); |
| const speaker3 = deviceFromLabel(devices, "Mock speaker device 3"); |
| |
| assert_equals(speaker1.kind, "audiooutput", "speaker1"); |
| assert_not_equals(speaker1.groupId, "", "speaker1 groupId"); |
| |
| assert_equals(speaker2.kind, "audiooutput", "speaker2"); |
| assert_not_equals(speaker2.groupId, "", "speaker2 groupId"); |
| |
| assert_equals(speaker3, undefined, "speaker3"); |
| |
| assert_equals(speaker1.groupId, mic1.groupId, "device 1"); |
| assert_equals(speaker2.groupId, mic2.groupId, "device 2"); |
| }, "audiooutput devices"); |
| </script> |
| </head> |
| <body> |
| </body> |
| </html> |