@@ -923,29 +923,6 @@ class CookieMonsterTestBase : public CookieStoreTest<T> {
923
923
70U );
924
924
}
925
925
926
- // Test enforcement of the per-partition domain limit on partitioned cookies.
927
- void TestPartitionedCookiesGarbageCollectionHelper () {
928
- DCHECK_EQ (10u , CookieMonster::kPerPartitionDomainMaxCookies );
929
- int max_cookies = CookieMonster::kPerPartitionDomainMaxCookies ;
930
- auto cm = std::make_unique<CookieMonster>(nullptr , net::NetLog::Get ());
931
-
932
- auto cookie_partition_key =
933
- CookiePartitionKey::FromURLForTesting (GURL (" https://toplevelsite.com" ));
934
- for (int i = 0 ; i < max_cookies + 5 ; ++i) {
935
- std::string cookie = base::StringPrintf (" __Host-a%02d=b" , i);
936
- EXPECT_TRUE (SetCookie (cm.get (), https_www_foo_.url (),
937
- cookie + " ; secure; path=/; partitioned" ,
938
- cookie_partition_key));
939
- std::string cookies =
940
- this ->GetCookies (cm.get (), https_www_foo_.url (),
941
- CookiePartitionKeyCollection (cookie_partition_key));
942
- EXPECT_NE (cookies.find (cookie), std::string::npos);
943
- EXPECT_LE (CountInString (cookies, ' =' ), max_cookies);
944
- }
945
- // TODO(crbug.com/1225444): Test recording stats for deleting partitioned
946
- // cookies.
947
- }
948
-
949
926
// Function for creating a CM with a number of cookies in it,
950
927
// no store (and hence no ability to affect access time).
951
928
std::unique_ptr<CookieMonster> CreateMonsterForGC (int num_cookies) {
@@ -1780,8 +1757,64 @@ TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollectionMixed) {
1780
1757
TestPriorityAwareGarbageCollectHelperMixed ();
1781
1758
}
1782
1759
1783
- TEST_F (CookieMonsterTest, TestPartitionedCookiesGarbageCollection) {
1784
- TestPartitionedCookiesGarbageCollectionHelper ();
1760
+ TEST_F (CookieMonsterTest, TestPartitionedCookiesGarbageCollection_Memory) {
1761
+ // Limit should be 10 KB.
1762
+ DCHECK_EQ (1024u * 10u , CookieMonster::kPerPartitionDomainMaxCookieBytes );
1763
+
1764
+ auto cm = std::make_unique<CookieMonster>(nullptr , net::NetLog::Get ());
1765
+ auto cookie_partition_key =
1766
+ CookiePartitionKey::FromURLForTesting (GURL (" https://toplevelsite1.com" ));
1767
+
1768
+ for (size_t i = 0 ; i < 41 ; ++i) {
1769
+ std::string cookie_value ((10240 / 40 ) - (i < 10 ? 1 : 2 ), ' 0' );
1770
+ std::string cookie =
1771
+ base::StrCat ({base::NumberToString (i), " =" , cookie_value});
1772
+ EXPECT_TRUE (SetCookie (cm.get (), https_www_foo_.url (),
1773
+ cookie + " ; secure; path=/; partitioned" ,
1774
+ cookie_partition_key))
1775
+ << " Failed to set cookie " << i;
1776
+ }
1777
+
1778
+ std::string cookies =
1779
+ this ->GetCookies (cm.get (), https_www_foo_.url (),
1780
+ CookiePartitionKeyCollection (cookie_partition_key));
1781
+
1782
+ EXPECT_THAT (cookies, CookieStringIs (
1783
+ testing::Not (testing::Contains (testing::Key (" 0" )))));
1784
+ for (size_t i = 1 ; i < 41 ; ++i) {
1785
+ EXPECT_THAT (cookies, CookieStringIs (testing::Contains (
1786
+ testing::Key (base::NumberToString (i)))))
1787
+ << " Failed to find cookie " << i;
1788
+ }
1789
+ }
1790
+
1791
+ TEST_F (CookieMonsterTest, TestPartitionedCookiesGarbageCollection_MaxCookies) {
1792
+ // Partitioned cookies also limit domains to 180 cookies per partition.
1793
+ DCHECK_EQ (180u , CookieMonster::kPerPartitionDomainMaxCookies );
1794
+
1795
+ auto cm = std::make_unique<CookieMonster>(nullptr , net::NetLog::Get ());
1796
+ auto cookie_partition_key =
1797
+ CookiePartitionKey::FromURLForTesting (GURL (" https://toplevelsite.com" ));
1798
+
1799
+ for (size_t i = 0 ; i < 181 ; ++i) {
1800
+ std::string cookie = base::StrCat ({base::NumberToString (i), " =0" });
1801
+ EXPECT_TRUE (SetCookie (cm.get (), https_www_foo_.url (),
1802
+ cookie + " ; secure; path=/; partitioned" ,
1803
+ cookie_partition_key))
1804
+ << " Failed to set cookie " << i;
1805
+ }
1806
+
1807
+ std::string cookies =
1808
+ this ->GetCookies (cm.get (), https_www_foo_.url (),
1809
+ CookiePartitionKeyCollection (cookie_partition_key));
1810
+ EXPECT_THAT (cookies, CookieStringIs (
1811
+ testing::Not (testing::Contains (testing::Key (" 0" )))));
1812
+ for (size_t i = 1 ; i < 181 ; ++i) {
1813
+ std::string cookie = base::StrCat ({base::NumberToString (i), " =0" });
1814
+ EXPECT_THAT (cookies, CookieStringIs (testing::Contains (
1815
+ testing::Key (base::NumberToString (i)))))
1816
+ << " Failed to find cookie " << i;
1817
+ }
1785
1818
}
1786
1819
1787
1820
TEST_F (CookieMonsterTest, SetCookieableSchemes) {
0 commit comments