Index: modules/mediastream/RTCPeerConnection.idl |
diff --git a/modules/mediastream/RTCPeerConnection.idl b/modules/mediastream/RTCPeerConnection.idl |
index fa5494606e720f8f19b2043bc0492e96f623dd77..8938088df476b4e0f7689ce1a310af3399f6d1e4 100644 |
--- a/modules/mediastream/RTCPeerConnection.idl |
+++ b/modules/mediastream/RTCPeerConnection.idl |
@@ -28,56 +28,106 @@ |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
+// https://w3c.github.io/webrtc-pc/#state-definitions |
+ |
+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" |
+}; |
+ |
+// https://w3c.github.io/webrtc-pc/#interface-definition |
+ |
+// TODO(guidou): Many types are of the wrong type in this interface: |
+// * Dictionary -> specific dictionary types like RTCConfiguration |
+// * VoidCallback -> VoidFunction |
[ |
GarbageCollected, |
- ActiveDOMObject, |
+ DependentLifetime, |
+ // TODO(guidou): There should only be one constructor argument, and it |
+ // should be optional. |
Constructor(Dictionary rtcConfiguration, optional Dictionary mediaConstraints), |
ConstructorCallWith=ExecutionContext, |
NoInterfaceObject, |
RaisesException=Constructor, |
] interface RTCPeerConnection : EventTarget { |
- [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary rtcOfferOptions); |
- |
- [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints); |
- |
- [RaisesException] void setLocalDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback); |
- [RaisesException=Getter] readonly attribute RTCSessionDescription localDescription; |
- |
- [RaisesException] void setRemoteDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback); |
- [RaisesException=Getter] readonly attribute RTCSessionDescription remoteDescription; |
- |
- readonly attribute DOMString signalingState; |
- |
- [RaisesException] void updateIce(optional Dictionary configuration, optional Dictionary mediaConstraints); |
- |
- // DEPRECATED |
- [RaisesException] void addIceCandidate(RTCIceCandidate candidate); |
- |
- [RaisesException] void addIceCandidate(RTCIceCandidate candidate, VoidCallback successCallback, RTCErrorCallback failureCallback); |
- |
- readonly attribute DOMString iceGatheringState; |
- readonly attribute DOMString iceConnectionState; |
+ // Promise<RTCSessionDescription> createOffer(optional RTCOfferOptions options); |
+ // Promise<RTCSessionDescription> createAnswer(optional RTCAnswerOptions options); |
+ [CallWith=ScriptState] Promise<void> setLocalDescription(RTCSessionDescriptionInit description); |
+ readonly attribute RTCSessionDescription? localDescription; |
+ // readonly attribute RTCSessionDescription? currentLocalDescription; |
+ // readonly attribute RTCSessionDescription? pendingLocalDescription; |
+ [CallWith=ScriptState] Promise<void> setRemoteDescription(RTCSessionDescriptionInit description); |
+ readonly attribute RTCSessionDescription? remoteDescription; |
+ // readonly attribute RTCSessionDescription? currentRemoteDescription; |
+ // readonly attribute RTCSessionDescription? pendingRemoteDescription; |
+ [CallWith=ScriptState] Promise<void> addIceCandidate ((RTCIceCandidateInit or RTCIceCandidate) candidate); |
+ readonly attribute RTCSignalingState signalingState; |
+ readonly attribute RTCIceGatheringState iceGatheringState; |
+ readonly attribute RTCIceConnectionState iceConnectionState; |
+ // readonly attribute boolean? canTrickleIceCandidates; |
+ // RTCConfiguration getConfiguration(); |
+ // void setConfiguration(RTCConfiguration configuration); |
+ // TODO(guidou): close() should never throw an exception. |
+ [RaisesException] void close(); |
+ attribute EventHandler onnegotiationneeded; |
+ attribute EventHandler onicecandidate; |
+ attribute EventHandler onsignalingstatechange; |
+ attribute EventHandler oniceconnectionstatechange; |
+ // attribute EventHandler onicegatheringstatechange; |
+ |
+ // https://w3c.github.io/webrtc-pc/#legacy-interface-extensions |
+ // These methods return or will be changed to return Promise<void> because |
+ // having Promise-based versions requires that all overloads return Promises. |
+ [CallWith=ExecutionContext, RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional Dictionary rtcOfferOptions); |
+ // TODO(guidou): There should be no mediaConstraints argument. |
+ [CallWith=ExecutionContext, RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints); |
+ [CallWith=ScriptState] Promise<void> setLocalDescription(RTCSessionDescription description, VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback); |
+ // TODO(guidou): The failureCallback argument should be non-optional. |
+ [CallWith=ScriptState] Promise<void> setRemoteDescription(RTCSessionDescription description, VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback); |
+ [CallWith=ScriptState] Promise<void> addIceCandidate(RTCIceCandidate candidate, VoidCallback successCallback, RTCPeerConnectionErrorCallback failureCallback); |
+ // TODO(guidou): The selector argument should the first (nullable, |
+ // non-optional) argument, and there should be a third failureCallback |
+ // argument. |
+ [CallWith=ExecutionContext, LegacyInterfaceTypeChecking] void getStats(RTCStatsCallback successCallback, [Default=Undefined] optional MediaStreamTrack selector); |
+ |
+ // https://w3c.github.io/webrtc-pc/#peer-to-peer-data-api |
+ // TODO(guidou): The label argument should have [TreatNullAs=EmptyString] |
+ // and be non-nullable. |
+ [RaisesException] RTCDataChannel createDataChannel([TreatUndefinedAs=NullString] DOMString? label, optional Dictionary options); |
+ attribute EventHandler ondatachannel; |
+ // Non-standard or removed from the spec: |
+ [CallWith=ExecutionContext, RaisesException] void updateIce(optional Dictionary configuration, optional Dictionary mediaConstraints); |
sequence<MediaStream> getLocalStreams(); |
sequence<MediaStream> getRemoteStreams(); |
MediaStream getStreamById(DOMString streamId); |
- |
- [TypeChecking=Interface, RaisesException] void addStream(MediaStream? stream, optional Dictionary mediaConstraints); |
- [TypeChecking=Interface, RaisesException] void removeStream(MediaStream? stream); |
- |
- void getStats(RTCStatsCallback successCallback, [Default=Undefined] optional MediaStreamTrack selector); |
- |
- [RaisesException] RTCDataChannel createDataChannel([TreatUndefinedAs=NullString] DOMString? label, optional Dictionary options); |
- |
+ [CallWith=ExecutionContext, RaisesException] void addStream(MediaStream? stream, optional Dictionary mediaConstraints); |
+ [RaisesException] void removeStream(MediaStream? stream); |
[RaisesException] RTCDTMFSender createDTMFSender(MediaStreamTrack track); |
- |
- [RaisesException] void close(); |
- |
- attribute EventHandler onnegotiationneeded; |
- attribute EventHandler onicecandidate; |
- attribute EventHandler onsignalingstatechange; |
attribute EventHandler onaddstream; |
attribute EventHandler onremovestream; |
- attribute EventHandler oniceconnectionstatechange; |
- attribute EventHandler ondatachannel; |
+ |
+ // Certificate management |
+ // http://w3c.github.io/webrtc-pc/#sec.cert-mgmt |
+ [RaisesException, CallWith=ScriptState] static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm); |
}; |