| Index: content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| diff --git a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| index 03611458968a63c0fda9a4295cafc87712b700df..aa4fb5b662f2ba19a681d2a33a745197e496c292 100644
|
| --- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| +++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| @@ -38,12 +38,18 @@ void EmbeddedWorkerInstanceClientImpl::ExposeInterfacesToBrowser(
|
| void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() {
|
| DCHECK(embedded_worker_id_);
|
| DCHECK(stop_callback_);
|
| - dispatcher_->UnregisterWorker(embedded_worker_id_.value());
|
| - embedded_worker_id_.reset();
|
| - stop_callback_.Run();
|
| TRACE_EVENT0("ServiceWorker",
|
| "EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted");
|
| + // TODO(falken): The signals to the browser should be in the order:
|
| + // (1) WorkerStopped (via stop_callback_)
|
| + // (2) ProviderDestroyed (via UnregisterWorker destroying
|
| + // WebEmbeddedWorkerImpl)
|
| + // But this ordering is currently not guaranteed since the Mojo pipes are
|
| + // different. https://crbug.com/676526
|
| + stop_callback_.Run();
|
| stop_callback_.Reset();
|
| + dispatcher_->UnregisterWorker(embedded_worker_id_.value());
|
| + embedded_worker_id_.reset();
|
| wrapper_ = nullptr;
|
| }
|
|
|
|
|