Chromium Code Reviews| 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..676bfbc44a1610105fe0caac47fd52d0154c169b 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>>* opt_resources_list) { |
| 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) { |
|
falken
2015/06/08 04:59:09
|index| is not used?
jungkees
2015/06/08 16:00:19
No, it isn't. I removed it.
|
| 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 (opt_resources_list) { |
| + std::vector<ResourceRecord> resources; |
| + status = ReadResourceRecords(registration.version_id, &resources); |
| + if (status != STATUS_OK) { |
| + HandleReadResult(FROM_HERE, status); |
| + opt_resources_list->clear(); |
| + return status; |
| + } |
| + opt_resources_list->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; |