blob: b16c9dd03aeb9bc4c7a83993a968c6090d5dc496 [file] [edit]
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>Testing 'devicechange' event is fired correctly.</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script>
promise_test(async (test) => {
let promise;
const devices1 = await navigator.mediaDevices.enumerateDevices();
promise = new Promise(resolve => {
navigator.mediaDevices.ondevicechange = resolve;
});
const stream1 = await navigator.mediaDevices.getUserMedia({ audio:true, video:false });
test.add_cleanup(() => stream1.getTracks().forEach(track => track.stop()));
await promise;
const devices2 = await navigator.mediaDevices.enumerateDevices();
promise = new Promise(resolve => {
navigator.mediaDevices.ondevicechange = resolve;
});
const stream2 = await navigator.mediaDevices.getUserMedia({ audio:false, video:true });
test.add_cleanup(() => stream2.getTracks().forEach(track => track.stop()));
await promise;
await promise;
const devices3 = await navigator.mediaDevices.enumerateDevices();
assert_equals(devices1.length, 2, "devices1 length");
assert_equals(devices1[0].label, "", "devices1 first label");
assert_equals(devices1[1].label, "", "devices1 second label");
assert_equals(devices1[0].kind, "audioinput", "devices1 first kind");
assert_equals(devices1[1].kind, "videoinput", "devices1 second kind");
assert_greater_than(devices2.length, devices1.length);
assert_greater_than(devices3.length, devices2.length);
assert_not_equals(devices2[0].label, "");
let hasCamera = false;
for (let device of devices2) {
if (device.kind === "videoinput") {
hasCamera = true;
assert_equals(device.label, "", "empty camera in devices2");
}
}
assert_true(hasCamera, "hasCamera");
for (let device of devices3)
assert_not_equals(device.label, "", "devices3");
}, "'devicechange' event fired when getUserMedia is called with microphone and then with camera");
</script>
</head>
<body>
</body>
</html>