Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(980)

Unified Diff: extensions/renderer/service_worker_request_sender.cc

Issue 2166523003: Add ref count to service workers for extension API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: sync@tott Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/renderer/service_worker_request_sender.h ('k') | extensions/renderer/worker_thread_dispatcher.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « extensions/renderer/service_worker_request_sender.h ('k') | extensions/renderer/worker_thread_dispatcher.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698