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 |