summaryrefslogtreecommitdiffstats
path: root/dom/webidl/PeerConnectionImpl.webidl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/webidl/PeerConnectionImpl.webidl')
-rw-r--r--dom/webidl/PeerConnectionImpl.webidl107
1 files changed, 107 insertions, 0 deletions
diff --git a/dom/webidl/PeerConnectionImpl.webidl b/dom/webidl/PeerConnectionImpl.webidl
new file mode 100644
index 000000000..f3348aec8
--- /dev/null
+++ b/dom/webidl/PeerConnectionImpl.webidl
@@ -0,0 +1,107 @@
+/* -*- 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/.
+ *
+ * PeerConnection.js' interface to the C++ PeerConnectionImpl.
+ *
+ * Do not confuse with RTCPeerConnection. This interface is purely for
+ * communication between the PeerConnection JS DOM binding and the C++
+ * implementation in SIPCC.
+ *
+ * See media/webrtc/signaling/include/PeerConnectionImpl.h
+ *
+ */
+
+interface nsISupports;
+
+/* Must be created first. Observer events will be dispatched on the thread provided */
+[ChromeOnly, Constructor]
+interface PeerConnectionImpl {
+ /* Must be called first. Observer events dispatched on the thread provided */
+ [Throws]
+ void initialize(PeerConnectionObserver observer, Window window,
+ RTCConfiguration iceServers,
+ nsISupports thread);
+
+ /* JSEP calls */
+ [Throws]
+ void createOffer(optional RTCOfferOptions options);
+ [Throws]
+ void createAnswer();
+ [Throws]
+ void setLocalDescription(long action, DOMString sdp);
+ [Throws]
+ void setRemoteDescription(long action, DOMString sdp);
+
+ /* Stats call, calls either |onGetStatsSuccess| or |onGetStatsError| on our
+ observer. (see the |PeerConnectionObserver| interface) */
+ [Throws]
+ void getStats(MediaStreamTrack? selector);
+
+ /* Adds the tracks created by GetUserMedia */
+ [Throws]
+ void addTrack(MediaStreamTrack track, MediaStream... streams);
+ [Throws]
+ void removeTrack(MediaStreamTrack track);
+ [Throws]
+ void insertDTMF(RTCRtpSender sender, DOMString tones,
+ optional unsigned long duration = 100,
+ optional unsigned long interToneGap = 70);
+ [Throws]
+ DOMString getDTMFToneBuffer(RTCRtpSender sender);
+ [Throws]
+ void replaceTrack(MediaStreamTrack thisTrack, MediaStreamTrack withTrack);
+ [Throws]
+ void setParameters(MediaStreamTrack track,
+ optional RTCRtpParameters parameters);
+ [Throws]
+ RTCRtpParameters getParameters(MediaStreamTrack track);
+ [Throws]
+ void closeStreams();
+
+ sequence<MediaStream> getLocalStreams();
+ sequence<MediaStream> getRemoteStreams();
+
+ void selectSsrc(MediaStreamTrack recvTrack, unsigned short ssrcIndex);
+
+ /* As the ICE candidates roll in this one should be called each time
+ * in order to keep the candidate list up-to-date for the next SDP-related
+ * call PeerConnectionImpl does not parse ICE candidates, just sticks them
+ * into the SDP.
+ */
+ [Throws]
+ void addIceCandidate(DOMString candidate, DOMString mid, unsigned short level);
+
+ /* Puts the SIPCC engine back to 'kIdle', shuts down threads, deletes state */
+ void close();
+
+ /* Notify DOM window if this plugin crash is ours. */
+ boolean pluginCrash(unsigned long long pluginId, DOMString name);
+
+ /* Attributes */
+ /* This provides the implementation with the certificate it uses to
+ * authenticate itself. The JS side must set this before calling
+ * createOffer/createAnswer or retrieving the value of fingerprint. This has
+ * to be delayed because generating the certificate takes some time. */
+ attribute RTCCertificate certificate;
+ [Constant]
+ readonly attribute DOMString fingerprint;
+ readonly attribute DOMString localDescription;
+ readonly attribute DOMString remoteDescription;
+
+ readonly attribute PCImplIceConnectionState iceConnectionState;
+ readonly attribute PCImplIceGatheringState iceGatheringState;
+ readonly attribute PCImplSignalingState signalingState;
+ attribute DOMString id;
+
+ attribute DOMString peerIdentity;
+ readonly attribute boolean privacyRequested;
+
+ /* Data channels */
+ [Throws]
+ DataChannel createDataChannel(DOMString label, DOMString protocol,
+ unsigned short type, boolean outOfOrderAllowed,
+ unsigned short maxTime, unsigned short maxNum,
+ boolean externalNegotiated, unsigned short stream);
+};