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