tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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