| 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..93880f750237400938236101a3d5c623cbdaed56 100644
|
| --- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| +++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc
|
| @@ -31,9 +31,9 @@ void EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted() {
|
| dispatcher_->UnregisterWorker(embedded_worker_id_.value());
|
| embedded_worker_id_.reset();
|
| stop_callback_.Run();
|
| + stop_callback_.Reset();
|
| TRACE_EVENT0("ServiceWorker",
|
| "EmbeddedWorkerInstanceClientImpl::StopWorkerCompleted");
|
| - stop_callback_.Reset();
|
| wrapper_ = nullptr;
|
| }
|
|
|
| @@ -42,6 +42,7 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker(
|
| mojom::ServiceWorkerEventDispatcherRequest dispatcher_request) {
|
| DCHECK(ChildThreadImpl::current());
|
| DCHECK(!wrapper_);
|
| + DCHECK(!embedded_worker_id_);
|
| TRACE_EVENT0("ServiceWorker",
|
| "EmbeddedWorkerInstanceClientImpl::StartWorker");
|
| embedded_worker_id_ = params.embedded_worker_id;
|
| @@ -60,13 +61,14 @@ void EmbeddedWorkerInstanceClientImpl::StartWorker(
|
|
|
| void EmbeddedWorkerInstanceClientImpl::StopWorker(
|
| const StopWorkerCallback& callback) {
|
| + // StopWorker must be called after StartWorker is called.
|
| DCHECK(ChildThreadImpl::current());
|
| + DCHECK(wrapper_);
|
| DCHECK(embedded_worker_id_);
|
| - // StopWorker is possible to be called twice or before StartWorker().
|
| - if (stop_callback_ || !wrapper_)
|
| - return;
|
| + DCHECK(!stop_callback_);
|
| +
|
| TRACE_EVENT0("ServiceWorker", "EmbeddedWorkerInstanceClientImpl::StopWorker");
|
| - stop_callback_ = std::move(callback);
|
| + stop_callback_ = callback;
|
| dispatcher_->RecordStopWorkerTimer(embedded_worker_id_.value());
|
| wrapper_->worker()->terminateWorkerContext();
|
| }
|
|
|