/* 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 https://mozilla.org/MPL/2.0/. */ // https://w3c.github.io/webrtc-pc/#interface-definition [Exposed=Window, Pref="dom_webrtc_enabled"] interface RTCPeerConnection : EventTarget { [Throws] constructor(optional RTCConfiguration configuration = {}); Promise createOffer(optional RTCOfferOptions options = {}); Promise createAnswer(optional RTCAnswerOptions options = {}); Promise setLocalDescription(RTCSessionDescriptionInit description); readonly attribute RTCSessionDescription? localDescription; // readonly attribute RTCSessionDescription? currentLocalDescription; // readonly attribute RTCSessionDescription? pendingLocalDescription; Promise setRemoteDescription(RTCSessionDescriptionInit description); readonly attribute RTCSessionDescription? remoteDescription; // readonly attribute RTCSessionDescription? currentRemoteDescription; // readonly attribute RTCSessionDescription? pendingRemoteDescription; Promise addIceCandidate(optional RTCIceCandidateInit candidate = {}); readonly attribute RTCSignalingState signalingState; readonly attribute RTCIceGatheringState iceGatheringState; readonly attribute RTCIceConnectionState iceConnectionState; // readonly attribute RTCPeerConnectionState connectionState; // readonly attribute boolean? canTrickleIceCandidates; // static sequence getDefaultIceServers(); // RTCConfiguration getConfiguration(); // void setConfiguration(RTCConfiguration configuration); undefined close(); attribute EventHandler onnegotiationneeded; attribute EventHandler onicecandidate; // attribute EventHandler onicecandidateerror; attribute EventHandler onsignalingstatechange; attribute EventHandler oniceconnectionstatechange; attribute EventHandler onicegatheringstatechange; // attribute EventHandler onconnectionstatechange; // removed from spec, but still shipped by browsers undefined addStream (MediaStream stream); }; dictionary RTCConfiguration { sequence iceServers; RTCIceTransportPolicy iceTransportPolicy = "all"; RTCBundlePolicy bundlePolicy = "balanced"; RTCRtcpMuxPolicy rtcpMuxPolicy = "require"; DOMString peerIdentity; // sequence certificates; [EnforceRange] octet iceCandidatePoolSize = 0; }; enum RTCIceTransportPolicy { "relay", "all" }; enum RTCBundlePolicy { "balanced", "max-compat", "max-bundle" }; enum RTCRtcpMuxPolicy { // At risk due to lack of implementers' interest. "negotiate", "require" }; dictionary RTCIceServer { required (DOMString or sequence) urls; DOMString username; DOMString /*(DOMString or RTCOAuthCredential)*/ credential; RTCIceCredentialType credentialType = "password"; }; enum RTCIceCredentialType { "password", "oauth" }; dictionary RTCOfferAnswerOptions { boolean voiceActivityDetection = true; }; dictionary RTCOfferOptions : RTCOfferAnswerOptions { boolean iceRestart = false; }; dictionary RTCAnswerOptions : RTCOfferAnswerOptions { }; enum RTCIceGatheringState { "new", "gathering", "complete" }; enum RTCIceConnectionState { "new", "checking", "connected", "completed", "disconnected", "failed", "closed" }; enum RTCSignalingState { "stable", "have-local-offer", "have-remote-offer", "have-local-pranswer", "have-remote-pranswer", "closed" }; dictionary RTCRtpCodingParameters { DOMString rid; }; dictionary RTCRtpEncodingParameters : RTCRtpCodingParameters { boolean active = true; unsigned long maxBitrate; double scaleResolutionDownBy; }; dictionary RTCRtpTransceiverInit { RTCRtpTransceiverDirection direction = "sendrecv"; sequence streams = []; sequence sendEncodings = []; }; partial interface RTCPeerConnection { // sequence getSenders(); // sequence getReceivers(); // sequence getTransceivers(); // RTCRtpSender addTrack(MediaStreamTrack track, // MediaStream... streams); // void removeTrack(RTCRtpSender sender); [Pref="dom_webrtc_transceiver_enabled"] RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind, optional RTCRtpTransceiverInit init = {}); attribute EventHandler ontrack; }; // https://www.w3.org/TR/webrtc/#rtcpeerconnection-interface-extensions-0 partial interface RTCPeerConnection { // readonly attribute RTCSctpTransport? sctp; RTCDataChannel createDataChannel(USVString label, optional RTCDataChannelInit dataChannelDict = {}); attribute EventHandler ondatachannel; };