Chromium Code Reviews| Index: extensions/browser/extension_service_worker_message_filter.cc |
| diff --git a/extensions/browser/extension_service_worker_message_filter.cc b/extensions/browser/extension_service_worker_message_filter.cc |
| index fa3357e7903bf05e56aeef2ca3cf00d0721b5b10..dd790b1b589ed8d6c3a4d3f4524deb227217510e 100644 |
| --- a/extensions/browser/extension_service_worker_message_filter.cc |
| +++ b/extensions/browser/extension_service_worker_message_filter.cc |
| @@ -4,6 +4,8 @@ |
| #include "extensions/browser/extension_service_worker_message_filter.h" |
| +#include "content/public/browser/service_worker_context.h" |
| +#include "extensions/browser/bad_message.h" |
| #include "extensions/browser/extension_function_dispatcher.h" |
| #include "extensions/common/extension_messages.h" |
| @@ -11,9 +13,11 @@ namespace extensions { |
| ExtensionServiceWorkerMessageFilter::ExtensionServiceWorkerMessageFilter( |
| int render_process_id, |
| - content::BrowserContext* context) |
| + content::BrowserContext* context, |
| + content::ServiceWorkerContext* service_worker_context) |
| : content::BrowserMessageFilter(ExtensionWorkerMsgStart), |
| render_process_id_(render_process_id), |
| + service_worker_context_(service_worker_context), |
| dispatcher_(new ExtensionFunctionDispatcher(context)) {} |
| ExtensionServiceWorkerMessageFilter::~ExtensionServiceWorkerMessageFilter() { |
| @@ -33,6 +37,10 @@ bool ExtensionServiceWorkerMessageFilter::OnMessageReceived( |
| bool handled = true; |
| IPC_BEGIN_MESSAGE_MAP(ExtensionServiceWorkerMessageFilter, message) |
| IPC_MESSAGE_HANDLER(ExtensionHostMsg_RequestWorker, OnRequestWorker) |
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_IncrementServiceWorkerActivity, |
| + OnIncrementServiceWorkerActivity) |
| + IPC_MESSAGE_HANDLER(ExtensionHostMsg_DecrementServiceWorkerActivity, |
| + OnDecrementServiceWorkerActivity) |
| IPC_MESSAGE_UNHANDLED(handled = false) |
| IPC_END_MESSAGE_MAP() |
| return handled; |
| @@ -44,4 +52,24 @@ void ExtensionServiceWorkerMessageFilter::OnRequestWorker( |
| dispatcher_->Dispatch(params, nullptr, render_process_id_); |
| } |
| +void ExtensionServiceWorkerMessageFilter::OnIncrementServiceWorkerActivity( |
| + int64_t service_worker_version_id, |
| + const std::string& request_uuid) { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| + service_worker_context_->IncrementPendingActivity(service_worker_version_id, |
|
Devlin
2016/10/07 15:13:22
maybe worth a comment why we don't check for bad m
lazyboy
2016/10/07 18:50:10
Done.
|
| + request_uuid); |
| +} |
| + |
| +void ExtensionServiceWorkerMessageFilter::OnDecrementServiceWorkerActivity( |
| + int64_t service_worker_version_id, |
| + const std::string& request_uuid) { |
| + DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| + bool status = service_worker_context_->DecrementPendingActivity( |
| + service_worker_version_id, request_uuid); |
| + if (!status) { |
| + bad_message::ReceivedBadMessage( |
| + this, bad_message::ESWMF_INVALID_DECREMENT_ACTIVIY); |
| + } |
| +} |
| + |
| } // namespace extensions |