Index: content/browser/service_worker/service_worker_dispatcher_host.cc |
diff --git a/content/browser/service_worker/service_worker_dispatcher_host.cc b/content/browser/service_worker/service_worker_dispatcher_host.cc |
index 8f00707381f1412fbe51215e6667fa579f972f16..791cfda51e6473205369ab67fdef3298fc4889e9 100644 |
--- a/content/browser/service_worker/service_worker_dispatcher_host.cc |
+++ b/content/browser/service_worker/service_worker_dispatcher_host.cc |
@@ -196,6 +196,7 @@ bool ServiceWorkerDispatcherHost::OnMessageReceived( |
OnIncrementRegistrationRefCount) |
IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_DecrementRegistrationRefCount, |
OnDecrementRegistrationRefCount) |
+ IPC_MESSAGE_HANDLER(ServiceWorkerHostMsg_TerminateWorker, OnTerminateWorker) |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
@@ -863,4 +864,14 @@ ServiceWorkerContextCore* ServiceWorkerDispatcherHost::GetContext() { |
return context_wrapper_->context(); |
} |
+void ServiceWorkerDispatcherHost::OnTerminateWorker(int handle_id) { |
+ ServiceWorkerHandle* handle = handles_.Lookup(handle_id); |
+ if (!handle) { |
+ BadMessageReceived(); |
+ return; |
+ } |
+ handle->version()->StopWorker( |
+ base::Bind(&ServiceWorkerUtils::NoOpStatusCallback)); |
+} |
+ |
} // namespace content |