| Index: content/browser/devtools/worker_devtools_manager.cc
|
| diff --git a/content/browser/devtools/worker_devtools_manager.cc b/content/browser/devtools/worker_devtools_manager.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..ad21c9ac973c5fb2524de0fc5587a9d7c3c535e2
|
| --- /dev/null
|
| +++ b/content/browser/devtools/worker_devtools_manager.cc
|
| @@ -0,0 +1,84 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "content/browser/devtools/worker_devtools_manager.h"
|
| +
|
| +#include "content/browser/devtools/devtools_manager.h"
|
| +#include "content/browser/devtools/service_worker_devtools_manager.h"
|
| +#include "content/browser/devtools/shared_worker_devtools_manager.h"
|
| +#include "content/browser/devtools/worker_devtools_agent_host.h"
|
| +#include "content/public/browser/browser_thread.h"
|
| +
|
| +namespace content {
|
| +
|
| +// Called on the UI thread.
|
| +// static
|
| +scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForWorker(
|
| + int worker_process_id,
|
| + int worker_route_id) {
|
| + if (scoped_refptr<DevToolsAgentHost> host =
|
| + SharedWorkerDevToolsManager::GetInstance()
|
| + ->GetDevToolsAgentHostForWorker(worker_process_id, worker_route_id)) {
|
| + return host;
|
| + }
|
| + return ServiceWorkerDevToolsManager::GetInstance()
|
| + ->GetDevToolsAgentHostForWorker(worker_process_id, worker_route_id);
|
| +}
|
| +
|
| +DevToolsAgentHostImpl*
|
| +WorkerDevToolsManager::GetDevToolsAgentHostForWorker(int worker_process_id,
|
| + int worker_route_id) {
|
| + AgentHostMap::iterator it = workers_.find(
|
| + WorkerId(worker_process_id, worker_route_id));
|
| + return it == workers_.end() ? NULL : it->second;
|
| +}
|
| +
|
| +void WorkerDevToolsManager::AddAllAgentHosts(DevToolsAgentHost::List* result) {
|
| + for (auto& worker : workers_) {
|
| + if (!worker.second->IsTerminated())
|
| + result->push_back(worker.second);
|
| + }
|
| +}
|
| +
|
| +void WorkerDevToolsManager::WorkerDestroyed(int worker_process_id,
|
| + int worker_route_id) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + const WorkerId id(worker_process_id, worker_route_id);
|
| + AgentHostMap::iterator it = workers_.find(id);
|
| + DCHECK(it != workers_.end());
|
| + scoped_refptr<WorkerDevToolsAgentHost> agent_host(it->second);
|
| + agent_host->WorkerDestroyed();
|
| + DevToolsManager::GetInstance()->AgentHostChanged(agent_host);
|
| +}
|
| +
|
| +void WorkerDevToolsManager::WorkerReadyForInspection(int worker_process_id,
|
| + int worker_route_id) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + const WorkerId id(worker_process_id, worker_route_id);
|
| + AgentHostMap::iterator it = workers_.find(id);
|
| + DCHECK(it != workers_.end());
|
| + it->second->WorkerReadyForInspection();
|
| +}
|
| +
|
| +WorkerDevToolsManager::WorkerDevToolsManager() {
|
| +}
|
| +
|
| +WorkerDevToolsManager::~WorkerDevToolsManager() {
|
| +}
|
| +
|
| +void WorkerDevToolsManager::RemoveInspectedWorkerData(WorkerId id) {
|
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| + workers_.erase(id);
|
| +}
|
| +
|
| +void WorkerDevToolsManager::WorkerRestarted(const WorkerId& id,
|
| + const AgentHostMap::iterator& it) {
|
| + WorkerDevToolsAgentHost* agent_host = it->second;
|
| + agent_host->WorkerRestarted(id);
|
| + workers_.erase(it);
|
| + workers_[id] = agent_host;
|
| + DevToolsManager::GetInstance()->AgentHostChanged(agent_host);
|
| +}
|
| +
|
| +} // namespace content
|
|
|