Index: content/browser/service_worker/service_worker_database.cc |
diff --git a/content/browser/service_worker/service_worker_database.cc b/content/browser/service_worker/service_worker_database.cc |
index fca967cf830e8081ddeb5d20e2f2bab5de766379..5c9640f2e288dc760c4481eb4867bedfc5fb50c8 100644 |
--- a/content/browser/service_worker/service_worker_database.cc |
+++ b/content/browser/service_worker/service_worker_database.cc |
@@ -437,7 +437,8 @@ ServiceWorkerDatabase::GetOriginsWithRegistrations(std::set<GURL>* origins) { |
ServiceWorkerDatabase::Status ServiceWorkerDatabase::GetRegistrationsForOrigin( |
const GURL& origin, |
- std::vector<RegistrationData>* registrations) { |
+ std::vector<RegistrationData>* registrations, |
+ std::vector<std::vector<ResourceRecord>>* resource_lists) { |
DCHECK(sequence_checker_.CalledOnValidSequencedThread()); |
DCHECK(registrations->empty()); |
@@ -452,7 +453,8 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::GetRegistrationsForOrigin( |
"%s%s%c", kRegKeyPrefix, origin.spec().c_str(), kKeySeparator); |
scoped_ptr<leveldb::Iterator> itr(db_->NewIterator(leveldb::ReadOptions())); |
- for (itr->Seek(prefix); itr->Valid(); itr->Next()) { |
+ size_t index = 0; |
+ for (itr->Seek(prefix); itr->Valid(); itr->Next(), ++index) { |
status = LevelDBStatusToStatus(itr->status()); |
if (status != STATUS_OK) { |
HandleReadResult(FROM_HERE, status); |
@@ -471,6 +473,17 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::GetRegistrationsForOrigin( |
return status; |
} |
registrations->push_back(registration); |
+ |
+ if (resource_lists) { |
+ std::vector<ResourceRecord> resources; |
+ status = ReadResourceRecords(registration.version_id, &resources); |
+ if (status != STATUS_OK) { |
+ HandleReadResult(FROM_HERE, status); |
+ resource_lists->clear(); |
+ return status; |
+ } |
+ resource_lists->push_back(resources); |
+ } |
} |
HandleReadResult(FROM_HERE, status); |
@@ -721,7 +734,7 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteRegistration( |
// |registration_id| is the only one for |origin|. |
// TODO(nhiroki): Check the uniqueness by more efficient way. |
std::vector<RegistrationData> registrations; |
- status = GetRegistrationsForOrigin(origin, ®istrations); |
+ status = GetRegistrationsForOrigin(origin, ®istrations, nullptr); |
if (status != STATUS_OK) |
return status; |
@@ -938,7 +951,7 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteAllDataForOrigins( |
batch.Delete(CreateUniqueOriginKey(origin)); |
std::vector<RegistrationData> registrations; |
- status = GetRegistrationsForOrigin(origin, ®istrations); |
+ status = GetRegistrationsForOrigin(origin, ®istrations, nullptr); |
if (status != STATUS_OK) |
return status; |