| 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 f3ff0482c8fea21f03f94af83e4555d9e8fd1687..9056e76f03596ef69ab275846ef148da8d92c87c 100644
|
| --- a/content/browser/service_worker/service_worker_process_manager.cc
|
| +++ b/content/browser/service_worker/service_worker_process_manager.cc
|
| @@ -77,11 +77,16 @@ void ServiceWorkerProcessManager::Shutdown() {
|
| browser_context_ = nullptr;
|
| }
|
|
|
| - for (std::map<int, ProcessInfo>::const_iterator it = instance_info_.begin();
|
| - it != instance_info_.end();
|
| - ++it) {
|
| - RenderProcessHost::FromID(it->second.process_id)
|
| - ->DecrementServiceWorkerRefCount();
|
| + // In single-process mode, Shutdown() is called when deleting the default
|
| + // browser context, which is itself destroyed after the RenderProcessHost,
|
| + // and RenderProcessHost::FromID() just returns a nullptr.
|
| + // The refcount decrement can be skipped anyway since there's only one process
|
| + if (!RenderProcessHost::run_renderer_in_process()) {
|
| + for (std::map<int, ProcessInfo>::const_iterator it = instance_info_.begin();
|
| + it != instance_info_.end(); ++it) {
|
| + RenderProcessHost::FromID(it->second.process_id)
|
| + ->DecrementServiceWorkerRefCount();
|
| + }
|
| }
|
| instance_info_.clear();
|
| }
|
|
|