| 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 38014c8cc62640fcf7258ef9d588d784c2c0b1c3..aa699bcf0c170284ae143f2fca0b89058d158178 100644
|
| --- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| +++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| @@ -28,12 +28,18 @@ void EmbeddedWorkerInstanceClientImpl::Create(
|
| 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;
|
| }
|
|
|
|
|