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 ad3d3d49e471b1d82c1b53ad929b4934b76f7cb8..92f0775f39292bcff24fbb5456b31007ffa4c455 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, |