/* 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/. */ include protocol PBackground; #ifdef MOZ_WEBRTC include WebrtcProxyConfig; // ParamTraits stuff for generated code and other classes we don't want to change include "mozilla/net/NrIceStunAddrMessageUtils.h"; include "mozilla/media/webrtc/WebrtcIPCTraits.h"; using mozilla::StringVector from "mozilla/media/webrtc/WebrtcIPCTraits.h"; using mozilla::CandidateInfo from "mozilla/media/webrtc/WebrtcIPCTraits.h"; using mozilla::IceCandidateErrorInfo from "mozilla/media/webrtc/WebrtcIPCTraits.h"; using mozilla::DtlsDigestList from "mozilla/media/webrtc/WebrtcIPCTraits.h"; using SSLKEAType from "mozilla/media/webrtc/WebrtcIPCTraits.h"; using mozilla::TransportLayerState from "mozilla/media/webrtc/WebrtcIPCTraits.h"; using std::string from "string"; using struct mozilla::dom::RTCStatsCollection from "mozilla/dom/RTCStatsReportBinding.h"; using WebrtcGlobalLog from "mozilla/media/webrtc/WebrtcGlobal.h"; using mozilla::dom::RTCIceServer from "mozilla/dom/RTCConfigurationBinding.h"; using mozilla::dom::RTCIceTransportPolicy from "mozilla/dom/RTCConfigurationBinding.h"; using mozilla::dom::RTCIceGathererState from "mozilla/dom/RTCIceTransportBinding.h"; using mozilla::dom::RTCIceTransportState from "mozilla/dom/RTCIceTransportBinding.h"; using mozilla::dom::RTCErrorInit from "mozilla/dom/RTCErrorBinding.h"; // ParamTraits stuff for our own classes using mozilla::MediaPacket from "transport/mediapacket.h"; include "mozilla/net/NrIceStunAddrMessageUtils.h"; using mozilla::net::NrIceStunAddrArray from "mozilla/net/PStunAddrsParams.h"; #endif // MOZ_WEBRTC namespace mozilla { namespace dom { #ifdef MOZ_WEBRTC // ipdl does not have tuple/pair struct RTCErrorParams { RTCErrorInit errorInit; string message; }; #endif // MOZ_WEBRTC [ParentProc=Socket, ChildProc=Content] async protocol PMediaTransport { #ifdef MOZ_WEBRTC parent: async GetIceLog(nsCString pattern) returns (WebrtcGlobalLog loglines); async ClearIceLog(); async EnterPrivateMode(); async ExitPrivateMode(); async CreateIceCtx(string name); async SetIceConfig(RTCIceServer[] iceServers, RTCIceTransportPolicy icePolicy); async SetProxyConfig(WebrtcProxyConfig proxyConfig); async EnsureProvisionalTransport(string transportId, string localUfrag, string localPwd, int componentCount); async SetTargetForDefaultLocalAddressLookup(string targetIp, uint16_t targetPort); async StartIceGathering(bool defaultRouteOnly, bool obfuscateHostAddresses, NrIceStunAddrArray stunAddrs); async ActivateTransport(string transportId, string localUfrag, string localPwd, int componentCount, string remoteUfrag, string remotePwd, uint8_t[] keyDer, uint8_t[] certDer, SSLKEAType authType, bool dtlsClient, DtlsDigestList digests, bool privacyRequested); async RemoveTransportsExcept(StringVector transportIds); async StartIceChecks(bool isControlling, StringVector iceOptions); async SendPacket(string transportId, MediaPacket packet); async AddIceCandidate(string transportId, string candidate, string ufrag, string obfuscatedAddr); async UpdateNetworkState(bool online); async GetIceStats(string transportId, double now) returns (UniquePtr stats); child: async OnCandidate(string transportId, CandidateInfo candidateInfo); async OnCandidateError(IceCandidateErrorInfo errorInfo); async OnAlpnNegotiated(string alpn); async OnGatheringStateChange(string transportId, RTCIceGathererState state); async OnConnectionStateChange(string transportId, RTCIceTransportState state); async OnPacketReceived(string transportId, MediaPacket packet); async OnEncryptedSending(string transportId, MediaPacket packet); async OnStateChange(string transportId, TransportLayerState state, uint8_t[][] remoteCerts, RTCErrorParams? maybeError); async OnRtcpStateChange(string transportId, TransportLayerState state, RTCErrorParams? maybeError); #endif // MOZ_WEBRTC }; } // namespace dom } // namespace mozilla