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

Unified Diff: content/browser/service_worker/service_worker_context_wrapper.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
Index: content/browser/service_worker/service_worker_context_wrapper.cc
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
index eeac4d3bfa1a06a2f5aa0af8950ffaa784dac6ae..686e5ea57d812ca1b2461f4a348a9b5a95ed8a02 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -22,6 +22,7 @@
#include "base/threading/sequenced_worker_pool.h"
#include "base/threading/thread_task_runner_handle.h"
#include "content/browser/renderer_host/render_process_host_impl.h"
+#include "content/browser/service_worker/embedded_worker_status.h"
#include "content/browser/service_worker/service_worker_context_core.h"
#include "content/browser/service_worker/service_worker_context_observer.h"
#include "content/browser/service_worker/service_worker_process_manager.h"
@@ -579,6 +580,32 @@ void ServiceWorkerContextWrapper::CheckHasServiceWorker(
callback));
}
+void ServiceWorkerContextWrapper::CountExternalRequestsForTest(
+ const GURL& origin,
+ const CountExternalRequestsCallback& callback) {
+ if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
+ BrowserThread::PostTask(
+ BrowserThread::IO, FROM_HERE,
+ base::Bind(&ServiceWorkerContextWrapper::CountExternalRequestsForTest,
+ this, origin, callback));
+ return;
+ }
+
+ std::vector<ServiceWorkerVersionInfo> live_version_info =
+ GetAllLiveVersionInfo();
+ size_t pending_external_request_count = 0;
+ for (const ServiceWorkerVersionInfo& info : live_version_info) {
+ ServiceWorkerVersion* version = GetLiveVersion(info.version_id);
+ if (version && version->scope().GetOrigin() == origin) {
+ pending_external_request_count =
+ version->GetExternalRequestCountForTest();
+ break;
+ }
+ }
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
+ base::Bind(callback, pending_external_request_count));
+}
+
void ServiceWorkerContextWrapper::ClearAllServiceWorkersForTest(
const base::Closure& callback) {
if (!BrowserThread::CurrentlyOn(BrowserThread::IO)) {
@@ -832,6 +859,28 @@ void ServiceWorkerContextWrapper::ShutdownOnIO() {
context_core_.reset();
}
+bool ServiceWorkerContextWrapper::StartingExternalRequest(
+ int64_t service_worker_version_id,
+ const std::string& request_uuid) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ ServiceWorkerVersion* version =
+ context()->GetLiveVersion(service_worker_version_id);
+ if (!version)
+ return false;
+ return version->StartExternalRequest(request_uuid);
+}
+
+bool ServiceWorkerContextWrapper::FinishedExternalRequest(
+ int64_t service_worker_version_id,
+ const std::string& request_uuid) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ ServiceWorkerVersion* version =
+ context()->GetLiveVersion(service_worker_version_id);
+ if (!version)
+ return false;
+ return version->FinishExternalRequest(request_uuid);
+}
+
void ServiceWorkerContextWrapper::DidDeleteAndStartOver(
ServiceWorkerStatusCode status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);

Powered by Google App Engine
This is Rietveld 408576698