| 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
|
|
|