50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
// META: script=/resources/WebIDLParser.js
|
|
// META: script=/resources/idlharness.js
|
|
// META: timeout=long
|
|
|
|
'use strict';
|
|
|
|
// https://w3c.github.io/mediacapture-main/
|
|
|
|
idl_test(
|
|
['mediacapture-streams'],
|
|
['webidl', 'dom', 'html', 'permissions'],
|
|
async idl_array => {
|
|
const inputDevices = [];
|
|
const outputDevices = [];
|
|
try {
|
|
const list = await navigator.mediaDevices.enumerateDevices();
|
|
for (const device of list) {
|
|
if (device.kind in self) {
|
|
continue;
|
|
}
|
|
assert_in_array(device.kind, ['audioinput', 'videoinput', 'audiooutput']);
|
|
self[device.kind] = device;
|
|
if (device.kind.endsWith('input')) {
|
|
inputDevices.push(device.kind);
|
|
} else {
|
|
outputDevices.push(device.kind);
|
|
}
|
|
}
|
|
} catch (e) {}
|
|
|
|
try {
|
|
self.stream = await navigator.mediaDevices.getUserMedia({audio: true});
|
|
self.track = stream.getTracks()[0];
|
|
self.trackEvent = new MediaStreamTrackEvent("type", {
|
|
track: track,
|
|
});
|
|
} catch (e) {}
|
|
|
|
idl_array.add_objects({
|
|
InputDeviceInfo: inputDevices,
|
|
MediaStream: ['stream', 'new MediaStream()'],
|
|
Navigator: ['navigator'],
|
|
MediaDevices: ['navigator.mediaDevices'],
|
|
MediaDeviceInfo: outputDevices,
|
|
MediaStreamTrack: ['track'],
|
|
MediaStreamTrackEvent: ['trackEvent'],
|
|
OverconstrainedError: ['new OverconstrainedError("constraint")'],
|
|
});
|
|
}
|
|
);
|