tor-browser

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

ClientManagerParent.cpp (3714B)


      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 
      7 #include "ClientManagerParent.h"
      8 
      9 #include "ClientHandleParent.h"
     10 #include "ClientManagerOpParent.h"
     11 #include "ClientManagerService.h"
     12 #include "ClientSourceParent.h"
     13 #include "ClientValidation.h"
     14 #include "mozilla/dom/PClientNavigateOpParent.h"
     15 #include "mozilla/ipc/BackgroundParent.h"
     16 
     17 namespace mozilla::dom {
     18 
     19 using mozilla::ipc::IPCResult;
     20 
     21 IPCResult ClientManagerParent::RecvTeardown() {
     22  (void)Send__delete__(this);
     23  return IPC_OK();
     24 }
     25 
     26 void ClientManagerParent::ActorDestroy(ActorDestroyReason aReason) {
     27  mService->RemoveManager(this);
     28 }
     29 
     30 already_AddRefed<PClientHandleParent>
     31 ClientManagerParent::AllocPClientHandleParent(
     32    const IPCClientInfo& aClientInfo) {
     33  return MakeAndAddRef<ClientHandleParent>();
     34 }
     35 
     36 IPCResult ClientManagerParent::RecvPClientHandleConstructor(
     37    PClientHandleParent* aActor, const IPCClientInfo& aClientInfo) {
     38  ClientHandleParent* actor = static_cast<ClientHandleParent*>(aActor);
     39  actor->Init(aClientInfo);
     40  return IPC_OK();
     41 }
     42 
     43 PClientManagerOpParent* ClientManagerParent::AllocPClientManagerOpParent(
     44    const ClientOpConstructorArgs& aArgs) {
     45  return new ClientManagerOpParent(mService);
     46 }
     47 
     48 bool ClientManagerParent::DeallocPClientManagerOpParent(
     49    PClientManagerOpParent* aActor) {
     50  delete aActor;
     51  return true;
     52 }
     53 
     54 IPCResult ClientManagerParent::RecvPClientManagerOpConstructor(
     55    PClientManagerOpParent* aActor, const ClientOpConstructorArgs& aArgs) {
     56  ClientManagerOpParent* actor = static_cast<ClientManagerOpParent*>(aActor);
     57  actor->Init(aArgs);
     58  return IPC_OK();
     59 }
     60 
     61 PClientNavigateOpParent* ClientManagerParent::AllocPClientNavigateOpParent(
     62    const ClientNavigateOpConstructorArgs& aArgs) {
     63  MOZ_ASSERT_UNREACHABLE(
     64      "ClientNavigateOpParent should be explicitly constructed.");
     65  return nullptr;
     66 }
     67 
     68 bool ClientManagerParent::DeallocPClientNavigateOpParent(
     69    PClientNavigateOpParent* aActor) {
     70  delete aActor;
     71  return true;
     72 }
     73 
     74 already_AddRefed<PClientSourceParent>
     75 ClientManagerParent::AllocPClientSourceParent(
     76    const ClientSourceConstructorArgs& aArgs) {
     77  Maybe<ContentParentId> contentParentId;
     78 
     79  uint64_t childID = ::mozilla::ipc::BackgroundParent::GetChildID(Manager());
     80  if (childID) {
     81    contentParentId = Some(ContentParentId(childID));
     82  }
     83 
     84  return MakeAndAddRef<ClientSourceParent>(aArgs, contentParentId);
     85 }
     86 
     87 IPCResult ClientManagerParent::RecvPClientSourceConstructor(
     88    PClientSourceParent* aActor, const ClientSourceConstructorArgs& aArgs) {
     89  ClientSourceParent* actor = static_cast<ClientSourceParent*>(aActor);
     90 
     91  IPCResult result = actor->Init();
     92  if (!result) {
     93    return result;
     94  }
     95 
     96  return IPC_OK();
     97 }
     98 
     99 ClientManagerParent::ClientManagerParent()
    100    : mService(ClientManagerService::GetOrCreateInstance()) {}
    101 
    102 ClientManagerParent::~ClientManagerParent() = default;
    103 
    104 void ClientManagerParent::Init() { mService->AddManager(this); }
    105 
    106 IPCResult ClientManagerParent::RecvExpectFutureClientSource(
    107    const IPCClientInfo& aClientInfo) {
    108  RefPtr<ClientManagerService> cms =
    109      ClientManagerService::GetOrCreateInstance();
    110  (void)NS_WARN_IF(!cms->ExpectFutureSource(aClientInfo));
    111  return IPC_OK();
    112 }
    113 
    114 IPCResult ClientManagerParent::RecvForgetFutureClientSource(
    115    const IPCClientInfo& aClientInfo) {
    116  RefPtr<ClientManagerService> cms = ClientManagerService::GetInstance();
    117  cms->ForgetFutureSource(aClientInfo);
    118  return IPC_OK();
    119 }
    120 
    121 }  // namespace mozilla::dom