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

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

Issue 264713011: ServiceWorker: Implement DeleteAllDataForOrigin() in ServiceWorkerDatabase (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Drop DeleteAllData() and add test Created 6 years, 7 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 4561bf678dfd6428eebafbb43f07e199e5f9182d..18e71020ec9c0db096441ab34a021696f73d4b04 100644
--- a/content/browser/service_worker/service_worker_database.cc
+++ b/content/browser/service_worker/service_worker_database.cc
@@ -499,6 +499,31 @@ bool ServiceWorkerDatabase::ClearPurgeableResourceIds(
return DeleteResourceIds(kPurgeableResIdKeyPrefix, ids);
}
+bool ServiceWorkerDatabase::DeleteAllDataForOrigin(const GURL& origin) {
+ DCHECK(sequence_checker_.CalledOnValidSequencedThread());
+ if (!LazyOpen(true) || is_disabled_ || !origin.is_valid())
+ return false;
+
+ leveldb::WriteBatch batch;
+
+ // Delete from the unique origin list.
+ batch.Delete(CreateUniqueOriginKey(origin));
+
+ std::vector<RegistrationData> registrations;
+ if (!GetRegistrationsForOrigin(origin, &registrations))
+ return false;
+
+ // Delete registrations and resource records.
+ for (std::vector<RegistrationData>::const_iterator itr =
+ registrations.begin(); itr != registrations.end(); ++itr) {
+ batch.Delete(CreateRegistrationKey(itr->registration_id, origin));
+ if (!DeleteResourceRecords(itr->version_id, &batch))
+ return false;
+ }
+
+ return WriteBatch(&batch);
+}
+
bool ServiceWorkerDatabase::LazyOpen(bool create_if_needed) {
DCHECK(sequence_checker_.CalledOnValidSequencedThread());
if (IsOpen())

Powered by Google App Engine
This is Rietveld 408576698