| 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 51d3c2c5ca2d368f5c1dbb27e3277fdad58fe1cf..d86cdef643b4990032a7d684f47b6f0501e89fe4 100644
|
| --- a/content/browser/service_worker/embedded_worker_registry.cc
|
| +++ b/content/browser/service_worker/embedded_worker_registry.cc
|
| @@ -245,7 +245,7 @@ EmbeddedWorkerRegistry::~EmbeddedWorkerRegistry() {
|
| }
|
|
|
| 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;
|
| @@ -265,10 +265,25 @@ ServiceWorkerStatusCode EmbeddedWorkerRegistry::SendStartWorker(
|
| 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(
|
| int process_id, IPC::Message* message_ptr) {
|
| std::unique_ptr<IPC::Message> message(message_ptr);
|
|
|