Refactor ServiceWorkerRegistry to use StorageKey

Update GURL and url::Origin usages to StorageKey. Not all usages could
be updated yet due to dependencies on other classes which will be
resolved in the future.

This CL is intended to be as close to a behavioral no-op as possible.

Bug: 1199077
Change-Id: I7f62c57345b7067b17d0ef3545f29002901a2307
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2878994
Commit-Queue: Steven Bingler <bingler@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Ben Kelly <wanderview@chromium.org>
Reviewed-by: Peter Beverloo <peter@chromium.org>
Cr-Commit-Position: refs/heads/master@{#880569}
diff --git a/content/browser/background_fetch/background_fetch_test_base.cc b/content/browser/background_fetch/background_fetch_test_base.cc
index b5b658c..e4ba8e2 100644
--- a/content/browser/background_fetch/background_fetch_test_base.cc
+++ b/content/browser/background_fetch/background_fetch_test_base.cc
@@ -18,6 +18,7 @@
 #include "base/memory/weak_ptr.h"
 #include "base/run_loop.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/background_fetch/background_fetch_registration_id.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_registration.h"
@@ -130,7 +131,7 @@
   {
     base::RunLoop run_loop;
     embedded_worker_test_helper_.context()->registry()->FindRegistrationForId(
-        service_worker_registration_id, origin,
+        service_worker_registration_id, storage::StorageKey(origin),
         base::BindOnce(&DidFindServiceWorkerRegistration,
                        &service_worker_registration, run_loop.QuitClosure()));
 
diff --git a/content/browser/content_index/content_index_database_unittest.cc b/content/browser/content_index/content_index_database_unittest.cc
index 3787ffb..acd0ed5 100644
--- a/content/browser/content_index/content_index_database_unittest.cc
+++ b/content/browser/content_index/content_index_database_unittest.cc
@@ -9,6 +9,7 @@
 #include "base/run_loop.h"
 #include "base/test/bind.h"
 #include "base/test/metrics/histogram_tester.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
 #include "content/public/browser/content_index_provider.h"
 #include "content/public/test/browser_task_environment.h"
@@ -258,7 +259,7 @@
     {
       base::RunLoop run_loop;
       embedded_worker_test_helper_.context()->registry()->FindRegistrationForId(
-          service_worker_registration_id, origin_,
+          service_worker_registration_id, storage::StorageKey(origin_),
           base::BindOnce(&DidFindServiceWorkerRegistration,
                          &service_worker_registration_,
                          run_loop.QuitClosure()));
diff --git a/content/browser/devtools/devtools_background_services_context_impl_unittest.cc b/content/browser/devtools/devtools_background_services_context_impl_unittest.cc
index ebafb3c..29f7475 100644
--- a/content/browser/devtools/devtools_background_services_context_impl_unittest.cc
+++ b/content/browser/devtools/devtools_background_services_context_impl_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/containers/flat_map.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/run_loop.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/devtools/devtools_background_services.pb.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
 #include "content/public/browser/content_browser_client.h"
@@ -231,7 +232,7 @@
     {
       base::RunLoop run_loop;
       embedded_worker_test_helper_.context()->registry()->FindRegistrationForId(
-          service_worker_registration_id, origin_,
+          service_worker_registration_id, storage::StorageKey(origin_),
           base::BindOnce(&DidFindServiceWorkerRegistration,
                          &service_worker_registration_,
                          run_loop.QuitClosure()));
diff --git a/content/browser/notifications/blink_notification_service_impl_unittest.cc b/content/browser/notifications/blink_notification_service_impl_unittest.cc
index e27c23e..3694fd89 100644
--- a/content/browser/notifications/blink_notification_service_impl_unittest.cc
+++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc
@@ -18,6 +18,7 @@
 #include "base/test/test_simple_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/notifications/blink_notification_service_impl.h"
 #include "content/browser/notifications/platform_notification_context_impl.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
@@ -190,7 +191,7 @@
       base::RunLoop run_loop;
       embedded_worker_helper_->context()->registry()->FindRegistrationForId(
           service_worker_registration_id,
-          url::Origin::Create(GURL(kTestOrigin)),
+          storage::StorageKey(url::Origin::Create(GURL(kTestOrigin))),
           base::BindOnce(&BlinkNotificationServiceImplTest::
                              DidFindServiceWorkerRegistration,
                          base::Unretained(this), service_worker_registration,
diff --git a/content/browser/notifications/notification_storage_unittest.cc b/content/browser/notifications/notification_storage_unittest.cc
index 1582d7b..046c2bbf 100644
--- a/content/browser/notifications/notification_storage_unittest.cc
+++ b/content/browser/notifications/notification_storage_unittest.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/guid.h"
 #include "base/run_loop.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
 #include "content/browser/service_worker/service_worker_registration.h"
 #include "content/public/test/browser_task_environment.h"
@@ -86,7 +87,7 @@
     {
       base::RunLoop run_loop;
       helper_->context()->registry()->FindRegistrationForId(
-          service_worker_registration_id_, origin_,
+          service_worker_registration_id_, storage::StorageKey(origin_),
           base::BindOnce(
               &NotificationStorageTest::DidFindServiceWorkerRegistration,
               base::Unretained(this), &service_worker_registration,
diff --git a/content/browser/service_worker/service_worker_container_host.cc b/content/browser/service_worker/service_worker_container_host.cc
index a0c85c1..0a9f181 100644
--- a/content/browser/service_worker/service_worker_container_host.cc
+++ b/content/browser/service_worker/service_worker_container_host.cc
@@ -10,6 +10,7 @@
 #include "base/callback_helpers.h"
 #include "base/guid.h"
 #include "base/strings/stringprintf.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/child_process_security_policy_impl.h"
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
@@ -240,7 +241,7 @@
                            "ServiceWorkerContainerHost::GetRegistration",
                            trace_id, "Client URL", client_url.spec());
   context_->registry()->FindRegistrationForClientUrl(
-      client_url,
+      client_url, storage::StorageKey(url::Origin::Create(client_url)),
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerContainerHost::GetRegistrationComplete,
           weak_factory_.GetWeakPtr(), std::move(callback), trace_id)));
@@ -271,8 +272,8 @@
   TRACE_EVENT_ASYNC_BEGIN0("ServiceWorker",
                            "ServiceWorkerContainerHost::GetRegistrations",
                            trace_id);
-  context_->registry()->GetRegistrationsForOrigin(
-      url::Origin::Create(url_),
+  context_->registry()->GetRegistrationsForStorageKey(
+      storage::StorageKey(url::Origin::Create(url_)),
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerContainerHost::GetRegistrationsComplete,
           weak_factory_.GetWeakPtr(), std::move(callback), trace_id)));
diff --git a/content/browser/service_worker/service_worker_context_core.cc b/content/browser/service_worker/service_worker_context_core.cc
index 5a10246..34c95e6 100644
--- a/content/browser/service_worker/service_worker_context_core.cc
+++ b/content/browser/service_worker/service_worker_context_core.cc
@@ -20,6 +20,7 @@
 #include "base/strings/string_util.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "components/services/storage/public/cpp/quota_client_callback_wrapper.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/log_console_message.h"
 #include "content/browser/renderer_host/frame_tree_node.h"
 #include "content/browser/renderer_host/render_frame_host_impl.h"
@@ -564,8 +565,8 @@
 void ServiceWorkerContextCore::DeleteForOrigin(const url::Origin& origin,
                                                StatusCallback callback) {
   DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
-  registry()->GetRegistrationsForOrigin(
-      origin,
+  registry()->GetRegistrationsForStorageKey(
+      storage::StorageKey(origin),
       base::BindOnce(
           &ServiceWorkerContextCore::DidGetRegistrationsForDeleteForOrigin,
           AsWeakPtr(), origin, std::move(callback)));
@@ -592,7 +593,8 @@
   // unload.
   std::vector<scoped_refptr<ServiceWorkerRegistration>>
       uninstalling_registrations =
-          registry()->GetUninstallingRegistrationsForOrigin(origin);
+          registry()->GetUninstallingRegistrationsForStorageKey(
+              storage::StorageKey(origin));
   for (const auto& uninstalling_registration : uninstalling_registrations) {
     job_coordinator_->Abort(uninstalling_registration->scope());
     uninstalling_registration->DeleteAndClearImmediately();
@@ -839,9 +841,10 @@
     const GURL& url,
     ServiceWorkerContext::CheckHasServiceWorkerCallback callback) {
   registry()->FindRegistrationForClientUrl(
-      url, base::BindOnce(&ServiceWorkerContextCore::
-                              DidFindRegistrationForCheckHasServiceWorker,
-                          AsWeakPtr(), std::move(callback)));
+      url, storage::StorageKey(url::Origin::Create(url)),
+      base::BindOnce(&ServiceWorkerContextCore::
+                         DidFindRegistrationForCheckHasServiceWorker,
+                     AsWeakPtr(), std::move(callback)));
 }
 
 void ServiceWorkerContextCore::CheckOfflineCapability(
diff --git a/content/browser/service_worker/service_worker_context_core_unittest.cc b/content/browser/service_worker/service_worker_context_core_unittest.cc
index 68ecd4b..026d20f1 100644
--- a/content/browser/service_worker/service_worker_context_core_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_core_unittest.cc
@@ -8,6 +8,7 @@
 
 #include "base/callback_helpers.h"
 #include "base/test/bind.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_context_core_observer.h"
@@ -85,11 +86,13 @@
   }
 
   // Wrapper for ServiceWorkerRegistry::FindRegistrationForScope.
-  blink::ServiceWorkerStatusCode FindRegistrationForScope(const GURL& scope) {
+  blink::ServiceWorkerStatusCode FindRegistrationForScope(
+      const GURL& scope,
+      const storage::StorageKey& key) {
     base::RunLoop loop;
     blink::ServiceWorkerStatusCode status;
     context()->registry()->FindRegistrationForScope(
-        scope,
+        scope, key,
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode result_status,
                 scoped_refptr<ServiceWorkerRegistration> result_registration) {
@@ -192,6 +195,7 @@
 TEST_F(ServiceWorkerContextCoreTest, DeleteForOrigin) {
   const GURL script("https://www.example.com/a/sw.js");
   const GURL scope("https://www.example.com/a");
+  const storage::StorageKey key(url::Origin::Create(scope));
   const url::Origin origin = url::Origin::Create(scope);
 
   // Register a service worker.
@@ -205,7 +209,7 @@
 
   // The registration should be deleted.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForScope(scope));
+            FindRegistrationForScope(scope, key));
 }
 
 TEST_F(ServiceWorkerContextCoreTest, DeleteForOriginAbortsQueuedJobs) {
diff --git a/content/browser/service_worker/service_worker_context_unittest.cc b/content/browser/service_worker/service_worker_context_unittest.cc
index 98c0fc4..fd9fdaee 100644
--- a/content/browser/service_worker/service_worker_context_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_unittest.cc
@@ -13,6 +13,7 @@
 #include "base/run_loop.h"
 #include "base/scoped_observation.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
 #include "content/browser/service_worker/fake_embedded_worker_instance_client.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
@@ -639,7 +640,7 @@
   EXPECT_EQ(registration_id, notifications_[1].registration_id);
 
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -689,7 +690,7 @@
   EXPECT_EQ(registration_id, notifications_[0].registration_id);
 
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
@@ -740,7 +741,7 @@
   EXPECT_EQ(registration_id, notifications_[1].registration_id);
 
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -774,7 +775,7 @@
   ASSERT_TRUE(called);
 
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
@@ -873,23 +874,23 @@
   ASSERT_TRUE(called);
 
   context()->registry()->FindRegistrationForId(
-      registration_id1, url::Origin::Create(origin1_s1),
+      registration_id1, storage::StorageKey(url::Origin::Create(origin1_s1)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
   context()->registry()->FindRegistrationForId(
-      registration_id2, url::Origin::Create(origin1_s2),
+      registration_id2, storage::StorageKey(url::Origin::Create(origin1_s2)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, false /* expect_active */));
   context()->registry()->FindRegistrationForId(
-      registration_id3, url::Origin::Create(origin2_s1),
+      registration_id3, storage::StorageKey(url::Origin::Create(origin2_s1)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
 
   context()->registry()->FindRegistrationForId(
-      registration_id4, url::Origin::Create(origin3_s1),
+      registration_id4, storage::StorageKey(url::Origin::Create(origin3_s1)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -1146,7 +1147,7 @@
   EXPECT_TRUE(called);
 
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
@@ -1157,7 +1158,7 @@
   // The storage is disabled while the recovery process is running, so the
   // operation should be aborted.
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorAbort,
                      false /* expect_waiting */, true /* expect_active */));
@@ -1166,7 +1167,7 @@
   // The context started over and the storage was re-initialized, so the
   // registration should not be found.
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kErrorNotFound,
                      false /* expect_waiting */, true /* expect_active */));
@@ -1182,7 +1183,7 @@
   EXPECT_TRUE(called);
 
   context()->registry()->FindRegistrationForId(
-      registration_id, url::Origin::Create(scope),
+      registration_id, storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ExpectRegisteredWorkers,
                      blink::ServiceWorkerStatusCode::kOk,
                      false /* expect_waiting */, true /* expect_active */));
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
index 2014f05..6f38989 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -23,6 +23,7 @@
 #include "base/single_thread_task_runner.h"
 #include "base/task/thread_pool.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "components/services/storage/service_worker/service_worker_storage_control_impl.h"
 #include "content/browser/blob_storage/chrome_blob_storage_context.h"
 #include "content/browser/loader/navigation_url_loader_impl.h"
@@ -772,6 +773,7 @@
   }
   context_core_->registry()->FindRegistrationForClientUrl(
       net::SimplifyUrlForRequest(document_url),
+      storage::StorageKey(url::Origin::Create(document_url)),
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidFindRegistrationForNavigationHint,
           this, std::move(callback_with_recording_metrics)));
@@ -894,6 +896,7 @@
   }
   context_core_->registry()->FindRegistrationForClientUrl(
       net::SimplifyUrlForRequest(client_url),
+      storage::StorageKey(url::Origin::Create(client_url)),
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidFindRegistrationForFindImpl, this,
           /*include_installing_version=*/false, std::move(callback)));
@@ -911,6 +914,7 @@
   const bool include_installing_version = false;
   context_core_->registry()->FindRegistrationForScope(
       net::SimplifyUrlForRequest(scope),
+      storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidFindRegistrationForFindImpl, this,
           include_installing_version, std::move(callback)));
@@ -936,7 +940,7 @@
     return;
   }
   context_core_->registry()->FindRegistrationForId(
-      registration_id, origin,
+      registration_id, storage::StorageKey(origin),
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidFindRegistrationForFindImpl, this,
           /*include_installing_version=*/false, std::move(callback)));
@@ -984,8 +988,8 @@
             std::vector<scoped_refptr<ServiceWorkerRegistration>>()));
     return;
   }
-  context_core_->registry()->GetRegistrationsForOrigin(origin,
-                                                       std::move(callback));
+  context_core_->registry()->GetRegistrationsForStorageKey(
+      storage::StorageKey(origin), std::move(callback));
 }
 
 void ServiceWorkerContextWrapper::GetRegistrationUserData(
@@ -1127,7 +1131,8 @@
     return;
   }
   context_core_->registry()->StoreUserData(
-      registration_id, origin, key_value_pairs, std::move(callback));
+      registration_id, storage::StorageKey(origin), key_value_pairs,
+      std::move(callback));
 }
 
 void ServiceWorkerContextWrapper::ClearRegistrationUserData(
@@ -1309,6 +1314,7 @@
   }
   context_core_->registry()->FindRegistrationForScope(
       net::SimplifyUrlForRequest(scope),
+      storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&DidFindRegistrationForStartActiveWorker,
                      std::move(callback)));
 }
@@ -1319,6 +1325,7 @@
     return;
   context_core_->registry()->FindRegistrationForScope(
       net::SimplifyUrlForRequest(scope),
+      storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce([](blink::ServiceWorkerStatusCode status,
                         scoped_refptr<ServiceWorkerRegistration> registration) {
         if (status != blink::ServiceWorkerStatusCode::kOk ||
@@ -1336,6 +1343,7 @@
     return;
   context_core_->registry()->FindRegistrationForScope(
       net::SimplifyUrlForRequest(scope),
+      storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(&ServiceWorkerContextWrapper::DidFindRegistrationForUpdate,
                      this));
 }
@@ -1384,6 +1392,7 @@
   }
   context_core_->registry()->FindRegistrationForScope(
       net::SimplifyUrlForRequest(scope),
+      storage::StorageKey(url::Origin::Create(scope)),
       base::BindOnce(
           &ServiceWorkerContextWrapper::DidFindRegistrationForFindImpl, this,
           include_installing_version, std::move(callback)));
diff --git a/content/browser/service_worker/service_worker_context_wrapper_unittest.cc b/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
index 6c24448..41aaac5 100644
--- a/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper_unittest.cc
@@ -10,6 +10,7 @@
 #include "base/files/scoped_temp_dir.h"
 #include "base/run_loop.h"
 #include "base/test/bind.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "components/services/storage/service_worker/service_worker_storage_control_impl.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_registration.h"
@@ -89,7 +90,7 @@
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
     registry()->DeleteRegistration(
-        registration, registration->scope().GetOrigin(),
+        registration, storage::StorageKey(registration->origin()),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
           loop.Quit();
diff --git a/content/browser/service_worker/service_worker_controllee_request_handler.cc b/content/browser/service_worker/service_worker_controllee_request_handler.cc
index 94572f5..866c5159 100644
--- a/content/browser/service_worker/service_worker_controllee_request_handler.cc
+++ b/content/browser/service_worker/service_worker_controllee_request_handler.cc
@@ -11,6 +11,7 @@
 #include "base/optional.h"
 #include "base/trace_event/trace_event.h"
 #include "components/offline_pages/buildflags/buildflags.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/loader/navigation_url_loader_impl.h"
 #include "content/browser/navigation_subresource_loader_params.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
@@ -169,7 +170,7 @@
 
   // Look up a registration.
   context_->registry()->FindRegistrationForClientUrl(
-      stripped_url_,
+      stripped_url_, storage::StorageKey(url::Origin::Create(stripped_url_)),
       base::BindOnce(
           &ServiceWorkerControlleeRequestHandler::ContinueWithRegistration,
           weak_factory_.GetWeakPtr()));
@@ -448,7 +449,7 @@
     // Update failed. Look up the registration again since the original
     // registration was possibly unregistered in the meantime.
     context_->registry()->FindRegistrationForClientUrl(
-        stripped_url_,
+        stripped_url_, storage::StorageKey(url::Origin::Create(stripped_url_)),
         base::BindOnce(
             &ServiceWorkerControlleeRequestHandler::ContinueWithRegistration,
             weak_factory_.GetWeakPtr()));
@@ -504,7 +505,7 @@
     // continue with the incumbent version.
     // In case unregister job may have run, look up the registration again.
     context_->registry()->FindRegistrationForClientUrl(
-        stripped_url_,
+        stripped_url_, storage::StorageKey(url::Origin::Create(stripped_url_)),
         base::BindOnce(
             &ServiceWorkerControlleeRequestHandler::ContinueWithRegistration,
             weak_factory_.GetWeakPtr()));
diff --git a/content/browser/service_worker/service_worker_job_unittest.cc b/content/browser/service_worker/service_worker_job_unittest.cc
index ce276af..33f31686 100644
--- a/content/browser/service_worker/service_worker_job_unittest.cc
+++ b/content/browser/service_worker/service_worker_job_unittest.cc
@@ -20,6 +20,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/test_simple_task_runner.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/renderer_host/frame_tree_node.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
@@ -196,6 +197,7 @@
                                    EmbeddedWorkerStatus running_status);
   scoped_refptr<ServiceWorkerRegistration> FindRegistrationForScope(
       const GURL& scope,
+      const storage::StorageKey& key,
       blink::ServiceWorkerStatusCode expected_status =
           blink::ServiceWorkerStatusCode::kOk);
   ServiceWorkerContainerHost* CreateControllee();
@@ -250,12 +252,14 @@
 scoped_refptr<ServiceWorkerRegistration>
 ServiceWorkerJobTest::FindRegistrationForScope(
     const GURL& scope,
+    const storage::StorageKey& key,
     blink::ServiceWorkerStatusCode expected_status) {
   scoped_refptr<ServiceWorkerRegistration> registration;
   base::RunLoop run_loop;
   registry()->FindRegistrationForScope(
-      scope, SaveFoundRegistration(expected_status, &registration,
-                                   run_loop.QuitClosure()));
+      scope, key,
+      SaveFoundRegistration(expected_status, &registration,
+                            run_loop.QuitClosure()));
   run_loop.Run();
   return registration;
 }
@@ -294,7 +298,10 @@
 
 TEST_F(ServiceWorkerJobTest, SameDocumentSameRegistration) {
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = GURL("https://www.example.com/");
+  GURL url("https://www.example.com/");
+  storage::StorageKey key(url::Origin::Create(url));
+
+  options.scope = url;
   scoped_refptr<ServiceWorkerRegistration> original_registration =
       RunRegisterJob(GURL("https://www.example.com/service_worker.js"),
                      options);
@@ -303,12 +310,12 @@
   base::RepeatingClosure barrier_closure =
       base::BarrierClosure(2, run_loop.QuitClosure());
   registry()->FindRegistrationForClientUrl(
-      GURL("https://www.example.com/"),
+      url, key,
       SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk, &registration1,
                             barrier_closure));
   scoped_refptr<ServiceWorkerRegistration> registration2;
   registry()->FindRegistrationForClientUrl(
-      GURL("https://www.example.com/"),
+      url, key,
       SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk, &registration2,
                             barrier_closure));
   run_loop.Run();
@@ -319,7 +326,10 @@
 
 TEST_F(ServiceWorkerJobTest, SameMatchSameRegistration) {
   blink::mojom::ServiceWorkerRegistrationOptions options;
-  options.scope = GURL("https://www.example.com/");
+  GURL url("https://www.example.com/");
+  storage::StorageKey key(url::Origin::Create(url));
+
+  options.scope = url;
   scoped_refptr<ServiceWorkerRegistration> original_registration =
       RunRegisterJob(GURL("https://www.example.com/service_worker.js"),
                      options);
@@ -331,13 +341,13 @@
   base::RepeatingClosure barrier_closure =
       base::BarrierClosure(2, run_loop.QuitClosure());
   registry()->FindRegistrationForClientUrl(
-      GURL("https://www.example.com/one"),
+      GURL("https://www.example.com/one"), key,
       SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk, &registration1,
                             barrier_closure));
 
   scoped_refptr<ServiceWorkerRegistration> registration2;
   registry()->FindRegistrationForClientUrl(
-      GURL("https://www.example.com/two"),
+      GURL("https://www.example.com/two"), key,
       SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk, &registration2,
                             barrier_closure));
   run_loop.Run();
@@ -349,6 +359,7 @@
   const GURL scope1("https://www.example.com/one");
   const GURL scope2("https://www.example.com/two");
   const GURL script_url("https://www.example.com/service_worker.js");
+  const storage::StorageKey key(url::Origin::Create(script_url));
   blink::mojom::ServiceWorkerRegistrationOptions options1;
   options1.scope = scope1;
   blink::mojom::ServiceWorkerRegistrationOptions options2;
@@ -362,12 +373,14 @@
   base::RepeatingClosure barrier_closure =
       base::BarrierClosure(2, run_loop.QuitClosure());
   registry()->FindRegistrationForClientUrl(
-      scope1, SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk,
-                                    &registration1, barrier_closure));
+      scope1, key,
+      SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk, &registration1,
+                            barrier_closure));
   scoped_refptr<ServiceWorkerRegistration> registration2;
   registry()->FindRegistrationForClientUrl(
-      scope2, SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk,
-                                    &registration2, barrier_closure));
+      scope2, key,
+      SaveFoundRegistration(blink::ServiceWorkerStatusCode::kOk, &registration2,
+                            barrier_closure));
 
   run_loop.Run();
   ASSERT_NE(registration1, registration2);
@@ -460,7 +473,8 @@
   EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version->status());
 
   registration = FindRegistrationForScope(
-      options.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      options.scope, storage::StorageKey(url::Origin::Create(options.scope)),
+      blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   EXPECT_FALSE(registration);
 }
@@ -499,6 +513,7 @@
 TEST_F(ServiceWorkerJobTest, RegisterNewScript) {
   blink::mojom::ServiceWorkerRegistrationOptions options;
   options.scope = GURL("https://www.example.com/");
+  storage::StorageKey key(url::Origin::Create(options.scope));
   scoped_refptr<ServiceWorkerRegistration> old_registration = RunRegisterJob(
       GURL("https://www.example.com/service_worker.js"), options);
   auto runner = base::MakeRefCounted<base::TestSimpleTaskRunner>();
@@ -507,7 +522,7 @@
   observer.RunUntilActivated(old_registration->installing_version(), runner);
 
   scoped_refptr<ServiceWorkerRegistration> old_registration_by_scope =
-      FindRegistrationForScope(options.scope);
+      FindRegistrationForScope(options.scope, key);
 
   ASSERT_EQ(old_registration, old_registration_by_scope);
   old_registration_by_scope = nullptr;
@@ -518,7 +533,7 @@
   ASSERT_EQ(old_registration, new_registration);
 
   scoped_refptr<ServiceWorkerRegistration> new_registration_by_scope =
-      FindRegistrationForScope(options.scope);
+      FindRegistrationForScope(options.scope, key);
 
   ASSERT_EQ(new_registration, new_registration_by_scope);
 }
@@ -529,6 +544,7 @@
   GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
   options.scope = GURL("https://www.example.com/");
+  storage::StorageKey key(url::Origin::Create(options.scope));
 
   scoped_refptr<ServiceWorkerRegistration> old_registration =
       RunRegisterJob(script_url, options);
@@ -552,7 +568,7 @@
   ASSERT_TRUE(old_registration->HasOneRef());
 
   scoped_refptr<ServiceWorkerRegistration> old_registration_by_scope =
-      FindRegistrationForScope(options.scope);
+      FindRegistrationForScope(options.scope, key);
 
   ASSERT_TRUE(old_registration_by_scope.get());
 
@@ -564,7 +580,7 @@
   ASSERT_FALSE(old_registration->HasOneRef());
 
   scoped_refptr<ServiceWorkerRegistration> new_registration_by_scope =
-      FindRegistrationForScope(options.scope);
+      FindRegistrationForScope(options.scope, key);
 
   EXPECT_EQ(new_registration_by_scope, old_registration);
 }
@@ -611,7 +627,8 @@
   RunUnregisterJob(options.scope);
 
   registration = FindRegistrationForScope(
-      options.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      options.scope, storage::StorageKey(url::Origin::Create(options.scope)),
+      blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
 }
@@ -635,7 +652,8 @@
                        blink::mojom::ServiceWorkerUpdateViaCache::kAll));
 
   scoped_refptr<ServiceWorkerRegistration> registration =
-      FindRegistrationForScope(scope);
+      FindRegistrationForScope(scope,
+                               storage::StorageKey(url::Origin::Create(scope)));
 
   ASSERT_EQ(registration2, registration);
 }
@@ -657,7 +675,9 @@
   ASSERT_EQ(registration1, registration2);
 
   scoped_refptr<ServiceWorkerRegistration> registration =
-      FindRegistrationForScope(options.scope);
+      FindRegistrationForScope(
+          options.scope,
+          storage::StorageKey(url::Origin::Create(options.scope)));
 
   ASSERT_EQ(registration, registration1);
 }
@@ -676,6 +696,7 @@
   // crashing.
   scoped_refptr<ServiceWorkerRegistration> registration =
       FindRegistrationForScope(scope,
+                               storage::StorageKey(url::Origin::Create(scope)),
                                blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   ASSERT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
@@ -710,10 +731,12 @@
   run_loop.Run();
 
   registration1 = FindRegistrationForScope(
-      options1.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      options1.scope, storage::StorageKey(url::Origin::Create(options1.scope)),
+      blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   registration2 = FindRegistrationForScope(
-      options2.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      options2.scope, storage::StorageKey(url::Origin::Create(options2.scope)),
+      blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   EXPECT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration1);
   EXPECT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration2);
@@ -766,7 +789,8 @@
   run_loop.Run();
 
   registration = FindRegistrationForScope(
-      options.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      options.scope, storage::StorageKey(url::Origin::Create(options.scope)),
+      blink::ServiceWorkerStatusCode::kErrorNotFound);
 
   EXPECT_EQ(scoped_refptr<ServiceWorkerRegistration>(), registration);
 }
@@ -798,11 +822,13 @@
   run_loop.Run();
 
   registration1 = FindRegistrationForScope(
-      options1.scope, blink::ServiceWorkerStatusCode::kErrorNotFound);
+      options1.scope, storage::StorageKey(url::Origin::Create(options1.scope)),
+      blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_EQ(nullptr, registration1);
 
-  registration2 = FindRegistrationForScope(options2.scope,
-                                           blink::ServiceWorkerStatusCode::kOk);
+  registration2 = FindRegistrationForScope(
+      options2.scope, storage::StorageKey(url::Origin::Create(options2.scope)),
+      blink::ServiceWorkerStatusCode::kOk);
   EXPECT_NE(nullptr, registration2);
 }
 
@@ -966,6 +992,7 @@
   GURL script2("https://www.example.com/service_worker.js?new");
   blink::mojom::ServiceWorkerRegistrationOptions options;
   options.scope = GURL("https://www.example.com/one/");
+  storage::StorageKey key(url::Origin::Create(options.scope));
 
   scoped_refptr<ServiceWorkerRegistration> registration =
       RunRegisterJob(script1, options);
@@ -983,7 +1010,7 @@
   // Wait until the worker becomes installed.
   base::RunLoop().RunUntilIdle();
 
-  EXPECT_EQ(registration, FindRegistrationForScope(options.scope));
+  EXPECT_EQ(registration, FindRegistrationForScope(options.scope, key));
   scoped_refptr<ServiceWorkerVersion> new_version =
       registration->waiting_version();
   ASSERT_TRUE(new_version);
@@ -994,7 +1021,7 @@
   RunUnregisterJob(options.scope,
                    blink::ServiceWorkerStatusCode::kErrorNotFound);
 
-  FindRegistrationForScope(options.scope,
+  FindRegistrationForScope(options.scope, key,
                            blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_TRUE(registration->is_uninstalling());
   EXPECT_EQ(old_version, registration->active_version());
@@ -1101,6 +1128,7 @@
   GURL script("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
   options.scope = GURL("https://www.example.com/");
+  storage::StorageKey key(url::Origin::Create(options.scope));
   scoped_refptr<ServiceWorkerRegistration> registration;
 
   auto* fetch_handler_worker =
@@ -1110,7 +1138,7 @@
   RunRegisterJob(script, options);
   // Wait until the worker becomes active.
   base::RunLoop().RunUntilIdle();
-  registration = FindRegistrationForScope(options.scope);
+  registration = FindRegistrationForScope(options.scope, key);
   EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::EXISTS,
             registration->active_version()->fetch_handler_existence());
   RunUnregisterJob(options.scope);
@@ -1122,7 +1150,7 @@
   RunRegisterJob(script, options);
   // Wait until the worker becomes active.
   base::RunLoop().RunUntilIdle();
-  registration = FindRegistrationForScope(options.scope);
+  registration = FindRegistrationForScope(options.scope, key);
   EXPECT_EQ(ServiceWorkerVersion::FetchHandlerExistence::DOES_NOT_EXIST,
             registration->active_version()->fetch_handler_existence());
   RunUnregisterJob(options.scope);
@@ -1455,6 +1483,7 @@
   const GURL script_url("https://www.example.com/service_worker.js");
   blink::mojom::ServiceWorkerRegistrationOptions options;
   options.scope = GURL("https://www.example.com/");
+  storage::StorageKey key(url::Origin::Create(options.scope));
 
   scoped_refptr<ServiceWorkerRegistration> old_registration =
       RunRegisterJob(script_url, options);
@@ -1480,7 +1509,7 @@
   EXPECT_EQ(0UL, container_host->registration_object_hosts_.size());
   EXPECT_TRUE(old_registration->HasOneRef());
 
-  EXPECT_TRUE(FindRegistrationForScope(options.scope));
+  EXPECT_TRUE(FindRegistrationForScope(options.scope, key));
 
   base::HistogramTester histogram_tester;
   options.update_via_cache = blink::mojom::ServiceWorkerUpdateViaCache::kNone;
@@ -1493,7 +1522,7 @@
             new_registration->update_via_cache());
 
   scoped_refptr<ServiceWorkerRegistration> new_registration_by_scope =
-      FindRegistrationForScope(options.scope);
+      FindRegistrationForScope(options.scope, key);
 
   EXPECT_EQ(new_registration_by_scope, old_registration);
 }
diff --git a/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc b/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
index 103e767..c3a5b61 100644
--- a/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
+++ b/content/browser/service_worker/service_worker_offline_capability_check_browsertest.cc
@@ -13,6 +13,7 @@
 #include "base/task/task_traits.h"
 #include "base/test/bind.h"
 #include "build/build_config.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/browser/service_worker/service_worker_fetch_dispatcher.h"
 #include "content/browser/service_worker/service_worker_version.h"
@@ -229,8 +230,10 @@
   void SetupFetchEventDispatchTargetVersionOnCoreThread(
       base::OnceClosure done) {
     DCHECK_CURRENTLY_ON(ServiceWorkerContext::GetCoreThreadId());
+    GURL url = embedded_test_server()->GetURL("/service_worker/");
+    storage::StorageKey key = storage::StorageKey(url::Origin::Create(url));
     wrapper()->context()->registry()->FindRegistrationForScope(
-        embedded_test_server()->GetURL("/service_worker/"),
+        embedded_test_server()->GetURL("/service_worker/"), key,
         base::BindOnce(&ServiceWorkerOfflineCapabilityCheckBrowserTest::
                            DidFindRegistration,
                        base::Unretained(this), std::move(done)));
diff --git a/content/browser/service_worker/service_worker_offline_capability_checker.cc b/content/browser/service_worker/service_worker_offline_capability_checker.cc
index 8395c69..2abaae6c 100644
--- a/content/browser/service_worker/service_worker_offline_capability_checker.cc
+++ b/content/browser/service_worker/service_worker_offline_capability_checker.cc
@@ -7,6 +7,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/guid.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_metrics.h"
 #include "content/browser/service_worker/service_worker_registration.h"
@@ -33,11 +34,12 @@
     ServiceWorkerContext::CheckOfflineCapabilityCallback callback) {
   callback_ = std::move(callback);
   registry->FindRegistrationForClientUrl(
-      url_, base::BindOnce(
-                &ServiceWorkerOfflineCapabilityChecker::DidFindRegistration,
-                // We can use base::Unretained(this) because |this| is expected
-                // to be alive until the |callback_| is called.
-                base::Unretained(this)));
+      url_, storage::StorageKey(url::Origin::Create(url_)),
+      base::BindOnce(
+          &ServiceWorkerOfflineCapabilityChecker::DidFindRegistration,
+          // We can use base::Unretained(this) because |this| is expected
+          // to be alive until the |callback_| is called.
+          base::Unretained(this)));
 }
 
 void ServiceWorkerOfflineCapabilityChecker::DidFindRegistration(
diff --git a/content/browser/service_worker/service_worker_quota_client.cc b/content/browser/service_worker/service_worker_quota_client.cc
index ddb4265..bb0e8748 100644
--- a/content/browser/service_worker/service_worker_quota_client.cc
+++ b/content/browser/service_worker/service_worker_quota_client.cc
@@ -10,6 +10,7 @@
 
 #include "base/bind.h"
 #include "base/sequence_checker.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
 #include "content/public/browser/browser_thread.h"
 #include "content/public/browser/storage_usage_info.h"
@@ -49,8 +50,9 @@
                                               GetOriginUsageCallback callback) {
   DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
   DCHECK_EQ(type, StorageType::kTemporary);
-  context_->registry()->GetStorageUsageForOrigin(
-      origin, base::BindOnce(&FindUsageForOrigin, std::move(callback)));
+  context_->registry()->GetStorageUsageForStorageKey(
+      storage::StorageKey(origin),
+      base::BindOnce(&FindUsageForOrigin, std::move(callback)));
 }
 
 void ServiceWorkerQuotaClient::GetOriginsForType(
diff --git a/content/browser/service_worker/service_worker_register_job.cc b/content/browser/service_worker/service_worker_register_job.cc
index 0cd9168..256a57d 100644
--- a/content/browser/service_worker/service_worker_register_job.cc
+++ b/content/browser/service_worker/service_worker_register_job.cc
@@ -15,6 +15,7 @@
 #include "base/strings/stringprintf.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_instance.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/service_worker_consts.h"
@@ -143,15 +144,17 @@
   }
 
   scoped_refptr<ServiceWorkerRegistration> registration =
-      context_->registry()->GetUninstallingRegistration(scope_);
+      context_->registry()->GetUninstallingRegistration(
+          scope_, storage::StorageKey(url::Origin::Create(scope_)));
   if (registration.get())
     base::ThreadTaskRunnerHandle::Get()->PostTask(
         FROM_HERE,
         base::BindOnce(std::move(next_step),
                        blink::ServiceWorkerStatusCode::kOk, registration));
   else
-    context_->registry()->FindRegistrationForScope(scope_,
-                                                   std::move(next_step));
+    context_->registry()->FindRegistrationForScope(
+        scope_, storage::StorageKey(url::Origin::Create(scope_)),
+        std::move(next_step));
 }
 
 void ServiceWorkerRegisterJob::Abort() {
@@ -371,6 +374,7 @@
   context_->registry()->NotifyInstallingRegistration(registration());
   context_->registry()->CreateNewVersion(
       registration(), script_url_, worker_script_type_,
+      storage::StorageKey(url::Origin::Create(script_url_)),
       base::BindOnce(&ServiceWorkerRegisterJob::StartWorkerForUpdate,
                      weak_factory_.GetWeakPtr()));
 }
@@ -541,7 +545,9 @@
                          weak_factory_.GetWeakPtr());
     }
     context_->registry()->CreateNewVersion(
-        registration(), script_url_, worker_script_type_, std::move(next_task));
+        registration(), script_url_, worker_script_type_,
+        storage::StorageKey(url::Origin::Create(script_url_)),
+        std::move(next_task));
     return;
   }
 
@@ -757,7 +763,7 @@
         registration()->NotifyRegistrationFailed();
         if (!registration()->is_deleted()) {
           context_->registry()->DeleteRegistration(
-              registration(), registration()->scope().GetOrigin(),
+              registration(), storage::StorageKey(registration()->origin()),
               base::DoNothing());
           context_->registry()->NotifyDoneUninstallingRegistration(
               registration(), ServiceWorkerRegistration::Status::kUninstalled);
@@ -861,7 +867,7 @@
 
     if (registration()->newest_installed_version()) {
       context_->registry()->UpdateLastUpdateCheckTime(
-          registration()->id(), registration()->scope().GetOrigin(),
+          registration()->id(), storage::StorageKey(registration()->origin()),
           registration()->last_update_check(),
           base::BindOnce([](blink::ServiceWorkerStatusCode status) {
             // Ignore errors; bumping the update check time is just best-effort.
diff --git a/content/browser/service_worker/service_worker_registration.cc b/content/browser/service_worker/service_worker_registration.cc
index 71d55d2f5..df52910 100644
--- a/content/browser/service_worker/service_worker_registration.cc
+++ b/content/browser/service_worker/service_worker_registration.cc
@@ -9,6 +9,7 @@
 #include "base/bind.h"
 #include "base/callback_helpers.h"
 #include "base/threading/thread_task_runner_handle.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
@@ -334,7 +335,7 @@
   }
 
   context_->registry()->DeleteRegistration(
-      this, scope().GetOrigin(),
+      this, storage::StorageKey(origin()),
       AdaptCallbackForRepeating(
           base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, this)));
 
@@ -346,7 +347,7 @@
   DCHECK(context_);
   if (!is_deleted()) {
     context_->registry()->DeleteRegistration(
-        this, scope().GetOrigin(),
+        this, storage::StorageKey(origin()),
         AdaptCallbackForRepeating(base::BindOnce(
             &ServiceWorkerRegistration::OnDeleteFinished, this)));
   }
@@ -588,7 +589,7 @@
   // Delete the registration and its state from storage.
   if (status() == Status::kIntact) {
     context_->registry()->DeleteRegistration(
-        this, scope().GetOrigin(),
+        this, storage::StorageKey(origin()),
         base::BindOnce(&ServiceWorkerRegistration::OnDeleteFinished, protect));
   }
   DCHECK(is_uninstalling());
@@ -681,7 +682,7 @@
   // "Run the Update State algorithm passing registration's active worker and
   // 'activated' as the arguments."
   activating_version->SetStatus(ServiceWorkerVersion::ACTIVATED);
-  context_->registry()->UpdateToActiveState(id(), scope().GetOrigin(),
+  context_->registry()->UpdateToActiveState(id(), storage::StorageKey(origin()),
                                             base::DoNothing());
 }
 
diff --git a/content/browser/service_worker/service_worker_registration_object_host.cc b/content/browser/service_worker/service_worker_registration_object_host.cc
index 35b94725..b33aa54 100644
--- a/content/browser/service_worker/service_worker_registration_object_host.cc
+++ b/content/browser/service_worker/service_worker_registration_object_host.cc
@@ -8,6 +8,7 @@
 #include "base/callback_helpers.h"
 #include "base/strings/stringprintf.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
@@ -285,7 +286,7 @@
   }
 
   context_->registry()->UpdateNavigationPreloadEnabled(
-      registration_->id(), registration_->scope().GetOrigin(), enable,
+      registration_->id(), storage::StorageKey(registration_->origin()), enable,
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerRegistrationObjectHost::
               DidUpdateNavigationPreloadEnabled,
@@ -335,7 +336,7 @@
   }
 
   context_->registry()->UpdateNavigationPreloadHeader(
-      registration_->id(), registration_->scope().GetOrigin(), value,
+      registration_->id(), storage::StorageKey(registration_->origin()), value,
       base::AdaptCallbackForRepeating(base::BindOnce(
           &ServiceWorkerRegistrationObjectHost::
               DidUpdateNavigationPreloadHeader,
diff --git a/content/browser/service_worker/service_worker_registration_unittest.cc b/content/browser/service_worker/service_worker_registration_unittest.cc
index f6c3ec93..f9bba43 100644
--- a/content/browser/service_worker/service_worker_registration_unittest.cc
+++ b/content/browser/service_worker/service_worker_registration_unittest.cc
@@ -21,6 +21,7 @@
 #include "base/test/test_simple_task_runner.h"
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
 #include "content/browser/service_worker/fake_embedded_worker_instance_client.h"
@@ -854,10 +855,10 @@
 
   blink::ServiceWorkerStatusCode FindRegistrationInStorage(
       int64_t registration_id,
-      const GURL& scope) {
+      const storage::StorageKey& key) {
     base::Optional<blink::ServiceWorkerStatusCode> status;
     registry()->FindRegistrationForId(
-        registration_id, url::Origin::Create(scope),
+        registration_id, key,
         base::AdaptCallbackForRepeating(base::BindOnce(
             [](base::Optional<blink::ServiceWorkerStatusCode>* out_status,
                blink::ServiceWorkerStatusCode status,
@@ -1178,13 +1179,17 @@
   info->receiver.reset();
   info->waiting->receiver.reset();
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationInStorage(registration_id, kScope));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationInStorage(
+          registration_id, storage::StorageKey(url::Origin::Create(kScope))));
   EXPECT_EQ(blink::mojom::ServiceWorkerErrorType::kNone,
             CallUnregister(registration_host.get()));
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationInStorage(registration_id, kScope));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kErrorNotFound,
+      FindRegistrationInStorage(
+          registration_id, storage::StorageKey(url::Origin::Create(kScope))));
   EXPECT_EQ(blink::mojom::ServiceWorkerErrorType::kNotFound,
             CallUnregister(registration_host.get()));
 }
diff --git a/content/browser/service_worker/service_worker_registry.cc b/content/browser/service_worker/service_worker_registry.cc
index 9b2d1ad..d78cece 100644
--- a/content/browser/service_worker/service_worker_registry.cc
+++ b/content/browser/service_worker/service_worker_registry.cc
@@ -12,7 +12,6 @@
 #include "base/memory/weak_ptr.h"
 #include "base/metrics/histogram_functions.h"
 #include "base/trace_event/trace_event.h"
-#include "components/services/storage/public/cpp/storage_key.h"
 #include "components/services/storage/public/mojom/storage_policy_update.mojom.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_context_wrapper.h"
@@ -84,13 +83,13 @@
 void MaybeNotifyWriteFailed(
     scoped_refptr<storage::QuotaManagerProxy> quota_manager_proxy,
     storage::mojom::ServiceWorkerDatabaseStatus status,
-    const url::Origin& origin) {
+    const storage::StorageKey& key) {
   if (!quota_manager_proxy)
     return;
 
   if (status == storage::mojom::ServiceWorkerDatabaseStatus::kErrorFailed ||
       status == storage::mojom::ServiceWorkerDatabaseStatus::kErrorIOError) {
-    quota_manager_proxy->NotifyWriteFailed(origin);
+    quota_manager_proxy->NotifyWriteFailed(key.origin());
   }
 }
 
@@ -177,6 +176,7 @@
     scoped_refptr<ServiceWorkerRegistration> registration,
     const GURL& script_url,
     blink::mojom::ScriptType script_type,
+    const storage::StorageKey& key,
     NewVersionCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(registration);
@@ -184,11 +184,12 @@
       &storage::mojom::ServiceWorkerStorageControl::GetNewVersionId,
       base::BindOnce(&ServiceWorkerRegistry::DidGetNewVersionId,
                      weak_factory_.GetWeakPtr(), registration, script_url,
-                     script_type, std::move(callback)));
+                     script_type, key, std::move(callback)));
 }
 
 void ServiceWorkerRegistry::FindRegistrationForClientUrl(
     const GURL& client_url,
+    const storage::StorageKey& key,
     FindRegistrationCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   // To connect this TRACE_EVENT with the callback, Time::Now() is used as a
@@ -202,13 +203,14 @@
       &storage::mojom::ServiceWorkerStorageControl::
           FindRegistrationForClientUrl,
       base::BindOnce(&ServiceWorkerRegistry::DidFindRegistrationForClientUrl,
-                     weak_factory_.GetWeakPtr(), client_url, trace_event_id,
-                     std::move(callback)),
-      client_url, storage::StorageKey(url::Origin::Create(client_url)));
+                     weak_factory_.GetWeakPtr(), client_url, key,
+                     trace_event_id, std::move(callback)),
+      client_url, key);
 }
 
 void ServiceWorkerRegistry::FindRegistrationForScope(
     const GURL& scope,
+    const storage::StorageKey& key,
     FindRegistrationCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (is_storage_disabled_) {
@@ -221,7 +223,7 @@
 
   // Look up installing registration before checking storage.
   scoped_refptr<ServiceWorkerRegistration> installing_registration =
-      FindInstallingRegistrationForScope(scope);
+      FindInstallingRegistrationForScope(scope, key);
   if (installing_registration && !installing_registration->is_deleted()) {
     CompleteFindSoon(FROM_HERE, std::move(installing_registration),
                      blink::ServiceWorkerStatusCode::kOk, std::move(callback));
@@ -232,14 +234,14 @@
       &storage::mojom::ServiceWorkerStorageControl::FindRegistrationForScope,
       base::BindOnce(&ServiceWorkerRegistry::DidFindRegistrationForScope,
                      weak_factory_.GetWeakPtr(), std::move(callback)),
-      scope, storage::StorageKey(url::Origin::Create(scope)));
+      scope, key);
 }
 
 void ServiceWorkerRegistry::FindRegistrationForId(
     int64_t registration_id,
-    const url::Origin& origin,
+    const storage::StorageKey& key,
     FindRegistrationCallback callback) {
-  FindRegistrationForIdInternal(registration_id, origin, std::move(callback));
+  FindRegistrationForIdInternal(registration_id, key, std::move(callback));
 }
 
 void ServiceWorkerRegistry::FindRegistrationForIdOnly(
@@ -249,29 +251,29 @@
                                 std::move(callback));
 }
 
-void ServiceWorkerRegistry::GetRegistrationsForOrigin(
-    const url::Origin& origin,
+void ServiceWorkerRegistry::GetRegistrationsForStorageKey(
+    const storage::StorageKey& key,
     GetRegistrationsCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::
           GetRegistrationsForStorageKey,
-      base::BindOnce(&ServiceWorkerRegistry::DidGetRegistrationsForOrigin,
-                     weak_factory_.GetWeakPtr(), std::move(callback), origin),
-      storage::StorageKey(origin));
+      base::BindOnce(&ServiceWorkerRegistry::DidGetRegistrationsForStorageKey,
+                     weak_factory_.GetWeakPtr(), std::move(callback), key),
+      key);
 }
 
-void ServiceWorkerRegistry::GetStorageUsageForOrigin(
-    const url::Origin& origin,
+void ServiceWorkerRegistry::GetStorageUsageForStorageKey(
+    const storage::StorageKey& key,
     GetStorageUsageForOriginCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   auto wrapped_callback = mojo::WrapCallbackWithDefaultInvokeIfNotRun(
       std::move(callback), blink::ServiceWorkerStatusCode::kErrorFailed, 0);
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::GetUsageForStorageKey,
-      base::BindOnce(&ServiceWorkerRegistry::DidGetStorageUsageForOrigin,
+      base::BindOnce(&ServiceWorkerRegistry::DidGetStorageUsageForStorageKey,
                      weak_factory_.GetWeakPtr(), std::move(wrapped_callback)),
-      storage::StorageKey(origin));
+      key);
 }
 
 void ServiceWorkerRegistry::GetAllRegistrationsInfos(
@@ -284,8 +286,11 @@
                      weak_factory_.GetWeakPtr(), std::move(callback)));
 }
 
+// TODO(crbug.com/1199077): Use `key` once ServiceWorkerRegistration
+// implements StorageKey.
 ServiceWorkerRegistration* ServiceWorkerRegistry::GetUninstallingRegistration(
-    const GURL& scope) {
+    const GURL& scope,
+    const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   // TODO(bashi): Should we check state of ServiceWorkerStorage?
   for (const auto& registration : uninstalling_registrations_) {
@@ -298,12 +303,14 @@
 }
 
 std::vector<scoped_refptr<ServiceWorkerRegistration>>
-ServiceWorkerRegistry::GetUninstallingRegistrationsForOrigin(
-    const url::Origin& origin) {
+ServiceWorkerRegistry::GetUninstallingRegistrationsForStorageKey(
+    const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   std::vector<scoped_refptr<ServiceWorkerRegistration>> results;
   for (const auto& registration : uninstalling_registrations_) {
-    if (url::Origin::Create(registration.second->scope()) == origin) {
+    // TODO(crbug/1199077): Use full `key` once ServiceWorkerRegistration
+    // implements StorageKey.
+    if (url::Origin::Create(registration.second->scope()) == key.origin()) {
       results.push_back(registration.second);
     }
   }
@@ -375,18 +382,22 @@
   }
   data->resources_total_size_bytes = resources_total_size_bytes;
 
+  // TODO(crbug/1199077): Use `key` once ServiceWorkerRegistration implements
+  // StorageKey.
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::StoreRegistration,
-      base::BindOnce(&ServiceWorkerRegistry::DidStoreRegistration,
-                     weak_factory_.GetWeakPtr(), registration->id(),
-                     resources_total_size_bytes, registration->scope(),
-                     std::move(callback)),
+      base::BindOnce(
+          &ServiceWorkerRegistry::DidStoreRegistration,
+          weak_factory_.GetWeakPtr(), registration->id(),
+          resources_total_size_bytes, registration->scope(),
+          storage::StorageKey(url::Origin::Create(registration->scope())),
+          std::move(callback)),
       std::move(data), std::move(resources));
 }
 
 void ServiceWorkerRegistry::DeleteRegistration(
     scoped_refptr<ServiceWorkerRegistration> registration,
-    const GURL& origin,
+    const storage::StorageKey& key,
     StatusCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   if (is_storage_disabled_) {
@@ -402,9 +413,9 @@
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::DeleteRegistration,
       base::BindOnce(&ServiceWorkerRegistry::DidDeleteRegistration,
-                     weak_factory_.GetWeakPtr(), registration->id(), origin,
+                     weak_factory_.GetWeakPtr(), registration->id(), key,
                      std::move(callback)),
-      registration->id(), storage::StorageKey(url::Origin::Create(origin)));
+      registration->id(), key);
 
   DCHECK(!base::Contains(uninstalling_registrations_, registration->id()));
   uninstalling_registrations_[registration->id()] = registration;
@@ -445,21 +456,19 @@
 }
 
 void ServiceWorkerRegistry::UpdateToActiveState(int64_t registration_id,
-                                                const GURL& origin,
+                                                const storage::StorageKey& key,
                                                 StatusCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::UpdateToActiveState,
       base::BindOnce(&ServiceWorkerRegistry::DidUpdateToActiveState,
-                     weak_factory_.GetWeakPtr(), url::Origin::Create(origin),
-                     std::move(callback)),
-      static_cast<const int64_t>(registration_id),
-      storage::StorageKey(url::Origin::Create(origin)));
+                     weak_factory_.GetWeakPtr(), key, std::move(callback)),
+      static_cast<const int64_t>(registration_id), key);
 }
 
 void ServiceWorkerRegistry::UpdateLastUpdateCheckTime(
     int64_t registration_id,
-    const GURL& origin,
+    const storage::StorageKey& key,
     base::Time last_update_check_time,
     StatusCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -467,14 +476,13 @@
       &storage::mojom::ServiceWorkerStorageControl::UpdateLastUpdateCheckTime,
       base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
                      weak_factory_.GetWeakPtr(), std::move(callback)),
-      static_cast<const int64_t>(registration_id),
-      storage::StorageKey(url::Origin::Create(origin)),
+      static_cast<const int64_t>(registration_id), key,
       static_cast<const base::Time&>(last_update_check_time));
 }
 
 void ServiceWorkerRegistry::UpdateNavigationPreloadEnabled(
     int64_t registration_id,
-    const GURL& origin,
+    const storage::StorageKey& key,
     bool enable,
     StatusCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -483,14 +491,13 @@
           UpdateNavigationPreloadEnabled,
       base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
                      weak_factory_.GetWeakPtr(), std::move(callback)),
-      static_cast<const int64_t>(registration_id),
-      storage::StorageKey(url::Origin::Create(origin)),
+      static_cast<const int64_t>(registration_id), key,
       static_cast<const bool>(enable));
 }
 
 void ServiceWorkerRegistry::UpdateNavigationPreloadHeader(
     int64_t registration_id,
-    const GURL& origin,
+    const storage::StorageKey& key,
     const std::string& value,
     StatusCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -499,17 +506,17 @@
           UpdateNavigationPreloadHeader,
       base::BindOnce(&ServiceWorkerRegistry::DidUpdateRegistration,
                      weak_factory_.GetWeakPtr(), std::move(callback)),
-      static_cast<const int64_t>(registration_id),
-      storage::StorageKey(url::Origin::Create(origin)), value);
+      static_cast<const int64_t>(registration_id), key, value);
 }
 
-void ServiceWorkerRegistry::StoreUncommittedResourceId(int64_t resource_id,
-                                                       const GURL& origin) {
+void ServiceWorkerRegistry::StoreUncommittedResourceId(
+    int64_t resource_id,
+    const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::StoreUncommittedResourceId,
       base::BindOnce(&ServiceWorkerRegistry::DidWriteUncommittedResourceIds,
-                     weak_factory_.GetWeakPtr(), url::Origin::Create(origin)),
+                     weak_factory_.GetWeakPtr(), key),
       static_cast<const int64_t>(resource_id));
 }
 
@@ -557,7 +564,7 @@
 
 void ServiceWorkerRegistry::StoreUserData(
     int64_t registration_id,
-    const url::Origin& origin,
+    const storage::StorageKey& key,
     const std::vector<std::pair<std::string, std::string>>& key_value_pairs,
     StatusCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
@@ -583,8 +590,8 @@
       &storage::mojom::ServiceWorkerStorageControl::StoreUserData,
       base::BindOnce(&ServiceWorkerRegistry::DidStoreUserData,
                      weak_factory_.GetWeakPtr(), std::move(wrapped_callback),
-                     origin),
-      registration_id, storage::StorageKey(origin), std::move(user_data));
+                     key),
+      registration_id, key, std::move(user_data));
 }
 
 void ServiceWorkerRegistry::ClearUserData(int64_t registration_id,
@@ -717,7 +724,7 @@
 
 void ServiceWorkerRegistry::FindRegistrationForIdInternal(
     int64_t registration_id,
-    const base::Optional<url::Origin>& origin,
+    const base::Optional<storage::StorageKey>& key,
     FindRegistrationCallback callback) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   // Registration lookup is expected to abort when storage is disabled.
@@ -739,9 +746,6 @@
     return;
   }
 
-  const base::Optional<storage::StorageKey> key =
-      origin.has_value() ? base::make_optional(storage::StorageKey(*origin))
-                         : base::nullopt;
   CreateInvokerAndStartRemoteCall(
       &storage::mojom::ServiceWorkerStorageControl::FindRegistrationForId,
       base::BindOnce(&ServiceWorkerRegistry::DidFindRegistrationForId,
@@ -750,9 +754,12 @@
       static_cast<const int64_t>(registration_id), key);
 }
 
+// TODO(crbug.com/1199077): Use `key` once ServiceWorkerRegistration
+// implements StorageKey.
 ServiceWorkerRegistration*
 ServiceWorkerRegistry::FindInstallingRegistrationForClientUrl(
-    const GURL& client_url) {
+    const GURL& client_url,
+    const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   DCHECK(!client_url.has_ref());
 
@@ -767,8 +774,12 @@
   return match;
 }
 
+// TODO(crbug.com/1199077): Use `key` once ServiceWorkerRegistration
+// implements StorageKey.
 ServiceWorkerRegistration*
-ServiceWorkerRegistry::FindInstallingRegistrationForScope(const GURL& scope) {
+ServiceWorkerRegistry::FindInstallingRegistrationForScope(
+    const GURL& scope,
+    const storage::StorageKey& key) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   for (const auto& registration : installing_registrations_)
     if (registration.second->scope() == scope)
@@ -878,6 +889,7 @@
 
 void ServiceWorkerRegistry::DidFindRegistrationForClientUrl(
     const GURL& client_url,
+    const storage::StorageKey& key,
     int64_t trace_event_id,
     FindRegistrationCallback callback,
     storage::mojom::ServiceWorkerDatabaseStatus database_status,
@@ -895,7 +907,7 @@
   if (status == blink::ServiceWorkerStatusCode::kErrorNotFound) {
     // Look for something currently being installed.
     scoped_refptr<ServiceWorkerRegistration> installing_registration =
-        FindInstallingRegistrationForClientUrl(client_url);
+        FindInstallingRegistrationForClientUrl(client_url, key);
     if (installing_registration) {
       blink::ServiceWorkerStatusCode installing_status =
           installing_registration->is_deleted()
@@ -996,9 +1008,9 @@
   CompleteFindNow(std::move(registration), status, std::move(callback));
 }
 
-void ServiceWorkerRegistry::DidGetRegistrationsForOrigin(
+void ServiceWorkerRegistry::DidGetRegistrationsForStorageKey(
     GetRegistrationsCallback callback,
-    const url::Origin& origin_filter,
+    const storage::StorageKey& key_filter,
     storage::mojom::ServiceWorkerDatabaseStatus database_status,
     std::vector<storage::mojom::ServiceWorkerFindRegistrationResultPtr>
         entries) {
@@ -1028,8 +1040,11 @@
   }
 
   // Add unstored registrations that are being installed.
+  // TODO(crbug/1199077): Use full `key` once ServiceWorkerRegistration
+  // implements StorageKey.
   for (const auto& registration : installing_registrations_) {
-    if (url::Origin::Create(registration.second->scope()) != origin_filter)
+    if (url::Origin::Create(registration.second->scope()) !=
+        key_filter.origin())
       continue;
     if (registration_ids.insert(registration.first).second)
       registrations.push_back(registration.second);
@@ -1133,7 +1148,7 @@
   std::move(callback).Run(blink::ServiceWorkerStatusCode::kOk, infos);
 }
 
-void ServiceWorkerRegistry::DidGetStorageUsageForOrigin(
+void ServiceWorkerRegistry::DidGetStorageUsageForStorageKey(
     GetStorageUsageForOriginCallback callback,
     storage::mojom::ServiceWorkerDatabaseStatus database_status,
     int64_t usage) {
@@ -1147,15 +1162,16 @@
     int64_t stored_registration_id,
     uint64_t stored_resources_total_size_bytes,
     const GURL& stored_scope,
+    const storage::StorageKey& key,
     StatusCallback callback,
     storage::mojom::ServiceWorkerDatabaseStatus database_status,
     uint64_t deleted_resources_size) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
   blink::ServiceWorkerStatusCode status =
       DatabaseStatusToStatusCode(database_status);
-  url::Origin origin = url::Origin::Create(stored_scope);
+  url::Origin origin = key.origin();
 
-  MaybeNotifyWriteFailed(quota_manager_proxy_, database_status, origin);
+  MaybeNotifyWriteFailed(quota_manager_proxy_, database_status, key);
 
   if (status != blink::ServiceWorkerStatusCode::kOk) {
     ScheduleDeleteAndStartOver();
@@ -1189,7 +1205,7 @@
 
 void ServiceWorkerRegistry::DidDeleteRegistration(
     int64_t registration_id,
-    const GURL& origin,
+    const storage::StorageKey& key,
     StatusCallback callback,
     storage::mojom::ServiceWorkerDatabaseStatus database_status,
     uint64_t deleted_resources_size,
@@ -1207,7 +1223,7 @@
   if (quota_manager_proxy_) {
     // Can be nullptr in tests.
     quota_manager_proxy_->NotifyStorageModified(
-        storage::QuotaClientType::kServiceWorker, url::Origin::Create(origin),
+        storage::QuotaClientType::kServiceWorker, key.origin(),
         blink::mojom::StorageType::kTemporary, -deleted_resources_size,
         base::Time::Now());
   }
@@ -1219,10 +1235,9 @@
 
   if (storage_key_state ==
       storage::mojom::ServiceWorkerStorageStorageKeyState::kDelete) {
-    context_->NotifyAllRegistrationsDeletedForOrigin(
-        url::Origin::Create(origin));
+    context_->NotifyAllRegistrationsDeletedForOrigin(key.origin());
     if (storage_policy_observer_)
-      storage_policy_observer_->StopTrackingOrigin(url::Origin::Create(origin));
+      storage_policy_observer_->StopTrackingOrigin(key.origin());
   }
 
   std::move(callback).Run(status);
@@ -1240,18 +1255,18 @@
 }
 
 void ServiceWorkerRegistry::DidUpdateToActiveState(
-    const url::Origin& origin,
+    const storage::StorageKey& key,
     StatusCallback callback,
     storage::mojom::ServiceWorkerDatabaseStatus status) {
-  MaybeNotifyWriteFailed(quota_manager_proxy_, status, origin);
+  MaybeNotifyWriteFailed(quota_manager_proxy_, status, key);
   DidUpdateRegistration(std::move(callback), status);
 }
 
 void ServiceWorkerRegistry::DidWriteUncommittedResourceIds(
-    const url::Origin& origin,
+    const storage::StorageKey& key,
     storage::mojom::ServiceWorkerDatabaseStatus status) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  MaybeNotifyWriteFailed(quota_manager_proxy_, status, origin);
+  MaybeNotifyWriteFailed(quota_manager_proxy_, status, key);
   if (status != storage::mojom::ServiceWorkerDatabaseStatus::kOk)
     ScheduleDeleteAndStartOver();
 }
@@ -1289,10 +1304,10 @@
 
 void ServiceWorkerRegistry::DidStoreUserData(
     StatusCallback callback,
-    const url::Origin& origin,
+    const storage::StorageKey& key,
     storage::mojom::ServiceWorkerDatabaseStatus status) {
   DCHECK_CURRENTLY_ON(BrowserThread::UI);
-  MaybeNotifyWriteFailed(quota_manager_proxy_, status, origin);
+  MaybeNotifyWriteFailed(quota_manager_proxy_, status, key);
   // |status| can be NOT_FOUND when the associated registration did not exist in
   // the database. In the case, we don't have to schedule the corruption
   // recovery.
@@ -1346,6 +1361,7 @@
     scoped_refptr<ServiceWorkerRegistration> registration,
     const GURL& script_url,
     blink::mojom::ScriptType script_type,
+    const storage::StorageKey& key,
     NewVersionCallback callback,
     int64_t version_id,
     mojo::PendingRemote<storage::mojom::ServiceWorkerLiveVersionRef>
@@ -1355,6 +1371,8 @@
     std::move(callback).Run(nullptr);
     return;
   }
+  // TODO(crbug/1199077): Once ServiceWorkerVersion supports StorageKey use
+  // `key` with it.
   auto version = base::MakeRefCounted<ServiceWorkerVersion>(
       registration.get(), script_url, script_type, version_id,
       std::move(version_reference), context_->AsWeakPtr());
@@ -1436,11 +1454,11 @@
 }
 
 bool ServiceWorkerRegistry::ShouldPurgeOnShutdownForTesting(
-    const url::Origin& origin) {
+    const storage::StorageKey& key) {
   if (!storage_policy_observer_)
     return false;
   return storage_policy_observer_->ShouldPurgeOnShutdownForTesting(  // IN-TEST
-      origin);
+      key.origin());
 }
 
 mojo::Remote<storage::mojom::ServiceWorkerStorageControl>&
diff --git a/content/browser/service_worker/service_worker_registry.h b/content/browser/service_worker/service_worker_registry.h
index 1696c3c..fc0e2c3 100644
--- a/content/browser/service_worker/service_worker_registry.h
+++ b/content/browser/service_worker/service_worker_registry.h
@@ -11,6 +11,7 @@
 #include "base/containers/unique_ptr_adapters.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/threading/sequence_bound.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "components/services/storage/public/mojom/service_worker_storage_control.mojom.h"
 #include "content/browser/service_worker/service_worker_registration.h"
 #include "content/common/content_export.h"
@@ -55,8 +56,8 @@
   using FindRegistrationCallback = base::OnceCallback<void(
       blink::ServiceWorkerStatusCode status,
       scoped_refptr<ServiceWorkerRegistration> registration)>;
-  // TODO(http://crbug.com/1199077) Edit this once upstream code knows about
-  // StorageKey.
+  // TODO(crbug.com/1199077) Update this and associated functions once
+  // quota_client.mojom::GetOriginsForType is modified for StorageKey.
   using GetRegisteredOriginsCallback =
       base::OnceCallback<void(const std::vector<url::Origin>& origins)>;
   using GetRegistrationsCallback = base::OnceCallback<void(
@@ -75,6 +76,8 @@
   using GetUserDataForAllRegistrationsCallback = base::OnceCallback<void(
       const std::vector<std::pair<int64_t, std::string>>& user_data,
       blink::ServiceWorkerStatusCode status)>;
+  // TODO(crbug.com/1199077): Update this and associated functions once
+  // quota_client.mojom::GetOriginUsage is modified for StorageKey.
   using GetStorageUsageForOriginCallback =
       base::OnceCallback<void(blink::ServiceWorkerStatusCode status,
                               int64_t usage)>;
@@ -109,28 +112,31 @@
   void CreateNewVersion(scoped_refptr<ServiceWorkerRegistration> registration,
                         const GURL& script_url,
                         blink::mojom::ScriptType script_type,
+                        const storage::StorageKey& key,
                         NewVersionCallback callback);
 
-  // Finds registration for |client_url| or |scope| or |registration_id|.
-  // The Find methods will find stored and initially installing registrations.
-  // Returns blink::ServiceWorkerStatusCode::kOk with non-null
-  // registration if registration is found, or returns
+  // Finds registration for `client_url`, `scope`, or `registration_id` with the
+  // associated `key`. The Find methods will find stored and initially
+  // installing registrations. Returns blink::ServiceWorkerStatusCode::kOk with
+  // non-null registration if registration is found, or returns
   // blink::ServiceWorkerStatusCode::kErrorNotFound if no
   // matching registration is found.  The FindRegistrationForScope method is
   // guaranteed to return asynchronously. However, the methods to find
-  // for |client_url| or |registration_id| may complete immediately
+  // for `client_url` or `registration_id` may complete immediately
   // (the callback may be called prior to the method returning) or
   // asynchronously.
   void FindRegistrationForClientUrl(const GURL& client_url,
+                                    const storage::StorageKey& key,
                                     FindRegistrationCallback callback);
   void FindRegistrationForScope(const GURL& scope,
+                                const storage::StorageKey& key,
                                 FindRegistrationCallback callback);
   // These FindRegistrationForId() methods look up live registrations and may
   // return a "findable" registration without looking up storage. A registration
   // is considered as "findable" when the registration is stored or in the
   // installing state.
   void FindRegistrationForId(int64_t registration_id,
-                             const url::Origin& origin,
+                             const storage::StorageKey& key,
                              FindRegistrationCallback callback);
   // Generally |FindRegistrationForId| should be used to look up a registration
   // by |registration_id| since it's more efficient. But if a |registration_id|
@@ -139,24 +145,22 @@
   // callback may be called prior to the method returning) or asynchronously.
   void FindRegistrationForIdOnly(int64_t registration_id,
                                  FindRegistrationCallback callback);
-
-  // Returns all stored and installing registrations for a given origin.
-  void GetRegistrationsForOrigin(const url::Origin& origin,
-                                 GetRegistrationsCallback callback);
-
+  // Returns all stored and installing registrations for a given StorageKey.
+  void GetRegistrationsForStorageKey(const storage::StorageKey& key,
+                                     GetRegistrationsCallback callback);
   // Reads the total resource size stored in the storage for a given origin.
-  void GetStorageUsageForOrigin(const url::Origin& origin,
-                                GetStorageUsageForOriginCallback callback);
+  void GetStorageUsageForStorageKey(const storage::StorageKey& key,
+                                    GetStorageUsageForOriginCallback callback);
 
   // Returns info about all stored and initially installing registrations.
   // TODO(crbug.com/807440,1055677): Consider removing this method. Getting all
   // registrations at once might not be a good idea.
   void GetAllRegistrationsInfos(GetRegistrationsInfosCallback callback);
-
-  ServiceWorkerRegistration* GetUninstallingRegistration(const GURL& scope);
-
+  ServiceWorkerRegistration* GetUninstallingRegistration(
+      const GURL& scope,
+      const storage::StorageKey& key);
   std::vector<scoped_refptr<ServiceWorkerRegistration>>
-  GetUninstallingRegistrationsForOrigin(const url::Origin& origin);
+  GetUninstallingRegistrationsForStorageKey(const storage::StorageKey& key);
 
   // Commits |registration| with the installed but not activated |version|
   // to storage, overwriting any pre-existing registration data for the scope.
@@ -167,7 +171,7 @@
                          ServiceWorkerVersion* version,
                          StatusCallback callback);
 
-  // Deletes the registration data for |registration|. The live registration is
+  // Deletes the registration data for `registration`. The live registration is
   // still findable via GetUninstallingRegistration(), and versions are usable
   // because their script resources have not been deleted. After calling this,
   // the caller should later:
@@ -177,7 +181,7 @@
   //   ServiceWorkerStorage::PurgeResources() to delete their script resources.
   // If these aren't called, on the next profile session the cleanup occurs.
   void DeleteRegistration(scoped_refptr<ServiceWorkerRegistration> registration,
-                          const GURL& origin,
+                          const storage::StorageKey& key,
                           StatusCallback callback);
 
   // Intended for use only by ServiceWorkerRegisterJob and
@@ -193,21 +197,22 @@
   // Wrapper functions of ServiceWorkerStorage. These wrappers provide error
   // recovering mechanism when database operations fail.
   void UpdateToActiveState(int64_t registration_id,
-                           const GURL& origin,
+                           const storage::StorageKey& key,
                            StatusCallback callback);
   void UpdateLastUpdateCheckTime(int64_t registration_id,
-                                 const GURL& origin,
+                                 const storage::StorageKey& key,
                                  base::Time last_update_check_time,
                                  StatusCallback callback);
   void UpdateNavigationPreloadEnabled(int64_t registration_id,
-                                      const GURL& origin,
+                                      const storage::StorageKey& key,
                                       bool enable,
                                       StatusCallback callback);
   void UpdateNavigationPreloadHeader(int64_t registration_id,
-                                     const GURL& origin,
+                                     const storage::StorageKey& key,
                                      const std::string& value,
                                      StatusCallback callback);
-  void StoreUncommittedResourceId(int64_t resource_id, const GURL& origin);
+  void StoreUncommittedResourceId(int64_t resource_id,
+                                  const storage::StorageKey& key);
   void DoomUncommittedResource(int64_t resource_id);
   void GetUserData(int64_t registration_id,
                    const std::vector<std::string>& keys,
@@ -220,7 +225,7 @@
                                      GetUserKeysAndDataCallback callback);
   void StoreUserData(
       int64_t registration_id,
-      const url::Origin& origin,
+      const storage::StorageKey& key,
       const std::vector<std::pair<std::string, std::string>>& key_value_pairs,
       StatusCallback callback);
   void ClearUserData(int64_t registration_id,
@@ -269,15 +274,16 @@
                            RetryInflightCalls_ApplyPolicyUpdates);
 
   void Start();
-
-  void FindRegistrationForIdInternal(int64_t registration_id,
-                                     const base::Optional<url::Origin>& origin,
-                                     FindRegistrationCallback callback);
-
+  void FindRegistrationForIdInternal(
+      int64_t registration_id,
+      const base::Optional<storage::StorageKey>& key,
+      FindRegistrationCallback callback);
   ServiceWorkerRegistration* FindInstallingRegistrationForClientUrl(
-      const GURL& client_url);
+      const GURL& client_url,
+      const storage::StorageKey& key);
   ServiceWorkerRegistration* FindInstallingRegistrationForScope(
-      const GURL& scope);
+      const GURL& scope,
+      const storage::StorageKey& key);
   ServiceWorkerRegistration* FindInstallingRegistrationForId(
       int64_t registration_id);
 
@@ -294,9 +300,9 @@
   FindFromLiveRegistrationsForId(int64_t registration_id);
 
   void DoomUncommittedResources(const std::vector<int64_t>& resource_ids);
-
   void DidFindRegistrationForClientUrl(
       const GURL& client_url,
+      const storage::StorageKey& key,
       int64_t trace_event_id,
       FindRegistrationCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
@@ -310,10 +316,9 @@
       FindRegistrationCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       storage::mojom::ServiceWorkerFindRegistrationResultPtr result);
-
-  void DidGetRegistrationsForOrigin(
+  void DidGetRegistrationsForStorageKey(
       GetRegistrationsCallback callback,
-      const url::Origin& origin_filter,
+      const storage::StorageKey& key_filter,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       std::vector<storage::mojom::ServiceWorkerFindRegistrationResultPtr>
           entries);
@@ -321,35 +326,34 @@
       GetRegistrationsInfosCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       RegistrationList registration_data_list);
-  void DidGetStorageUsageForOrigin(
+  void DidGetStorageUsageForStorageKey(
       GetStorageUsageForOriginCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       int64_t usage);
-
   void DidStoreRegistration(
       int64_t stored_registration_id,
       uint64_t stored_resources_total_size_bytes,
       const GURL& stored_scope,
+      const storage::StorageKey& key,
       StatusCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       uint64_t deleted_resources_size);
   void DidDeleteRegistration(
       int64_t registration_id,
-      const GURL& origin,
+      const storage::StorageKey& key,
       StatusCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus database_status,
       uint64_t deleted_resources_size,
       storage::mojom::ServiceWorkerStorageStorageKeyState storage_key_state);
-
   void DidUpdateRegistration(
       StatusCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus status);
   void DidUpdateToActiveState(
-      const url::Origin& origin,
+      const storage::StorageKey& key,
       StatusCallback callback,
       storage::mojom::ServiceWorkerDatabaseStatus status);
   void DidWriteUncommittedResourceIds(
-      const url::Origin& origin,
+      const storage::StorageKey& key,
       storage::mojom::ServiceWorkerDatabaseStatus status);
   void DidDoomUncommittedResourceIds(
       storage::mojom::ServiceWorkerDatabaseStatus status);
@@ -361,7 +365,7 @@
       storage::mojom::ServiceWorkerDatabaseStatus status,
       const base::flat_map<std::string, std::string>& data_map);
   void DidStoreUserData(StatusCallback callback,
-                        const url::Origin& origin,
+                        const storage::StorageKey& key,
                         storage::mojom::ServiceWorkerDatabaseStatus status);
   void DidClearUserData(StatusCallback callback,
                         storage::mojom::ServiceWorkerDatabaseStatus status);
@@ -374,10 +378,13 @@
       blink::mojom::ServiceWorkerRegistrationOptions options,
       NewRegistrationCallback callback,
       int64_t registration_id);
+  // TODO(http://crbug.com/1199077): Update function when ServiceWorkerVersion
+  // supports StorageKey
   void DidGetNewVersionId(
       scoped_refptr<ServiceWorkerRegistration> registration,
       const GURL& script_url,
       blink::mojom::ScriptType script_type,
+      const storage::StorageKey& key,
       NewVersionCallback callback,
       int64_t version_id,
       mojo::PendingRemote<storage::mojom::ServiceWorkerLiveVersionRef>
@@ -394,12 +401,11 @@
   void DidDisable();
   void DidApplyPolicyUpdates(
       storage::mojom::ServiceWorkerDatabaseStatus status);
-
   void DidGetRegisteredOriginsOnStartup(
       const std::vector<url::Origin>& origins);
   void ApplyPolicyUpdates(
       std::vector<storage::mojom::StoragePolicyUpdatePtr> policy_updates);
-  bool ShouldPurgeOnShutdownForTesting(const url::Origin& origin);
+  bool ShouldPurgeOnShutdownForTesting(const storage::StorageKey& key);
 
   void OnRemoteStorageDisconnected();
 
diff --git a/content/browser/service_worker/service_worker_registry_unittest.cc b/content/browser/service_worker/service_worker_registry_unittest.cc
index c2f6f34c..e4683fa 100644
--- a/content/browser/service_worker/service_worker_registry_unittest.cc
+++ b/content/browser/service_worker/service_worker_registry_unittest.cc
@@ -33,7 +33,7 @@
   base::Optional<mojo_base::BigBuffer> metadata;
 };
 
-struct GetStorageUsageForOriginResult {
+struct GetStorageUsageForStorageKeyResult {
   blink::ServiceWorkerStatusCode status;
   int64_t usage;
 };
@@ -327,11 +327,12 @@
 
   blink::ServiceWorkerStatusCode FindRegistrationForClientUrl(
       const GURL& document_url,
+      const storage::StorageKey& key,
       scoped_refptr<ServiceWorkerRegistration>& out_registration) {
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
     registry()->FindRegistrationForClientUrl(
-        document_url,
+        document_url, key,
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status,
                 scoped_refptr<ServiceWorkerRegistration> registration) {
@@ -345,29 +346,31 @@
 
   blink::ServiceWorkerStatusCode FindRegistrationForScope(
       const GURL& scope,
+      const storage::StorageKey& key,
       scoped_refptr<ServiceWorkerRegistration>& out_registration) {
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
     registry()->FindRegistrationForScope(
-        scope, base::BindLambdaForTesting(
-                   [&](blink::ServiceWorkerStatusCode status,
-                       scoped_refptr<ServiceWorkerRegistration> registration) {
-                     result = status;
-                     out_registration = std::move(registration);
-                     loop.Quit();
-                   }));
+        scope, key,
+        base::BindLambdaForTesting(
+            [&](blink::ServiceWorkerStatusCode status,
+                scoped_refptr<ServiceWorkerRegistration> registration) {
+              result = status;
+              out_registration = std::move(registration);
+              loop.Quit();
+            }));
     loop.Run();
     return result;
   }
 
   blink::ServiceWorkerStatusCode FindRegistrationForId(
       int64_t registration_id,
-      const url::Origin& origin,
+      const storage::StorageKey& key,
       scoped_refptr<ServiceWorkerRegistration>& out_registration) {
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
     registry()->FindRegistrationForId(
-        registration_id, origin,
+        registration_id, key,
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status,
                 scoped_refptr<ServiceWorkerRegistration> registration) {
@@ -414,11 +417,11 @@
 
   blink::ServiceWorkerStatusCode DeleteRegistration(
       scoped_refptr<ServiceWorkerRegistration> registration,
-      const GURL& origin) {
+      const storage::StorageKey& key) {
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
     registry()->DeleteRegistration(
-        registration, origin,
+        registration, key,
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
           loop.Quit();
@@ -432,7 +435,7 @@
     base::RunLoop loop;
     blink::ServiceWorkerStatusCode result;
     registry()->UpdateToActiveState(
-        registration->id(), registration->scope().GetOrigin(),
+        registration->id(), storage::StorageKey(registration->origin()),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
           loop.Quit();
@@ -446,7 +449,7 @@
     base::RunLoop loop;
     blink::ServiceWorkerStatusCode result;
     registry()->UpdateLastUpdateCheckTime(
-        registration->id(), registration->scope().GetOrigin(),
+        registration->id(), storage::StorageKey(registration->origin()),
         registration->last_update_check(),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           result = status;
@@ -456,17 +459,17 @@
     return result;
   }
 
-  GetStorageUsageForOriginResult GetStorageUsageForOrigin(
-      const url::Origin& origin) {
-    GetStorageUsageForOriginResult result;
+  GetStorageUsageForStorageKeyResult GetStorageUsageForStorageKey(
+      const storage::StorageKey& key) {
+    GetStorageUsageForStorageKeyResult result;
     base::RunLoop loop;
-    registry()->GetStorageUsageForOrigin(
-        origin, base::BindLambdaForTesting(
-                    [&](blink::ServiceWorkerStatusCode status, int64_t usage) {
-                      result.status = status;
-                      result.usage = usage;
-                      loop.Quit();
-                    }));
+    registry()->GetStorageUsageForStorageKey(
+        key, base::BindLambdaForTesting(
+                 [&](blink::ServiceWorkerStatusCode status, int64_t usage) {
+                   result.status = status;
+                   result.usage = usage;
+                   loop.Quit();
+                 }));
     loop.Run();
     return result;
   }
@@ -487,13 +490,13 @@
     return result.value();
   }
 
-  blink::ServiceWorkerStatusCode GetRegistrationsForOrigin(
-      const url::Origin& origin,
+  blink::ServiceWorkerStatusCode GetRegistrationsForStorageKey(
+      const storage::StorageKey& key,
       std::vector<scoped_refptr<ServiceWorkerRegistration>>& registrations) {
     blink::ServiceWorkerStatusCode result;
     base::RunLoop loop;
-    registry()->GetRegistrationsForOrigin(
-        origin,
+    registry()->GetRegistrationsForStorageKey(
+        key,
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status,
                 const std::vector<scoped_refptr<ServiceWorkerRegistration>>&
@@ -614,6 +617,7 @@
 
 TEST_F(ServiceWorkerRegistryTest, StoreFindUpdateDeleteRegistration) {
   const GURL kScope("http://www.test.not/scope/");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
   const GURL kDocumentUrl("http://www.test.not/scope/document.html");
   const GURL kResource1("http://www.test.not/scope/resource1.js");
   const int64_t kResource1Size = 1591234;
@@ -631,17 +635,17 @@
   scoped_refptr<ServiceWorkerRegistration> found_registration;
 
   // We shouldn't find anything without having stored anything.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kErrorNotFound,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForScope(kScope, found_registration));
+            FindRegistrationForScope(kScope, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForId(kRegistrationId, url::Origin::Create(kScope),
-                                  found_registration));
+            FindRegistrationForId(kRegistrationId, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   std::vector<storage::mojom::ServiceWorkerResourceRecordPtr> resources;
@@ -675,8 +679,9 @@
             StoreRegistration(live_registration, live_version));
 
   // Now we should find it and get the live ptr back immediately.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_EQ(live_registration, found_registration);
   EXPECT_EQ(kResource1Size + kResource2Size,
             live_registration->resources_total_size_bytes());
@@ -691,14 +696,13 @@
 
   // But FindRegistrationForScope is always async.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForScope(kScope, found_registration));
+            FindRegistrationForScope(kScope, kKey, found_registration));
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
   // Can be found by id too.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForId(kRegistrationId, url::Origin::Create(kScope),
-                                  found_registration));
+            FindRegistrationForId(kRegistrationId, kKey, found_registration));
   ASSERT_TRUE(found_registration.get());
   EXPECT_EQ(kRegistrationId, found_registration->id());
   EXPECT_EQ(live_registration, found_registration);
@@ -716,8 +720,9 @@
   live_registration = nullptr;
 
   // Now FindRegistrationForClientUrl should be async.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   ASSERT_TRUE(found_registration.get());
   EXPECT_EQ(kRegistrationId, found_registration->id());
   EXPECT_TRUE(found_registration->HasOneRef());
@@ -734,20 +739,21 @@
   EXPECT_EQ(kResource1Size + kResource2Size, info.stored_version_size_bytes);
   all_registrations.clear();
 
-  // Finding by origin should provide the same result if origin is kScope.
+  // Finding by StorageKey should provide the same result if the StorageKey's
+  // origin is kScope.
   std::vector<scoped_refptr<ServiceWorkerRegistration>>
-      registrations_for_origin;
+      registrations_for_storage_key;
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(url::Origin::Create(kScope),
-                                      registrations_for_origin));
-  EXPECT_EQ(1u, registrations_for_origin.size());
-  registrations_for_origin.clear();
+            GetRegistrationsForStorageKey(kKey, registrations_for_storage_key));
+  EXPECT_EQ(1u, registrations_for_storage_key.size());
+  registrations_for_storage_key.clear();
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(
-                url::Origin::Create(GURL("http://example.com/")),
-                registrations_for_origin));
-  EXPECT_TRUE(registrations_for_origin.empty());
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      GetRegistrationsForStorageKey(
+          storage::StorageKey(url::Origin::Create(GURL("http://example.com/"))),
+          registrations_for_storage_key));
+  EXPECT_TRUE(registrations_for_storage_key.empty());
 
   found_registration = nullptr;
 
@@ -756,7 +762,7 @@
 
   // And FindRegistrationForScope is always async.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForScope(kScope, found_registration));
+            FindRegistrationForScope(kScope, kKey, found_registration));
   ASSERT_TRUE(found_registration.get());
   EXPECT_EQ(kRegistrationId, found_registration->id());
   EXPECT_TRUE(found_registration->HasOneRef());
@@ -789,8 +795,9 @@
 
   // The Find methods should return a registration with an active version
   // and the expected update time.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   ASSERT_TRUE(found_registration.get());
   EXPECT_EQ(kRegistrationId, found_registration->id());
   EXPECT_TRUE(found_registration->HasOneRef());
@@ -803,6 +810,7 @@
 
 TEST_F(ServiceWorkerRegistryTest, InstallingRegistrationsAreFindable) {
   const GURL kScope("http://www.test.not/scope/");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
   const GURL kScript("http://www.test.not/script.js");
   const GURL kDocumentUrl("http://www.test.not/scope/document.html");
   const int64_t kVersionId = 0;
@@ -826,20 +834,20 @@
 
   // Should not be findable, including by GetAllRegistrationsInfos.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForId(kRegistrationId, url::Origin::Create(kScope),
-                                  found_registration));
+            FindRegistrationForId(kRegistrationId, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
             FindRegistrationForIdOnly(kRegistrationId, found_registration));
   EXPECT_FALSE(found_registration.get());
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kErrorNotFound,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForScope(kScope, found_registration));
+            FindRegistrationForScope(kScope, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   std::vector<ServiceWorkerRegistrationInfo> all_registrations;
@@ -848,25 +856,24 @@
   EXPECT_TRUE(all_registrations.empty());
 
   std::vector<scoped_refptr<ServiceWorkerRegistration>>
-      registrations_for_origin;
+      registrations_for_storage_key;
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(url::Origin::Create(kScope),
-                                      registrations_for_origin));
-  EXPECT_TRUE(registrations_for_origin.empty());
+            GetRegistrationsForStorageKey(kKey, registrations_for_storage_key));
+  EXPECT_TRUE(registrations_for_storage_key.empty());
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(
-                url::Origin::Create(GURL("http://example.com/")),
-                registrations_for_origin));
-  EXPECT_TRUE(registrations_for_origin.empty());
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      GetRegistrationsForStorageKey(
+          storage::StorageKey(url::Origin::Create(GURL("http://example.com/"))),
+          registrations_for_storage_key));
+  EXPECT_TRUE(registrations_for_storage_key.empty());
 
   // Notify storage of it being installed.
   registry()->NotifyInstallingRegistration(live_registration.get());
 
   // Now should be findable.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForId(kRegistrationId, url::Origin::Create(kScope),
-                                  found_registration));
+            FindRegistrationForId(kRegistrationId, kKey, found_registration));
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
@@ -875,13 +882,14 @@
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForScope(kScope, found_registration));
+            FindRegistrationForScope(kScope, kKey, found_registration));
   EXPECT_EQ(live_registration, found_registration);
   found_registration = nullptr;
 
@@ -890,18 +898,19 @@
   EXPECT_EQ(1u, all_registrations.size());
   all_registrations.clear();
 
-  // Finding by origin should provide the same result if origin is kScope.
+  // Finding by StorageKey should provide the same result if the StorageKey's
+  // origin is kScope.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(url::Origin::Create(kScope),
-                                      registrations_for_origin));
-  EXPECT_EQ(1u, registrations_for_origin.size());
-  registrations_for_origin.clear();
+            GetRegistrationsForStorageKey(kKey, registrations_for_storage_key));
+  EXPECT_EQ(1u, registrations_for_storage_key.size());
+  registrations_for_storage_key.clear();
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(
-                url::Origin::Create(GURL("http://example.com/")),
-                registrations_for_origin));
-  EXPECT_TRUE(registrations_for_origin.empty());
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      GetRegistrationsForStorageKey(
+          storage::StorageKey(url::Origin::Create(GURL("http://example.com/"))),
+          registrations_for_storage_key));
+  EXPECT_TRUE(registrations_for_storage_key.empty());
 
   // Notify storage of installation no longer happening.
   registry()->NotifyDoneInstallingRegistration(
@@ -909,20 +918,20 @@
 
   // Once again, should not be findable.
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForId(kRegistrationId, url::Origin::Create(kScope),
-                                  found_registration));
+            FindRegistrationForId(kRegistrationId, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
             FindRegistrationForIdOnly(kRegistrationId, found_registration));
   EXPECT_FALSE(found_registration.get());
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kErrorNotFound,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kErrorNotFound,
-            FindRegistrationForScope(kScope, found_registration));
+            FindRegistrationForScope(kScope, kKey, found_registration));
   EXPECT_FALSE(found_registration.get());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
@@ -930,19 +939,20 @@
   EXPECT_TRUE(all_registrations.empty());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(url::Origin::Create(kScope),
-                                      registrations_for_origin));
-  EXPECT_TRUE(registrations_for_origin.empty());
+            GetRegistrationsForStorageKey(kKey, registrations_for_storage_key));
+  EXPECT_TRUE(registrations_for_storage_key.empty());
 
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            GetRegistrationsForOrigin(
-                url::Origin::Create(GURL("http://example.com/")),
-                registrations_for_origin));
-  EXPECT_TRUE(registrations_for_origin.empty());
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      GetRegistrationsForStorageKey(
+          storage::StorageKey(url::Origin::Create(GURL("http://example.com/"))),
+          registrations_for_storage_key));
+  EXPECT_TRUE(registrations_for_storage_key.empty());
 }
 
 TEST_F(ServiceWorkerRegistryTest, FindRegistration_LongestScopeMatch) {
   const GURL kDocumentUrl("http://www.example.com/scope/foo");
+  const storage::StorageKey kKey(url::Origin::Create(kDocumentUrl));
   scoped_refptr<ServiceWorkerRegistration> found_registration;
 
   // Registration for "/scope/".
@@ -972,8 +982,9 @@
   registry()->NotifyInstallingRegistration(live_registration3.get());
 
   // Find a registration among installing ones.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_EQ(live_registration2, found_registration);
   found_registration = nullptr;
 
@@ -997,8 +1008,9 @@
       live_registration3.get(), nullptr, blink::ServiceWorkerStatusCode::kOk);
 
   // Find a registration among installed ones.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kDocumentUrl, found_registration));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      FindRegistrationForClientUrl(kDocumentUrl, kKey, found_registration));
   EXPECT_EQ(live_registration2, found_registration);
 }
 
@@ -1038,6 +1050,7 @@
 
 TEST_F(ServiceWorkerRegistryTest, OriginTrialsAbsentEntryAndEmptyEntry) {
   const GURL origin1("http://www1.example.com");
+  const storage::StorageKey key1(url::Origin::Create(origin1));
   const GURL scope1("http://www1.example.com/foo/");
   const GURL script1(origin1.spec() + "/script.js");
   std::vector<storage::mojom::ServiceWorkerResourceRecordPtr> resources1;
@@ -1052,6 +1065,7 @@
   StoreRegistrationData(std::move(data1), std::move(resources1));
 
   const GURL origin2("http://www2.example.com");
+  const storage::StorageKey key2(url::Origin::Create(origin2));
   const GURL scope2("http://www2.example.com/foo/");
   const GURL script2(origin2.spec() + "/script.js");
   std::vector<storage::mojom::ServiceWorkerResourceRecordPtr> resources2;
@@ -1069,13 +1083,13 @@
   scoped_refptr<ServiceWorkerRegistration> found_registration;
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(scope1, found_registration));
+            FindRegistrationForClientUrl(scope1, key1, found_registration));
   ASSERT_TRUE(found_registration->active_version());
   // origin_trial_tokens must be unset.
   EXPECT_FALSE(found_registration->active_version()->origin_trial_tokens());
 
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(scope2, found_registration));
+            FindRegistrationForClientUrl(scope2, key2, found_registration));
   ASSERT_TRUE(found_registration->active_version());
   // Empty origin_trial_tokens must exist.
   ASSERT_TRUE(found_registration->active_version()->origin_trial_tokens());
@@ -1086,6 +1100,7 @@
 // Tests loading a registration that has no navigation preload state.
 TEST_F(ServiceWorkerRegistryTest, AbsentNavigationPreloadState) {
   const GURL origin1("http://www1.example.com");
+  const storage::StorageKey key1(url::Origin::Create(origin1));
   const GURL scope1("http://www1.example.com/foo/");
   const GURL script1(origin1.spec() + "/script.js");
   std::vector<storage::mojom::ServiceWorkerResourceRecordPtr> resources1;
@@ -1101,7 +1116,7 @@
 
   scoped_refptr<ServiceWorkerRegistration> found_registration;
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(scope1, found_registration));
+            FindRegistrationForClientUrl(scope1, key1, found_registration));
   const blink::mojom::NavigationPreloadState& registration_state =
       found_registration->navigation_preload_state();
   EXPECT_FALSE(registration_state.enabled);
@@ -1117,6 +1132,7 @@
 // well as a custom header value.
 TEST_F(ServiceWorkerRegistryTest, EnabledNavigationPreloadState) {
   const GURL kScope("https://valid.example.com/scope");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
   const GURL kScript("https://valid.example.com/script.js");
   const std::string kHeaderValue("custom header value");
 
@@ -1138,7 +1154,7 @@
   SimulateRestart();
 
   scoped_refptr<ServiceWorkerRegistration> found_registration;
-  EXPECT_EQ(FindRegistrationForClientUrl(kScope, found_registration),
+  EXPECT_EQ(FindRegistrationForClientUrl(kScope, kKey, found_registration),
             blink::ServiceWorkerStatusCode::kOk);
   const blink::mojom::NavigationPreloadState& registration_state =
       found_registration->navigation_preload_state();
@@ -1155,6 +1171,7 @@
 TEST_F(ServiceWorkerRegistryTest, ScriptResponseTime) {
   // Make a registration.
   const GURL kScope("https://example.com/scope");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
   const GURL kScript("https://example.com/script.js");
   scoped_refptr<ServiceWorkerRegistration> registration =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope, kScript,
@@ -1187,7 +1204,7 @@
   // Read the registration. The main script's response time should be gettable.
   scoped_refptr<ServiceWorkerRegistration> found_registration;
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kScope, found_registration));
+            FindRegistrationForClientUrl(kScope, kKey, found_registration));
   ASSERT_TRUE(found_registration);
   auto* waiting_version = found_registration->waiting_version();
   ASSERT_TRUE(waiting_version);
@@ -1202,6 +1219,7 @@
 // state.
 TEST_F(ServiceWorkerRegistryTest, DisabledNavigationPreloadState) {
   const GURL kScope("https://valid.example.com/scope");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
   const GURL kScript("https://valid.example.com/script.js");
   scoped_refptr<ServiceWorkerRegistration> registration =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope, kScript,
@@ -1221,7 +1239,7 @@
 
   scoped_refptr<ServiceWorkerRegistration> found_registration;
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kScope, found_registration));
+            FindRegistrationForClientUrl(kScope, kKey, found_registration));
   const blink::mojom::NavigationPreloadState& registration_state =
       found_registration->navigation_preload_state();
   EXPECT_FALSE(registration_state.enabled);
@@ -1238,6 +1256,7 @@
   const GURL kScope("http://www.example.com/scope/");
   const GURL kScriptUrl("http://www.example.com/script.js");
   const auto kOrigin(url::Origin::Create(kScope));
+  const storage::StorageKey kKey(kOrigin);
 
   scoped_refptr<ServiceWorkerRegistration> registration =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope, kScriptUrl,
@@ -1245,7 +1264,7 @@
 
   ASSERT_EQ(StoreRegistration(registration, registration->waiting_version()),
             blink::ServiceWorkerStatusCode::kOk);
-  EXPECT_FALSE(registry()->ShouldPurgeOnShutdownForTesting(kOrigin));
+  EXPECT_FALSE(registry()->ShouldPurgeOnShutdownForTesting(kKey));
 
   {
     // Update storage policy to mark the origin should be purged on shutdown.
@@ -1254,7 +1273,7 @@
     base::RunLoop().RunUntilIdle();
   }
 
-  EXPECT_TRUE(registry()->ShouldPurgeOnShutdownForTesting(kOrigin));
+  EXPECT_TRUE(registry()->ShouldPurgeOnShutdownForTesting(kKey));
 }
 
 // Tests that callbacks of storage operations are always called even when the
@@ -1263,6 +1282,7 @@
   const GURL kScope("http://www.example.com/scope/");
   const GURL kScriptUrl("http://www.example.com/script.js");
   const auto kOrigin(url::Origin::Create(kScope));
+  const storage::StorageKey kKey(kOrigin);
 
   scoped_refptr<ServiceWorkerRegistration> registration =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope, kScriptUrl,
@@ -1271,7 +1291,8 @@
   ASSERT_EQ(StoreRegistration(registration, registration->waiting_version()),
             blink::ServiceWorkerStatusCode::kOk);
 
-  GetStorageUsageForOriginResult result = GetStorageUsageForOrigin(kOrigin);
+  GetStorageUsageForStorageKeyResult result =
+      GetStorageUsageForStorageKey(kKey);
   ASSERT_EQ(result.status, blink::ServiceWorkerStatusCode::kOk);
 
   // This will disconnect mojo connection of the remote storage.
@@ -1279,9 +1300,9 @@
 
   // The connection should be recovered and inflight calls should be retried
   // automatically.
-  result = GetStorageUsageForOrigin(kOrigin);
+  result = GetStorageUsageForStorageKey(kKey);
   ASSERT_EQ(result.status, blink::ServiceWorkerStatusCode::kOk);
-  result = GetStorageUsageForOrigin(kOrigin);
+  result = GetStorageUsageForStorageKey(kKey);
   ASSERT_EQ(result.status, blink::ServiceWorkerStatusCode::kOk);
 }
 
@@ -1293,6 +1314,7 @@
   const GURL kScope1("https://www.example.com/scope/");
   const GURL kScriptUrl1("https://www.example.com/script.js");
   const auto kOrigin1(url::Origin::Create(kScope1));
+  const storage::StorageKey kKey1(kOrigin1);
   scoped_refptr<ServiceWorkerRegistration> registration1 =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope1, kScriptUrl1,
                                                 /*resource_id=*/1);
@@ -1300,6 +1322,7 @@
   const GURL kScope2("https://www2.example.com/scope/foo");
   const GURL kScriptUrl2("https://www2.example.com/foo/script.js");
   const auto kOrigin2(url::Origin::Create(kScope2));
+  const storage::StorageKey kKey2(kOrigin2);
   scoped_refptr<ServiceWorkerRegistration> registration2 =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope2, kScriptUrl2,
                                                 /*resource_id=*/2);
@@ -1355,7 +1378,7 @@
   {
     base::RunLoop loop1;
     registry()->FindRegistrationForClientUrl(
-        kScope1,
+        kScope1, kKey1,
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status,
                 scoped_refptr<ServiceWorkerRegistration> found_registration) {
@@ -1365,8 +1388,9 @@
             }));
 
     base::RunLoop loop2;
+    const GURL kNotInScope("http://www.example.com/not-in-scope");
     registry()->FindRegistrationForScope(
-        GURL("http://www.example.com/not-in-scope"),
+        kNotInScope, storage::StorageKey(url::Origin::Create(kNotInScope)),
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status,
                 scoped_refptr<ServiceWorkerRegistration> found_registration) {
@@ -1386,8 +1410,8 @@
   // Get both of the registrations by these APIs.
   {
     base::RunLoop loop1;
-    registry()->GetRegistrationsForOrigin(
-        kOrigin1,
+    registry()->GetRegistrationsForStorageKey(
+        kKey1,
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status,
                 const std::vector<scoped_refptr<ServiceWorkerRegistration>>&
@@ -1418,7 +1442,7 @@
   {
     base::RunLoop loop;
     registry()->DeleteRegistration(
-        registration2, kScope2.GetOrigin(),
+        registration2, kKey2,
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
           loop.Quit();
@@ -1435,7 +1459,7 @@
   {
     base::RunLoop loop1;
     registry()->UpdateToActiveState(
-        registration1->id(), kScope1.GetOrigin(),
+        registration1->id(), kKey1,
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
           loop1.Quit();
@@ -1443,7 +1467,7 @@
 
     base::RunLoop loop2;
     registry()->UpdateLastUpdateCheckTime(
-        registration1->id(), kScope1.GetOrigin(), base::Time::Now(),
+        registration1->id(), kKey1, base::Time::Now(),
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
           loop2.Quit();
@@ -1451,7 +1475,7 @@
 
     base::RunLoop loop3;
     registry()->UpdateNavigationPreloadEnabled(
-        registration1->id(), kScope1.GetOrigin(), /*enable=*/true,
+        registration1->id(), kKey1, /*enable=*/true,
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
           loop3.Quit();
@@ -1459,7 +1483,7 @@
 
     base::RunLoop loop4;
     registry()->UpdateNavigationPreloadHeader(
-        registration1->id(), kScope1.GetOrigin(), "header",
+        registration1->id(), kKey1, "header",
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
           loop4.Quit();
@@ -1509,7 +1533,8 @@
 
   base::RunLoop loop1;
   registry()->FindRegistrationForId(
-      registration_id1, url::Origin::Create(origin1.GetOrigin()),
+      registration_id1,
+      storage::StorageKey(url::Origin::Create(origin1.GetOrigin())),
       base::BindLambdaForTesting(
           [&](blink::ServiceWorkerStatusCode status,
               scoped_refptr<ServiceWorkerRegistration> found_registration) {
@@ -1543,6 +1568,7 @@
 
   const GURL kScope("http://www.example.com/scope/");
   const GURL kScriptUrl("http://www.example.com/script.js");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
 
   scoped_refptr<ServiceWorkerRegistration> registration;
 
@@ -1569,7 +1595,7 @@
   {
     base::RunLoop loop;
     registry()->CreateNewVersion(
-        registration, kScriptUrl, blink::mojom::ScriptType::kClassic,
+        registration, kScriptUrl, blink::mojom::ScriptType::kClassic, kKey,
         base::BindLambdaForTesting(
             [&](scoped_refptr<ServiceWorkerVersion> new_version) {
               EXPECT_EQ(new_version->script_url(), kScriptUrl);
@@ -1590,6 +1616,7 @@
   const GURL kScope1("http://www.example.com/scope/");
   const GURL kScriptUrl1("http://www.example.com/script.js");
   const auto kOrigin1(url::Origin::Create(kScope1));
+  const storage::StorageKey kKey1(kOrigin1);
   scoped_refptr<ServiceWorkerRegistration> registration1 =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope1, kScriptUrl1,
                                                 /*resource_id=*/1);
@@ -1599,6 +1626,7 @@
   const GURL kScope2("http://www.example.com/scope/foo");
   const GURL kScriptUrl2("http://www.example.com/fooscript.js");
   const auto kOrigin2(url::Origin::Create(kScope2));
+  const storage::StorageKey kKey2(kOrigin2);
   scoped_refptr<ServiceWorkerRegistration> registration2 =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope2, kScriptUrl2,
                                                 /*resource_id=*/2);
@@ -1609,7 +1637,7 @@
   {
     base::RunLoop loop1;
     registry()->StoreUserData(
-        registration1->id(), kOrigin1,
+        registration1->id(), kKey1,
         {{"key1", "value1"}, {"prefixed_key1", "prefixed_value1"}},
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
@@ -1618,7 +1646,7 @@
 
     base::RunLoop loop2;
     registry()->StoreUserData(
-        registration2->id(), kOrigin2,
+        registration2->id(), kKey2,
         {{"key2", "value2"}, {"prefixed_key2", "prefixed_value2"}},
         base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
           EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kOk);
@@ -1813,6 +1841,7 @@
   const GURL kScope("http://www.example.com/scope/");
   const GURL kScriptUrl("http://www.example.com/script.js");
   const auto kOrigin(url::Origin::Create(kScope));
+  const storage::StorageKey kKey(kOrigin);
 
   scoped_refptr<ServiceWorkerRegistration> registration =
       CreateServiceWorkerRegistrationAndVersion(context(), kScope, kScriptUrl,
@@ -1820,7 +1849,7 @@
 
   ASSERT_EQ(StoreRegistration(registration, registration->waiting_version()),
             blink::ServiceWorkerStatusCode::kOk);
-  EXPECT_FALSE(registry()->ShouldPurgeOnShutdownForTesting(kOrigin));
+  EXPECT_FALSE(registry()->ShouldPurgeOnShutdownForTesting(kKey));
 
   // Update storage policy to mark the origin should be purged on shutdown.
   special_storage_policy()->AddSessionOnly(kOrigin.GetURL());
@@ -1832,7 +1861,7 @@
   // All Mojo calls must be done at this point.
   EXPECT_EQ(inflight_call_count(), 0U);
 
-  EXPECT_TRUE(registry()->ShouldPurgeOnShutdownForTesting(kOrigin));
+  EXPECT_TRUE(registry()->ShouldPurgeOnShutdownForTesting(kKey));
 }
 
 // Regression test for https://crbug.com/1165784.
@@ -1853,8 +1882,8 @@
 
   {
     base::RunLoop loop;
-    registry()->GetStorageUsageForOrigin(
-        url::Origin::Create(GURL("https://example.com/")),
+    registry()->GetStorageUsageForStorageKey(
+        storage::StorageKey(url::Origin::Create(GURL("https://example.com/"))),
         base::BindLambdaForTesting(
             [&](blink::ServiceWorkerStatusCode status, int64_t usage) {
               EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kErrorFailed);
@@ -1876,7 +1905,8 @@
        DestroyRegistryDuringInflightCall_StoreUserData) {
   base::RunLoop loop;
   registry()->StoreUserData(
-      /*registration_id=*/1, url::Origin::Create(GURL("https://example.com/")),
+      /*registration_id=*/1,
+      storage::StorageKey(url::Origin::Create(GURL("https://example.com/"))),
       {{"key", "value"}},
       base::BindLambdaForTesting([&](blink::ServiceWorkerStatusCode status) {
         EXPECT_EQ(status, blink::ServiceWorkerStatusCode::kErrorFailed);
@@ -1997,6 +2027,7 @@
 
 TEST_F(ServiceWorkerRegistryOriginTrialsTest, FromMainScript) {
   const GURL kScope("https://valid.example.com/scope");
+  const storage::StorageKey kKey(url::Origin::Create(kScope));
   const GURL kScript("https://valid.example.com/script.js");
   const int64_t kRegistrationId = 1;
   const int64_t kVersionId = 1;
@@ -2084,7 +2115,7 @@
 
   scoped_refptr<ServiceWorkerRegistration> found_registration;
   EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            FindRegistrationForClientUrl(kScope, found_registration));
+            FindRegistrationForClientUrl(kScope, kKey, found_registration));
   ASSERT_TRUE(found_registration->active_version());
   const blink::TrialTokenValidator::FeatureToTokensMap& found_tokens =
       *found_registration->active_version()->origin_trial_tokens();
@@ -2133,8 +2164,9 @@
     version_id_ = version->version_id();
 
     // Add the resources ids to the uncommitted list.
-    registry()->StoreUncommittedResourceId(resource_id1_, scope_);
-    registry()->StoreUncommittedResourceId(resource_id2_, scope_);
+    storage::StorageKey key(url::Origin::Create(scope_));
+    registry()->StoreUncommittedResourceId(resource_id1_, key);
+    registry()->StoreUncommittedResourceId(resource_id2_, key);
     EnsureRemoteCallsAreExecuted();
 
     std::vector<int64_t> verify_ids = GetUncommittedResourceIds();
@@ -2257,8 +2289,10 @@
   // list.
   base::RunLoop loop;
   storage_control()->SetPurgingCompleteCallbackForTest(loop.QuitClosure());
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            DeleteRegistration(registration_, scope_.GetOrigin()));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      DeleteRegistration(registration_,
+                         storage::StorageKey(url::Origin::Create(scope_))));
   // At this point registration_->waiting_version() has a remote reference, so
   // the resources should be in the purgeable list.
   EXPECT_EQ(2u, GetPurgeableResourceIds().size());
@@ -2277,8 +2311,10 @@
   // Deleting the registration should result in the resources being added to the
   // purgeable list and then doomed in the disk cache and removed from that
   // list.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            DeleteRegistration(registration_, scope_.GetOrigin()));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      DeleteRegistration(registration_,
+                         storage::StorageKey(url::Origin::Create(scope_))));
   EXPECT_EQ(2u, GetPurgeableResourceIds().size());
 
   EXPECT_TRUE(VerifyBasicResponse(storage_control(), resource_id1_, false));
@@ -2299,9 +2335,10 @@
   // Promote the worker to active and add a controllee.
   registration_->SetActiveVersion(registration_->waiting_version());
   registration_->active_version()->SetStatus(ServiceWorkerVersion::ACTIVATED);
-  registry()->UpdateToActiveState(registration_->id(),
-                                  registration_->scope().GetOrigin(),
-                                  base::DoNothing());
+  registry()->UpdateToActiveState(
+      registration_->id(),
+      storage::StorageKey(url::Origin::Create(registration_->scope())),
+      base::DoNothing());
   ServiceWorkerRemoteContainerEndpoint remote_endpoint;
   base::WeakPtr<ServiceWorkerContainerHost> container_host =
       CreateContainerHostForWindow(33 /* dummy render process id */,
@@ -2311,8 +2348,10 @@
 
   // Deleting the registration should move the resources to the purgeable list
   // but keep them available.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            DeleteRegistration(registration_, scope_.GetOrigin()));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      DeleteRegistration(registration_,
+                         storage::StorageKey(url::Origin::Create(scope_))));
   EXPECT_EQ(2u, GetPurgeableResourceIds().size());
 
   EXPECT_TRUE(VerifyBasicResponse(storage_control(), resource_id1_, true));
@@ -2336,7 +2375,7 @@
   registration_->SetActiveVersion(registration_->waiting_version());
   registration_->active_version()->SetStatus(ServiceWorkerVersion::ACTIVATED);
   registry()->UpdateToActiveState(registration_->id(),
-                                  registration_->scope().GetOrigin(),
+                                  storage::StorageKey(registration_->origin()),
                                   base::DoNothing());
   ServiceWorkerRemoteContainerEndpoint remote_endpoint;
   base::WeakPtr<ServiceWorkerContainerHost> container_host =
@@ -2389,7 +2428,7 @@
   // Promote the worker to active worker and add a controllee.
   registration_->SetActiveVersion(registration_->waiting_version());
   registry()->UpdateToActiveState(registration_->id(),
-                                  registration_->scope().GetOrigin(),
+                                  storage::StorageKey(registration_->origin()),
                                   base::DoNothing());
 
   // Make an updated registration.
@@ -2429,7 +2468,7 @@
   registration_->active_version()->SetStatus(ServiceWorkerVersion::ACTIVATED);
   registration_->SetWaitingVersion(nullptr);
   registry()->UpdateToActiveState(registration_->id(),
-                                  registration_->scope().GetOrigin(),
+                                  storage::StorageKey(registration_->origin()),
                                   base::DoNothing());
   ServiceWorkerRemoteContainerEndpoint remote_endpoint;
   base::WeakPtr<ServiceWorkerContainerHost> container_host =
@@ -2440,8 +2479,10 @@
 
   // Deleting the registration should move the resources to the purgeable list
   // but keep them available.
-  EXPECT_EQ(blink::ServiceWorkerStatusCode::kOk,
-            DeleteRegistration(registration_, scope_.GetOrigin()));
+  EXPECT_EQ(
+      blink::ServiceWorkerStatusCode::kOk,
+      DeleteRegistration(registration_,
+                         storage::StorageKey(url::Origin::Create(scope_))));
   std::vector<int64_t> verify_ids = GetPurgeableResourceIds();
   EXPECT_EQ(2u, verify_ids.size());
 
@@ -2450,8 +2491,9 @@
 
   // Also add an uncommitted resource.
   int64_t kStaleUncommittedResourceId = GetNewResourceIdSync(storage_control());
-  registry()->StoreUncommittedResourceId(kStaleUncommittedResourceId,
-                                         registration_->scope());
+  registry()->StoreUncommittedResourceId(
+      kStaleUncommittedResourceId,
+      storage::StorageKey(registration_->origin()));
   EnsureRemoteCallsAreExecuted();
   verify_ids = GetUncommittedResourceIds();
   EXPECT_EQ(1u, verify_ids.size());
@@ -2468,8 +2510,8 @@
   storage_control()->SetPurgingCompleteCallbackForTest(loop.QuitClosure());
   int64_t kNewResourceId = GetNewResourceIdSync(storage_control());
   WriteBasicResponse(storage_control(), kNewResourceId);
-  registry()->StoreUncommittedResourceId(kNewResourceId,
-                                         registration_->scope());
+  registry()->StoreUncommittedResourceId(
+      kNewResourceId, storage::StorageKey(registration_->origin()));
   loop.Run();
 
   // The stale resources should be purged, but the new resource should persist.
@@ -2500,7 +2542,8 @@
 
   // Delete the registration. The resources should be on the purgeable list but
   // should not be purged yet.
-  ASSERT_EQ(DeleteRegistration(registration_, scope_.GetOrigin()),
+  ASSERT_EQ(DeleteRegistration(registration_, storage::StorageKey(
+                                                  url::Origin::Create(scope_))),
             blink::ServiceWorkerStatusCode::kOk);
 
   EXPECT_THAT(GetPurgeableResourceIds(), testing::UnorderedElementsAreArray(
@@ -2536,7 +2579,8 @@
 TEST_F(ServiceWorkerRegistryResourceTest, RetryInflightCalls_Resources) {
   const int64_t kResourceId = GetNewResourceIdSync(storage_control());
 
-  registry()->StoreUncommittedResourceId(kResourceId, registration_->scope());
+  registry()->StoreUncommittedResourceId(
+      kResourceId, storage::StorageKey(registration_->origin()));
   EXPECT_EQ(inflight_call_count(), 1U);
 
   helper()->SimulateStorageRestartForTesting();
diff --git a/content/browser/service_worker/service_worker_script_cache_map.cc b/content/browser/service_worker/service_worker_script_cache_map.cc
index b024723..f215974 100644
--- a/content/browser/service_worker/service_worker_script_cache_map.cc
+++ b/content/browser/service_worker/service_worker_script_cache_map.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/check_op.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/service_worker_consts.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_version.h"
@@ -41,8 +42,8 @@
     return;  // Our storage has been wiped via DeleteAndStartOver.
   resource_map_[url] =
       storage::mojom::ServiceWorkerResourceRecord::New(resource_id, url, -1);
-  context_->registry()->StoreUncommittedResourceId(resource_id,
-                                                   owner_->scope().GetOrigin());
+  context_->registry()->StoreUncommittedResourceId(
+      resource_id, storage::StorageKey(url::Origin::Create(owner_->scope())));
 }
 
 void ServiceWorkerScriptCacheMap::NotifyFinishedCaching(
diff --git a/content/browser/service_worker/service_worker_test_utils.cc b/content/browser/service_worker/service_worker_test_utils.cc
index f1b396f..4f6fcd3d 100644
--- a/content/browser/service_worker/service_worker_test_utils.cc
+++ b/content/browser/service_worker/service_worker_test_utils.cc
@@ -384,6 +384,8 @@
   return registration;
 }
 
+// TODO(http://crbug.com/1199077): Update after ServiceWorkerVersion supports
+// StorageKey.
 scoped_refptr<ServiceWorkerVersion> CreateNewServiceWorkerVersion(
     ServiceWorkerRegistry* registry,
     scoped_refptr<ServiceWorkerRegistration> registration,
@@ -395,6 +397,7 @@
   base::RunLoop run_loop(base::RunLoop::Type::kNestableTasksAllowed);
   registry->CreateNewVersion(
       std::move(registration), script_url, script_type,
+      storage::StorageKey(url::Origin::Create(script_url)),
       base::BindLambdaForTesting(
           [&](scoped_refptr<ServiceWorkerVersion> new_version) {
             version = std::move(new_version);
diff --git a/content/browser/service_worker/service_worker_unregister_job.cc b/content/browser/service_worker/service_worker_unregister_job.cc
index 4a92247..753e82c 100644
--- a/content/browser/service_worker/service_worker_unregister_job.cc
+++ b/content/browser/service_worker/service_worker_unregister_job.cc
@@ -8,6 +8,7 @@
 
 #include "base/bind.h"
 #include "base/memory/weak_ptr.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/service_worker_context_core.h"
 #include "content/browser/service_worker/service_worker_job_coordinator.h"
 #include "content/browser/service_worker/service_worker_registration.h"
@@ -35,8 +36,9 @@
 
 void ServiceWorkerUnregisterJob::Start() {
   context_->registry()->FindRegistrationForScope(
-      scope_, base::BindOnce(&ServiceWorkerUnregisterJob::OnRegistrationFound,
-                             weak_factory_.GetWeakPtr()));
+      scope_, storage::StorageKey(url::Origin::Create(scope_)),
+      base::BindOnce(&ServiceWorkerUnregisterJob::OnRegistrationFound,
+                     weak_factory_.GetWeakPtr()));
 }
 
 void ServiceWorkerUnregisterJob::Abort() {
diff --git a/content/browser/service_worker/service_worker_version.cc b/content/browser/service_worker/service_worker_version.cc
index 0eea147..4f10416 100644
--- a/content/browser/service_worker/service_worker_version.cc
+++ b/content/browser/service_worker/service_worker_version.cc
@@ -27,6 +27,7 @@
 #include "base/threading/thread_task_runner_handle.h"
 #include "base/time/default_clock.h"
 #include "base/time/default_tick_clock.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/bad_message.h"
 #include "content/browser/child_process_security_policy_impl.h"
 #include "content/browser/renderer_host/back_forward_cache_can_store_document_result.h"
@@ -464,7 +465,7 @@
   // get associated with it in
   // ServiceWorkerHost::CompleteStartWorkerPreparation.
   context_->registry()->FindRegistrationForId(
-      registration_id_, origin_,
+      registration_id_, storage::StorageKey(origin_),
       base::BindOnce(
           &ServiceWorkerVersion::DidEnsureLiveRegistrationForStartWorker,
           weak_factory_.GetWeakPtr(), purpose, status_,
@@ -582,7 +583,7 @@
   if (!context_)
     return;
   context_->registry()->FindRegistrationForId(
-      registration_id_, origin_,
+      registration_id_, storage::StorageKey(origin_),
       base::BindOnce(&ServiceWorkerVersion::FoundRegistrationForUpdate,
                      weak_factory_.GetWeakPtr()));
 }
diff --git a/content/browser/service_worker/service_worker_version_browsertest.cc b/content/browser/service_worker/service_worker_version_browsertest.cc
index 16a976e..a122d6b8 100644
--- a/content/browser/service_worker/service_worker_version_browsertest.cc
+++ b/content/browser/service_worker/service_worker_version_browsertest.cc
@@ -24,6 +24,7 @@
 #include "base/test/bind.h"
 #include "base/time/time.h"
 #include "build/build_config.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/service_worker/embedded_worker_instance.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/service_worker_container_host.h"
@@ -503,14 +504,14 @@
   }
 
   void FindRegistrationForId(int64_t id,
-                             const url::Origin& origin,
+                             const storage::StorageKey& key,
                              blink::ServiceWorkerStatusCode expected_status) {
     ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI));
     blink::ServiceWorkerStatusCode status =
         blink::ServiceWorkerStatusCode::kErrorFailed;
     base::RunLoop run_loop;
     wrapper()->context()->registry()->FindRegistrationForId(
-        id, origin,
+        id, key,
         CreateFindRegistrationReceiver(BrowserThread::UI,
                                        run_loop.QuitClosure(), &status));
     run_loop.Run();
@@ -868,7 +869,8 @@
   EXPECT_EQ(ServiceWorkerVersion::REDUNDANT, version_->status());
 
   // The registration should be deleted from storage.
-  FindRegistrationForId(registration_->id(), registration_->origin(),
+  FindRegistrationForId(registration_->id(),
+                        storage::StorageKey(registration_->origin()),
                         blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_TRUE(registration_->is_uninstalled());
 }
@@ -910,7 +912,8 @@
 
   // The whole registration should be deleted from storage even though the
   // waiting version was not the broken one.
-  FindRegistrationForId(registration_->id(), registration_->origin(),
+  FindRegistrationForId(registration_->id(),
+                        storage::StorageKey(registration_->origin()),
                         blink::ServiceWorkerStatusCode::kErrorNotFound);
   EXPECT_TRUE(registration_->is_uninstalled());
 }
diff --git a/content/browser/service_worker/service_worker_version_unittest.cc b/content/browser/service_worker/service_worker_version_unittest.cc
index 8f61829..02521228 100644
--- a/content/browser/service_worker/service_worker_version_unittest.cc
+++ b/content/browser/service_worker/service_worker_version_unittest.cc
@@ -20,6 +20,7 @@
 #include "base/test/scoped_feature_list.h"
 #include "base/test/simple_test_tick_clock.h"
 #include "base/time/time.h"
+#include "components/services/storage/public/cpp/storage_key.h"
 #include "content/browser/renderer_host/frame_tree_node.h"
 #include "content/browser/service_worker/embedded_worker_status.h"
 #include "content/browser/service_worker/embedded_worker_test_helper.h"
@@ -348,7 +349,8 @@
   base::Optional<blink::ServiceWorkerStatusCode> status;
   base::RunLoop run_loop;
   helper_->context()->registry()->DeleteRegistration(
-      registration_, registration_->scope().GetOrigin(),
+      registration_,
+      storage::StorageKey(url::Origin::Create(registration_->scope())),
       ReceiveServiceWorkerStatus(&status, run_loop.QuitClosure()));
   run_loop.Run();
   ASSERT_EQ(blink::ServiceWorkerStatusCode::kOk, status.value());