| 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 |