<!doctype html>
<html>
<head>
<title>enumerateDevices: test that enumerateDevices is present</title>
<link rel="author" title="Dr Alex Gouaillard" href="mailto:agouaillard@gmail.com"/>
<link rel="help" href="https://w3c.github.io/mediacapture-main/#enumerating-devices">
<meta name='assert' content='Check that the enumerateDevices() method is present.'/>
</head>
<body>
<h1 class="instructions">Description</h1>
<p class="instructions">This test checks for the presence of the
<code>navigator.mediaDevices.enumerateDevices()</code> method.</p>
<div id='log'></div>
<script src=/resources/testharness.js></script>
<script src=/resources/testharnessreport.js></script>
<script>
"use strict";
//NOTE ALEX: for completion, a test for ondevicechange event is missing.
promise_test(async () => {
  assert_true(undefined !== navigator.mediaDevices.enumerateDevices, "navigator.mediaDevices.enumerateDevices exists");
  const device_list =  await navigator.mediaDevices.enumerateDevices();
  for (const mediainfo of device_list) {
    assert_true(undefined !== mediainfo.deviceId, "mediaInfo's deviceId should exist.");
    assert_true(undefined !== mediainfo.kind,     "mediaInfo's kind     should exist.");
    assert_in_array(mediainfo.kind, ["videoinput", "audioinput", "audiooutput"]);
    assert_true(undefined !== mediainfo.label,    "mediaInfo's label    should exist.");
    assert_true(undefined !== mediainfo.groupId,  "mediaInfo's groupId  should exist.");
  }
}, "mediaDevices.enumerateDevices() is present and working");

promise_test(async () => {
  const device_list =  await navigator.mediaDevices.enumerateDevices();
  for (const mediainfo of device_list) {
    if (mediainfo.kind == "audioinput" || mediainfo.kind == "videoinput") {
      assert_true(mediainfo instanceof InputDeviceInfo);
    } else if ( mediainfo.kind == "audiooutput" ) {
      assert_true(mediainfo instanceof MediaDeviceInfo);
    } else {
      assert_unreached("mediainfo.kind should be one of 'audioinput', 'videoinput', or 'audiooutput'.")
    }
  }
}, "InputDeviceInfo is supported");
</script>
</body>
</html>
