diff options
Diffstat (limited to 'chrome/browser/worker_host')
-rw-r--r-- | chrome/browser/worker_host/worker_service.cc | 15 | ||||
-rw-r--r-- | chrome/browser/worker_host/worker_service.h | 5 |
2 files changed, 20 insertions, 0 deletions
diff --git a/chrome/browser/worker_host/worker_service.cc b/chrome/browser/worker_host/worker_service.cc index a8ce3f0..d37314b 100644 --- a/chrome/browser/worker_host/worker_service.cc +++ b/chrome/browser/worker_host/worker_service.cc @@ -265,3 +265,18 @@ void WorkerService::WorkerProcessDestroyed(WorkerProcessHost* process) { } } } + +const WorkerProcessHost::WorkerInstance* WorkerService::FindWorkerInstance( + int worker_process_id) { + for (ChildProcessHost::Iterator iter(ChildProcessInfo::WORKER_PROCESS); + !iter.Done(); ++iter) { + if (iter->id() != worker_process_id) + continue; + + WorkerProcessHost* worker = static_cast<WorkerProcessHost*>(*iter); + WorkerProcessHost::Instances::const_iterator instance = + worker->instances().begin(); + return instance == worker->instances().end() ? NULL : &*instance; + } + return NULL; +} diff --git a/chrome/browser/worker_host/worker_service.h b/chrome/browser/worker_host/worker_service.h index 0887b32..a3e71031 100644 --- a/chrome/browser/worker_host/worker_service.h +++ b/chrome/browser/worker_host/worker_service.h @@ -46,6 +46,11 @@ class WorkerService : public NotificationObserver { int next_worker_route_id() { return ++next_worker_route_id_; } + // TODO(dimich): This code assumes there is 1 worker per worker process, which + // is how it is today until V8 can run in separate threads. + const WorkerProcessHost::WorkerInstance* FindWorkerInstance( + int worker_process_id); + // Used when multiple workers can run in the same process. static const int kMaxWorkerProcessesWhenSharing; |