Index: content/browser/service_worker/service_worker_context_core.cc |
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc |
index 7a8e3860eb70646f783ac7050d15d39f5842d4cd..3e6e0538e75f68a0463aece2898603cee7a68451 100644 |
--- a/content/browser/service_worker/service_worker_context_core.cc |
+++ b/content/browser/service_worker/service_worker_context_core.cc |
@@ -5,6 +5,7 @@ |
#include "content/browser/service_worker/service_worker_context_core.h" |
#include "base/files/file_path.h" |
+#include "base/message_loop/message_loop_proxy.h" |
#include "base/strings/string_util.h" |
#include "content/browser/service_worker/embedded_worker_registry.h" |
#include "content/browser/service_worker/service_worker_context_observer.h" |
@@ -78,11 +79,14 @@ void ServiceWorkerContextCore::ProviderHostIterator::Initialize() { |
ServiceWorkerContextCore::ServiceWorkerContextCore( |
const base::FilePath& path, |
base::SequencedTaskRunner* database_task_runner, |
+ base::MessageLoopProxy* disk_cache_thread, |
quota::QuotaManagerProxy* quota_manager_proxy, |
ObserverListThreadSafe<ServiceWorkerContextObserver>* observer_list, |
scoped_ptr<ServiceWorkerProcessManager> process_manager) |
- : storage_(new ServiceWorkerStorage( |
- path, AsWeakPtr(), database_task_runner, quota_manager_proxy)), |
+ : weak_factory_(this), |
+ storage_(new ServiceWorkerStorage( |
+ path, AsWeakPtr(), database_task_runner, disk_cache_thread, |
+ quota_manager_proxy)), |
embedded_worker_registry_(new EmbeddedWorkerRegistry(AsWeakPtr())), |
job_coordinator_(new ServiceWorkerJobCoordinator(AsWeakPtr())), |
process_manager_(process_manager.Pass()), |
@@ -96,10 +100,7 @@ ServiceWorkerContextCore::~ServiceWorkerContextCore() { |
++it) { |
it->second->RemoveListener(this); |
} |
- providers_.Clear(); |
- storage_.reset(); |
- job_coordinator_.reset(); |
- embedded_worker_registry_ = NULL; |
+ weak_factory_.InvalidateWeakPtrs(); |
} |
ServiceWorkerProviderHost* ServiceWorkerContextCore::GetProviderHost( |