SocketProcessParent.h (4502B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* This Source Code Form is subject to the terms of the Mozilla Public 3 * License, v. 2.0. If a copy of the MPL was not distributed with this 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 5 6 #ifndef mozilla_net_SocketProcessParent_h 7 #define mozilla_net_SocketProcessParent_h 8 9 #include "mozilla/UniquePtr.h" 10 #include "mozilla/ipc/CrashReporterHelper.h" 11 #include "mozilla/ipc/InputStreamUtils.h" 12 #include "mozilla/net/PSocketProcessParent.h" 13 14 namespace mozilla { 15 16 namespace dom { 17 class MemoryReport; 18 class MemoryReportRequestHost; 19 } // namespace dom 20 21 namespace net { 22 23 class SocketProcessHost; 24 25 // IPC actor of socket process in parent process. This is allocated and managed 26 // by SocketProcessHost. 27 class SocketProcessParent final 28 : public PSocketProcessParent, 29 public ipc::CrashReporterHelper<SocketProcessParent> { 30 public: 31 static constexpr GeckoProcessType PROCESS_TYPE = GeckoProcessType_Socket; 32 33 friend class SocketProcessHost; 34 35 NS_INLINE_DECL_THREADSAFE_REFCOUNTING(SocketProcessParent, final) 36 37 explicit SocketProcessParent(SocketProcessHost* aHost); 38 39 static already_AddRefed<SocketProcessParent> GetSingleton(); 40 41 mozilla::ipc::IPCResult RecvAddMemoryReport(const MemoryReport& aReport); 42 mozilla::ipc::IPCResult RecvAccumulateChildHistograms( 43 nsTArray<HistogramAccumulation>&& aAccumulations); 44 mozilla::ipc::IPCResult RecvAccumulateChildKeyedHistograms( 45 nsTArray<KeyedHistogramAccumulation>&& aAccumulations); 46 mozilla::ipc::IPCResult RecvUpdateChildScalars( 47 nsTArray<ScalarAction>&& aScalarActions); 48 mozilla::ipc::IPCResult RecvUpdateChildKeyedScalars( 49 nsTArray<KeyedScalarAction>&& aScalarActions); 50 mozilla::ipc::IPCResult RecvRecordChildEvents( 51 nsTArray<ChildEventData>&& events); 52 mozilla::ipc::IPCResult RecvRecordDiscardedData( 53 const DiscardedData& aDiscardedData); 54 55 PWebrtcTCPSocketParent* AllocPWebrtcTCPSocketParent( 56 const Maybe<TabId>& aTabId); 57 bool DeallocPWebrtcTCPSocketParent(PWebrtcTCPSocketParent* aActor); 58 already_AddRefed<PDNSRequestParent> AllocPDNSRequestParent( 59 const nsACString& aHost, const nsACString& aTrrServer, 60 const int32_t& port, const uint16_t& aType, 61 const OriginAttributes& aOriginAttributes, 62 const nsIDNSService::DNSFlags& aFlags); 63 virtual mozilla::ipc::IPCResult RecvPDNSRequestConstructor( 64 PDNSRequestParent* actor, const nsACString& aHost, 65 const nsACString& trrServer, const int32_t& port, const uint16_t& type, 66 const OriginAttributes& aOriginAttributes, 67 const nsIDNSService::DNSFlags& flags) override; 68 69 void ActorDestroy(ActorDestroyReason aWhy) override; 70 bool SendRequestMemoryReport(const uint32_t& aGeneration, 71 const bool& aAnonymize, 72 const bool& aMinimizeMemoryUsage, 73 const Maybe<ipc::FileDescriptor>& aDMDFile); 74 75 mozilla::ipc::IPCResult RecvObserveHttpActivity( 76 const HttpActivityArgs& aArgs, const uint32_t& aActivityType, 77 const uint32_t& aActivitySubtype, const PRTime& aTimestamp, 78 const uint64_t& aExtraSizeData, const nsACString& aExtraStringData); 79 80 mozilla::ipc::IPCResult RecvInitSocketBackground( 81 Endpoint<PSocketProcessBackgroundParent>&& aEndpoint); 82 83 already_AddRefed<PAltServiceParent> AllocPAltServiceParent(); 84 85 already_AddRefed<PProxyConfigLookupParent> AllocPProxyConfigLookupParent( 86 nsIURI* aURI, const uint32_t& aProxyResolveFlags); 87 mozilla::ipc::IPCResult RecvPProxyConfigLookupConstructor( 88 PProxyConfigLookupParent* aActor, nsIURI* aURI, 89 const uint32_t& aProxyResolveFlags) override; 90 91 mozilla::ipc::IPCResult RecvExcludeHttp2OrHttp3( 92 const HttpConnectionInfoCloneArgs& aArgs); 93 mozilla::ipc::IPCResult RecvOnConsoleMessage(const nsString& aMessage); 94 95 mozilla::ipc::IPCResult RecvFOGData(ByteBuf&& aBuf); 96 97 mozilla::ipc::IPCResult RecvGeckoTraceExport(ByteBuf&& aBuf); 98 99 #if defined(XP_WIN) 100 mozilla::ipc::IPCResult RecvGetModulesTrust( 101 ModulePaths&& aModPaths, bool aRunAtNormalPriority, 102 GetModulesTrustResolver&& aResolver); 103 #endif // defined(XP_WIN) 104 105 private: 106 ~SocketProcessParent(); 107 108 SocketProcessHost* mHost; 109 UniquePtr<dom::MemoryReportRequestHost> mMemoryReportRequest; 110 111 static void Destroy(RefPtr<SocketProcessParent>&& aParent); 112 }; 113 114 } // namespace net 115 } // namespace mozilla 116 117 #endif // mozilla_net_SocketProcessParent_h