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" |
11 #include "base/lazy_instance.h" | 11 #include "base/lazy_instance.h" |
12 #include "content/browser/devtools/devtools_manager_impl.h" | 12 #include "content/browser/devtools/devtools_manager_impl.h" |
13 #include "content/browser/devtools/devtools_protocol.h" | 13 #include "content/browser/devtools/devtools_protocol.h" |
14 #include "content/browser/devtools/devtools_protocol_constants.h" | 14 #include "content/browser/devtools/devtools_protocol_constants.h" |
15 #include "content/browser/devtools/ipc_devtools_agent_host.h" | 15 #include "content/browser/devtools/ipc_devtools_agent_host.h" |
| 16 #include "content/browser/devtools/shared_worker_devtools_manager.h" |
16 #include "content/browser/devtools/worker_devtools_message_filter.h" | 17 #include "content/browser/devtools/worker_devtools_message_filter.h" |
17 #include "content/browser/worker_host/worker_service_impl.h" | 18 #include "content/browser/worker_host/worker_service_impl.h" |
18 #include "content/common/devtools_messages.h" | 19 #include "content/common/devtools_messages.h" |
19 #include "content/public/browser/browser_thread.h" | 20 #include "content/public/browser/browser_thread.h" |
20 #include "content/public/browser/child_process_data.h" | 21 #include "content/public/browser/child_process_data.h" |
21 #include "content/public/common/process_type.h" | 22 #include "content/public/common/process_type.h" |
22 | 23 |
23 namespace content { | 24 namespace content { |
24 | 25 |
25 // Called on the UI thread. | 26 // Called on the UI thread. |
26 // static | 27 // static |
27 scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForWorker( | 28 scoped_refptr<DevToolsAgentHost> DevToolsAgentHost::GetForWorker( |
28 int worker_process_id, | 29 int worker_process_id, |
29 int worker_route_id) { | 30 int worker_route_id) { |
30 return WorkerDevToolsManager::GetDevToolsAgentHostForWorker( | 31 if (WorkerService::EmbeddedSharedWorkerEnabled()) { |
31 worker_process_id, | 32 return SharedWorkerDevToolsManager::GetDevToolsAgentHostForWorker( |
32 worker_route_id); | 33 worker_process_id, worker_route_id); |
| 34 } else { |
| 35 return WorkerDevToolsManager::GetDevToolsAgentHostForWorker( |
| 36 worker_process_id, worker_route_id); |
| 37 } |
33 } | 38 } |
34 | 39 |
35 // Called on the UI thread. | 40 // Called on the UI thread. |
36 // static | 41 // static |
37 bool DevToolsAgentHost::HasForWorker( | 42 bool DevToolsAgentHost::HasForWorker( |
38 int worker_process_id, | 43 int worker_process_id, |
39 int worker_route_id) { | 44 int worker_route_id) { |
40 return WorkerDevToolsManager::HasDevToolsAgentHostForWorker( | 45 if (WorkerService::EmbeddedSharedWorkerEnabled()) { |
41 worker_process_id, | 46 return SharedWorkerDevToolsManager::HasDevToolsAgentHostForWorker( |
42 worker_route_id); | 47 worker_process_id, worker_route_id); |
| 48 } else { |
| 49 return WorkerDevToolsManager::HasDevToolsAgentHostForWorker( |
| 50 worker_process_id, worker_route_id); |
| 51 } |
43 } | 52 } |
44 | 53 |
45 namespace { | 54 namespace { |
46 | 55 |
47 typedef std::map<WorkerDevToolsManager::WorkerId, | 56 typedef std::map<WorkerDevToolsManager::WorkerId, |
48 WorkerDevToolsManager::WorkerDevToolsAgentHost*> AgentHosts; | 57 WorkerDevToolsManager::WorkerDevToolsAgentHost*> AgentHosts; |
49 base::LazyInstance<AgentHosts>::Leaky g_agent_map = LAZY_INSTANCE_INITIALIZER; | 58 base::LazyInstance<AgentHosts>::Leaky g_agent_map = LAZY_INSTANCE_INITIALIZER; |
50 base::LazyInstance<AgentHosts>::Leaky g_orphan_map = LAZY_INSTANCE_INITIALIZER; | 59 base::LazyInstance<AgentHosts>::Leaky g_orphan_map = LAZY_INSTANCE_INITIALIZER; |
51 | 60 |
52 } // namespace | 61 } // namespace |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
210 worker_url(url), | 219 worker_url(url), |
211 worker_name(name) {} | 220 worker_name(name) {} |
212 WorkerProcessHost* const host; | 221 WorkerProcessHost* const host; |
213 int const route_id; | 222 int const route_id; |
214 GURL worker_url; | 223 GURL worker_url; |
215 base::string16 worker_name; | 224 base::string16 worker_name; |
216 }; | 225 }; |
217 | 226 |
218 // static | 227 // static |
219 WorkerDevToolsManager* WorkerDevToolsManager::GetInstance() { | 228 WorkerDevToolsManager* WorkerDevToolsManager::GetInstance() { |
| 229 DCHECK(!WorkerService::EmbeddedSharedWorkerEnabled()); |
220 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 230 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
221 return Singleton<WorkerDevToolsManager>::get(); | 231 return Singleton<WorkerDevToolsManager>::get(); |
222 } | 232 } |
223 | 233 |
224 // static | 234 // static |
225 DevToolsAgentHost* WorkerDevToolsManager::GetDevToolsAgentHostForWorker( | 235 DevToolsAgentHost* WorkerDevToolsManager::GetDevToolsAgentHostForWorker( |
226 int worker_process_id, | 236 int worker_process_id, |
227 int worker_route_id) { | 237 int worker_route_id) { |
| 238 DCHECK(!WorkerService::EmbeddedSharedWorkerEnabled()); |
228 WorkerId id(worker_process_id, worker_route_id); | 239 WorkerId id(worker_process_id, worker_route_id); |
229 AgentHosts::iterator it = g_agent_map.Get().find(id); | 240 AgentHosts::iterator it = g_agent_map.Get().find(id); |
230 if (it == g_agent_map.Get().end()) | 241 if (it == g_agent_map.Get().end()) |
231 return new WorkerDevToolsAgentHost(id); | 242 return new WorkerDevToolsAgentHost(id); |
232 return it->second; | 243 return it->second; |
233 } | 244 } |
234 | 245 |
235 // static | 246 // static |
236 bool WorkerDevToolsManager::HasDevToolsAgentHostForWorker( | 247 bool WorkerDevToolsManager::HasDevToolsAgentHostForWorker( |
237 int worker_process_id, | 248 int worker_process_id, |
238 int worker_route_id) { | 249 int worker_route_id) { |
| 250 DCHECK(!WorkerService::EmbeddedSharedWorkerEnabled()); |
239 WorkerId id(worker_process_id, worker_route_id); | 251 WorkerId id(worker_process_id, worker_route_id); |
240 return g_agent_map.Get().find(id) != g_agent_map.Get().end(); | 252 return g_agent_map.Get().find(id) != g_agent_map.Get().end(); |
241 } | 253 } |
242 | 254 |
243 WorkerDevToolsManager::WorkerDevToolsManager() { | 255 WorkerDevToolsManager::WorkerDevToolsManager() { |
244 } | 256 } |
245 | 257 |
246 WorkerDevToolsManager::~WorkerDevToolsManager() { | 258 WorkerDevToolsManager::~WorkerDevToolsManager() { |
247 } | 259 } |
248 | 260 |
(...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 process->Send(new DevToolsAgentMsg_ResumeWorkerContext(id.second)); | 468 process->Send(new DevToolsAgentMsg_ResumeWorkerContext(id.second)); |
457 } | 469 } |
458 | 470 |
459 WorkerDevToolsManager::WorkerDevToolsAgentHost::~WorkerDevToolsAgentHost() { | 471 WorkerDevToolsManager::WorkerDevToolsAgentHost::~WorkerDevToolsAgentHost() { |
460 DetachedClientHosts::RemovePendingWorkerData(worker_id_); | 472 DetachedClientHosts::RemovePendingWorkerData(worker_id_); |
461 g_agent_map.Get().erase(worker_id_); | 473 g_agent_map.Get().erase(worker_id_); |
462 g_orphan_map.Get().erase(worker_id_); | 474 g_orphan_map.Get().erase(worker_id_); |
463 } | 475 } |
464 | 476 |
465 } // namespace content | 477 } // namespace content |
OLD | NEW |