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 1b75f9407f63cec6135191da510dd9a6c5908fab..3859b5aa1de6a0028ed0da8bbd66bef0321dd271 100644 |
--- a/content/browser/service_worker/embedded_worker_registry.cc |
+++ b/content/browser/service_worker/embedded_worker_registry.cc |
@@ -249,7 +249,7 @@ |
} |
ServiceWorkerStatusCode EmbeddedWorkerRegistry::SendStartWorker( |
- std::unique_ptr<EmbeddedWorkerMsg_StartWorker_Params> params, |
+ std::unique_ptr<EmbeddedWorkerStartParams> params, |
int process_id) { |
if (!context_) |
return SERVICE_WORKER_ERROR_ABORT; |
@@ -269,8 +269,23 @@ |
ServiceWorkerStatusCode status = |
Send(process_id, new EmbeddedWorkerMsg_StartWorker(*params)); |
if (status == SERVICE_WORKER_OK) |
- worker_process_map_[process_id].insert(embedded_worker_id); |
+ BindWorkerToProcess(process_id, embedded_worker_id); |
return status; |
+} |
+ |
+void EmbeddedWorkerRegistry::BindWorkerToProcess(int process_id, |
+ int embedded_worker_id) { |
+ // The ServiceWorkerDispatcherHost is supposed to be created when the process |
+ // is created, and keep an entry in process_sender_map_ for its whole |
+ // lifetime. |
+ DCHECK(base::ContainsKey(process_sender_map_, process_id)); |
+ DCHECK(GetWorker(embedded_worker_id)); |
+ DCHECK_EQ(GetWorker(embedded_worker_id)->process_id(), process_id); |
+ DCHECK( |
+ !base::ContainsKey(worker_process_map_, process_id) || |
+ !base::ContainsKey(worker_process_map_[process_id], embedded_worker_id)); |
+ |
+ worker_process_map_[process_id].insert(embedded_worker_id); |
} |
ServiceWorkerStatusCode EmbeddedWorkerRegistry::Send( |