Index: content/browser/devtools/shared_worker_devtools_manager.cc |
diff --git a/content/browser/devtools/shared_worker_devtools_manager.cc b/content/browser/devtools/shared_worker_devtools_manager.cc |
index e85dfc7a3be9e211beea54e468a87c23a44a3b3e..d29769843c0ddccc923bc664c596d2903d7cfff7 100644 |
--- a/content/browser/devtools/shared_worker_devtools_manager.cc |
+++ b/content/browser/devtools/shared_worker_devtools_manager.cc |
@@ -17,39 +17,92 @@ SharedWorkerDevToolsManager* SharedWorkerDevToolsManager::GetInstance() { |
return Singleton<SharedWorkerDevToolsManager>::get(); |
} |
+DevToolsAgentHostImpl* |
+SharedWorkerDevToolsManager::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 SharedWorkerDevToolsManager::AddAllAgentHosts( |
+ DevToolsAgentHost::List* result) { |
+ for (auto& worker : workers_) { |
+ if (!worker.second->IsTerminated()) |
+ result->push_back(worker.second); |
+ } |
+} |
+ |
bool SharedWorkerDevToolsManager::WorkerCreated( |
int worker_process_id, |
int worker_route_id, |
const SharedWorkerInstance& instance) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
const WorkerId id(worker_process_id, worker_route_id); |
- AgentHostMap::iterator it = FindExistingWorkerAgentHost(instance); |
- if (it == workers().end()) { |
- WorkerDevToolsManager::WorkerCreated( |
- id, |
- new SharedWorkerDevToolsAgentHost(id, instance)); |
+ AgentHostMap::iterator it = |
+ FindExistingWorkerAgentHost(instance); |
+ if (it == workers_.end()) { |
+ workers_[id] = new SharedWorkerDevToolsAgentHost(id, instance); |
+ DevToolsManager::GetInstance()->AgentHostChanged(workers_[id]); |
return false; |
} |
- WorkerRestarted(id, it); |
+ |
+ // Worker restarted. |
+ SharedWorkerDevToolsAgentHost* agent_host = it->second; |
+ agent_host->WorkerRestarted(id); |
+ workers_.erase(it); |
+ workers_[id] = agent_host; |
+ DevToolsManager::GetInstance()->AgentHostChanged(agent_host); |
return true; |
} |
+void SharedWorkerDevToolsManager::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(); |
+} |
+ |
+void SharedWorkerDevToolsManager::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<SharedWorkerDevToolsAgentHost> agent_host(it->second); |
+ agent_host->WorkerDestroyed(); |
+ DevToolsManager::GetInstance()->AgentHostChanged(agent_host); |
+} |
+ |
+void SharedWorkerDevToolsManager::RemoveInspectedWorkerData(WorkerId id) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ workers_.erase(id); |
+} |
+SharedWorkerDevToolsManager::SharedWorkerDevToolsManager() { |
+} |
+ |
+SharedWorkerDevToolsManager::~SharedWorkerDevToolsManager() { |
+} |
+ |
SharedWorkerDevToolsManager::AgentHostMap::iterator |
SharedWorkerDevToolsManager::FindExistingWorkerAgentHost( |
const SharedWorkerInstance& instance) { |
- AgentHostMap::iterator it = workers().begin(); |
- for (; it != workers().end(); ++it) { |
- if (static_cast<SharedWorkerDevToolsAgentHost*>( |
- it->second)->Matches(instance)) |
+ AgentHostMap::iterator it = workers_.begin(); |
+ for (; it != workers_.end(); ++it) { |
+ if (it->second->Matches(instance)) |
break; |
} |
return it; |
} |
-SharedWorkerDevToolsManager::SharedWorkerDevToolsManager() { |
+void SharedWorkerDevToolsManager::ResetForTesting() { |
+ workers_.clear(); |
} |
-SharedWorkerDevToolsManager::~SharedWorkerDevToolsManager() { |
-} |
} // namespace content |