Chromium Code Reviews| Index: content/browser/service_worker/service_worker_process_manager.cc |
| diff --git a/content/browser/service_worker/service_worker_process_manager.cc b/content/browser/service_worker/service_worker_process_manager.cc |
| index 0d7b70d4b2e0c3658728daa6058c94ef0231117b..4d9ab49f3c48f2bee55d2223178d63a6987f48e7 100644 |
| --- a/content/browser/service_worker/service_worker_process_manager.cc |
| +++ b/content/browser/service_worker/service_worker_process_manager.cc |
| @@ -35,8 +35,8 @@ ServiceWorkerProcessManager::ProcessInfo::~ProcessInfo() { |
| } |
| ServiceWorkerProcessManager::ServiceWorkerProcessManager( |
| - ServiceWorkerContextWrapper* context_wrapper) |
| - : context_wrapper_(context_wrapper), |
| + BrowserContext* browser_context) |
| + : browser_context_(browser_context), |
| process_id_for_test_(-1), |
| weak_this_factory_(this), |
| weak_this_(weak_this_factory_.GetWeakPtr()) { |
| @@ -44,6 +44,12 @@ ServiceWorkerProcessManager::ServiceWorkerProcessManager( |
| ServiceWorkerProcessManager::~ServiceWorkerProcessManager() { |
| DCHECK_CURRENTLY_ON(BrowserThread::UI); |
| + DCHECK(browser_context_ == NULL) |
| + << "Call Shutdown() before destroying |this|, so that racing method " |
| + << "invocations don't use a destroyed BrowserContext."; |
| +} |
|
falken
2014/05/22 02:43:19
nit: newline here?
Jeffrey Yasskin
2014/05/22 02:47:54
Done.
|
| +void ServiceWorkerProcessManager::Shutdown() { |
| + browser_context_ = NULL; |
| } |
| void ServiceWorkerProcessManager::AllocateWorkerProcess( |
| @@ -91,7 +97,7 @@ void ServiceWorkerProcessManager::AllocateWorkerProcess( |
| } |
| } |
| - if (!context_wrapper_->browser_context_) { |
| + if (!browser_context_) { |
| // Shutdown has started. |
| BrowserThread::PostTask( |
| BrowserThread::IO, |
| @@ -100,8 +106,8 @@ void ServiceWorkerProcessManager::AllocateWorkerProcess( |
| return; |
| } |
| // No existing processes available; start a new one. |
| - scoped_refptr<SiteInstance> site_instance = SiteInstance::CreateForURL( |
| - context_wrapper_->browser_context_, script_url); |
| + scoped_refptr<SiteInstance> site_instance = |
| + SiteInstance::CreateForURL(browser_context_, script_url); |
| RenderProcessHost* rph = site_instance->GetProcess(); |
| // This Init() call posts a task to the IO thread that adds the RPH's |
| // ServiceWorkerDispatcherHost to the |