| 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..fbd85e6f3e6815db662d48dc43e2a21ef8ad64c5 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,15 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::GetRegistrationsForOrigin(
|
| return status;
|
| }
|
| registrations->push_back(registration);
|
| +
|
| + 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 +732,8 @@ 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);
|
| + std::vector<std::vector<ResourceRecord>> resource_lists;
|
| + status = GetRegistrationsForOrigin(origin, ®istrations, &resource_lists);
|
| if (status != STATUS_OK)
|
| return status;
|
|
|
| @@ -938,7 +950,8 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::DeleteAllDataForOrigins(
|
| batch.Delete(CreateUniqueOriginKey(origin));
|
|
|
| std::vector<RegistrationData> registrations;
|
| - status = GetRegistrationsForOrigin(origin, ®istrations);
|
| + std::vector<std::vector<ResourceRecord>> resource_lists;
|
| + status = GetRegistrationsForOrigin(origin, ®istrations, &resource_lists);
|
| if (status != STATUS_OK)
|
| return status;
|
|
|
|
|