tor-browser

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

RemoteWorkerDebuggerManagerParent.cpp (2175B)


      1 /* This Source Code Form is subject to the terms of the Mozilla Public
      2 * License, v. 2.0. If a copy of the MPL was not distributed with this
      3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      4 
      5 #include "RemoteWorkerDebuggerManagerParent.h"
      6 
      7 #include "RemoteWorkerDebuggerParent.h"
      8 #include "mozilla/dom/WorkerDebuggerManager.h"
      9 
     10 namespace mozilla::dom {
     11 
     12 /* static */
     13 RefPtr<RemoteWorkerDebuggerManagerParent>
     14 RemoteWorkerDebuggerManagerParent::CreateForProcess(
     15    mozilla::ipc::Endpoint<PRemoteWorkerDebuggerManagerChild>* aChildEp) {
     16  MOZ_ASSERT_DEBUG_OR_FUZZING(XRE_IsParentProcess() && NS_IsMainThread());
     17 
     18  mozilla::ipc::Endpoint<PRemoteWorkerDebuggerManagerParent> parentEp;
     19  nsresult rv =
     20      PRemoteWorkerDebuggerManager::CreateEndpoints(&parentEp, aChildEp);
     21  if (NS_WARN_IF(NS_FAILED(rv))) {
     22    return nullptr;
     23  }
     24 
     25  RefPtr<RemoteWorkerDebuggerManagerParent> actor =
     26      MakeRefPtr<RemoteWorkerDebuggerManagerParent>();
     27  parentEp.Bind(actor);
     28 
     29  return actor;
     30 }
     31 
     32 RemoteWorkerDebuggerManagerParent::RemoteWorkerDebuggerManagerParent() {
     33  MOZ_ASSERT_DEBUG_OR_FUZZING(XRE_IsParentProcess() && NS_IsMainThread());
     34 }
     35 
     36 RemoteWorkerDebuggerManagerParent::~RemoteWorkerDebuggerManagerParent() {
     37  MOZ_ASSERT_DEBUG_OR_FUZZING(XRE_IsParentProcess() && NS_IsMainThread());
     38 }
     39 
     40 mozilla::ipc::IPCResult RemoteWorkerDebuggerManagerParent::RecvRegister(
     41    const RemoteWorkerDebuggerInfo& aDebuggerInfo,
     42    mozilla::ipc::Endpoint<PRemoteWorkerDebuggerParent>&& aParentEp) {
     43  MOZ_ASSERT_DEBUG_OR_FUZZING(XRE_IsParentProcess() && NS_IsMainThread());
     44 
     45  if (!aParentEp.IsValid()) {
     46    return IPC_FAIL(
     47        this, "Invalid Parent Endpoint for RemoteWorkerDebuggerParent...");
     48  }
     49 
     50  RefPtr<WorkerDebuggerManager> manager = WorkerDebuggerManager::GetOrCreate();
     51  MOZ_ASSERT_DEBUG_OR_FUZZING(manager);
     52 
     53  RefPtr<RemoteWorkerDebuggerParent> debugger =
     54      MakeRefPtr<RemoteWorkerDebuggerParent>(aDebuggerInfo,
     55                                             std::move(aParentEp));
     56 
     57  manager->RegisterDebugger(debugger);
     58 
     59  MOZ_ASSERT(debugger->CanSend());
     60  (void)debugger->SendRegisterDone();
     61 
     62  return IPC_OK();
     63 }
     64 
     65 }  // end of namespace mozilla::dom