// // Automatically generated by ipdlc. // Edit at your own risk // #include "mozilla/gmp/PGMPServiceChild.h" #include "GMPMessageUtils.h" #include "mozilla/ProfilerLabels.h" #include "mozilla/gmp/PGMPContentChild.h" #include "ipc/IPCMessageUtils.h" #include "ipc/IPCMessageUtilsSpecializations.h" #include "nsIFile.h" #include "mozilla/ipc/Endpoint.h" #include "mozilla/ipc/ProtocolMessageUtils.h" #include "mozilla/ipc/ProtocolUtils.h" #include "mozilla/ipc/ShmemMessageUtils.h" #include "mozilla/ipc/TaintingIPCUtils.h" namespace mozilla { namespace gmp { auto PGMPServiceChild::ProcessingError( Result aCode, const char* aReason) -> void { } auto PGMPServiceChild::ShouldContinueFromReplyTimeout() -> bool { return true; } MOZ_IMPLICIT PGMPServiceChild::PGMPServiceChild() : mozilla::ipc::IToplevelProtocol("PGMPServiceChild", kProtocolId, mozilla::ipc::ChildSide) { MOZ_COUNT_CTOR(PGMPServiceChild); } PGMPServiceChild::~PGMPServiceChild() { MOZ_COUNT_DTOR(PGMPServiceChild); } auto PGMPServiceChild::ActorAlloc() -> void { MOZ_RELEASE_ASSERT(XRE_IsContentProcess(), "Invalid process for `PGMPServiceChild'"); AddRef(); } auto PGMPServiceChild::ActorDealloc() -> void { Release(); } auto PGMPServiceChild::OtherPid() const -> ::base::ProcessId { ::base::ProcessId pid = ::mozilla::ipc::IProtocol::ToplevelProtocol()->OtherPidMaybeInvalid(); MOZ_RELEASE_ASSERT(pid != ::base::kInvalidProcessId); return pid; } auto PGMPServiceChild::OtherChildID() const -> ::GeckoChildID { ::GeckoChildID childID = ::mozilla::ipc::IProtocol::ToplevelProtocol()->OtherChildIDMaybeInvalid(); MOZ_RELEASE_ASSERT(childID != -1); return childID; } auto PGMPServiceChild::OtherEndpointProcInfo() const -> ::mozilla::ipc::EndpointProcInfo { return ::mozilla::ipc::EndpointProcInfo{OtherPid(), OtherChildID()}; } auto PGMPServiceChild::ManagedProtocolIds() const -> mozilla::Span { return {}; } auto PGMPServiceChild::GetManagedActors(mozilla::ipc::ProtocolId aProtocol) -> UntypedManagedContainer* { switch (aProtocol) { default: return nullptr; } } auto PGMPServiceChild::RejectPendingResponses(ResponseRejectReason aReason) -> void { mAsyncCallbacks.RejectPendingResponses(aReason); } auto PGMPServiceChild::SendLaunchGMP( const NodeIdVariant& nodeIdVariant, const nsACString& api, mozilla::Span tags, mozilla::Span alreadyBridgedTo, mozilla::ipc::ResolveCallback&& aResolve, mozilla::ipc::RejectCallback&& aReject) -> void { UniquePtr msg__ = PGMPService::Msg_LaunchGMP(MSG_ROUTING_CONTROL); IPC::MessageWriter writer__{ (*(msg__)), this}; IPC::WriteParam((&(writer__)), nodeIdVariant); // Sentinel = 'nodeIdVariant' ((&(writer__)))->WriteSentinel(599196969); IPC::WriteParam((&(writer__)), api); // Sentinel = 'api' ((&(writer__)))->WriteSentinel(40829243); IPC::WriteParam((&(writer__)), tags); // Sentinel = 'tags' ((&(writer__)))->WriteSentinel(70779312); IPC::WriteParam((&(writer__)), alreadyBridgedTo); // Sentinel = 'alreadyBridgedTo' ((&(writer__)))->WriteSentinel(911607383); if (mozilla::ipc::LoggingEnabledFor("PGMPService", mozilla::ipc::ChildSide)) { mozilla::ipc::LogMessageForProtocol( "PGMPServiceChild", this->ToplevelProtocol()->OtherPidMaybeInvalid(), "Sending ", msg__->type(), mozilla::ipc::MessageDirection::eSending); } AUTO_PROFILER_LABEL("PGMPService::Msg_LaunchGMP", OTHER); IPC::Message::seqno_t seqno__ = 0; if (ChannelSend(std::move(msg__), (&(seqno__)))) { mAsyncCallbacks.AddCallback(seqno__, PGMPService::Reply_LaunchGMP__ID, [resolve=std::move(aResolve)](IPC::MessageReader* aReader) mutable { auto maybe__aResult = IPC::ReadParam(aReader); if (!maybe__aResult) { (aReader)->FatalError("Error deserializing 'GMPLaunchResult'"); return MsgValueError; } auto& aResult = *maybe__aResult; // Sentinel = 'aResult' if ((!((aReader)->ReadSentinel(185205473)))) { mozilla::ipc::SentinelReadError("Error deserializing 'GMPLaunchResult'"); return MsgValueError; } aReader->EndRead(); resolve(std::move(aResult)); return MsgProcessed; }, std::move(aReject)); } else { aReject(::mozilla::ipc::ResponseRejectReason::SendError); } return; } auto PGMPServiceChild::SendLaunchGMP( const NodeIdVariant& nodeIdVariant, const nsACString& api, mozilla::Span tags, mozilla::Span alreadyBridgedTo) -> RefPtr { RefPtr::Private> promise__ = new MozPromise::Private(__func__); promise__->UseDirectTaskDispatch(__func__); SendLaunchGMP(std::forward(nodeIdVariant), std::forward(api), std::forward>(tags), std::forward>(alreadyBridgedTo), [promise__](GMPLaunchResult&& aValue) { promise__->Resolve(std::move(aValue), __func__); }, [promise__](ResponseRejectReason&& aReason) { promise__->Reject(std::move(aReason), __func__); }); return promise__; } auto PGMPServiceChild::SendGetGMPNodeId( const nsAString& origin, const nsAString& topLevelOrigin, const nsAString& gmpName, mozilla::ipc::ResolveCallback&& aResolve, mozilla::ipc::RejectCallback&& aReject) -> void { UniquePtr msg__ = PGMPService::Msg_GetGMPNodeId(MSG_ROUTING_CONTROL); IPC::MessageWriter writer__{ (*(msg__)), this}; IPC::WriteParam((&(writer__)), origin); // Sentinel = 'origin' ((&(writer__)))->WriteSentinel(150143625); IPC::WriteParam((&(writer__)), topLevelOrigin); // Sentinel = 'topLevelOrigin' ((&(writer__)))->WriteSentinel(720242100); IPC::WriteParam((&(writer__)), gmpName); // Sentinel = 'gmpName' ((&(writer__)))->WriteSentinel(187695814); if (mozilla::ipc::LoggingEnabledFor("PGMPService", mozilla::ipc::ChildSide)) { mozilla::ipc::LogMessageForProtocol( "PGMPServiceChild", this->ToplevelProtocol()->OtherPidMaybeInvalid(), "Sending ", msg__->type(), mozilla::ipc::MessageDirection::eSending); } AUTO_PROFILER_LABEL("PGMPService::Msg_GetGMPNodeId", OTHER); IPC::Message::seqno_t seqno__ = 0; if (ChannelSend(std::move(msg__), (&(seqno__)))) { mAsyncCallbacks.AddCallback(seqno__, PGMPService::Reply_GetGMPNodeId__ID, [resolve=std::move(aResolve)](IPC::MessageReader* aReader) mutable { auto maybe__id = IPC::ReadParam(aReader); if (!maybe__id) { (aReader)->FatalError("Error deserializing 'nsCString'"); return MsgValueError; } auto& id = *maybe__id; // Sentinel = 'id' if ((!((aReader)->ReadSentinel(20447438)))) { mozilla::ipc::SentinelReadError("Error deserializing 'nsCString'"); return MsgValueError; } aReader->EndRead(); resolve(std::move(id)); return MsgProcessed; }, std::move(aReject)); } else { aReject(::mozilla::ipc::ResponseRejectReason::SendError); } return; } auto PGMPServiceChild::SendGetGMPNodeId( const nsAString& origin, const nsAString& topLevelOrigin, const nsAString& gmpName) -> RefPtr { RefPtr::Private> promise__ = new MozPromise::Private(__func__); promise__->UseDirectTaskDispatch(__func__); SendGetGMPNodeId(std::forward(origin), std::forward(topLevelOrigin), std::forward(gmpName), [promise__](nsCString&& aValue) { promise__->Resolve(std::move(aValue), __func__); }, [promise__](ResponseRejectReason&& aReason) { promise__->Reject(std::move(aReason), __func__); }); return promise__; } auto PGMPServiceChild::DeallocManagee( mozilla::ipc::ProtocolId aProtocolId, IProtocol* aListener) -> void { FatalError("unreached"); return; } auto PGMPServiceChild::OnMessageReceived(const Message& msg__) -> PGMPServiceChild::Result { if (!CanSend()) { if (mozilla::ipc::LoggingEnabledFor("PGMPService", mozilla::ipc::ChildSide)) { mozilla::ipc::LogMessageForProtocol( "PGMPServiceChild", this->ToplevelProtocol()->OtherPidMaybeInvalid(), "Ignored message for dead actor", (&(msg__))->type(), mozilla::ipc::MessageDirection::eSending); } return MsgProcessed; } switch (msg__.type()) { case PGMPService::Reply_LaunchGMP__ID: { if (mozilla::ipc::LoggingEnabledFor("PGMPService", mozilla::ipc::ChildSide)) { mozilla::ipc::LogMessageForProtocol( "PGMPServiceChild", this->ToplevelProtocol()->OtherPidMaybeInvalid(), "Received ", (&(msg__))->type(), mozilla::ipc::MessageDirection::eReceiving); } AUTO_PROFILER_LABEL("PGMPService::Msg_LaunchGMP", OTHER); return mAsyncCallbacks.GotReply(this, msg__); } case PGMPService::Reply_GetGMPNodeId__ID: { if (mozilla::ipc::LoggingEnabledFor("PGMPService", mozilla::ipc::ChildSide)) { mozilla::ipc::LogMessageForProtocol( "PGMPServiceChild", this->ToplevelProtocol()->OtherPidMaybeInvalid(), "Received ", (&(msg__))->type(), mozilla::ipc::MessageDirection::eReceiving); } AUTO_PROFILER_LABEL("PGMPService::Msg_GetGMPNodeId", OTHER); return mAsyncCallbacks.GotReply(this, msg__); } case PGMPService::Msg_BeginShutdown__ID: { if (mozilla::ipc::LoggingEnabledFor("PGMPService", mozilla::ipc::ChildSide)) { mozilla::ipc::LogMessageForProtocol( "PGMPServiceChild", this->ToplevelProtocol()->OtherPidMaybeInvalid(), "Received ", (&(msg__))->type(), mozilla::ipc::MessageDirection::eReceiving); } AUTO_PROFILER_LABEL("PGMPService::Msg_BeginShutdown", OTHER); mozilla::ipc::IPCResult __ok = (this)->RecvBeginShutdown(); if ((!(__ok))) { mozilla::ipc::ProtocolErrorBreakpoint("Handler returned error code!"); // Error handled in mozilla::ipc::IPCResult return MsgProcessingError; } return MsgProcessed; } default: return MsgNotKnown; case SHMEM_CREATED_MESSAGE_TYPE: { if (!ShmemCreated(msg__)) { return MsgPayloadError; } return MsgProcessed; } case SHMEM_DESTROYED_MESSAGE_TYPE: { if (!ShmemDestroyed(msg__)) { return MsgPayloadError; } return MsgProcessed; } } } auto PGMPServiceChild::OnMessageReceived( const Message& msg__, UniquePtr& reply__) -> PGMPServiceChild::Result { if (!CanSend()) { return MsgDropped; } MOZ_ASSERT_UNREACHABLE("message protocol not supported"); return MsgNotKnown; } } // namespace gmp } // namespace mozilla