| // IDL definition extracted from | |
| // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html | |
| dictionary RTCConfiguration { | |
| sequence<RTCIceServer> iceServers; | |
| RTCIceTransportPolicy iceTransportPolicy = "all"; | |
| RTCBundlePolicy bundlePolicy = "balanced"; | |
| RTCRtcpMuxPolicy rtcpMuxPolicy = "require"; | |
| DOMString peerIdentity; | |
| sequence<RTCCertificate> certificates; | |
| [EnforceRange] | |
| octet iceCandidatePoolSize = 0; | |
| }; | |
| enum RTCIceCredentialType { | |
| "password", | |
| "oauth" | |
| }; | |
| dictionary RTCOAuthCredential { | |
| required DOMString macKey; | |
| required DOMString accessToken; | |
| }; | |
| dictionary RTCIceServer { | |
| required (DOMString or sequence<DOMString>) urls; | |
| DOMString username; | |
| (DOMString or RTCOAuthCredential) credential; | |
| RTCIceCredentialType credentialType = "password"; | |
| }; | |
| enum RTCIceTransportPolicy { | |
| "relay", | |
| "all" | |
| }; | |
| enum RTCBundlePolicy { | |
| "balanced", | |
| "max-compat", | |
| "max-bundle" | |
| }; | |
| enum RTCRtcpMuxPolicy { | |
| // At risk due to lack of implementers' interest. | |
| "negotiate", | |
| "require" | |
| }; | |
| dictionary RTCOfferAnswerOptions { | |
| boolean voiceActivityDetection = true; | |
| }; | |
| dictionary RTCOfferOptions : RTCOfferAnswerOptions { | |
| boolean iceRestart = false; | |
| boolean offerToReceiveAudio; | |
| boolean offerToReceiveVideo; | |
| }; | |
| dictionary RTCAnswerOptions : RTCOfferAnswerOptions { | |
| }; | |
| [Constructor(optional RTCConfiguration configuration)] | |
| interface RTCPeerConnection : EventTarget { | |
| 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((RTCIceCandidateInit or RTCIceCandidate) 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; | |
| attribute EventHandler onfingerprintfailure; | |
| }; | |
| partial interface RTCPeerConnection { | |
| Promise<void> createOffer(RTCSessionDescriptionCallback successCallback, | |
| RTCPeerConnectionErrorCallback failureCallback, | |
| optional RTCOfferOptions options); | |
| Promise<void> setLocalDescription(RTCSessionDescriptionInit description, | |
| VoidFunction successCallback, | |
| RTCPeerConnectionErrorCallback failureCallback); | |
| Promise<void> createAnswer(RTCSessionDescriptionCallback successCallback, | |
| RTCPeerConnectionErrorCallback failureCallback); | |
| Promise<void> setRemoteDescription(RTCSessionDescriptionInit description, | |
| VoidFunction successCallback, | |
| RTCPeerConnectionErrorCallback failureCallback); | |
| Promise<void> addIceCandidate((RTCIceCandidateInit or RTCIceCandidate) candidate, | |
| VoidFunction successCallback, | |
| RTCPeerConnectionErrorCallback failureCallback); | |
| }; | |
| callback RTCPeerConnectionErrorCallback = void (DOMException error); | |
| callback RTCSessionDescriptionCallback = void (RTCSessionDescriptionInit description); | |
| enum RTCSignalingState { | |
| "stable", | |
| "have-local-offer", | |
| "have-remote-offer", | |
| "have-local-pranswer", | |
| "have-remote-pranswer", | |
| "closed" | |
| }; | |
| enum RTCIceGatheringState { | |
| "new", | |
| "gathering", | |
| "complete" | |
| }; | |
| enum RTCPeerConnectionState { | |
| "new", | |
| "connecting", | |
| "connected", | |
| "disconnected", | |
| "failed", | |
| "closed" | |
| }; | |
| enum RTCIceConnectionState { | |
| "new", | |
| "checking", | |
| "connected", | |
| "completed", | |
| "failed", | |
| "disconnected", | |
| "closed" | |
| }; | |
| enum RTCSdpType { | |
| "offer", | |
| "pranswer", | |
| "answer", | |
| "rollback" | |
| }; | |
| [Constructor(RTCSessionDescriptionInit descriptionInitDict)] | |
| interface RTCSessionDescription { | |
| readonly attribute RTCSdpType type; | |
| readonly attribute DOMString sdp; | |
| [Default] object toJSON(); | |
| }; | |
| dictionary RTCSessionDescriptionInit { | |
| required RTCSdpType type; | |
| DOMString sdp = ""; | |
| }; | |
| [Constructor(optional RTCIceCandidateInit candidateInitDict)] | |
| interface RTCIceCandidate { | |
| readonly attribute DOMString candidate; | |
| readonly attribute DOMString? sdpMid; | |
| readonly attribute unsigned short? sdpMLineIndex; | |
| readonly attribute DOMString? foundation; | |
| readonly attribute RTCIceComponent? component; | |
| readonly attribute unsigned long? priority; | |
| readonly attribute DOMString? ip; | |
| readonly attribute RTCIceProtocol? protocol; | |
| readonly attribute unsigned short? port; | |
| readonly attribute RTCIceCandidateType? type; | |
| readonly attribute RTCIceTcpCandidateType? tcpType; | |
| readonly attribute DOMString? relatedAddress; | |
| readonly attribute unsigned short? relatedPort; | |
| readonly attribute DOMString? usernameFragment; | |
| RTCIceCandidateInit toJSON(); | |
| }; | |
| dictionary RTCIceCandidateInit { | |
| DOMString candidate = ""; | |
| DOMString? sdpMid = null; | |
| unsigned short? sdpMLineIndex = null; | |
| DOMString usernameFragment; | |
| }; | |
| enum RTCIceProtocol { | |
| "udp", | |
| "tcp" | |
| }; | |
| enum RTCIceTcpCandidateType { | |
| "active", | |
| "passive", | |
| "so" | |
| }; | |
| enum RTCIceCandidateType { | |
| "host", | |
| "srflx", | |
| "prflx", | |
| "relay" | |
| }; | |
| [Constructor(DOMString type, optional RTCPeerConnectionIceEventInit eventInitDict)] | |
| interface RTCPeerConnectionIceEvent : Event { | |
| readonly attribute RTCIceCandidate? candidate; | |
| readonly attribute DOMString? url; | |
| }; | |
| dictionary RTCPeerConnectionIceEventInit : EventInit { | |
| RTCIceCandidate? candidate; | |
| DOMString? url; | |
| }; | |
| [Constructor(DOMString type, RTCPeerConnectionIceErrorEventInit eventInitDict)] | |
| interface RTCPeerConnectionIceErrorEvent : Event { | |
| readonly attribute DOMString hostCandidate; | |
| readonly attribute DOMString url; | |
| readonly attribute unsigned short errorCode; | |
| readonly attribute USVString errorText; | |
| }; | |
| dictionary RTCPeerConnectionIceErrorEventInit : EventInit { | |
| DOMString hostCandidate; | |
| DOMString url; | |
| required unsigned short errorCode; | |
| USVString statusText; | |
| }; | |
| enum RTCPriorityType { | |
| "very-low", | |
| "low", | |
| "medium", | |
| "high" | |
| }; | |
| partial interface RTCPeerConnection { | |
| static Promise<RTCCertificate> generateCertificate(AlgorithmIdentifier keygenAlgorithm); | |
| }; | |
| dictionary RTCCertificateExpiration { | |
| [EnforceRange] | |
| DOMTimeStamp expires; | |
| }; | |
| interface RTCCertificate { | |
| readonly attribute DOMTimeStamp expires; | |
| sequence<RTCDtlsFingerprint> getFingerprints(); | |
| // At risk due to lack of implementers' interest. | |
| AlgorithmIdentifier getAlgorithm(); | |
| }; | |
| partial interface RTCPeerConnection { | |
| sequence<RTCRtpSender> getSenders(); | |
| sequence<RTCRtpReceiver> getReceivers(); | |
| sequence<RTCRtpTransceiver> getTransceivers(); | |
| RTCRtpSender addTrack(MediaStreamTrack track, | |
| MediaStream... streams); | |
| void removeTrack(RTCRtpSender sender); | |
| RTCRtpTransceiver addTransceiver((MediaStreamTrack or DOMString) trackOrKind, | |
| optional RTCRtpTransceiverInit init); | |
| attribute EventHandler ontrack; | |
| }; | |
| dictionary RTCRtpTransceiverInit { | |
| RTCRtpTransceiverDirection direction = "sendrecv"; | |
| sequence<MediaStream> streams; | |
| sequence<RTCRtpEncodingParameters> sendEncodings; | |
| }; | |
| enum RTCRtpTransceiverDirection { | |
| "sendrecv", | |
| "sendonly", | |
| "recvonly", | |
| "inactive" | |
| }; | |
| interface RTCRtpSender { | |
| readonly attribute MediaStreamTrack? track; | |
| readonly attribute RTCDtlsTransport? transport; | |
| readonly attribute RTCDtlsTransport? rtcpTransport; | |
| // Feature at risk | |
| static RTCRtpCapabilities getCapabilities(DOMString kind); | |
| Promise<void> setParameters(optional RTCRtpParameters parameters); | |
| RTCRtpParameters getParameters(); | |
| Promise<void> replaceTrack(MediaStreamTrack withTrack); | |
| Promise<RTCStatsReport> getStats(); | |
| }; | |
| dictionary RTCRtpParameters { | |
| DOMString transactionId; | |
| sequence<RTCRtpEncodingParameters> encodings; | |
| sequence<RTCRtpHeaderExtensionParameters> headerExtensions; | |
| RTCRtcpParameters rtcp; | |
| sequence<RTCRtpCodecParameters> codecs; | |
| RTCDegradationPreference degradationPreference; | |
| }; | |
| dictionary RTCRtpEncodingParameters { | |
| unsigned long ssrc; | |
| RTCRtpRtxParameters rtx; | |
| RTCRtpFecParameters fec; | |
| RTCDtxStatus dtx; | |
| boolean active; | |
| RTCPriorityType priority; | |
| unsigned long ptime; | |
| unsigned long maxBitrate; | |
| double maxFramerate; | |
| DOMString rid; | |
| double scaleResolutionDownBy; | |
| }; | |
| enum RTCDtxStatus { | |
| "disabled", | |
| "enabled" | |
| }; | |
| enum RTCDegradationPreference { | |
| "maintain-framerate", | |
| "maintain-resolution", | |
| "balanced" | |
| }; | |
| dictionary RTCRtpRtxParameters { | |
| unsigned long ssrc; | |
| }; | |
| dictionary RTCRtpFecParameters { | |
| unsigned long ssrc; | |
| }; | |
| dictionary RTCRtcpParameters { | |
| DOMString cname; | |
| boolean reducedSize; | |
| }; | |
| dictionary RTCRtpHeaderExtensionParameters { | |
| DOMString uri; | |
| unsigned short id; | |
| boolean encrypted; | |
| }; | |
| dictionary RTCRtpCodecParameters { | |
| unsigned short payloadType; | |
| DOMString mimeType; | |
| unsigned long clockRate; | |
| unsigned short channels; | |
| DOMString sdpFmtpLine; | |
| }; | |
| dictionary RTCRtpCapabilities { | |
| sequence<RTCRtpCodecCapability> codecs; | |
| sequence<RTCRtpHeaderExtensionCapability> headerExtensions; | |
| }; | |
| dictionary RTCRtpCodecCapability { | |
| DOMString mimeType; | |
| unsigned long clockRate; | |
| unsigned short channels; | |
| DOMString sdpFmtpLine; | |
| }; | |
| dictionary RTCRtpHeaderExtensionCapability { | |
| DOMString uri; | |
| }; | |
| interface RTCRtpReceiver { | |
| readonly attribute MediaStreamTrack track; | |
| readonly attribute RTCDtlsTransport? transport; | |
| readonly attribute RTCDtlsTransport? rtcpTransport; | |
| // Feature at risk | |
| static RTCRtpCapabilities getCapabilities(DOMString kind); | |
| RTCRtpParameters getParameters(); | |
| sequence<RTCRtpContributingSource> getContributingSources(); | |
| sequence<RTCRtpSynchronizationSource> getSynchronizationSources(); | |
| Promise<RTCStatsReport> getStats(); | |
| }; | |
| interface RTCRtpContributingSource { | |
| readonly attribute DOMHighResTimeStamp timestamp; | |
| readonly attribute unsigned long source; | |
| readonly attribute byte? audioLevel; | |
| }; | |
| interface RTCRtpSynchronizationSource { | |
| readonly attribute DOMHighResTimeStamp timestamp; | |
| readonly attribute unsigned long source; | |
| readonly attribute byte audioLevel; | |
| readonly attribute boolean? voiceActivityFlag; | |
| }; | |
| interface RTCRtpTransceiver { | |
| readonly attribute DOMString? mid; | |
| [SameObject] | |
| readonly attribute RTCRtpSender sender; | |
| [SameObject] | |
| readonly attribute RTCRtpReceiver receiver; | |
| readonly attribute boolean stopped; | |
| readonly attribute RTCRtpTransceiverDirection direction; | |
| readonly attribute RTCRtpTransceiverDirection? currentDirection; | |
| void setDirection(RTCRtpTransceiverDirection direction); | |
| void stop(); | |
| void setCodecPreferences(sequence<RTCRtpCodecCapability> codecs); | |
| }; | |
| interface RTCDtlsTransport { | |
| readonly attribute RTCIceTransport transport; | |
| readonly attribute RTCDtlsTransportState state; | |
| sequence<ArrayBuffer> getRemoteCertificates(); | |
| attribute EventHandler onstatechange; | |
| }; | |
| enum RTCDtlsTransportState { | |
| "new", | |
| "connecting", | |
| "connected", | |
| "closed", | |
| "failed" | |
| }; | |
| dictionary RTCDtlsFingerprint { | |
| DOMString algorithm; | |
| DOMString value; | |
| }; | |
| interface RTCIceTransport { | |
| readonly attribute RTCIceRole role; | |
| readonly attribute RTCIceComponent component; | |
| readonly attribute RTCIceTransportState state; | |
| readonly attribute RTCIceGathererState gatheringState; | |
| sequence<RTCIceCandidate> getLocalCandidates(); | |
| sequence<RTCIceCandidate> getRemoteCandidates(); | |
| RTCIceCandidatePair? getSelectedCandidatePair(); | |
| RTCIceParameters? getLocalParameters(); | |
| RTCIceParameters? getRemoteParameters(); | |
| attribute EventHandler onstatechange; | |
| attribute EventHandler ongatheringstatechange; | |
| attribute EventHandler onselectedcandidatepairchange; | |
| }; | |
| dictionary RTCIceParameters { | |
| DOMString usernameFragment; | |
| DOMString password; | |
| }; | |
| dictionary RTCIceCandidatePair { | |
| RTCIceCandidate local; | |
| RTCIceCandidate remote; | |
| }; | |
| enum RTCIceGathererState { | |
| "new", | |
| "gathering", | |
| "complete" | |
| }; | |
| enum RTCIceTransportState { | |
| "new", | |
| "checking", | |
| "connected", | |
| "completed", | |
| "failed", | |
| "disconnected", | |
| "closed" | |
| }; | |
| enum RTCIceRole { | |
| "controlling", | |
| "controlled" | |
| }; | |
| enum RTCIceComponent { | |
| "rtp", | |
| "rtcp" | |
| }; | |
| [Constructor(DOMString type, RTCTrackEventInit eventInitDict)] | |
| interface RTCTrackEvent : Event { | |
| readonly attribute RTCRtpReceiver receiver; | |
| readonly attribute MediaStreamTrack track; | |
| [SameObject] | |
| readonly attribute FrozenArray<MediaStream> streams; | |
| readonly attribute RTCRtpTransceiver transceiver; | |
| }; | |
| dictionary RTCTrackEventInit : EventInit { | |
| required RTCRtpReceiver receiver; | |
| required MediaStreamTrack track; | |
| sequence<MediaStream> streams = []; | |
| required RTCRtpTransceiver transceiver; | |
| }; | |
| partial interface RTCPeerConnection { | |
| readonly attribute RTCSctpTransport? sctp; | |
| RTCDataChannel createDataChannel(USVString label, | |
| optional RTCDataChannelInit dataChannelDict); | |
| attribute EventHandler ondatachannel; | |
| }; | |
| interface RTCSctpTransport { | |
| readonly attribute RTCDtlsTransport transport; | |
| readonly attribute unsigned long maxMessageSize; | |
| }; | |
| interface RTCDataChannel : EventTarget { | |
| readonly attribute USVString label; | |
| readonly attribute boolean ordered; | |
| readonly attribute unsigned short? maxPacketLifeTime; | |
| readonly attribute unsigned short? maxRetransmits; | |
| readonly attribute USVString protocol; | |
| readonly attribute boolean negotiated; | |
| readonly attribute unsigned short? id; | |
| readonly attribute RTCPriorityType priority; | |
| readonly attribute RTCDataChannelState readyState; | |
| readonly attribute unsigned long bufferedAmount; | |
| attribute unsigned long bufferedAmountLowThreshold; | |
| attribute EventHandler onopen; | |
| attribute EventHandler onbufferedamountlow; | |
| attribute EventHandler onerror; | |
| attribute EventHandler onclose; | |
| void close(); | |
| attribute EventHandler onmessage; | |
| attribute DOMString binaryType; | |
| void send(USVString data); | |
| void send(Blob data); | |
| void send(ArrayBuffer data); | |
| void send(ArrayBufferView data); | |
| }; | |
| dictionary RTCDataChannelInit { | |
| boolean ordered = true; | |
| unsigned short maxPacketLifeTime; | |
| unsigned short maxRetransmits; | |
| USVString protocol = ""; | |
| boolean negotiated = false; | |
| [EnforceRange] | |
| unsigned short id; | |
| RTCPriorityType priority = "low"; | |
| }; | |
| enum RTCDataChannelState { | |
| "connecting", | |
| "open", | |
| "closing", | |
| "closed" | |
| }; | |
| [Constructor(DOMString type, RTCDataChannelEventInit eventInitDict)] | |
| interface RTCDataChannelEvent : Event { | |
| readonly attribute RTCDataChannel channel; | |
| }; | |
| dictionary RTCDataChannelEventInit : EventInit { | |
| required RTCDataChannel channel; | |
| }; | |
| partial interface RTCRtpSender { | |
| readonly attribute RTCDTMFSender? dtmf; | |
| }; | |
| interface RTCDTMFSender : EventTarget { | |
| void insertDTMF(DOMString tones, | |
| optional unsigned long duration = 100, | |
| optional unsigned long interToneGap = 70); | |
| attribute EventHandler ontonechange; | |
| readonly attribute DOMString toneBuffer; | |
| }; | |
| [Constructor(DOMString type, RTCDTMFToneChangeEventInit eventInitDict)] | |
| interface RTCDTMFToneChangeEvent : Event { | |
| readonly attribute DOMString tone; | |
| }; | |
| dictionary RTCDTMFToneChangeEventInit : EventInit { | |
| required DOMString tone; | |
| }; | |
| partial interface RTCPeerConnection { | |
| Promise<RTCStatsReport> getStats(optional MediaStreamTrack? selector = null); | |
| }; | |
| interface RTCStatsReport { | |
| readonly maplike<DOMString, object>; | |
| }; | |
| dictionary RTCStats { | |
| DOMHighResTimeStamp timestamp; | |
| RTCStatsType type; | |
| DOMString id; | |
| }; | |
| [Global, | |
| Exposed=RTCIdentityProviderGlobalScope] | |
| interface RTCIdentityProviderGlobalScope : WorkerGlobalScope { | |
| readonly attribute RTCIdentityProviderRegistrar rtcIdentityProvider; | |
| }; | |
| [Exposed=RTCIdentityProviderGlobalScope] | |
| interface RTCIdentityProviderRegistrar { | |
| void register(RTCIdentityProvider idp); | |
| }; | |
| dictionary RTCIdentityProvider { | |
| required GenerateAssertionCallback generateAssertion; | |
| required ValidateAssertionCallback validateAssertion; | |
| }; | |
| callback GenerateAssertionCallback = Promise<RTCIdentityAssertionResult> (DOMString contents, | |
| DOMString origin, | |
| RTCIdentityProviderOptions options); | |
| callback ValidateAssertionCallback = Promise<RTCIdentityValidationResult> (DOMString assertion, | |
| DOMString origin); | |
| dictionary RTCIdentityAssertionResult { | |
| required RTCIdentityProviderDetails idp; | |
| required DOMString assertion; | |
| }; | |
| dictionary RTCIdentityProviderDetails { | |
| required DOMString domain; | |
| DOMString protocol = "default"; | |
| }; | |
| dictionary RTCIdentityValidationResult { | |
| required DOMString identity; | |
| required DOMString contents; | |
| }; | |
| partial interface RTCPeerConnection { | |
| void setIdentityProvider(DOMString provider, | |
| optional RTCIdentityProviderOptions options); | |
| Promise<DOMString> getIdentityAssertion(); | |
| readonly attribute Promise<RTCIdentityAssertion> peerIdentity; | |
| readonly attribute DOMString? idpLoginUrl; | |
| readonly attribute DOMString? idpErrorInfo; | |
| }; | |
| dictionary RTCIdentityProviderOptions { | |
| DOMString protocol = "default"; | |
| DOMString usernameHint; | |
| DOMString peerIdentity; | |
| }; | |
| [Constructor(DOMString idp, DOMString name)] | |
| interface RTCIdentityAssertion { | |
| attribute DOMString idp; | |
| attribute DOMString name; | |
| }; | |
| partial dictionary MediaStreamConstraints { | |
| DOMString peerIdentity; | |
| }; | |
| partial interface MediaStreamTrack { | |
| readonly attribute boolean isolated; | |
| attribute EventHandler onisolationchange; | |
| }; | |
| enum RTCErrorDetailType { | |
| "data-channel-failure", | |
| "idp-bad-script-failure", | |
| "idp-execution-failure", | |
| "idp-load-failure", | |
| "idp-need-login", | |
| "idp-timeout", | |
| "idp-tls-failure", | |
| "idp-token-expired", | |
| "idp-token-invalid", | |
| "sctp-failure", | |
| "sdp-syntax-error" | |
| }; | |
| [Exposed=Window, | |
| Constructor(DOMString type, RTCErrorEventInit eventInitDict)] | |
| interface RTCErrorEvent : Event { | |
| readonly attribute RTCError? error; | |
| }; | |
| dictionary RTCErrorEventInit : EventInit { | |
| RTCError? error = null; | |
| }; |