2013-05-08 04:55:21 +04:00
|
|
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* 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/.
|
|
|
|
*
|
|
|
|
* The origin of this IDL file is
|
2016-02-21 03:48:20 +03:00
|
|
|
* http://w3c.github.io/webrtc-pc/#interface-definition
|
2013-05-08 04:55:21 +04:00
|
|
|
*/
|
|
|
|
|
2015-09-28 21:25:04 +03:00
|
|
|
callback RTCSessionDescriptionCallback = void (RTCSessionDescription sdp);
|
2014-11-26 23:26:37 +03:00
|
|
|
callback RTCPeerConnectionErrorCallback = void (DOMError error);
|
2013-05-08 04:55:21 +04:00
|
|
|
callback VoidFunction = void ();
|
2013-10-18 02:00:05 +04:00
|
|
|
callback RTCStatsCallback = void (RTCStatsReport report);
|
2013-05-08 04:55:21 +04:00
|
|
|
|
|
|
|
enum RTCSignalingState {
|
|
|
|
"stable",
|
|
|
|
"have-local-offer",
|
|
|
|
"have-remote-offer",
|
|
|
|
"have-local-pranswer",
|
|
|
|
"have-remote-pranswer",
|
|
|
|
"closed"
|
|
|
|
};
|
|
|
|
|
|
|
|
enum RTCIceGatheringState {
|
|
|
|
"new",
|
|
|
|
"gathering",
|
|
|
|
"complete"
|
|
|
|
};
|
|
|
|
|
|
|
|
enum RTCIceConnectionState {
|
|
|
|
"new",
|
|
|
|
"checking",
|
|
|
|
"connected",
|
|
|
|
"completed",
|
|
|
|
"failed",
|
|
|
|
"disconnected",
|
|
|
|
"closed"
|
|
|
|
};
|
|
|
|
|
2013-05-17 03:40:23 +04:00
|
|
|
dictionary RTCDataChannelInit {
|
2013-06-04 01:34:42 +04:00
|
|
|
boolean ordered = true;
|
|
|
|
unsigned short? maxRetransmitTime = null;
|
|
|
|
unsigned short? maxRetransmits = null;
|
|
|
|
DOMString protocol = "";
|
|
|
|
boolean negotiated = false; // spec currently says 'true'; we disagree
|
|
|
|
unsigned short? id = null;
|
|
|
|
|
|
|
|
// these are deprecated due to renaming in the spec, but still supported for Fx22
|
|
|
|
boolean outOfOrderAllowed; // now ordered, and the default changes to keep behavior the same
|
|
|
|
unsigned short maxRetransmitNum; // now maxRetransmits
|
|
|
|
boolean preset; // now negotiated
|
|
|
|
unsigned short stream; // now id
|
2013-05-17 03:40:23 +04:00
|
|
|
};
|
|
|
|
|
2015-07-16 22:36:34 +03:00
|
|
|
dictionary RTCOfferAnswerOptions {
|
|
|
|
// boolean voiceActivityDetection = true; // TODO: support this (Bug 1184712)
|
|
|
|
};
|
|
|
|
|
|
|
|
dictionary RTCAnswerOptions : RTCOfferAnswerOptions {
|
|
|
|
};
|
|
|
|
|
|
|
|
dictionary RTCOfferOptions : RTCOfferAnswerOptions {
|
2014-07-10 22:31:25 +04:00
|
|
|
long offerToReceiveVideo;
|
|
|
|
long offerToReceiveAudio;
|
2016-04-08 17:20:53 +03:00
|
|
|
boolean iceRestart = false;
|
2015-09-28 21:25:04 +03:00
|
|
|
|
|
|
|
// Mozilla proprietary options (at risk: Bug 1196974)
|
2014-09-09 09:12:24 +04:00
|
|
|
boolean mozDontOfferDataChannel;
|
|
|
|
boolean mozBundleOnly;
|
|
|
|
|
|
|
|
// TODO: Remove old constraint-like RTCOptions support soon (Bug 1064223).
|
|
|
|
DeprecatedRTCOfferOptionsSet mandatory;
|
|
|
|
sequence<DeprecatedRTCOfferOptionsSet> _optional;
|
|
|
|
};
|
|
|
|
|
|
|
|
dictionary DeprecatedRTCOfferOptionsSet {
|
|
|
|
boolean OfferToReceiveAudio; // Note the uppercase 'O'
|
|
|
|
boolean OfferToReceiveVideo; // Note the uppercase 'O'
|
|
|
|
boolean MozDontOfferDataChannel; // Note the uppercase 'M'
|
|
|
|
boolean MozBundleOnly; // Note the uppercase 'M'
|
2013-10-10 06:27:54 +04:00
|
|
|
};
|
|
|
|
|
2013-05-17 03:40:23 +04:00
|
|
|
interface RTCDataChannel;
|
|
|
|
|
2013-05-08 04:55:21 +04:00
|
|
|
[Pref="media.peerconnection.enabled",
|
|
|
|
JSImplementation="@mozilla.org/dom/peerconnection;1",
|
|
|
|
Constructor (optional RTCConfiguration configuration,
|
|
|
|
optional object? constraints)]
|
2015-09-28 21:25:04 +03:00
|
|
|
interface RTCPeerConnection : EventTarget {
|
2015-07-06 20:40:04 +03:00
|
|
|
[Throws, StaticClassOverride="mozilla::dom::RTCCertificate"]
|
|
|
|
static Promise<RTCCertificate> generateCertificate (AlgorithmIdentifier keygenAlgorithm);
|
|
|
|
|
2014-02-11 02:41:46 +04:00
|
|
|
[Pref="media.peerconnection.identity.enabled"]
|
|
|
|
void setIdentityProvider (DOMString provider,
|
|
|
|
optional DOMString protocol,
|
|
|
|
optional DOMString username);
|
|
|
|
[Pref="media.peerconnection.identity.enabled"]
|
2015-02-22 00:57:21 +03:00
|
|
|
Promise<DOMString> getIdentityAssertion();
|
2015-09-28 21:25:04 +03:00
|
|
|
Promise<RTCSessionDescription> createOffer (optional RTCOfferOptions options);
|
|
|
|
Promise<RTCSessionDescription> createAnswer (optional RTCAnswerOptions options);
|
|
|
|
Promise<void> setLocalDescription (RTCSessionDescription description);
|
|
|
|
Promise<void> setRemoteDescription (RTCSessionDescription description);
|
|
|
|
readonly attribute RTCSessionDescription? localDescription;
|
|
|
|
readonly attribute RTCSessionDescription? remoteDescription;
|
2013-05-08 04:55:21 +04:00
|
|
|
readonly attribute RTCSignalingState signalingState;
|
2015-09-28 21:25:04 +03:00
|
|
|
Promise<void> addIceCandidate (RTCIceCandidate candidate);
|
2016-02-21 03:48:20 +03:00
|
|
|
readonly attribute boolean? canTrickleIceCandidates;
|
2013-05-08 04:55:21 +04:00
|
|
|
readonly attribute RTCIceGatheringState iceGatheringState;
|
|
|
|
readonly attribute RTCIceConnectionState iceConnectionState;
|
2014-02-11 02:41:46 +04:00
|
|
|
[Pref="media.peerconnection.identity.enabled"]
|
2015-02-22 00:57:21 +03:00
|
|
|
readonly attribute Promise<RTCIdentityAssertion> peerIdentity;
|
|
|
|
[Pref="media.peerconnection.identity.enabled"]
|
|
|
|
readonly attribute DOMString? idpLoginUrl;
|
2014-02-11 02:41:46 +04:00
|
|
|
|
2014-05-23 01:14:56 +04:00
|
|
|
[ChromeOnly]
|
2014-11-20 22:43:02 +03:00
|
|
|
attribute DOMString id;
|
2014-05-23 01:14:56 +04:00
|
|
|
|
2014-07-10 22:31:25 +04:00
|
|
|
RTCConfiguration getConfiguration ();
|
2014-12-21 20:06:08 +03:00
|
|
|
[UnsafeInPrerendering]
|
2013-05-08 04:55:21 +04:00
|
|
|
sequence<MediaStream> getLocalStreams ();
|
2014-12-21 20:06:08 +03:00
|
|
|
[UnsafeInPrerendering]
|
2013-05-08 04:55:21 +04:00
|
|
|
sequence<MediaStream> getRemoteStreams ();
|
2014-12-21 20:06:08 +03:00
|
|
|
[UnsafeInPrerendering]
|
2013-05-08 04:55:21 +04:00
|
|
|
MediaStream? getStreamById (DOMString streamId);
|
2014-07-10 22:31:25 +04:00
|
|
|
void addStream (MediaStream stream);
|
2013-05-08 04:55:21 +04:00
|
|
|
void removeStream (MediaStream stream);
|
2014-08-14 05:40:41 +04:00
|
|
|
|
|
|
|
// replaces addStream; fails if already added
|
2014-08-14 05:40:54 +04:00
|
|
|
// because a track can be part of multiple streams, stream parameters
|
|
|
|
// indicate which particular streams should be referenced in signaling
|
2014-08-14 05:40:41 +04:00
|
|
|
|
2014-08-14 05:40:54 +04:00
|
|
|
RTCRtpSender addTrack(MediaStreamTrack track,
|
|
|
|
MediaStream stream,
|
|
|
|
MediaStream... moreStreams);
|
2014-08-14 05:40:41 +04:00
|
|
|
void removeTrack(RTCRtpSender sender);
|
|
|
|
|
|
|
|
sequence<RTCRtpSender> getSenders();
|
|
|
|
sequence<RTCRtpReceiver> getReceivers();
|
|
|
|
|
2015-12-09 23:37:38 +03:00
|
|
|
[ChromeOnly]
|
|
|
|
void mozSelectSsrc(RTCRtpReceiver receiver, unsigned short ssrcIndex);
|
|
|
|
|
2013-05-08 04:55:21 +04:00
|
|
|
void close ();
|
|
|
|
attribute EventHandler onnegotiationneeded;
|
|
|
|
attribute EventHandler onicecandidate;
|
|
|
|
attribute EventHandler onsignalingstatechange;
|
2016-01-12 23:09:01 +03:00
|
|
|
attribute EventHandler onaddstream; // obsolete
|
|
|
|
attribute EventHandler onaddtrack; // obsolete
|
|
|
|
attribute EventHandler ontrack; // replaces onaddtrack and onaddstream.
|
2013-05-08 04:55:21 +04:00
|
|
|
attribute EventHandler onremovestream;
|
|
|
|
attribute EventHandler oniceconnectionstatechange;
|
2013-10-18 02:00:05 +04:00
|
|
|
|
2015-07-21 23:36:10 +03:00
|
|
|
Promise<RTCStatsReport> getStats (optional MediaStreamTrack? selector);
|
2013-05-17 03:40:23 +04:00
|
|
|
|
|
|
|
// Data channel.
|
|
|
|
RTCDataChannel createDataChannel (DOMString label,
|
|
|
|
optional RTCDataChannelInit dataChannelDict);
|
|
|
|
attribute EventHandler ondatachannel;
|
2013-05-08 04:55:21 +04:00
|
|
|
};
|
2014-05-23 01:14:56 +04:00
|
|
|
|
2014-12-08 18:36:18 +03:00
|
|
|
// Legacy callback API
|
|
|
|
|
2015-09-28 21:25:04 +03:00
|
|
|
partial interface RTCPeerConnection {
|
2014-12-08 18:36:18 +03:00
|
|
|
|
|
|
|
// Dummy Promise<void> return values avoid "WebIDL.WebIDLError: error:
|
|
|
|
// We have overloads with both Promise and non-Promise return types"
|
|
|
|
|
|
|
|
Promise<void> createOffer (RTCSessionDescriptionCallback successCallback,
|
|
|
|
RTCPeerConnectionErrorCallback failureCallback,
|
|
|
|
optional RTCOfferOptions options);
|
|
|
|
Promise<void> createAnswer (RTCSessionDescriptionCallback successCallback,
|
|
|
|
RTCPeerConnectionErrorCallback failureCallback);
|
2015-09-28 21:25:04 +03:00
|
|
|
Promise<void> setLocalDescription (RTCSessionDescription description,
|
2014-12-08 18:36:18 +03:00
|
|
|
VoidFunction successCallback,
|
|
|
|
RTCPeerConnectionErrorCallback failureCallback);
|
2015-09-28 21:25:04 +03:00
|
|
|
Promise<void> setRemoteDescription (RTCSessionDescription description,
|
2014-12-08 18:36:18 +03:00
|
|
|
VoidFunction successCallback,
|
|
|
|
RTCPeerConnectionErrorCallback failureCallback);
|
2015-09-28 21:25:04 +03:00
|
|
|
Promise<void> addIceCandidate (RTCIceCandidate candidate,
|
2014-12-08 18:36:18 +03:00
|
|
|
VoidFunction successCallback,
|
|
|
|
RTCPeerConnectionErrorCallback failureCallback);
|
|
|
|
Promise<void> getStats (MediaStreamTrack? selector,
|
|
|
|
RTCStatsCallback successCallback,
|
|
|
|
RTCPeerConnectionErrorCallback failureCallback);
|
|
|
|
};
|