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/. */
6 #ifndef mozilla_net_SocketProcessParent_h
7 #define mozilla_net_SocketProcessParent_h
9 #include "mozilla/UniquePtr.h"
10 #include "mozilla/ipc/CrashReporterHelper.h"
11 #include "mozilla/ipc/InputStreamUtils.h"
12 #include "mozilla/net/PSocketProcessParent.h"
18 class MemoryReportRequestHost
;
23 class SocketProcessHost
;
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
<GeckoProcessType_Socket
> {
31 friend class SocketProcessHost
;
33 NS_INLINE_DECL_REFCOUNTING(SocketProcessParent
, final
)
35 explicit SocketProcessParent(SocketProcessHost
* aHost
);
37 static SocketProcessParent
* GetSingleton();
39 mozilla::ipc::IPCResult
RecvAddMemoryReport(const MemoryReport
& aReport
);
40 mozilla::ipc::IPCResult
RecvAccumulateChildHistograms(
41 nsTArray
<HistogramAccumulation
>&& aAccumulations
);
42 mozilla::ipc::IPCResult
RecvAccumulateChildKeyedHistograms(
43 nsTArray
<KeyedHistogramAccumulation
>&& aAccumulations
);
44 mozilla::ipc::IPCResult
RecvUpdateChildScalars(
45 nsTArray
<ScalarAction
>&& aScalarActions
);
46 mozilla::ipc::IPCResult
RecvUpdateChildKeyedScalars(
47 nsTArray
<KeyedScalarAction
>&& aScalarActions
);
48 mozilla::ipc::IPCResult
RecvRecordChildEvents(
49 nsTArray
<ChildEventData
>&& events
);
50 mozilla::ipc::IPCResult
RecvRecordDiscardedData(
51 const DiscardedData
& aDiscardedData
);
53 PWebrtcTCPSocketParent
* AllocPWebrtcTCPSocketParent(
54 const Maybe
<TabId
>& aTabId
);
55 bool DeallocPWebrtcTCPSocketParent(PWebrtcTCPSocketParent
* aActor
);
56 already_AddRefed
<PDNSRequestParent
> AllocPDNSRequestParent(
57 const nsACString
& aHost
, const nsACString
& aTrrServer
,
58 const int32_t& port
, const uint16_t& aType
,
59 const OriginAttributes
& aOriginAttributes
,
60 const nsIDNSService::DNSFlags
& aFlags
);
61 virtual mozilla::ipc::IPCResult
RecvPDNSRequestConstructor(
62 PDNSRequestParent
* actor
, const nsACString
& aHost
,
63 const nsACString
& trrServer
, const int32_t& port
, const uint16_t& type
,
64 const OriginAttributes
& aOriginAttributes
,
65 const nsIDNSService::DNSFlags
& flags
) override
;
67 void ActorDestroy(ActorDestroyReason aWhy
) override
;
68 bool SendRequestMemoryReport(const uint32_t& aGeneration
,
69 const bool& aAnonymize
,
70 const bool& aMinimizeMemoryUsage
,
71 const Maybe
<ipc::FileDescriptor
>& aDMDFile
);
73 mozilla::ipc::IPCResult
RecvObserveHttpActivity(
74 const HttpActivityArgs
& aArgs
, const uint32_t& aActivityType
,
75 const uint32_t& aActivitySubtype
, const PRTime
& aTimestamp
,
76 const uint64_t& aExtraSizeData
, const nsACString
& aExtraStringData
);
78 mozilla::ipc::IPCResult
RecvInitSocketBackground(
79 Endpoint
<PSocketProcessBackgroundParent
>&& aEndpoint
);
81 already_AddRefed
<PAltServiceParent
> AllocPAltServiceParent();
83 already_AddRefed
<PProxyConfigLookupParent
> AllocPProxyConfigLookupParent(
84 nsIURI
* aURI
, const uint32_t& aProxyResolveFlags
);
85 mozilla::ipc::IPCResult
RecvPProxyConfigLookupConstructor(
86 PProxyConfigLookupParent
* aActor
, nsIURI
* aURI
,
87 const uint32_t& aProxyResolveFlags
) override
;
89 mozilla::ipc::IPCResult
RecvCachePushCheck(
90 nsIURI
* aPushedURL
, OriginAttributes
&& aOriginAttributes
,
91 nsCString
&& aRequestString
, CachePushCheckResolver
&& aResolver
);
93 mozilla::ipc::IPCResult
RecvExcludeHttp2OrHttp3(
94 const HttpConnectionInfoCloneArgs
& aArgs
);
95 mozilla::ipc::IPCResult
RecvOnConsoleMessage(const nsString
& aMessage
);
97 mozilla::ipc::IPCResult
RecvFOGData(ByteBuf
&& aBuf
);
100 mozilla::ipc::IPCResult
RecvGetModulesTrust(
101 ModulePaths
&& aModPaths
, bool aRunAtNormalPriority
,
102 GetModulesTrustResolver
&& aResolver
);
103 #endif // defined(XP_WIN)
106 ~SocketProcessParent();
108 SocketProcessHost
* mHost
;
109 UniquePtr
<dom::MemoryReportRequestHost
> mMemoryReportRequest
;
111 static void Destroy(RefPtr
<SocketProcessParent
>&& aParent
);
115 } // namespace mozilla
117 #endif // mozilla_net_SocketProcessParent_h