Index: content/browser/service_worker/service_worker_storage.cc |
diff --git a/content/browser/service_worker/service_worker_storage.cc b/content/browser/service_worker/service_worker_storage.cc |
index 9ae8c513df64a17ece0945c29883459be802ebac..c7fa413ea17f34d92b524e69f7b564a05bfdf39e 100644 |
--- a/content/browser/service_worker/service_worker_storage.cc |
+++ b/content/browser/service_worker/service_worker_storage.cc |
@@ -773,13 +773,17 @@ void ServiceWorkerStorage::GetUserDataForAllRegistrations( |
const std::string& key, |
const ServiceWorkerStorage::GetUserDataForAllRegistrationsCallback& |
callback) { |
- DCHECK(state_ == INITIALIZED || state_ == DISABLED) << state_; |
- if (IsDisabled() || !context_) { |
- RunSoon(FROM_HERE, |
- base::Bind(callback, std::vector<std::pair<int64, std::string>>(), |
- SERVICE_WORKER_ERROR_FAILED)); |
+ if (!LazyInitialize( |
+ base::Bind(&ServiceWorkerStorage::GetUserDataForAllRegistrations, |
+ weak_factory_.GetWeakPtr(), key, callback))) { |
+ if (state_ != INITIALIZING || !context_) { |
+ RunSoon(FROM_HERE, |
+ base::Bind(callback, std::vector<std::pair<int64, std::string>>(), |
+ SERVICE_WORKER_ERROR_FAILED)); |
+ } |
return; |
} |
+ DCHECK_EQ(INITIALIZED, state_); |
if (key.empty()) { |
RunSoon(FROM_HERE, |