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

Unified Diff: content/child/service_worker/service_worker_dispatcher.h

Issue 261533003: Populate .current when navigator.serviceWorker is accessed (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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/child/service_worker/service_worker_dispatcher.h
diff --git a/content/child/service_worker/service_worker_dispatcher.h b/content/child/service_worker/service_worker_dispatcher.h
index c1d8a7582eb7b8ca017d8dc5ff951a4a9eb2fec4..2c6ca3a8ea5a7ee27f78be042b62374f70eea534 100644
--- a/content/child/service_worker/service_worker_dispatcher.h
+++ b/content/child/service_worker/service_worker_dispatcher.h
@@ -29,6 +29,7 @@ namespace content {
class ServiceWorkerMessageFilter;
struct ServiceWorkerObjectInfo;
+class ServiceWorkerProviderContext;
class ThreadSafeSender;
class WebServiceWorkerImpl;
@@ -55,6 +56,13 @@ class ServiceWorkerDispatcher : public WorkerTaskRunner::Observer {
const GURL& pattern,
blink::WebServiceWorkerProvider::WebServiceWorkerCallbacks* callbacks);
+ // Called when a new provider context for a document is created. Usually
+ // this happens when a new document is being loaded, and is called much
+ // earlier than AddScriptClient.
+ // (This is attached only to the document thread's ServiceWorkerDispatcher)
+ void AddProviderContext(ServiceWorkerProviderContext* provider_context);
+ void RemoveProviderContext(ServiceWorkerProviderContext* provider_context);
+
// Called when navigator.serviceWorker is instantiated or detached
// for a document whose provider can be identified by |provider_id|.
void AddScriptClient(int provider_id,
@@ -74,7 +82,9 @@ class ServiceWorkerDispatcher : public WorkerTaskRunner::Observer {
typedef IDMap<blink::WebServiceWorkerProvider::WebServiceWorkerCallbacks,
IDMapOwnPointer> CallbackMap;
typedef std::map<int, blink::WebServiceWorkerProviderClient*> ScriptClientMap;
- typedef std::map<int, WebServiceWorkerImpl*> ServiceWorkerMap;
+ typedef std::map<int, ServiceWorkerProviderContext*> ProviderContextMap;
+ typedef std::map<int, WebServiceWorkerImpl*> WorkerObjectMap;
+ typedef std::map<int, ServiceWorkerProviderContext*> WorkerToProviderMap;
friend class WebServiceWorkerImpl;
@@ -103,7 +113,12 @@ class ServiceWorkerDispatcher : public WorkerTaskRunner::Observer {
CallbackMap pending_callbacks_;
ScriptClientMap script_clients_;
- ServiceWorkerMap service_workers_;
+ ProviderContextMap provider_contexts_;
+ WorkerObjectMap service_workers_;
+
+ // A map for ServiceWorkers that are associated to a particular document
+ // (e.g. as .current).
+ WorkerToProviderMap worker_to_provider_;
scoped_refptr<ThreadSafeSender> thread_safe_sender_;

Powered by Google App Engine
This is Rietveld 408576698