tor-browser

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

UtilityProcessChild.h (3918B)


      1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
      2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
      3 /* This Source Code Form is subject to the terms of the Mozilla Public
      4 * License, v. 2.0. If a copy of the MPL was not distributed with this
      5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      6 #ifndef _include_ipc_glue_UtilityProcessChild_h_
      7 #define _include_ipc_glue_UtilityProcessChild_h_
      8 #include "mozilla/ipc/PUtilityProcessChild.h"
      9 #include "mozilla/ipc/UtilityProcessSandboxing.h"
     10 #include "mozilla/ipc/UtilityMediaServiceParent.h"
     11 #include "ChildProfilerController.h"
     12 
     13 #if defined(MOZ_SANDBOX) && defined(MOZ_DEBUG) && defined(ENABLE_TESTS)
     14 #  include "mozilla/PSandboxTestingChild.h"
     15 #endif
     16 #include "mozilla/PRemoteMediaManagerParent.h"
     17 #include "mozilla/ipc/AsyncBlockers.h"
     18 #include "mozilla/dom/JSOracleChild.h"
     19 #include "mozilla/ProfilerMarkers.h"
     20 
     21 namespace mozilla::dom {
     22 class PJSOracleChild;
     23 }  // namespace mozilla::dom
     24 
     25 namespace mozilla::ipc {
     26 
     27 class UtilityProcessHost;
     28 
     29 class UtilityProcessChild final : public PUtilityProcessChild {
     30 public:
     31  NS_INLINE_DECL_THREADSAFE_REFCOUNTING(UtilityProcessChild, override);
     32 
     33  UtilityProcessChild();
     34 
     35  static RefPtr<UtilityProcessChild> GetSingleton();
     36  static RefPtr<UtilityProcessChild> Get();
     37 
     38  SandboxingKind mSandbox{};
     39 
     40  bool Init(mozilla::ipc::UntypedEndpoint&& aEndpoint,
     41            const nsCString& aParentBuildID, uint64_t aSandboxingKind);
     42 
     43  mozilla::ipc::IPCResult RecvInit(const Maybe<ipc::FileDescriptor>& aBrokerFd,
     44                                   const bool& aCanRecordReleaseTelemetry,
     45                                   const bool& aIsReadyForBackgroundProcessing);
     46  mozilla::ipc::IPCResult RecvInitProfiler(
     47      Endpoint<PProfilerChild>&& aEndpoint);
     48 
     49  mozilla::ipc::IPCResult RecvPreferenceUpdate(const Pref& pref);
     50 
     51  mozilla::ipc::IPCResult RecvRequestMemoryReport(
     52      const uint32_t& generation, const bool& anonymize,
     53      const bool& minimizeMemoryUsage,
     54      const Maybe<ipc::FileDescriptor>& DMDFile,
     55      const RequestMemoryReportResolver& aResolver);
     56 
     57  mozilla::ipc::IPCResult RecvFlushFOGData(FlushFOGDataResolver&& aResolver);
     58 
     59  mozilla::ipc::IPCResult RecvTestTriggerMetrics(
     60      TestTriggerMetricsResolver&& aResolve);
     61 
     62  mozilla::ipc::IPCResult RecvTestTelemetryProbes();
     63 
     64  mozilla::ipc::IPCResult RecvStartUtilityMediaService(
     65      Endpoint<PUtilityMediaServiceParent>&& aEndpoint,
     66      nsTArray<gfx::GfxVarUpdate>&& aUpdates);
     67 
     68  mozilla::ipc::IPCResult RecvStartJSOracleService(
     69      Endpoint<dom::PJSOracleChild>&& aEndpoint);
     70 
     71 #if defined(XP_WIN)
     72  mozilla::ipc::IPCResult RecvStartWindowsUtilsService(
     73      Endpoint<PWindowsUtilsChild>&& aEndpoint);
     74 
     75  mozilla::ipc::IPCResult RecvStartWinFileDialogService(
     76      Endpoint<PWinFileDialogChild>&& aEndpoint);
     77 
     78  mozilla::ipc::IPCResult RecvGetUntrustedModulesData(
     79      GetUntrustedModulesDataResolver&& aResolver);
     80  mozilla::ipc::IPCResult RecvUnblockUntrustedModulesThread();
     81 #endif  // defined(XP_WIN)
     82 
     83  AsyncBlockers& AsyncShutdownService() { return mShutdownBlockers; }
     84 
     85  void ActorDestroy(ActorDestroyReason aWhy) override;
     86 
     87 #if defined(MOZ_SANDBOX) && defined(MOZ_DEBUG) && defined(ENABLE_TESTS)
     88  mozilla::ipc::IPCResult RecvInitSandboxTesting(
     89      Endpoint<PSandboxTestingChild>&& aEndpoint);
     90 #endif
     91 
     92  RefPtr<UtilityMediaServiceParent> GetMediaService() const {
     93    return mUtilityMediaServiceInstance;
     94  }
     95 
     96 protected:
     97  friend class UtilityProcessImpl;
     98  ~UtilityProcessChild();
     99 
    100 private:
    101  TimeStamp mChildStartTime;
    102  RefPtr<ChildProfilerController> mProfilerController;
    103  RefPtr<UtilityMediaServiceParent> mUtilityMediaServiceInstance{};
    104  RefPtr<dom::JSOracleChild> mJSOracleInstance{};
    105 #ifdef XP_WIN
    106  RefPtr<PWindowsUtilsChild> mWindowsUtilsInstance;
    107 #endif
    108 
    109  AsyncBlockers mShutdownBlockers;
    110 };
    111 
    112 }  // namespace mozilla::ipc
    113 
    114 #endif  // _include_ipc_glue_UtilityProcessChild_h_