| Index: extensions/renderer/service_worker_request_sender.cc
|
| diff --git a/extensions/renderer/service_worker_request_sender.cc b/extensions/renderer/service_worker_request_sender.cc
|
| index a4d089ae7f039e8e39a0ca014b2351a7e996d5b4..6830ed3213b025e0dead6703025980cf2484f79d 100644
|
| --- a/extensions/renderer/service_worker_request_sender.cc
|
| +++ b/extensions/renderer/service_worker_request_sender.cc
|
| @@ -4,6 +4,7 @@
|
|
|
| #include "extensions/renderer/service_worker_request_sender.h"
|
|
|
| +#include "base/guid.h"
|
| #include "content/public/child/worker_thread.h"
|
| #include "extensions/common/extension_messages.h"
|
| #include "extensions/renderer/worker_thread_dispatcher.h"
|
| @@ -12,8 +13,9 @@ namespace extensions {
|
|
|
| ServiceWorkerRequestSender::ServiceWorkerRequestSender(
|
| WorkerThreadDispatcher* dispatcher,
|
| - int embedded_worker_id)
|
| - : dispatcher_(dispatcher), embedded_worker_id_(embedded_worker_id) {}
|
| + int64_t service_worker_version_id)
|
| + : dispatcher_(dispatcher),
|
| + service_worker_version_id_(service_worker_version_id) {}
|
|
|
| ServiceWorkerRequestSender::~ServiceWorkerRequestSender() {}
|
|
|
| @@ -25,9 +27,32 @@ void ServiceWorkerRequestSender::SendRequest(
|
| int worker_thread_id = content::WorkerThread::GetCurrentId();
|
| DCHECK_GT(worker_thread_id, 0);
|
| params.worker_thread_id = worker_thread_id;
|
| - params.embedded_worker_id = embedded_worker_id_;
|
| + params.service_worker_version_id = service_worker_version_id_;
|
| + std::string guid = base::GenerateGUID();
|
| + request_id_to_guid_[params.request_id] = guid;
|
| +
|
| + // Keeps the worker alive during extension function call. Balanced in
|
| + // HandleWorkerResponse().
|
| + dispatcher_->Send(new ExtensionHostMsg_IncrementServiceWorkerActivity(
|
| + service_worker_version_id_, guid));
|
|
|
| dispatcher_->Send(new ExtensionHostMsg_RequestWorker(params));
|
| }
|
|
|
| +void ServiceWorkerRequestSender::HandleWorkerResponse(
|
| + int request_id,
|
| + int64_t service_worker_version_id,
|
| + bool success,
|
| + const base::ListValue& response,
|
| + const std::string& error) {
|
| + RequestSender::HandleResponse(request_id, success, response, error);
|
| +
|
| + std::map<int, std::string>::iterator iter =
|
| + request_id_to_guid_.find(request_id);
|
| + DCHECK(iter != request_id_to_guid_.end());
|
| + dispatcher_->Send(new ExtensionHostMsg_DecrementServiceWorkerActivity(
|
| + service_worker_version_id_, iter->second));
|
| + request_id_to_guid_.erase(iter);
|
| +}
|
| +
|
| } // namespace extensions
|
|
|