Index: content/browser/service_worker/service_worker_process_manager.h |
diff --git a/content/browser/service_worker/service_worker_process_manager.h b/content/browser/service_worker/service_worker_process_manager.h |
index 85fbcc1c050192f60a43f3b6b7c2ce738aef29b1..ec6ba977441faa9a52014cb5cf738136e260334e 100644 |
--- a/content/browser/service_worker/service_worker_process_manager.h |
+++ b/content/browser/service_worker/service_worker_process_manager.h |
@@ -18,24 +18,20 @@ |
namespace content { |
class BrowserContext; |
+class ServiceWorkerContextWrapper; |
class SiteInstance; |
// Interacts with the UI thread to keep RenderProcessHosts alive while the |
-// ServiceWorker system is using them. Each instance of |
+// ServiceWorker system is using them. Each instance of |
// ServiceWorkerProcessManager is destroyed on the UI thread shortly after its |
-// ServiceWorkerContextWrapper is destroyed. |
+// ServiceWorkerContextCore is destroyed on the IO thread. |
class CONTENT_EXPORT ServiceWorkerProcessManager { |
public: |
- // |*this| must be owned by a ServiceWorkerContextWrapper in a |
- // StoragePartition within |browser_context|. |
- explicit ServiceWorkerProcessManager(BrowserContext* browser_context); |
+ // |*this| must be owned by |context_wrapper|->context(). |
+ explicit ServiceWorkerProcessManager( |
+ ServiceWorkerContextWrapper* context_wrapper); |
- // Shutdown must be called before the ProcessManager is destroyed. |
~ServiceWorkerProcessManager(); |
- |
- // Synchronously prevents new processes from being allocated. |
- // TODO(jyasskin): Drop references to RenderProcessHosts too. |
- void Shutdown(); |
// Returns a reference to a running process suitable for starting the Service |
// Worker at |script_url|. Processes in |process_ids| will be checked in order |
@@ -84,8 +80,10 @@ |
int process_id; |
}; |
- // These fields are only accessed on the UI thread. |
- BrowserContext* browser_context_; |
+ // These fields are only accessed on the UI thread after construction. |
+ // The reference cycle through context_wrapper_ is broken in |
+ // ServiceWorkerContextWrapper::Shutdown(). |
+ scoped_refptr<ServiceWorkerContextWrapper> context_wrapper_; |
// Maps the ID of a running EmbeddedWorkerInstance to information about the |
// process it's running inside. Since the Instances themselves live on the IO |