| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CONTENT_BROWSER_DEVTOOLS_WORKER_DEVTOOLS_MANAGER_H_ |
| #define CONTENT_BROWSER_DEVTOOLS_WORKER_DEVTOOLS_MANAGER_H_ |
| |
| #include <map> |
| |
| #include "base/memory/singleton.h" |
| #include "content/browser/devtools/devtools_agent_host_impl.h" |
| #include "content/browser/devtools/devtools_throttle_handle.h" |
| #include "content/public/browser/devtools_agent_host.h" |
| #include "content/public/browser/global_routing_id.h" |
| #include "third_party/blink/public/mojom/devtools/devtools_agent.mojom.h" |
| |
| namespace content { |
| |
| class DedicatedWorkerDevToolsAgentHost; |
| class DedicatedWorkerHost; |
| |
| // Manages WorkerDevToolsAgentHost's for Dedicated Workers. This class lives on |
| // UI thread. |
| class WorkerDevToolsManager { |
| public: |
| // Returns the WorkerDevToolsManager singleton. |
| static WorkerDevToolsManager& GetInstance(); |
| |
| DedicatedWorkerDevToolsAgentHost* GetDevToolsHost( |
| const DedicatedWorkerHost* host); |
| DedicatedWorkerDevToolsAgentHost* GetDevToolsHostFromToken( |
| const base::UnguessableToken& token); |
| void WorkerCreated( |
| const DedicatedWorkerHost* host, |
| int process_id, |
| const GlobalRenderFrameHostId& ancestor_render_frame_host_id, |
| scoped_refptr<DevToolsThrottleHandle> throttle_handle); |
| void WorkerDestroyed(const DedicatedWorkerHost* host); |
| void AddAllAgentHosts(DevToolsAgentHost::List* result); |
| |
| private: |
| friend struct base::DefaultSingletonTraits<WorkerDevToolsManager>; |
| |
| WorkerDevToolsManager(); |
| ~WorkerDevToolsManager(); |
| |
| // Retains agent hosts as long as the dedicated worker is alive. |
| std::map<const DedicatedWorkerHost*, |
| scoped_refptr<DedicatedWorkerDevToolsAgentHost>> |
| hosts_; |
| }; |
| |
| } // namespace content |
| |
| #endif // CONTENT_BROWSER_DEVTOOLS_WORKER_DEVTOOLS_MANAGER_H_ |