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

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

Issue 374873002: Service Worker: Delay stale resource cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: style Created 6 years, 5 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 2e69f621fe41e7be321c86f47f2e439cd5673091..370733302787d31fa5629bd7a838c6e1a73a61d2 100644
--- a/content/browser/service_worker/service_worker_database.cc
+++ b/content/browser/service_worker/service_worker_database.cc
@@ -973,6 +973,7 @@ ServiceWorkerDatabase::Status ServiceWorkerDatabase::WriteResourceIdsInBatch(
// Value should be empty.
batch->Put(CreateResourceIdKey(id_key_prefix, *itr), "");
}
+ BumpNextResourceIdIfNeeded(ids, batch);
michaeln 2014/07/09 02:36:10 lions and tigers and bears, thnx for fixing this
nhiroki 2014/07/09 03:43:10 Great catch! Thank you :)
return STATUS_OK;
}
@@ -1054,6 +1055,22 @@ void ServiceWorkerDatabase::BumpNextRegistrationIdIfNeeded(
}
}
+void ServiceWorkerDatabase::BumpNextResourceIdIfNeeded(
+ const std::set<int64>& used_ids,
+ leveldb::WriteBatch* batch) {
+ DCHECK(batch);
+ int64 old_id = next_avail_resource_id_;
+ for (std::set<int64>::const_iterator itr = used_ids.begin();
nhiroki 2014/07/09 03:43:10 IIUC, std::set is always sorted and the last eleme
falken 2014/07/09 04:31:14 Ah, looks right. Switched to look at the last elem
+ itr != used_ids.end();
+ ++itr) {
+ if (next_avail_resource_id_ <= *itr)
+ next_avail_resource_id_ = *itr + 1;
+ }
+
+ if (next_avail_resource_id_ != old_id)
+ batch->Put(kNextResIdKey, base::Int64ToString(next_avail_resource_id_));
+}
+
void ServiceWorkerDatabase::BumpNextVersionIdIfNeeded(
int64 used_id, leveldb::WriteBatch* batch) {
DCHECK(batch);

Powered by Google App Engine
This is Rietveld 408576698