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