Add ServiceWorkerStorageControl::PerformStorageCleanup()

This is a wrapper of ServiceWorkerStorage::PerformStorageCleanup().

Bug: 1055677
Change-Id: Iba1e9229d4605a5323cf2dd2c05081ab5c3b8d56
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2296543
Reviewed-by: Matt Falkenhagen <falken@chromium.org>
Reviewed-by: Kinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Kenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#788976}
diff --git a/components/services/storage/public/mojom/service_worker_storage_control.mojom b/components/services/storage/public/mojom/service_worker_storage_control.mojom
index 8d9b9b3..ee858a7 100644
--- a/components/services/storage/public/mojom/service_worker_storage_control.mojom
+++ b/components/services/storage/public/mojom/service_worker_storage_control.mojom
@@ -247,6 +247,9 @@
   ClearUserDataForAllRegistrationsByKeyPrefix(string key_prefix) =>
       (ServiceWorkerDatabaseStatus status);
 
+  // Removes traces of deleted data on disk.
+  PerformStorageCleanup() => ();
+
   // Applies changes to data retention policy which are relevant at shutdown.
   // This is analogous to LocalStorageControl::ApplyPolicyUpdates.
   ApplyPolicyUpdates(array<LocalStoragePolicyUpdate> policy_updates);
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
index 8ece6cd..9ce8ecc 100644
--- a/content/browser/service_worker/service_worker_context_core.cc
+++ b/content/browser/service_worker/service_worker_context_core.cc
@@ -551,7 +551,7 @@
 void ServiceWorkerContextCore::PerformStorageCleanup(
     base::OnceClosure callback) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
-  storage()->PerformStorageCleanup(std::move(callback));
+  GetStorageControl()->PerformStorageCleanup(std::move(callback));
 }
 
 void ServiceWorkerContextCore::DidGetRegistrationsForDeleteForOrigin(
diff --git a/content/browser/service_worker/service_worker_storage_control_impl.cc b/content/browser/service_worker/service_worker_storage_control_impl.cc
index 7257c19..f83c0005 100644
--- a/content/browser/service_worker/service_worker_storage_control_impl.cc
+++ b/content/browser/service_worker/service_worker_storage_control_impl.cc
@@ -353,6 +353,11 @@
                                                         std::move(callback));
 }
 
+void ServiceWorkerStorageControlImpl::PerformStorageCleanup(
+    PerformStorageCleanupCallback callback) {
+  storage_->PerformStorageCleanup(std::move(callback));
+}
+
 void ServiceWorkerStorageControlImpl::ApplyPolicyUpdates(
     const std::vector<storage::mojom::LocalStoragePolicyUpdatePtr>
         policy_updates) {
diff --git a/content/browser/service_worker/service_worker_storage_control_impl.h b/content/browser/service_worker/service_worker_storage_control_impl.h
index 5f350f2..b939948 100644
--- a/content/browser/service_worker/service_worker_storage_control_impl.h
+++ b/content/browser/service_worker/service_worker_storage_control_impl.h
@@ -140,6 +140,7 @@
   void ClearUserDataForAllRegistrationsByKeyPrefix(
       const std::string& key_prefix,
       ClearUserDataForAllRegistrationsByKeyPrefixCallback callback) override;
+  void PerformStorageCleanup(PerformStorageCleanupCallback callback) override;
   void ApplyPolicyUpdates(
       const std::vector<storage::mojom::LocalStoragePolicyUpdatePtr>
           policy_updates) override;