Chromium Code Reviews| Index: content/browser/devtools/embedded_worker_devtools_manager.cc |
| diff --git a/content/browser/devtools/embedded_worker_devtools_manager.cc b/content/browser/devtools/embedded_worker_devtools_manager.cc |
| index b08ba884f08c5bd3b78b2fc54bc3cb8d151161ff..2c3bde0c5f4d0820127673e78a3ce2b627e9e666 100644 |
| --- a/content/browser/devtools/embedded_worker_devtools_manager.cc |
| +++ b/content/browser/devtools/embedded_worker_devtools_manager.cc |
| @@ -34,6 +34,25 @@ bool SendMessageToWorker( |
| } // namespace |
| +EmbeddedWorkerDevToolsManager::WorkerInfo::WorkerInfo( |
| + const SharedWorkerInstance& instance) |
| + : shared_worker_instance_(new SharedWorkerInstance(instance)), |
| + state_(WORKER_UNINSPECTED), |
| + agent_host_(NULL) { |
| +} |
| + |
| +EmbeddedWorkerDevToolsManager::WorkerInfo::WorkerInfo( |
| + const base::FilePath& service_worker_path, |
| + const GURL& service_worker_scope) |
| + : service_worker_path_(new base::FilePath(service_worker_path)), |
| + service_worker_scope_(new GURL(service_worker_scope)), |
| + state_(WORKER_UNINSPECTED), |
| + agent_host_(NULL) { |
| +} |
| + |
| +EmbeddedWorkerDevToolsManager::WorkerInfo::~WorkerInfo() { |
| +} |
| + |
| class EmbeddedWorkerDevToolsManager::EmbeddedWorkerDevToolsAgentHost |
| : public IPCDevToolsAgentHost, |
| public IPC::Listener { |
| @@ -160,6 +179,26 @@ bool EmbeddedWorkerDevToolsManager::SharedWorkerCreated( |
| return true; |
| } |
| +bool EmbeddedWorkerDevToolsManager::ServiceWorkerCreated( |
| + int worker_process_id, |
| + int worker_route_id, |
| + const base::FilePath& path, |
| + const GURL& scope) { |
| + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| + const WorkerId id(worker_process_id, worker_route_id); |
| + WorkerInfoMap::iterator it = FindExistingServiceWorkerInfo(path, scope); |
| + if (it == workers_.end()) { |
| + scoped_ptr<WorkerInfo> info(new WorkerInfo(path, scope)); |
| + workers_.set(id, info.Pass()); |
| + return false; |
| + } |
| + DCHECK_EQ(WORKER_TERMINATED, it->second->state()); |
|
yurys
2014/05/02 04:35:35
Consider extracting common tail into a separate me
horo
2014/05/02 06:31:55
Done.
|
| + scoped_ptr<WorkerInfo> info = workers_.take_and_erase(it); |
| + info->set_state(WORKER_PAUSED); |
| + workers_.set(id, info.Pass()); |
| + return true; |
| +} |
| + |
| void EmbeddedWorkerDevToolsManager::WorkerDestroyed(int worker_process_id, |
| int worker_route_id) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| @@ -243,7 +282,19 @@ EmbeddedWorkerDevToolsManager::FindExistingSharedWorkerInfo( |
| const SharedWorkerInstance& instance) { |
| WorkerInfoMap::iterator it = workers_.begin(); |
| for (; it != workers_.end(); ++it) { |
| - if (it->second->instance().Matches(instance)) |
| + if (it->second->Matches(instance)) |
| + break; |
| + } |
| + return it; |
| +} |
| + |
| +EmbeddedWorkerDevToolsManager::WorkerInfoMap::iterator |
| +EmbeddedWorkerDevToolsManager::FindExistingServiceWorkerInfo( |
| + const base::FilePath& service_worker_path, |
|
yurys
2014/05/02 04:35:35
Would it make sense to have ServiceWorkerInstance
horo
2014/05/02 06:31:55
Added comment in .h.
|
| + const GURL& service_worker_scope) { |
| + WorkerInfoMap::iterator it = workers_.begin(); |
| + for (; it != workers_.end(); ++it) { |
| + if (it->second->Matches(service_worker_path, service_worker_scope)) |
| break; |
| } |
| return it; |