blob: 95bcbfd3e445f716574e7948a1ed411fa402bfaf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
<!DOCTYPE HTML>
<html>
<head>
<script type="application/javascript" src="mediaStreamPlayback.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
"use strict";
createHTML({
title: "Test the ability of opening multiple microphones via gUM",
bug: "1238038",
});
runTest(async () => {
// Ensure we use the real microphones by disabling loopback devices and fake devices.
await pushPrefs(["media.audio_loopback_dev", ""], ["media.navigator.streams.fake", false]);
try {
let devices = await navigator.mediaDevices.enumerateDevices();
// Create constraints
let constraints = [];
devices.forEach((device) => {
if (device.kind === "audioinput") {
constraints.push({
audio: { deviceId: { exact: device.deviceId } },
});
}
});
if (constraints.length >= 2) {
// Create constraints
let constraints = [];
devices.forEach((device) => {
if (device.kind === "audioinput") {
constraints.push({
audio: { deviceId: { exact: device.deviceId } },
});
}
});
// Open microphones by the constraints
let mediaStreams = [];
for (let c of constraints) {
let stream = await navigator.mediaDevices.getUserMedia(c);
dump("MediaStream: " + stream.id + " for device: " + c.audio.deviceId.exact + " is created\n");
mediaStreams.push(stream);
}
// Close microphones
for (let stream of mediaStreams) {
for (let track of stream.getTracks()) {
track.stop();
}
dump("Stop all tracks in MediaStream: " + stream.id + "\n");
}
mediaStreams = [];
} else {
dump("Skip test since we need at least two microphones\n");
}
} catch (e) {
ok(false, e.name + ": " + e.message);
}
});
</script>
</pre>
</body>
</html>
|