Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/devtools/worker_devtools_manager.h" | 5 #include "content/browser/devtools/worker_devtools_manager.h" |
| 6 | 6 |
| 7 #include <list> | 7 #include <list> |
| 8 #include <map> | 8 #include <map> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 26 matching lines...) Expand all Loading... | |
| 37 } | 37 } |
| 38 } | 38 } |
| 39 | 39 |
| 40 namespace { | 40 namespace { |
| 41 | 41 |
| 42 typedef std::map<WorkerDevToolsManager::WorkerId, | 42 typedef std::map<WorkerDevToolsManager::WorkerId, |
| 43 WorkerDevToolsManager::WorkerDevToolsAgentHost*> AgentHosts; | 43 WorkerDevToolsManager::WorkerDevToolsAgentHost*> AgentHosts; |
| 44 base::LazyInstance<AgentHosts>::Leaky g_agent_map = LAZY_INSTANCE_INITIALIZER; | 44 base::LazyInstance<AgentHosts>::Leaky g_agent_map = LAZY_INSTANCE_INITIALIZER; |
| 45 base::LazyInstance<AgentHosts>::Leaky g_orphan_map = LAZY_INSTANCE_INITIALIZER; | 45 base::LazyInstance<AgentHosts>::Leaky g_orphan_map = LAZY_INSTANCE_INITIALIZER; |
| 46 | 46 |
| 47 } // namespace | 47 void CreateSharedWorkers( |
| 48 const DevToolsAgentHost::Callback& callback, | |
| 49 const std::vector<WorkerService::WorkerInfo>& workers) { | |
| 50 DevToolsAgentHost::List result; | |
| 51 for (std::vector<WorkerService::WorkerInfo>::const_iterator it = | |
| 52 workers.begin(); it != workers.end(); ++it) { | |
| 53 result.push_back(WorkerDevToolsManager::GetDevToolsAgentHostForWorker( | |
| 54 it->process_id, it->route_id)); | |
| 55 } | |
| 56 callback.Run(result); | |
| 57 } | |
| 58 | |
| 59 void GetSharedWorkersInfoOnIO(const DevToolsAgentHost::Callback& callback) { | |
| 60 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | |
| 61 base::Bind(&CreateSharedWorkers, callback, | |
| 62 WorkerService::GetInstance()->GetWorkers())); | |
| 63 } | |
| 64 | |
| 65 } // namespace | |
| 66 | |
| 67 void CollectAllHosts(const DevToolsAgentHost::Callback& callback, | |
| 68 const DevToolsAgentHost::List& workers) { | |
| 69 std::vector<RenderViewHost*> rvhs = | |
| 70 DevToolsAgentHost::GetValidRenderViewHosts(); | |
| 71 DevToolsAgentHost::List result; | |
| 72 for (std::vector<RenderViewHost*>::iterator it = rvhs.begin(); | |
| 73 it != rvhs.end(); ++it) { | |
| 74 result.push_back(DevToolsAgentHost::GetOrCreateFor(*it)); | |
| 75 } | |
| 76 result.insert(result.end(), workers.begin(), workers.end()); | |
| 77 callback.Run(result); | |
| 78 } | |
| 79 | |
| 80 // static | |
| 81 void DevToolsAgentHost::GetOrCreateAllHosts( | |
|
dgozman
2014/07/14 11:17:24
I think, this code should be in devtools_agent_hos
vkuzkokov
2014/07/14 15:31:33
Done.
| |
| 82 const DevToolsAgentHost::Callback& callback) { | |
| 83 if (WorkerService::EmbeddedSharedWorkerEnabled()) { | |
| 84 EmbeddedWorkerDevToolsManager::GetInstance()->GetOrCreateAllHosts( | |
| 85 base::Bind(&CollectAllHosts, callback)); | |
| 86 } else { | |
| 87 BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, | |
| 88 base::Bind(&GetSharedWorkersInfoOnIO, | |
| 89 base::Bind(&CollectAllHosts, callback))); | |
| 90 } | |
| 91 } | |
| 48 | 92 |
| 49 struct WorkerDevToolsManager::TerminatedInspectedWorker { | 93 struct WorkerDevToolsManager::TerminatedInspectedWorker { |
| 50 TerminatedInspectedWorker(WorkerId id, | 94 TerminatedInspectedWorker(WorkerId id, |
| 51 const GURL& url, | 95 const GURL& url, |
| 52 const base::string16& name) | 96 const base::string16& name) |
| 53 : old_worker_id(id), | 97 : old_worker_id(id), |
| 54 worker_url(url), | 98 worker_url(url), |
| 55 worker_name(name) {} | 99 worker_name(name) {} |
| 56 WorkerId old_worker_id; | 100 WorkerId old_worker_id; |
| 57 GURL worker_url; | 101 GURL worker_url; |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 444 process->Send(new DevToolsAgentMsg_ResumeWorkerContext(id.second)); | 488 process->Send(new DevToolsAgentMsg_ResumeWorkerContext(id.second)); |
| 445 } | 489 } |
| 446 | 490 |
| 447 WorkerDevToolsManager::WorkerDevToolsAgentHost::~WorkerDevToolsAgentHost() { | 491 WorkerDevToolsManager::WorkerDevToolsAgentHost::~WorkerDevToolsAgentHost() { |
| 448 DetachedClientHosts::RemovePendingWorkerData(worker_id_); | 492 DetachedClientHosts::RemovePendingWorkerData(worker_id_); |
| 449 g_agent_map.Get().erase(worker_id_); | 493 g_agent_map.Get().erase(worker_id_); |
| 450 g_orphan_map.Get().erase(worker_id_); | 494 g_orphan_map.Get().erase(worker_id_); |
| 451 } | 495 } |
| 452 | 496 |
| 453 } // namespace content | 497 } // namespace content |
| OLD | NEW |