Chromium Code Reviews| Index: content/browser/service_worker/embedded_worker_registry.cc |
| diff --git a/content/browser/service_worker/embedded_worker_registry.cc b/content/browser/service_worker/embedded_worker_registry.cc |
| index 249eab082b21ce3100114299d1da2811217b671b..6af68d3348ab65dffb62128722c0bcaf54326281 100644 |
| --- a/content/browser/service_worker/embedded_worker_registry.cc |
| +++ b/content/browser/service_worker/embedded_worker_registry.cc |
| @@ -5,9 +5,13 @@ |
| #include "content/browser/service_worker/embedded_worker_registry.h" |
| #include "base/stl_util.h" |
| +#include "content/browser/devtools/shared_worker_devtools_manager.h" |
| #include "content/browser/service_worker/embedded_worker_instance.h" |
| #include "content/browser/service_worker/service_worker_context_core.h" |
| #include "content/common/service_worker/embedded_worker_messages.h" |
| +#include "content/common/service_worker/service_worker_messages.h" |
| +#include "content/public/browser/browser_thread.h" |
| +#include "content/public/browser/render_process_host.h" |
| #include "ipc/ipc_message.h" |
| #include "ipc/ipc_sender.h" |
| @@ -30,11 +34,19 @@ ServiceWorkerStatusCode EmbeddedWorkerRegistry::StartWorker( |
| int embedded_worker_id, |
| int64 service_worker_version_id, |
| const GURL& scope, |
| - const GURL& script_url) { |
| - return Send( |
| - process_id, |
| - new EmbeddedWorkerMsg_StartWorker( |
| - embedded_worker_id, service_worker_version_id, scope, script_url)); |
| + const GURL& script_url, |
| + int* worker_route_id) { |
| + ProcessToNextRoutingIDCallbackMap::iterator found_callback = |
| + process_next_id_callback_map_.find(process_id); |
| + if (found_callback == process_next_id_callback_map_.end()) |
| + return SERVICE_WORKER_ERROR_PROCESS_NOT_FOUND; |
| + *worker_route_id = found_callback->second.Run(); |
| + return Send(process_id, |
| + new EmbeddedWorkerMsg_StartWorker(*worker_route_id, |
|
michaeln
2014/04/25 02:53:15
Can we not route/identify based on the existing em
horo
2014/04/25 04:34:44
I want to reuse the architecture of DevTools for S
|
| + embedded_worker_id, |
| + service_worker_version_id, |
| + scope, |
| + script_url)); |
| } |
| ServiceWorkerStatusCode EmbeddedWorkerRegistry::StopWorker( |
| @@ -135,6 +147,17 @@ void EmbeddedWorkerRegistry::RemoveChildProcessSender(int process_id) { |
| } |
| } |
| +void EmbeddedWorkerRegistry::AddChildProcessNextRoutingIDCallback( |
| + int process_id, |
| + const base::Callback<int(void)>& callback) { |
| + process_next_id_callback_map_.insert(std::make_pair(process_id, callback)); |
| +} |
| + |
| +void EmbeddedWorkerRegistry::RemoveChildProcessNextRoutingIDCallback( |
| + int process_id) { |
| + process_next_id_callback_map_.erase(process_id); |
| +} |
| + |
| EmbeddedWorkerInstance* EmbeddedWorkerRegistry::GetWorker( |
| int embedded_worker_id) { |
| WorkerInstanceMap::iterator found = worker_map_.find(embedded_worker_id); |