/**
 * Copyright 2014 The Chromium Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

/**
 * Queries for media devices on the current system using the getMediaDevices
 * API.
 *
 * Returns the list of devices available.
 */
function getMediaDevices() {
  navigator.getMediaDevices(function(devices) {
    returnToTest(JSON.stringify(devices));
  });
}

/**
 * Queries for media sources on the current system using the getSources API.
 *
 * Returns the list of sources available.
 */
function getSources() {
  MediaStreamTrack.getSources(function(sources) {
    returnToTest(JSON.stringify(sources));
  });
}

/**
 * Queries for video input devices on the current system using the
 * getSources API.
 *
 * This does not guarantee that a getUserMedia with video will succeed, as the
 * camera could be busy for instance.
 *
 * Returns has-video-input-device to the test if there is a webcam available,
 * no-video-input-devices otherwise.
 */
function hasVideoInputDeviceOnSystem() {
  MediaStreamTrack.getSources(function(devices) {
    var hasVideoInputDevice = false;
    devices.forEach(function(device) {
      if (device.kind == 'video')
        hasVideoInputDevice = true;
    });

    if (hasVideoInputDevice)
      returnToTest('has-video-input-device');
    else
      returnToTest('no-video-input-devices');
  });
}