| 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_;
|
|
|
|
|