1/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2/* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this file,
4 * You can obtain one at http://mozilla.org/MPL/2.0/.
5 *
6 * The origins of this IDL file are
7 * http://dev.w3.org/2011/webrtc/editor/getusermedia.html
8 *
9 * Copyright � 2012 W3C� (MIT, ERCIM, Keio), All Rights Reserved. W3C
10 * liability, trademark and document use rules apply.
11 */
12
13// These dictionaries need to be in a separate file from their
14// MediaTrackConstraints* counterparts due to a webidl compiler limitation.
15
16dictionary MediaStreamConstraints {
17    (boolean or MediaTrackConstraints) audio = false;
18    (boolean or MediaTrackConstraints) video = false;
19    boolean picture = false; // Mozilla legacy
20    boolean fake;       // For testing purpose. Generates frames of solid
21                        // colors if video is enabled, and sound of 1Khz sine
22                        // wave if audio is enabled.
23    DOMString? peerIdentity = null;
24};
25
26dictionary DisplayMediaStreamConstraints {
27    (boolean or MediaTrackConstraints) video = true;
28    (boolean or MediaTrackConstraints) audio = false;
29};
30
31[Exposed=Window]
32interface MediaStream : EventTarget {
33    [Throws]
34    constructor();
35    [Throws]
36    constructor(MediaStream stream);
37    [Throws]
38    constructor(sequence<MediaStreamTrack> tracks);
39
40    readonly    attribute DOMString    id;
41    sequence<MediaStreamTrack> getAudioTracks ();
42    sequence<MediaStreamTrack> getVideoTracks ();
43    sequence<MediaStreamTrack> getTracks ();
44    MediaStreamTrack?          getTrackById (DOMString trackId);
45    void                       addTrack (MediaStreamTrack track);
46    void                       removeTrack (MediaStreamTrack track);
47    MediaStream                clone ();
48    readonly    attribute boolean      active;
49                attribute EventHandler onaddtrack;
50                attribute EventHandler onremovetrack;
51
52    [ChromeOnly, Throws]
53    static Promise<long> countUnderlyingStreams();
54
55    // Webrtc allows the remote side to name a stream whatever it wants, and we
56    // need to surface this to content.
57    [ChromeOnly]
58    void assignId(DOMString id);
59};
60