/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
 * You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "nsISupports.idl"
#include "nsIVariant.idl"

[scriptable, builtinclass, uuid(ba3b2e08-1c07-4cd3-8822-f4d7e35ff2ae)]
interface nsIMediaDevice : nsISupports
{
  readonly attribute DOMString type;
  readonly attribute DOMString name;
  readonly attribute DOMString id;
  readonly attribute DOMString mediaSource;
  readonly attribute DOMString rawId;
  readonly attribute boolean scary;
};

[scriptable, function, uuid(24544878-d35e-4962-8c5f-fb84e97bdfee)]
interface nsIGetUserMediaDevicesSuccessCallback : nsISupports
{
  void onSuccess(in nsIVariant devices);
};

[scriptable, function, uuid(f2a144fc-3534-4761-8c5d-989ae720f89a)]
interface nsIDOMGetUserMediaSuccessCallback : nsISupports
{
  /*
   * value must be a nsIDOMBlob if picture is true and a
   * DOMLocalMediaStream if either audio or video are true.
   */
  void onSuccess(in nsISupports value);
};

[scriptable, function, uuid(39e96c61-2636-4f0e-918e-9bb64276492a)]
interface nsIDOMGetUserMediaErrorCallback : nsISupports
{
  void onError(in nsISupports error);
};