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 aeee244dc14c59e5a9567c35c1ac937a5ba53eac..778f3eb15233d71a20aa2d6cdaa989a25a335b0a 100644 |
--- a/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
+++ b/content/renderer/service_worker/embedded_worker_instance_client_impl.cc |
@@ -49,6 +49,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; |
@@ -67,13 +68,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(); |
} |