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