Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1883)

Unified Diff: content/browser/service_worker/service_worker_database.cc

Issue 1146913004: Service Worker: Add ServiceWorkerContainer.getRegistrations() method. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Use scoped_refptr to ServiceWorkerRegistration and rename variables. Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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, &registrations);
+ status = GetRegistrationsForOrigin(origin, &registrations, 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, &registrations);
+ status = GetRegistrationsForOrigin(origin, &registrations, nullptr);
if (status != STATUS_OK)
return status;

Powered by Google App Engine
This is Rietveld 408576698