aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/webidls/RTCPeerConnection.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'components/script/dom/webidls/RTCPeerConnection.webidl')
-rw-r--r--components/script/dom/webidls/RTCPeerConnection.webidl153
1 files changed, 153 insertions, 0 deletions
diff --git a/components/script/dom/webidls/RTCPeerConnection.webidl b/components/script/dom/webidls/RTCPeerConnection.webidl
new file mode 100644
index 00000000000..d75f2f9c14c
--- /dev/null
+++ b/components/script/dom/webidls/RTCPeerConnection.webidl
@@ -0,0 +1,153 @@
+/* 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<RTCSessionDescriptionInit> createOffer(optional RTCOfferOptions options = {});
+ Promise<RTCSessionDescriptionInit> createAnswer(optional RTCAnswerOptions options = {});
+ Promise<void> setLocalDescription(RTCSessionDescriptionInit description);
+ readonly attribute RTCSessionDescription? localDescription;
+ // readonly attribute RTCSessionDescription? currentLocalDescription;
+ // readonly attribute RTCSessionDescription? pendingLocalDescription;
+ Promise<void> setRemoteDescription(RTCSessionDescriptionInit description);
+ readonly attribute RTCSessionDescription? remoteDescription;
+ // readonly attribute RTCSessionDescription? currentRemoteDescription;
+ // readonly attribute RTCSessionDescription? pendingRemoteDescription;
+ Promise<void> 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<RTCIceServer> 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;
+
+ // removed from spec, but still shipped by browsers
+ void addStream (MediaStream stream);
+};
+
+dictionary RTCConfiguration {
+ sequence<RTCIceServer> iceServers;
+ RTCIceTransportPolicy iceTransportPolicy = "all";
+ RTCBundlePolicy bundlePolicy = "balanced";
+ RTCRtcpMuxPolicy rtcpMuxPolicy = "require";
+ DOMString peerIdentity;
+ // sequence<RTCCertificate> 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<DOMString>) 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<MediaStream> streams = [];
+ sequence<RTCRtpEncodingParameters> sendEncodings = [];
+};
+
+partial interface RTCPeerConnection {
+ // sequence<RTCRtpSender> getSenders();
+ // sequence<RTCRtpReceiver> getReceivers();
+ // sequence<RTCRtpTransceiver> 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;
+};