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()));