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

Unified Diff: content/browser/service_worker/service_worker_context_wrapper.h

Issue 2166523003: Add ref count to service workers for extension API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address comments from falken@ Created 4 years, 3 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.h
diff --git a/content/browser/service_worker/service_worker_context_wrapper.h b/content/browser/service_worker/service_worker_context_wrapper.h
index 12c8b7220cd833464c774c76357a7bb6408573c5..fa13bbdf7355f26fa733b67356abb60e70e8163d 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.h
+++ b/content/browser/service_worker/service_worker_context_wrapper.h
@@ -112,6 +112,10 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
blink::WebNavigationHintType type,
int render_process_id,
const ResultCallback& callback) override;
+ bool IncrementPendingActivity(int64_t service_worker_version_id,
+ const std::string& request_uuid) override;
+ bool DecrementPendingActivity(int64_t service_worker_version_id,
+ const std::string& request_uuid) override;
// These methods must only be called from the IO thread.
ServiceWorkerRegistration* GetLiveRegistration(int64_t registration_id);
@@ -196,6 +200,7 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
friend class base::RefCountedThreadSafe<ServiceWorkerContextWrapper>;
friend class EmbeddedWorkerTestHelper;
friend class EmbeddedWorkerBrowserTest;
+ friend class ServiceWorkerContext;
friend class ServiceWorkerDispatcherHost;
friend class ServiceWorkerInternalsUI;
friend class ServiceWorkerNavigationHandleCore;
@@ -256,6 +261,17 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
const ResultCallback& callback,
bool result);
+ void ExternalRequestErrorCallback(int64_t service_worker_version_id,
+ const std::string& request_uuid,
+ ServiceWorkerStatusCode status);
+
+ // Removes a pending external request identified by |request_uuid|.
+ // Returns true if the request was pending. Also returns |request_id| in that
falken 2016/10/03 04:20:31 "pending" is a bit confusing since by definition i
lazyboy 2016/10/04 02:42:52 Done.
+ // case.
+ bool RemovePendingExternalRequest(int64_t service_worker_version_id,
+ const std::string& request_uuid,
+ int* request_id);
+
// The core context is only for use on the IO thread.
// Can be null before/during init, during/after shutdown, and after
// DeleteAndStartOver fails.
@@ -279,6 +295,13 @@ class CONTENT_EXPORT ServiceWorkerContextWrapper
// Must be touched on the UI thread.
std::map<int, int> navigation_hint_task_count_per_process_;
+ // Container for pending external requests of a service worker.
+ // Each request is (key, value): (request uuid, request id).
+ using RequestUUIDToRequestID = std::map<std::string, int>;
+ // Maps service worker version id -> RequestUUIDToRequestID.
+ // IO thread.
+ std::map<int64_t, RequestUUIDToRequestID> pending_external_requests_;
+
DISALLOW_COPY_AND_ASSIGN(ServiceWorkerContextWrapper);
};

Powered by Google App Engine
This is Rietveld 408576698