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