Rename CookiePartitionKeychain to CookiePartitionKeyCollection.

Keychain has a certain meaning for iOS and macOS.
net::CookiePartitionKeychain class stores a collection of keys and the
term keychain in its name is not related to iOS or macOS keychains.
Rename net::CookiePartitionKeychain class to
net::CookiePartitionKeyCollection to prevent a possible confusion.

Fixed: 1268880
Change-Id: I62b762107388baf35fdfa607a55c1a64dc2a3ac3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3291526
Reviewed-by: Shuran Huang <[email protected]>
Reviewed-by: Richard Coles <[email protected]>
Reviewed-by: Will Harris <[email protected]>
Reviewed-by: Fabrice de Gans <[email protected]>
Reviewed-by: Maks Orlovich <[email protected]>
Reviewed-by: Dylan Cutler <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Reviewed-by: Bo Liu <[email protected]>
Reviewed-by: Sylvain Defresne <[email protected]>
Commit-Queue: Aykut Bulut <[email protected]>
Cr-Commit-Position: refs/heads/main@{#950090}
diff --git a/net/BUILD.gn b/net/BUILD.gn
index ac7e806..c50c247 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -417,8 +417,8 @@
     "cookies/cookie_options.h",
     "cookies/cookie_partition_key.cc",
     "cookies/cookie_partition_key.h",
-    "cookies/cookie_partition_keychain.cc",
-    "cookies/cookie_partition_keychain.h",
+    "cookies/cookie_partition_key_collection.cc",
+    "cookies/cookie_partition_key_collection.h",
     "cookies/cookie_store.cc",
     "cookies/cookie_store.h",
     "cookies/cookie_util.cc",
@@ -4196,8 +4196,8 @@
     "cookies/cookie_inclusion_status_unittest.cc",
     "cookies/cookie_monster_unittest.cc",
     "cookies/cookie_options_unittest.cc",
+    "cookies/cookie_partition_key_collection_unittest.cc",
     "cookies/cookie_partition_key_unittest.cc",
-    "cookies/cookie_partition_keychain_unittest.cc",
     "cookies/cookie_util_unittest.cc",
     "cookies/parsed_cookie_unittest.cc",
     "cookies/site_for_cookies_unittest.cc",
diff --git a/net/cookies/cookie_monster.cc b/net/cookies/cookie_monster.cc
index 074f14a..c39c0da5 100644
--- a/net/cookies/cookie_monster.cc
+++ b/net/cookies/cookie_monster.cc
@@ -145,7 +145,8 @@
 //
 // This returns true if the |list| of key should include unpartitioned cookie in
 // GetCookie...().
-bool IncludeUnpartitionedCookies(const net::CookiePartitionKeychain& list) {
+bool IncludeUnpartitionedCookies(
+    const net::CookiePartitionKeyCollection& list) {
   if (list.IsEmpty() || list.ContainsAllKeys())
     return true;
 
@@ -429,7 +430,7 @@
 void CookieMonster::GetCookieListWithOptionsAsync(
     const GURL& url,
     const CookieOptions& options,
-    const CookiePartitionKeychain& cookie_partition_keychain,
+    const CookiePartitionKeyCollection& cookie_partition_key_collection,
     GetCookieListCallback callback) {
   DoCookieCallbackForURL(
       base::BindOnce(
@@ -437,7 +438,7 @@
           // the callback on |*this|, so the callback will not outlive
           // the object.
           &CookieMonster::GetCookieListWithOptions, base::Unretained(this), url,
-          options, cookie_partition_keychain, std::move(callback)),
+          options, cookie_partition_key_collection, std::move(callback)),
       url);
 }
 
@@ -624,7 +625,7 @@
 void CookieMonster::GetCookieListWithOptions(
     const GURL& url,
     const CookieOptions& options,
-    const CookiePartitionKeychain& cookie_partition_keychain,
+    const CookiePartitionKeyCollection& cookie_partition_key_collection,
     GetCookieListCallback callback) {
   DCHECK(thread_checker_.CalledOnValidThread());
 
@@ -632,14 +633,14 @@
   CookieAccessResultList excluded_cookies;
   if (HasCookieableScheme(url)) {
     std::vector<CanonicalCookie*> cookie_ptrs;
-    if (IncludeUnpartitionedCookies(cookie_partition_keychain)) {
+    if (IncludeUnpartitionedCookies(cookie_partition_key_collection)) {
       cookie_ptrs = FindCookiesForRegistryControlledHost(url);
     } else {
-      DCHECK(!cookie_partition_keychain.IsEmpty());
+      DCHECK(!cookie_partition_key_collection.IsEmpty());
     }
 
-    if (!cookie_partition_keychain.IsEmpty()) {
-      if (cookie_partition_keychain.ContainsAllKeys()) {
+    if (!cookie_partition_key_collection.IsEmpty()) {
+      if (cookie_partition_key_collection.ContainsAllKeys()) {
         for (const auto& it : partitioned_cookies_) {
           std::vector<CanonicalCookie*> partitioned_cookie_ptrs =
               FindPartitionedCookiesForRegistryControlledHost(it.first, url);
@@ -648,7 +649,7 @@
         }
       } else {
         for (const CookiePartitionKey& key :
-             cookie_partition_keychain.PartitionKeys()) {
+             cookie_partition_key_collection.PartitionKeys()) {
           std::vector<CanonicalCookie*> partitioned_cookie_ptrs =
               FindPartitionedCookiesForRegistryControlledHost(key, url);
           cookie_ptrs.insert(cookie_ptrs.end(), partitioned_cookie_ptrs.begin(),
diff --git a/net/cookies/cookie_monster.h b/net/cookies/cookie_monster.h
index 324c1d4..98ff48a 100644
--- a/net/cookies/cookie_monster.h
+++ b/net/cookies/cookie_monster.h
@@ -181,7 +181,7 @@
                                SetCookiesCallback callback) override;
   void GetCookieListWithOptionsAsync(const GURL& url,
                                      const CookieOptions& options,
-                                     const CookiePartitionKeychain& s,
+                                     const CookiePartitionKeyCollection& s,
                                      GetCookieListCallback callback) override;
   void GetAllCookiesAsync(GetAllCookiesCallback callback) override;
   void GetAllCookiesWithAccessSemanticsAsync(
@@ -380,7 +380,7 @@
   void GetCookieListWithOptions(
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain,
+      const CookiePartitionKeyCollection& cookie_partition_key_collection,
       GetCookieListCallback callback);
 
   void DeleteAllCreatedInTimeRange(
diff --git a/net/cookies/cookie_monster_perftest.cc b/net/cookies/cookie_monster_perftest.cc
index 4acddef..d6851a13 100644
--- a/net/cookies/cookie_monster_perftest.cc
+++ b/net/cookies/cookie_monster_perftest.cc
@@ -117,7 +117,7 @@
  public:
   const CookieList& GetCookieList(CookieMonster* cm, const GURL& gurl) {
     cm->GetCookieListWithOptionsAsync(
-        gurl, options_, CookiePartitionKeychain(),
+        gurl, options_, CookiePartitionKeyCollection(),
         base::BindOnce(&GetCookieListCallback::Run, base::Unretained(this)));
     WaitForCallback();
     return cookie_list_;
diff --git a/net/cookies/cookie_monster_unittest.cc b/net/cookies/cookie_monster_unittest.cc
index ce361f90..73295df2 100644
--- a/net/cookies/cookie_monster_unittest.cc
+++ b/net/cookies/cookie_monster_unittest.cc
@@ -139,12 +139,12 @@
       CookieMonster* cm,
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain =
-          CookiePartitionKeychain()) {
+      const CookiePartitionKeyCollection& cookie_partition_key_collection =
+          CookiePartitionKeyCollection()) {
     DCHECK(cm);
     GetCookieListCallback callback;
-    cm->GetCookieListWithOptionsAsync(url, options, cookie_partition_keychain,
-                                      callback.MakeCallback());
+    cm->GetCookieListWithOptionsAsync(
+        url, options, cookie_partition_key_collection, callback.MakeCallback());
     callback.WaitUntilDone();
     return callback.cookies();
   }
@@ -153,12 +153,12 @@
       CookieMonster* cm,
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain =
-          CookiePartitionKeychain()) {
+      const CookiePartitionKeyCollection& cookie_partition_key_collection =
+          CookiePartitionKeyCollection()) {
     DCHECK(cm);
     GetCookieListCallback callback;
-    cm->GetCookieListWithOptionsAsync(url, options, cookie_partition_keychain,
-                                      callback.MakeCallback());
+    cm->GetCookieListWithOptionsAsync(
+        url, options, cookie_partition_key_collection, callback.MakeCallback());
     callback.WaitUntilDone();
     return callback.excluded_cookies();
   }
@@ -918,7 +918,7 @@
                             cookie_partition_key));
       std::string cookies =
           this->GetCookies(cm.get(), https_www_foo_.url(),
-                           CookiePartitionKeychain(cookie_partition_key));
+                           CookiePartitionKeyCollection(cookie_partition_key));
       EXPECT_NE(cookies.find(cookie), std::string::npos);
       EXPECT_LE(CountInString(cookies, '='), max_cookies);
     }
@@ -1059,7 +1059,7 @@
   GetCookieListCallback call1;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), call1.MakeCallback());
+      CookiePartitionKeyCollection(), call1.MakeCallback());
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(call1.was_run());
 
@@ -1072,7 +1072,7 @@
   GetCookieListCallback call2;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), call2.MakeCallback());
+      CookiePartitionKeyCollection(), call2.MakeCallback());
   // Already ready, no need for second load.
   EXPECT_THAT(call2.cookies(), MatchesCookieLine("X=1"));
   EXPECT_EQ("", TakeCommandSummary());
@@ -1171,7 +1171,7 @@
   GetCookieListCallback call1;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), call1.MakeCallback());
+      CookiePartitionKeyCollection(), call1.MakeCallback());
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(call1.was_run());
 
@@ -1183,7 +1183,7 @@
   GetCookieListCallback call2;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), call2.MakeCallback());
+      CookiePartitionKeyCollection(), call2.MakeCallback());
   EXPECT_TRUE(call2.was_run());
   EXPECT_THAT(call2.cookies(), MatchesCookieLine("X=1"));
   EXPECT_EQ("", TakeCommandSummary());
@@ -1197,7 +1197,7 @@
   GetCookieListCallback call1;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), call1.MakeCallback());
+      CookiePartitionKeyCollection(), call1.MakeCallback());
   base::RunLoop().RunUntilIdle();
   EXPECT_FALSE(call1.was_run());
 
@@ -1209,7 +1209,7 @@
   GetCookieListCallback call2;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), call2.MakeCallback());
+      CookiePartitionKeyCollection(), call2.MakeCallback());
   EXPECT_TRUE(call2.was_run());
   EXPECT_THAT(call2.cookies(), MatchesCookieLine("X=1"));
   EXPECT_EQ("", TakeCommandSummary());
@@ -1363,7 +1363,7 @@
   base::RunLoop run_loop;
   cookie_monster_->GetCookieListWithOptionsAsync(
       http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(),
+      CookiePartitionKeyCollection(),
       base::BindLambdaForTesting(
           [&](const CookieAccessResultList& cookies,
               const CookieAccessResultList& excluded_list) {
@@ -1380,7 +1380,7 @@
             // before it.
             cookie_monster_->GetCookieListWithOptionsAsync(
                 http_www_foo_.url(), CookieOptions::MakeAllInclusive(),
-                CookiePartitionKeychain(),
+                CookiePartitionKeyCollection(),
                 get_cookie_list_callback_deferred.MakeCallback());
 
             run_loop.Quit();
@@ -1449,9 +1449,9 @@
       "__Host-" + std::string(kValidCookieLine) + "; partitioned; secure",
       cookie_partition_key));
   EXPECT_EQ(1u, DeleteAll(cm.get()));
-  EXPECT_EQ(
-      "", GetCookiesWithOptions(cm.get(), http_www_foo_.url(), options,
-                                CookiePartitionKeychain(cookie_partition_key)));
+  EXPECT_EQ("", GetCookiesWithOptions(
+                    cm.get(), http_www_foo_.url(), options,
+                    CookiePartitionKeyCollection(cookie_partition_key)));
   EXPECT_EQ(2u, store->commands().size());
 }
 
@@ -1901,19 +1901,19 @@
   // Test reading partitioned cookies for a single partition.
   EXPECT_THAT(
       GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                          CookiePartitionKeychain(cookie_partition_key1)),
+                          CookiePartitionKeyCollection(cookie_partition_key1)),
       ElementsAre(MatchesCookieNameDomain("G", https_www_bar_.Format(".%D")),
                   MatchesCookieNameDomain("__Host-K", https_www_bar_.host())));
   EXPECT_THAT(
       GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                          CookiePartitionKeychain(cookie_partition_key2)),
+                          CookiePartitionKeyCollection(cookie_partition_key2)),
       ElementsAre(MatchesCookieNameDomain("G", https_www_bar_.Format(".%D")),
                   MatchesCookieNameDomain("__Host-M", https_www_bar_.host())));
 
   // Test reading partitioned cookies from multiple partitions.
   EXPECT_THAT(
       GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                          CookiePartitionKeychain(
+                          CookiePartitionKeyCollection(
                               {cookie_partition_key1, cookie_partition_key2})),
       ElementsAre(MatchesCookieNameDomain("G", https_www_bar_.Format(".%D")),
                   MatchesCookieNameDomain("__Host-K", https_www_bar_.host()),
@@ -1922,7 +1922,7 @@
   // Test reading partitioned cookies from every partition.
   EXPECT_THAT(
       GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                          CookiePartitionKeychain::ContainsAll()),
+                          CookiePartitionKeyCollection::ContainsAll()),
       ElementsAre(MatchesCookieNameDomain("G", https_www_bar_.Format(".%D")),
                   MatchesCookieNameDomain("__Host-K", https_www_bar_.host()),
                   MatchesCookieNameDomain("__Host-M", https_www_bar_.host()),
@@ -1931,7 +1931,7 @@
   // Test excluding partitioned cookies.
   EXPECT_THAT(
       GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                          CookiePartitionKeychain()),
+                          CookiePartitionKeyCollection()),
       ElementsAre(MatchesCookieNameDomain("G", https_www_bar_.Format(".%D"))));
 
   EXPECT_THAT(
@@ -1976,7 +1976,7 @@
   // Checking that excluded cookies get sent with their statuses with http
   // request.
   excluded_cookies = GetExcludedCookiesForURL(cm.get(), http_www_foo_.url(),
-                                              CookiePartitionKeychain());
+                                              CookiePartitionKeyCollection());
   iter = excluded_cookies.begin();
 
   ASSERT_TRUE(iter != excluded_cookies.end());
@@ -2015,7 +2015,7 @@
 
   // Check that no excluded cookies are sent with secure request
   excluded_cookies = GetExcludedCookiesForURL(cm.get(), https_www_foo_.url(),
-                                              CookiePartitionKeychain());
+                                              CookiePartitionKeyCollection());
   iter = excluded_cookies.begin();
 
   EXPECT_TRUE(excluded_cookies.empty());
@@ -2073,7 +2073,7 @@
       CreateAndSetCookie(cm.get(), http_www_foo_.url(), "E=F;", options));
 
   CookieAccessResultList excluded_cookies = GetExcludedCookiesForURL(
-      cm.get(), www_foo_foo_.url(), CookiePartitionKeychain());
+      cm.get(), www_foo_foo_.url(), CookiePartitionKeyCollection());
   auto it = excluded_cookies.begin();
 
   ASSERT_TRUE(it != excluded_cookies.end());
@@ -2085,7 +2085,7 @@
   ASSERT_TRUE(++it == excluded_cookies.end());
 
   excluded_cookies = GetExcludedCookiesForURL(cm.get(), www_foo_bar_.url(),
-                                              CookiePartitionKeychain());
+                                              CookiePartitionKeyCollection());
   it = excluded_cookies.begin();
 
   ASSERT_TRUE(it != excluded_cookies.end());
@@ -2183,8 +2183,9 @@
                         "__Host-C=D; secure; path=/; partitioned",
                         cookie_partition_key));
 
-  cookies = GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                                CookiePartitionKeychain(cookie_partition_key));
+  cookies =
+      GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
+                          CookiePartitionKeyCollection(cookie_partition_key));
   EXPECT_EQ(2u, cookies.size());
 
   EXPECT_TRUE(SetCookie(cm.get(), https_www_bar_.url(),
@@ -2192,8 +2193,9 @@
                         "01-Jan-1970 00:00:00 GMT",
                         cookie_partition_key));
 
-  cookies = GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
-                                CookiePartitionKeychain(cookie_partition_key));
+  cookies =
+      GetAllCookiesForURL(cm.get(), https_www_bar_.url(),
+                          CookiePartitionKeyCollection(cookie_partition_key));
   EXPECT_EQ(1u, cookies.size());
 }
 
@@ -2306,7 +2308,7 @@
 
   EXPECT_EQ("__Host-Z=a",
             GetCookies(cm.get(), GURL("https://www.bar.com/"),
-                       CookiePartitionKeychain(cookie_partition_key)));
+                       CookiePartitionKeyCollection(cookie_partition_key)));
 
   // Verify that the PersistentCookieStore was told to kill the 2
   // duplicates.
@@ -2442,11 +2444,11 @@
   EXPECT_EQ("dom_path_2=B; host_path_2=B; dom_2=B; host_2=B; sec_host=B",
             GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
                                       std::string("/dir1/dir2/xxx"))));
-  EXPECT_EQ(
-      "dom_2=B; host_2=B; sec_host=B; __Host-pc_2=B",
-      GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure),
-                 CookiePartitionKeychain(CookiePartitionKey::FromURLForTesting(
-                     GURL(kTopLevelDomainPlus1)))));
+  EXPECT_EQ("dom_2=B; host_2=B; sec_host=B; __Host-pc_2=B",
+            GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure),
+                       CookiePartitionKeyCollection(
+                           CookiePartitionKey::FromURLForTesting(
+                               GURL(kTopLevelDomainPlus1)))));
 }
 
 // Mainly a test of GetEffectiveDomain, or more specifically, of the
@@ -2781,7 +2783,7 @@
 
   GetCookieListCallback get_cookie_list_callback;
   cm->GetCookieListWithOptionsAsync(kUrl, CookieOptions::MakeAllInclusive(),
-                                    CookiePartitionKeychain(),
+                                    CookiePartitionKeyCollection(),
                                     get_cookie_list_callback.MakeCallback());
 
   // Only the main load should have been queued.
@@ -3238,9 +3240,9 @@
   std::unique_ptr<CookieMonster> cm(
       new CookieMonster(store.get(), net::NetLog::Get()));
 
-  EXPECT_EQ(
-      "foo=bar; hello=world",
-      GetCookies(cm.get(), url, CookiePartitionKeychain(cookie_partition_key)));
+  EXPECT_EQ("foo=bar; hello=world",
+            GetCookies(cm.get(), url,
+                       CookiePartitionKeyCollection(cookie_partition_key)));
 }
 
 // Test that cookie source schemes are histogrammed correctly.
@@ -3451,7 +3453,7 @@
     GetCookieListCallback callback;
     cm->GetCookieListWithOptionsAsync(
         insecure_localhost, CookieOptions::MakeAllInclusive(),
-        CookiePartitionKeychain(), callback.MakeCallback());
+        CookiePartitionKeyCollection(), callback.MakeCallback());
     callback.WaitUntilDone();
     EXPECT_EQ(2u, callback.cookies_with_access_results().size());
     for (const auto& cookie_item : callback.cookies_with_access_results()) {
@@ -3469,7 +3471,7 @@
     GetCookieListCallback callback;
     cm->GetCookieListWithOptionsAsync(
         secure_localhost, CookieOptions::MakeAllInclusive(),
-        CookiePartitionKeychain(), callback.MakeCallback());
+        CookiePartitionKeyCollection(), callback.MakeCallback());
     callback.WaitUntilDone();
     EXPECT_EQ(2u, callback.cookies_with_access_results().size());
     for (const auto& cookie_item : callback.cookies_with_access_results()) {
@@ -3622,9 +3624,9 @@
   EXPECT_TRUE(access_result.status.HasExactlyExclusionReasonsForTesting(
       {CookieInclusionStatus::EXCLUDE_OVERWRITE_HTTP_ONLY}));
   EXPECT_THAT(
-      GetCookiesWithOptions(cm.get(), https_www_foo_.url(),
-                            CookieOptions::MakeAllInclusive(),
-                            CookiePartitionKeychain(cookie_partition_key1)),
+      GetCookiesWithOptions(
+          cm.get(), https_www_foo_.url(), CookieOptions::MakeAllInclusive(),
+          CookiePartitionKeyCollection(cookie_partition_key1)),
       ::testing::HasSubstr("A=B"));
 }
 
@@ -4362,7 +4364,7 @@
   GetCookieListCallback callback_get;
   cm.GetCookieListWithOptionsAsync(
       GURL("http://b.com/"), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(), callback_get.MakeCallback());
+      CookiePartitionKeyCollection(), callback_get.MakeCallback());
 
   // Now go through the store commands, and execute individual loads.
   const auto& commands = persistent_store->commands();
@@ -5304,7 +5306,7 @@
   // Check cookies from inside the anonymous iframe:
   EXPECT_THAT(
       GetAllCookiesForURL(cm.get(), https_www_foo_.url(),
-                          CookiePartitionKeychain(anonymous_iframe_key)),
+                          CookiePartitionKeyCollection(anonymous_iframe_key)),
       ElementsAre(MatchesCookieNameValue("__Host-B", "1"),
                   MatchesCookieNameValue("__Host-C", "0")));
 }
diff --git a/net/cookies/cookie_partition_key_collection.cc b/net/cookies/cookie_partition_key_collection.cc
new file mode 100644
index 0000000..9882324
--- /dev/null
+++ b/net/cookies/cookie_partition_key_collection.cc
@@ -0,0 +1,57 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/cookies/cookie_partition_key_collection.h"
+
+namespace net {
+
+CookiePartitionKeyCollection::CookiePartitionKeyCollection() = default;
+
+CookiePartitionKeyCollection::CookiePartitionKeyCollection(
+    const CookiePartitionKeyCollection& other) = default;
+
+CookiePartitionKeyCollection::CookiePartitionKeyCollection(
+    CookiePartitionKeyCollection&& other) = default;
+
+CookiePartitionKeyCollection::CookiePartitionKeyCollection(
+    const CookiePartitionKey& key) {
+  keys_.push_back(key);
+}
+
+CookiePartitionKeyCollection::CookiePartitionKeyCollection(
+    const std::vector<CookiePartitionKey>& keys)
+    : keys_(keys) {}
+
+CookiePartitionKeyCollection::CookiePartitionKeyCollection(
+    bool contains_all_keys_)
+    : contains_all_keys_(contains_all_keys_) {}
+
+CookiePartitionKeyCollection& CookiePartitionKeyCollection::operator=(
+    const CookiePartitionKeyCollection& other) = default;
+
+CookiePartitionKeyCollection& CookiePartitionKeyCollection::operator=(
+    CookiePartitionKeyCollection&& other) = default;
+
+CookiePartitionKeyCollection::~CookiePartitionKeyCollection() = default;
+
+CookiePartitionKeyCollection CookiePartitionKeyCollection::FirstPartySetify(
+    const CookieAccessDelegate* cookie_access_delegate) const {
+  if (!cookie_access_delegate || IsEmpty() || ContainsAllKeys())
+    return *this;
+  std::vector<CookiePartitionKey> keys;
+  keys.reserve(PartitionKeys().size());
+  for (const auto& key : PartitionKeys()) {
+    absl::optional<SchemefulSite> fps_owner =
+        cookie_access_delegate->FindFirstPartySetOwner(key.site());
+    if (fps_owner) {
+      keys.push_back(
+          CookiePartitionKey::FromWire(fps_owner.value(), key.nonce()));
+    } else {
+      keys.push_back(key);
+    }
+  }
+  return CookiePartitionKeyCollection(keys);
+}
+
+}  // namespace net
diff --git a/net/cookies/cookie_partition_key_collection.h b/net/cookies/cookie_partition_key_collection.h
new file mode 100644
index 0000000..58f8b9e
--- /dev/null
+++ b/net/cookies/cookie_partition_key_collection.h
@@ -0,0 +1,95 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef NET_COOKIES_COOKIE_PARTITION_KEY_COLLECTION_H_
+#define NET_COOKIES_COOKIE_PARTITION_KEY_COLLECTION_H_
+
+#include <vector>
+
+#include "net/base/net_export.h"
+#include "net/cookies/cookie_access_delegate.h"
+#include "net/cookies/cookie_partition_key.h"
+
+namespace net {
+
+// A data structure used to represent a collection of cookie partition keys.
+//
+// It can represent all possible cookie partition keys when
+// `contains_all_keys_` is true.
+//
+// It can also represent a finite number of cookie partition keys, including
+// zero.
+class NET_EXPORT CookiePartitionKeyCollection {
+ public:
+  // Creates an empty key collection.
+  explicit CookiePartitionKeyCollection();
+  CookiePartitionKeyCollection(const CookiePartitionKeyCollection& other);
+  CookiePartitionKeyCollection(CookiePartitionKeyCollection&& other);
+  // Creates a key collection with a single element.
+  explicit CookiePartitionKeyCollection(const CookiePartitionKey& key);
+  // Creates a set that contains each partition key in the vector.
+  explicit CookiePartitionKeyCollection(
+      const std::vector<CookiePartitionKey>& keys);
+
+  CookiePartitionKeyCollection& operator=(
+      const CookiePartitionKeyCollection& other);
+  CookiePartitionKeyCollection& operator=(CookiePartitionKeyCollection&& other);
+  ~CookiePartitionKeyCollection();
+
+  static CookiePartitionKeyCollection ContainsAll() {
+    return CookiePartitionKeyCollection(true);
+  }
+
+  static CookiePartitionKeyCollection FromOptional(
+      const absl::optional<CookiePartitionKey>& opt_key) {
+    return opt_key ? CookiePartitionKeyCollection(opt_key.value())
+                   : CookiePartitionKeyCollection();
+  }
+
+  // Takes a CookiePartitionKeyCollection which was created in a context that
+  // does not have access to sites' First-Party Set owners and converts it to
+  // the correct First-Party-Sets-aware CookiePartitionKeyCollection, replacing
+  // any CookiePartitionKeys whose sites which are members of a set with a new
+  // partition key containing the set's owner site.
+  CookiePartitionKeyCollection FirstPartySetify(
+      const CookieAccessDelegate* cookie_access_delegate) const;
+
+  // Temporary method used to record where we need to decide how to build the
+  // CookiePartitionKeyCollection.
+  //
+  // Returns an empty key collection, so no partitioned cookies will be returned
+  // at callsites this is used.
+  //
+  // TODO(crbug.com/1225444): Remove this method and update callsites to use
+  // appropriate constructor.
+  static CookiePartitionKeyCollection Todo() {
+    return CookiePartitionKeyCollection();
+  }
+
+  // CookieMonster can check if the key collection is empty to avoid searching
+  // the PartitionedCookieMap at all.
+  bool IsEmpty() const { return !contains_all_keys_ && keys_.empty(); }
+
+  // Returns if the key collection contains every partition key.
+  bool ContainsAllKeys() const { return contains_all_keys_; }
+
+  // Iterate over all keys in the key collection, do not call this method if
+  // `contains_all_keys` is true.
+  const std::vector<CookiePartitionKey>& PartitionKeys() const {
+    DCHECK(!contains_all_keys_);
+    return keys_;
+  }
+
+ private:
+  explicit CookiePartitionKeyCollection(bool contains_all_keys_);
+
+  bool contains_all_keys_ = false;
+  // If `contains_all_keys_` is true, `keys_` must be empty.
+  // If `keys_` is not empty, then `contains_all_keys_` must be false.
+  std::vector<CookiePartitionKey> keys_;
+};
+
+}  // namespace net
+
+#endif  // NET_COOKIES_COOKIE_PARTITION_KEY_COLLECTION_H_
diff --git a/net/cookies/cookie_partition_key_collection_unittest.cc b/net/cookies/cookie_partition_key_collection_unittest.cc
new file mode 100644
index 0000000..20fbc12f
--- /dev/null
+++ b/net/cookies/cookie_partition_key_collection_unittest.cc
@@ -0,0 +1,138 @@
+// Copyright 2021 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "net/cookies/cookie_partition_key_collection.h"
+#include "net/cookies/test_cookie_access_delegate.h"
+#include "testing/gmock/include/gmock/gmock.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace net {
+
+TEST(CookiePartitionKeyCollectionTest, EmptySet) {
+  CookiePartitionKeyCollection key_collection;
+
+  EXPECT_TRUE(key_collection.IsEmpty());
+  EXPECT_FALSE(key_collection.ContainsAllKeys());
+  EXPECT_EQ(0u, key_collection.PartitionKeys().size());
+}
+
+TEST(CookiePartitionKeyCollectionTest, SingletonSet) {
+  CookiePartitionKeyCollection key_collection(
+      CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com")));
+
+  EXPECT_FALSE(key_collection.IsEmpty());
+  EXPECT_FALSE(key_collection.ContainsAllKeys());
+  EXPECT_THAT(
+      key_collection.PartitionKeys(),
+      testing::UnorderedElementsAre(
+          CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com"))));
+}
+
+TEST(CookiePartitionKeyCollectionTest, MultipleElements) {
+  CookiePartitionKeyCollection key_collection({
+      CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com")),
+      CookiePartitionKey::FromURLForTesting(GURL("https://www.bar.com")),
+  });
+
+  EXPECT_FALSE(key_collection.IsEmpty());
+  EXPECT_FALSE(key_collection.ContainsAllKeys());
+  EXPECT_THAT(
+      key_collection.PartitionKeys(),
+      testing::UnorderedElementsAre(
+          CookiePartitionKey::FromURLForTesting(
+              GURL("https://subdomain.foo.com")),
+          CookiePartitionKey::FromURLForTesting(GURL("https://www.bar.com"))));
+}
+
+TEST(CookiePartitionKeyCollectionTest, ContainsAll) {
+  CookiePartitionKeyCollection key_collection =
+      CookiePartitionKeyCollection::ContainsAll();
+  EXPECT_FALSE(key_collection.IsEmpty());
+  EXPECT_TRUE(key_collection.ContainsAllKeys());
+}
+
+TEST(CookiePartitionKeyCollectionTest, FromOptional) {
+  CookiePartitionKeyCollection key_collection =
+      CookiePartitionKeyCollection::FromOptional(absl::nullopt);
+  EXPECT_TRUE(key_collection.IsEmpty());
+  EXPECT_FALSE(key_collection.ContainsAllKeys());
+
+  key_collection = CookiePartitionKeyCollection::FromOptional(
+      absl::make_optional<CookiePartitionKey>(
+          CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com"))));
+  EXPECT_FALSE(key_collection.IsEmpty());
+  EXPECT_FALSE(key_collection.ContainsAllKeys());
+  EXPECT_THAT(
+      key_collection.PartitionKeys(),
+      testing::UnorderedElementsAre(
+          CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com"))));
+}
+
+TEST(CookiePartitionKeyCollectionTest, FirstPartySetify) {
+  const GURL kOwnerURL("https://owner.com");
+  const SchemefulSite kOwnerSite(kOwnerURL);
+  const CookiePartitionKey kOwnerPartitionKey =
+      CookiePartitionKey::FromURLForTesting(kOwnerURL);
+
+  const GURL kMemberURL("https://member.com");
+  const SchemefulSite kMemberSite(kMemberURL);
+  const CookiePartitionKey kMemberPartitionKey =
+      CookiePartitionKey::FromURLForTesting(kMemberURL);
+
+  const GURL kNonMemberURL("https://nonmember.com");
+  const CookiePartitionKey kNonMemberPartitionKey =
+      CookiePartitionKey::FromURLForTesting(kNonMemberURL);
+
+  TestCookieAccessDelegate delegate;
+  base::flat_map<SchemefulSite, std::set<SchemefulSite>> first_party_sets;
+  first_party_sets.insert(std::make_pair(
+      kOwnerSite, std::set<SchemefulSite>({kOwnerSite, kMemberSite})));
+  delegate.SetFirstPartySets(first_party_sets);
+
+  CookiePartitionKeyCollection empty_key_collection;
+  EXPECT_TRUE(empty_key_collection.FirstPartySetify(&delegate).IsEmpty());
+  EXPECT_TRUE(empty_key_collection.FirstPartySetify(nullptr).IsEmpty());
+
+  CookiePartitionKeyCollection contains_all_keys =
+      CookiePartitionKeyCollection::ContainsAll();
+  EXPECT_TRUE(contains_all_keys.FirstPartySetify(&delegate).ContainsAllKeys());
+  EXPECT_TRUE(contains_all_keys.FirstPartySetify(nullptr).ContainsAllKeys());
+
+  // An owner site of an FPS should not have its partition key changed.
+  CookiePartitionKeyCollection got =
+      CookiePartitionKeyCollection(kOwnerPartitionKey)
+          .FirstPartySetify(&delegate);
+  EXPECT_EQ(1u, got.PartitionKeys().size());
+  EXPECT_EQ(kOwnerPartitionKey, got.PartitionKeys()[0]);
+
+  // A member site should have its partition key changed to the owner site.
+  got = CookiePartitionKeyCollection(kMemberPartitionKey)
+            .FirstPartySetify(&delegate);
+  EXPECT_EQ(1u, got.PartitionKeys().size());
+  EXPECT_EQ(kOwnerPartitionKey, got.PartitionKeys()[0]);
+
+  // A member site's partition key should not change if the CookieAccessDelegate
+  // is null.
+  got = CookiePartitionKeyCollection(kMemberPartitionKey)
+            .FirstPartySetify(nullptr);
+  EXPECT_EQ(1u, got.PartitionKeys().size());
+  EXPECT_EQ(kMemberPartitionKey, got.PartitionKeys()[0]);
+
+  // A non-member site should not have its partition key changed.
+  got = CookiePartitionKeyCollection(kNonMemberPartitionKey)
+            .FirstPartySetify(&delegate);
+  EXPECT_EQ(1u, got.PartitionKeys().size());
+  EXPECT_EQ(kNonMemberPartitionKey, got.PartitionKeys()[0]);
+
+  // A key collection that contains a member site and non-member site should be
+  // changed to include the owner site and the unmodified non-member site.
+  got = CookiePartitionKeyCollection(
+            {kMemberPartitionKey, kNonMemberPartitionKey})
+            .FirstPartySetify(&delegate);
+  EXPECT_EQ(2u, got.PartitionKeys().size());
+  EXPECT_EQ(kOwnerPartitionKey, got.PartitionKeys()[0]);
+  EXPECT_EQ(kNonMemberPartitionKey, got.PartitionKeys()[1]);
+}
+
+}  // namespace net
diff --git a/net/cookies/cookie_partition_key_unittest.cc b/net/cookies/cookie_partition_key_unittest.cc
index d855883..f3c41a8 100644
--- a/net/cookies/cookie_partition_key_unittest.cc
+++ b/net/cookies/cookie_partition_key_unittest.cc
@@ -2,9 +2,6 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef NET_COOKIES_COOKIE_PARTITION_KEY_UNITTEST_H_
-#define NET_COOKIES_COOKIE_PARTITION_KEY_UNITTEST_H_
-
 #include <string>
 
 #include "net/cookies/cookie_partition_key.h"
@@ -253,5 +250,3 @@
 }
 
 }  // namespace net
-
-#endif  // NET_COOKIES_COOKIE_PARTITION_KEY_UNITTEST_H_
diff --git a/net/cookies/cookie_partition_keychain.cc b/net/cookies/cookie_partition_keychain.cc
deleted file mode 100644
index 2ab53b6..0000000
--- a/net/cookies/cookie_partition_keychain.cc
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "net/cookies/cookie_partition_keychain.h"
-
-namespace net {
-
-CookiePartitionKeychain::CookiePartitionKeychain() = default;
-
-CookiePartitionKeychain::CookiePartitionKeychain(
-    const CookiePartitionKeychain& other) = default;
-
-CookiePartitionKeychain::CookiePartitionKeychain(
-    CookiePartitionKeychain&& other) = default;
-
-CookiePartitionKeychain::CookiePartitionKeychain(
-    const CookiePartitionKey& key) {
-  keys_.push_back(key);
-}
-
-CookiePartitionKeychain::CookiePartitionKeychain(
-    const std::vector<CookiePartitionKey>& keys)
-    : keys_(keys) {}
-
-CookiePartitionKeychain::CookiePartitionKeychain(bool contains_all_keys_)
-    : contains_all_keys_(contains_all_keys_) {}
-
-CookiePartitionKeychain& CookiePartitionKeychain::operator=(
-    const CookiePartitionKeychain& other) = default;
-
-CookiePartitionKeychain& CookiePartitionKeychain::operator=(
-    CookiePartitionKeychain&& other) = default;
-
-CookiePartitionKeychain::~CookiePartitionKeychain() = default;
-
-CookiePartitionKeychain CookiePartitionKeychain::FirstPartySetify(
-    const CookieAccessDelegate* cookie_access_delegate) const {
-  if (!cookie_access_delegate || IsEmpty() || ContainsAllKeys())
-    return *this;
-  std::vector<CookiePartitionKey> keys;
-  keys.reserve(PartitionKeys().size());
-  for (const auto& key : PartitionKeys()) {
-    absl::optional<SchemefulSite> fps_owner =
-        cookie_access_delegate->FindFirstPartySetOwner(key.site());
-    if (fps_owner) {
-      keys.push_back(
-          CookiePartitionKey::FromWire(fps_owner.value(), key.nonce()));
-    } else {
-      keys.push_back(key);
-    }
-  }
-  return CookiePartitionKeychain(keys);
-}
-
-}  // namespace net
diff --git a/net/cookies/cookie_partition_keychain.h b/net/cookies/cookie_partition_keychain.h
deleted file mode 100644
index 910ed58c..0000000
--- a/net/cookies/cookie_partition_keychain.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_COOKIES_COOKIE_PARTITION_KEYCHAIN_H_
-#define NET_COOKIES_COOKIE_PARTITION_KEYCHAIN_H_
-
-#include <vector>
-
-#include "net/base/net_export.h"
-#include "net/cookies/cookie_access_delegate.h"
-#include "net/cookies/cookie_partition_key.h"
-
-namespace net {
-
-// A data structure used to represent a collection of cookie partition keys.
-//
-// It can represent all possible cookie partition keys when
-// `contains_all_keys_` is true.
-//
-// It can also represent a finite number of cookie partition keys, including
-// zero.
-// TODO(crbug.com/1268880): Consider changing the name of this class since the
-// term "keychain" has a certain meaning for iOS and macOS.
-class NET_EXPORT CookiePartitionKeychain {
- public:
-  // Creates an empty keychain.
-  explicit CookiePartitionKeychain();
-  CookiePartitionKeychain(const CookiePartitionKeychain& other);
-  CookiePartitionKeychain(CookiePartitionKeychain&& other);
-  // Creates a keychain with a single element.
-  explicit CookiePartitionKeychain(const CookiePartitionKey& key);
-  // Creates a set that contains each partition key in the vector.
-  explicit CookiePartitionKeychain(const std::vector<CookiePartitionKey>& keys);
-
-  CookiePartitionKeychain& operator=(const CookiePartitionKeychain& other);
-  CookiePartitionKeychain& operator=(CookiePartitionKeychain&& other);
-  ~CookiePartitionKeychain();
-
-  static CookiePartitionKeychain ContainsAll() {
-    return CookiePartitionKeychain(true);
-  }
-
-  static CookiePartitionKeychain FromOptional(
-      const absl::optional<CookiePartitionKey>& opt_key) {
-    return opt_key ? CookiePartitionKeychain(opt_key.value())
-                   : CookiePartitionKeychain();
-  }
-
-  // Takes a CookiePartitionKeychain which was created in a context that does
-  // not have access to sites' First-Party Set owners and converts it to the
-  // correct First-Party-Sets-aware CookiePartitionKeychain, replacing any
-  // CookiePartitionKeys whose sites which are members of a set with a new
-  // partition key containing the set's owner site.
-  CookiePartitionKeychain FirstPartySetify(
-      const CookieAccessDelegate* cookie_access_delegate) const;
-
-  // Temporary method used to record where we need to decide how to build the
-  // CookiePartitionKeychain.
-  //
-  // Returns an empty keychain, so no partitioned cookies will be returned at
-  // callsites this is used.
-  //
-  // TODO(crbug.com/1225444): Remove this method and update callsites to use
-  // appropriate constructor.
-  static CookiePartitionKeychain Todo() { return CookiePartitionKeychain(); }
-
-  // CookieMonster can check if the keychain is empty to avoid searching the
-  // PartitionedCookieMap at all.
-  bool IsEmpty() const { return !contains_all_keys_ && keys_.empty(); }
-
-  // Returns if the keychain contains every partition key.
-  bool ContainsAllKeys() const { return contains_all_keys_; }
-
-  // Iterate over all keys in the keychain, do not call this method if
-  // `contains_all_keys` is true.
-  const std::vector<CookiePartitionKey>& PartitionKeys() const {
-    DCHECK(!contains_all_keys_);
-    return keys_;
-  }
-
- private:
-  explicit CookiePartitionKeychain(bool contains_all_keys_);
-
-  bool contains_all_keys_ = false;
-  // If `contains_all_keys_` is true, `keys_` must be empty.
-  // If `keys_` is not empty, then `contains_all_keys_` must be false.
-  std::vector<CookiePartitionKey> keys_;
-};
-
-}  // namespace net
-
-#endif  // NET_COOKIES_COOKIE_PARTITION_KEYCHAIN_H_
diff --git a/net/cookies/cookie_partition_keychain_unittest.cc b/net/cookies/cookie_partition_keychain_unittest.cc
deleted file mode 100644
index c4d8955..0000000
--- a/net/cookies/cookie_partition_keychain_unittest.cc
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef NET_COOKIES_COOKIE_PARTITION_KEYCHAIN_UNITTEST_H_
-#define NET_COOKIES_COOKIE_PARTITION_KEYCHAIN_UNITTEST_H_
-
-#include "net/cookies/cookie_partition_keychain.h"
-#include "net/cookies/test_cookie_access_delegate.h"
-#include "testing/gmock/include/gmock/gmock.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace net {
-
-TEST(CookiePartitionKeychainTest, EmptySet) {
-  CookiePartitionKeychain keychain;
-
-  EXPECT_TRUE(keychain.IsEmpty());
-  EXPECT_FALSE(keychain.ContainsAllKeys());
-  EXPECT_EQ(0u, keychain.PartitionKeys().size());
-}
-
-TEST(CookiePartitionKeychainTest, SingletonSet) {
-  CookiePartitionKeychain keychain(
-      CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com")));
-
-  EXPECT_FALSE(keychain.IsEmpty());
-  EXPECT_FALSE(keychain.ContainsAllKeys());
-  EXPECT_THAT(
-      keychain.PartitionKeys(),
-      testing::UnorderedElementsAre(
-          CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com"))));
-}
-
-TEST(CookiePartitionKeychainTest, MultipleElements) {
-  CookiePartitionKeychain keychain({
-      CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com")),
-      CookiePartitionKey::FromURLForTesting(GURL("https://www.bar.com")),
-  });
-
-  EXPECT_FALSE(keychain.IsEmpty());
-  EXPECT_FALSE(keychain.ContainsAllKeys());
-  EXPECT_THAT(
-      keychain.PartitionKeys(),
-      testing::UnorderedElementsAre(
-          CookiePartitionKey::FromURLForTesting(
-              GURL("https://subdomain.foo.com")),
-          CookiePartitionKey::FromURLForTesting(GURL("https://www.bar.com"))));
-}
-
-TEST(CookiePartitionKeychainTest, ContainsAll) {
-  CookiePartitionKeychain keychain = CookiePartitionKeychain::ContainsAll();
-  EXPECT_FALSE(keychain.IsEmpty());
-  EXPECT_TRUE(keychain.ContainsAllKeys());
-}
-
-TEST(CookiePartitionKeychainTest, FromOptional) {
-  CookiePartitionKeychain keychain =
-      CookiePartitionKeychain::FromOptional(absl::nullopt);
-  EXPECT_TRUE(keychain.IsEmpty());
-  EXPECT_FALSE(keychain.ContainsAllKeys());
-
-  keychain = CookiePartitionKeychain::FromOptional(
-      absl::make_optional<CookiePartitionKey>(
-          CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com"))));
-  EXPECT_FALSE(keychain.IsEmpty());
-  EXPECT_FALSE(keychain.ContainsAllKeys());
-  EXPECT_THAT(
-      keychain.PartitionKeys(),
-      testing::UnorderedElementsAre(
-          CookiePartitionKey::FromURLForTesting(GURL("https://www.foo.com"))));
-}
-
-TEST(CookiePartitionKeychainTest, FirstPartySetify) {
-  const GURL kOwnerURL("https://owner.com");
-  const SchemefulSite kOwnerSite(kOwnerURL);
-  const CookiePartitionKey kOwnerPartitionKey =
-      CookiePartitionKey::FromURLForTesting(kOwnerURL);
-
-  const GURL kMemberURL("https://member.com");
-  const SchemefulSite kMemberSite(kMemberURL);
-  const CookiePartitionKey kMemberPartitionKey =
-      CookiePartitionKey::FromURLForTesting(kMemberURL);
-
-  const GURL kNonMemberURL("https://nonmember.com");
-  const CookiePartitionKey kNonMemberPartitionKey =
-      CookiePartitionKey::FromURLForTesting(kNonMemberURL);
-
-  TestCookieAccessDelegate delegate;
-  base::flat_map<SchemefulSite, std::set<SchemefulSite>> first_party_sets;
-  first_party_sets.insert(std::make_pair(
-      kOwnerSite, std::set<SchemefulSite>({kOwnerSite, kMemberSite})));
-  delegate.SetFirstPartySets(first_party_sets);
-
-  CookiePartitionKeychain empty_keychain;
-  EXPECT_TRUE(empty_keychain.FirstPartySetify(&delegate).IsEmpty());
-  EXPECT_TRUE(empty_keychain.FirstPartySetify(nullptr).IsEmpty());
-
-  CookiePartitionKeychain contains_all_keys =
-      CookiePartitionKeychain::ContainsAll();
-  EXPECT_TRUE(contains_all_keys.FirstPartySetify(&delegate).ContainsAllKeys());
-  EXPECT_TRUE(contains_all_keys.FirstPartySetify(nullptr).ContainsAllKeys());
-
-  // An owner site of an FPS should not have its partition key changed.
-  CookiePartitionKeychain got =
-      CookiePartitionKeychain(kOwnerPartitionKey).FirstPartySetify(&delegate);
-  EXPECT_EQ(1u, got.PartitionKeys().size());
-  EXPECT_EQ(kOwnerPartitionKey, got.PartitionKeys()[0]);
-
-  // A member site should have its partition key changed to the owner site.
-  got =
-      CookiePartitionKeychain(kMemberPartitionKey).FirstPartySetify(&delegate);
-  EXPECT_EQ(1u, got.PartitionKeys().size());
-  EXPECT_EQ(kOwnerPartitionKey, got.PartitionKeys()[0]);
-
-  // A member site's partition key should not change if the CookieAccessDelegate
-  // is null.
-  got = CookiePartitionKeychain(kMemberPartitionKey).FirstPartySetify(nullptr);
-  EXPECT_EQ(1u, got.PartitionKeys().size());
-  EXPECT_EQ(kMemberPartitionKey, got.PartitionKeys()[0]);
-
-  // A non-member site should not have its partition key changed.
-  got = CookiePartitionKeychain(kNonMemberPartitionKey)
-            .FirstPartySetify(&delegate);
-  EXPECT_EQ(1u, got.PartitionKeys().size());
-  EXPECT_EQ(kNonMemberPartitionKey, got.PartitionKeys()[0]);
-
-  // A keychain that contains a member site and non-member site should be
-  // changed to include the owner site and the unmodified non-member site.
-  got = CookiePartitionKeychain({kMemberPartitionKey, kNonMemberPartitionKey})
-            .FirstPartySetify(&delegate);
-  EXPECT_EQ(2u, got.PartitionKeys().size());
-  EXPECT_EQ(kOwnerPartitionKey, got.PartitionKeys()[0]);
-  EXPECT_EQ(kNonMemberPartitionKey, got.PartitionKeys()[1]);
-}
-
-}  // namespace net
-
-#endif  // NET_COOKIES_COOKIE_PARTITION_KEYCHAIN_UNITTEST_H_
diff --git a/net/cookies/cookie_store.h b/net/cookies/cookie_store.h
index 3a6c7c1..8631b10 100644
--- a/net/cookies/cookie_store.h
+++ b/net/cookies/cookie_store.h
@@ -20,7 +20,7 @@
 #include "net/cookies/cookie_access_result.h"
 #include "net/cookies/cookie_deletion_info.h"
 #include "net/cookies/cookie_options.h"
-#include "net/cookies/cookie_partition_keychain.h"
+#include "net/cookies/cookie_partition_key_collection.h"
 
 class GURL;
 
@@ -74,13 +74,14 @@
   // creation date.
   // To get all the cookies for a URL, use this method with an all-inclusive
   // |options|.
-  // If |cookie_partition_keychain| is not empty, then this function will return
-  // the partitioned cookies for that URL whose partition keys are in the
-  // keychain *in addition to* the unpartitioned cookies for that URL.
+  // If |cookie_partition_key_collection| is not empty, then this function will
+  // return the partitioned cookies for that URL whose partition keys are in the
+  // cookie_partition_key_collection *in addition to* the unpartitioned cookies
+  // for that URL.
   virtual void GetCookieListWithOptionsAsync(
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain,
+      const CookiePartitionKeyCollection& cookie_partition_key_collection,
       GetCookieListCallback callback) = 0;
 
   // Returns all the cookies, for use in management UI, etc. This does not mark
diff --git a/net/cookies/cookie_store_test_helpers.cc b/net/cookies/cookie_store_test_helpers.cc
index fb963c9..6daa675 100644
--- a/net/cookies/cookie_store_test_helpers.cc
+++ b/net/cookies/cookie_store_test_helpers.cc
@@ -112,11 +112,11 @@
 void DelayedCookieMonster::GetCookieListWithOptionsAsync(
     const GURL& url,
     const CookieOptions& options,
-    const CookiePartitionKeychain& cookie_partition_keychain,
+    const CookiePartitionKeyCollection& cookie_partition_key_collection,
     CookieMonster::GetCookieListCallback callback) {
   did_run_ = false;
   cookie_monster_->GetCookieListWithOptionsAsync(
-      url, options, cookie_partition_keychain,
+      url, options, cookie_partition_key_collection,
       base::BindOnce(
           &DelayedCookieMonster::GetCookieListWithOptionsInternalCallback,
           base::Unretained(this)));
diff --git a/net/cookies/cookie_store_test_helpers.h b/net/cookies/cookie_store_test_helpers.h
index df553e3..6395146 100644
--- a/net/cookies/cookie_store_test_helpers.h
+++ b/net/cookies/cookie_store_test_helpers.h
@@ -67,7 +67,7 @@
   void GetCookieListWithOptionsAsync(
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain,
+      const CookiePartitionKeyCollection& cookie_partition_key_collection,
       GetCookieListCallback callback) override;
 
   void GetAllCookiesAsync(GetAllCookiesCallback callback) override;
diff --git a/net/cookies/cookie_store_unittest.h b/net/cookies/cookie_store_unittest.h
index 80c5c973..a649ca8 100644
--- a/net/cookies/cookie_store_unittest.h
+++ b/net/cookies/cookie_store_unittest.h
@@ -145,37 +145,38 @@
   std::string GetCookies(
       CookieStore* cs,
       const GURL& url,
-      const CookiePartitionKeychain& cookie_partition_keychain =
-          CookiePartitionKeychain()) {
+      const CookiePartitionKeyCollection& cookie_partition_key_collection =
+          CookiePartitionKeyCollection()) {
     DCHECK(cs);
     CookieOptions options;
     if (!CookieStoreTestTraits::supports_http_only)
       options.set_include_httponly();
     options.set_same_site_cookie_context(
         net::CookieOptions::SameSiteCookieContext::MakeInclusive());
-    return GetCookiesWithOptions(cs, url, options, cookie_partition_keychain);
+    return GetCookiesWithOptions(cs, url, options,
+                                 cookie_partition_key_collection);
   }
 
   std::string GetCookiesWithOptions(
       CookieStore* cs,
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain =
-          CookiePartitionKeychain()) {
-    return CanonicalCookie::BuildCookieLine(
-        GetCookieListWithOptions(cs, url, options, cookie_partition_keychain));
+      const CookiePartitionKeyCollection& cookie_partition_key_collection =
+          CookiePartitionKeyCollection()) {
+    return CanonicalCookie::BuildCookieLine(GetCookieListWithOptions(
+        cs, url, options, cookie_partition_key_collection));
   }
 
   CookieList GetCookieListWithOptions(
       CookieStore* cs,
       const GURL& url,
       const CookieOptions& options,
-      const CookiePartitionKeychain& cookie_partition_keychain =
-          CookiePartitionKeychain()) {
+      const CookiePartitionKeyCollection& cookie_partition_key_collection =
+          CookiePartitionKeyCollection()) {
     DCHECK(cs);
     GetCookieListCallback callback;
-    cs->GetCookieListWithOptionsAsync(url, options, cookie_partition_keychain,
-                                      callback.MakeCallback());
+    cs->GetCookieListWithOptionsAsync(
+        url, options, cookie_partition_key_collection, callback.MakeCallback());
     callback.WaitUntilDone();
     return callback.cookies();
   }
@@ -184,23 +185,23 @@
   CookieList GetAllCookiesForURL(
       CookieStore* cs,
       const GURL& url,
-      const CookiePartitionKeychain& cookie_partition_keychain =
-          CookiePartitionKeychain()) {
+      const CookiePartitionKeyCollection& cookie_partition_key_collection =
+          CookiePartitionKeyCollection()) {
     return GetCookieListWithOptions(cs, url, CookieOptions::MakeAllInclusive(),
-                                    cookie_partition_keychain);
+                                    cookie_partition_key_collection);
   }
 
   // This does not update the access time on the cookies.
   CookieAccessResultList GetExcludedCookiesForURL(
       CookieStore* cs,
       const GURL& url,
-      const CookiePartitionKeychain& cookie_partition_keychain) {
+      const CookiePartitionKeyCollection& cookie_partition_key_collection) {
     DCHECK(cs);
     GetCookieListCallback callback;
     CookieOptions options = CookieOptions::MakeAllInclusive();
     options.set_return_excluded_cookies();
-    cs->GetCookieListWithOptionsAsync(url, options, cookie_partition_keychain,
-                                      callback.MakeCallback());
+    cs->GetCookieListWithOptionsAsync(
+        url, options, cookie_partition_key_collection, callback.MakeCallback());
     callback.WaitUntilDone();
     return callback.excluded_cookies();
   }
diff --git a/net/dns/dns_transaction_unittest.cc b/net/dns/dns_transaction_unittest.cc
index 2a94c6ce..ed4e31b 100644
--- a/net/dns/dns_transaction_unittest.cc
+++ b/net/dns/dns_transaction_unittest.cc
@@ -2410,7 +2410,7 @@
   request_context_->cookie_store()->GetCookieListWithOptionsAsync(
       GURL(GetURLFromTemplateWithoutParameters(
           config_.dns_over_https_servers[0].server_template)),
-      CookieOptions::MakeAllInclusive(), CookiePartitionKeychain(),
+      CookieOptions::MakeAllInclusive(), CookiePartitionKeyCollection(),
       base::BindOnce(&CookieCallback::GetCookieListCallback,
                      base::Unretained(&callback)));
   callback.WaitUntilDone();
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
index 990161a..cc0780dd 100644
--- a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
+++ b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
@@ -1440,7 +1440,7 @@
   GetCookieListCallback get_callback;
   cookie_monster->GetCookieListWithOptionsAsync(
       GURL("ftp://subdomain.ftperiffic.com/page"),
-      CookieOptions::MakeAllInclusive(), CookiePartitionKeychain(),
+      CookieOptions::MakeAllInclusive(), CookiePartitionKeyCollection(),
       base::BindOnce(&GetCookieListCallback::Run,
                      base::Unretained(&get_callback)));
   get_callback.WaitUntilDone();
diff --git a/net/reporting/reporting_uploader_unittest.cc b/net/reporting/reporting_uploader_unittest.cc
index 53bd470f..945cdf4 100644
--- a/net/reporting/reporting_uploader_unittest.cc
+++ b/net/reporting/reporting_uploader_unittest.cc
@@ -504,7 +504,7 @@
   GetCookieListCallback cookie_callback;
   context_.cookie_store()->GetCookieListWithOptionsAsync(
       server_.GetURL("/"), CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(),
+      CookiePartitionKeyCollection(),
       base::BindOnce(&GetCookieListCallback::Run,
                      base::Unretained(&cookie_callback)));
   cookie_callback.WaitUntilDone();
diff --git a/net/url_request/url_request_http_job.cc b/net/url_request/url_request_http_job.cc
index 5289d0e..dc5c2d9 100644
--- a/net/url_request/url_request_http_job.cc
+++ b/net/url_request/url_request_http_job.cc
@@ -598,7 +598,7 @@
 
     cookie_store->GetCookieListWithOptionsAsync(
         request_->url(), options,
-        CookiePartitionKeychain::FromOptional(cookie_partition_key_),
+        CookiePartitionKeyCollection::FromOptional(cookie_partition_key_),
         base::BindOnce(&URLRequestHttpJob::SetCookieHeaderAndStart,
                        weak_factory_.GetWeakPtr(), options));
   } else {
diff --git a/net/websockets/websocket_stream_cookie_test.cc b/net/websockets/websocket_stream_cookie_test.cc
index 98ba3fb..f229003 100644
--- a/net/websockets/websocket_stream_cookie_test.cc
+++ b/net/websockets/websocket_stream_cookie_test.cc
@@ -211,7 +211,7 @@
   base::RunLoop run_loop;
   store->GetCookieListWithOptionsAsync(
       cookie_url, net::CookieOptions::MakeAllInclusive(),
-      CookiePartitionKeychain(),
+      CookiePartitionKeyCollection(),
       base::BindOnce(&GetCookieListHelperFunction, run_loop.QuitClosure(),
                      weak_is_called.GetWeakPtr(),
                      weak_get_cookie_list_result.GetWeakPtr()));