/* 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 [Constructor(optional RTCConfiguration configuration), Exposed=Window, Pref="dom.webrtc.enabled"] interface RTCPeerConnection : EventTarget { // 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(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); // void close(); // attribute EventHandler onnegotiationneeded; // attribute EventHandler onicecandidate; // attribute EventHandler onicecandidateerror; // attribute EventHandler onsignalingstatechange; // attribute EventHandler oniceconnectionstatechange; // attribute EventHandler onicegatheringstatechange; // attribute EventHandler onconnectionstatechange; }; 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" };