| Index: net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc | 
| diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc | 
| index 2166be022a1fe061dc7a242dd4938a94e5606bde..8315d74e10e5b8c50fadb41267b5f3d97400455a 100644 | 
| --- a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc | 
| +++ b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc | 
| @@ -168,9 +168,9 @@ class SQLitePersistentCookieStoreTest : public testing::Test { | 
| const std::string& domain, | 
| const std::string& path, | 
| const base::Time& creation) { | 
| -    store_->AddCookie(CanonicalCookie(GURL(), name, value, domain, path, | 
| -                                      creation, creation, creation, false, | 
| -                                      false, false, COOKIE_PRIORITY_DEFAULT)); | 
| +    store_->AddCookie(CanonicalCookie( | 
| +        GURL(), name, value, domain, path, creation, creation, creation, false, | 
| +        false, CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
| } | 
|  | 
| void AddCookieWithExpiration(const std::string& name, | 
| @@ -179,9 +179,9 @@ class SQLitePersistentCookieStoreTest : public testing::Test { | 
| const std::string& path, | 
| const base::Time& creation, | 
| const base::Time& expiration) { | 
| -    store_->AddCookie(CanonicalCookie(GURL(), name, value, domain, path, | 
| -                                      creation, expiration, creation, false, | 
| -                                      false, false, COOKIE_PRIORITY_DEFAULT)); | 
| +    store_->AddCookie(CanonicalCookie( | 
| +        GURL(), name, value, domain, path, creation, expiration, creation, | 
| +        false, false, CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
| } | 
|  | 
| std::string ReadRawDBContents() { | 
| @@ -442,10 +442,10 @@ TEST_F(SQLitePersistentCookieStoreTest, TestLoadOldSessionCookies) { | 
| InitializeStore(false, true); | 
|  | 
| // Add a session cookie. | 
| -  store_->AddCookie(CanonicalCookie(GURL(), "C", "D", "sessioncookie.com", "/", | 
| -                                    base::Time::Now(), base::Time(), | 
| -                                    base::Time::Now(), false, false, false, | 
| -                                    COOKIE_PRIORITY_DEFAULT)); | 
| +  store_->AddCookie(CanonicalCookie( | 
| +      GURL(), "C", "D", "sessioncookie.com", "/", base::Time::Now(), | 
| +      base::Time(), base::Time::Now(), false, false, | 
| +      CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
|  | 
| // Force the store to write its data to the disk. | 
| DestroyStore(); | 
| @@ -469,10 +469,10 @@ TEST_F(SQLitePersistentCookieStoreTest, TestDontLoadOldSessionCookies) { | 
| InitializeStore(false, true); | 
|  | 
| // Add a session cookie. | 
| -  store_->AddCookie(CanonicalCookie(GURL(), "C", "D", "sessioncookie.com", "/", | 
| -                                    base::Time::Now(), base::Time(), | 
| -                                    base::Time::Now(), false, false, false, | 
| -                                    COOKIE_PRIORITY_DEFAULT)); | 
| +  store_->AddCookie(CanonicalCookie( | 
| +      GURL(), "C", "D", "sessioncookie.com", "/", base::Time::Now(), | 
| +      base::Time(), base::Time::Now(), false, false, | 
| +      CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
|  | 
| // Force the store to write its data to the disk. | 
| DestroyStore(); | 
| @@ -499,16 +499,16 @@ TEST_F(SQLitePersistentCookieStoreTest, PersistIsPersistent) { | 
| static const char kPersistentName[] = "persistent"; | 
|  | 
| // Add a session cookie. | 
| -  store_->AddCookie(CanonicalCookie(GURL(), kSessionName, "val", | 
| -                                    "sessioncookie.com", "/", base::Time::Now(), | 
| -                                    base::Time(), base::Time::Now(), false, | 
| -                                    false, false, COOKIE_PRIORITY_DEFAULT)); | 
| +  store_->AddCookie(CanonicalCookie( | 
| +      GURL(), kSessionName, "val", "sessioncookie.com", "/", base::Time::Now(), | 
| +      base::Time(), base::Time::Now(), false, false, | 
| +      CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
| // Add a persistent cookie. | 
| store_->AddCookie(CanonicalCookie( | 
| GURL(), kPersistentName, "val", "sessioncookie.com", "/", | 
| base::Time::Now() - base::TimeDelta::FromDays(1), | 
| base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| -      false, false, false, COOKIE_PRIORITY_DEFAULT)); | 
| +      false, false, CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
|  | 
| // Force the store to write its data to the disk. | 
| DestroyStore(); | 
| @@ -552,21 +552,21 @@ TEST_F(SQLitePersistentCookieStoreTest, PriorityIsPersistent) { | 
| GURL(), kLowName, kCookieValue, kCookieDomain, kCookiePath, | 
| base::Time::Now() - base::TimeDelta::FromMinutes(1), | 
| base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| -      false, false, false, COOKIE_PRIORITY_LOW)); | 
| +      false, false, CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_LOW)); | 
|  | 
| // Add a medium-priority persistent cookie. | 
| store_->AddCookie(CanonicalCookie( | 
| GURL(), kMediumName, kCookieValue, kCookieDomain, kCookiePath, | 
| base::Time::Now() - base::TimeDelta::FromMinutes(2), | 
| base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| -      false, false, false, COOKIE_PRIORITY_MEDIUM)); | 
| +      false, false, CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_MEDIUM)); | 
|  | 
| // Add a high-priority peristent cookie. | 
| store_->AddCookie(CanonicalCookie( | 
| GURL(), kHighName, kCookieValue, kCookieDomain, kCookiePath, | 
| base::Time::Now() - base::TimeDelta::FromMinutes(3), | 
| base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| -      false, false, false, COOKIE_PRIORITY_HIGH)); | 
| +      false, false, CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_HIGH)); | 
|  | 
| // Force the store to write its data to the disk. | 
| DestroyStore(); | 
| @@ -601,6 +601,64 @@ TEST_F(SQLitePersistentCookieStoreTest, PriorityIsPersistent) { | 
| STLDeleteElements(&cookies); | 
| } | 
|  | 
| +TEST_F(SQLitePersistentCookieStoreTest, SameSiteIsPersistent) { | 
| +  const char kNoneName[] = "none"; | 
| +  const char kLaxName[] = "lax"; | 
| +  const char kStrictName[] = "strict"; | 
| +  const char kCookieDomain[] = "sessioncookie.com"; | 
| +  const char kCookieValue[] = "value"; | 
| +  const char kCookiePath[] = "/"; | 
| + | 
| +  InitializeStore(false, true); | 
| + | 
| +  // Add a non-samesite cookie. | 
| +  store_->AddCookie(CanonicalCookie( | 
| +      GURL(), kNoneName, kCookieValue, kCookieDomain, kCookiePath, | 
| +      base::Time::Now() - base::TimeDelta::FromMinutes(1), | 
| +      base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| +      false, false, CookieSameSite::NO_RESTRICTION, COOKIE_PRIORITY_DEFAULT)); | 
| + | 
| +  // Add a lax-samesite persistent cookie. | 
| +  store_->AddCookie(CanonicalCookie( | 
| +      GURL(), kLaxName, kCookieValue, kCookieDomain, kCookiePath, | 
| +      base::Time::Now() - base::TimeDelta::FromMinutes(2), | 
| +      base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| +      false, false, CookieSameSite::LAX_MODE, COOKIE_PRIORITY_DEFAULT)); | 
| + | 
| +  // Add a strict-samesite peristent cookie. | 
| +  store_->AddCookie(CanonicalCookie( | 
| +      GURL(), kStrictName, kCookieValue, kCookieDomain, kCookiePath, | 
| +      base::Time::Now() - base::TimeDelta::FromMinutes(3), | 
| +      base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), | 
| +      false, false, CookieSameSite::STRICT_MODE, COOKIE_PRIORITY_DEFAULT)); | 
| + | 
| +  // Force the store to write its data to the disk. | 
| +  DestroyStore(); | 
| + | 
| +  // Create a store that loads session cookie and test that the priority | 
| +  // attribute values are restored. | 
| +  CanonicalCookieVector cookies; | 
| +  CreateAndLoad(false, true, &cookies); | 
| +  ASSERT_EQ(3U, cookies.size()); | 
| + | 
| +  // Put the cookies into a map, by name, for comparison below. | 
| +  std::map<std::string, CanonicalCookie*> cookie_map; | 
| +  for (const auto& cookie : cookies) | 
| +    cookie_map[cookie->Name()] = cookie; | 
| + | 
| +  // Validate that each cookie has the correct SameSite. | 
| +  ASSERT_EQ(1u, cookie_map.count(kNoneName)); | 
| +  EXPECT_EQ(CookieSameSite::NO_RESTRICTION, cookie_map[kNoneName]->SameSite()); | 
| + | 
| +  ASSERT_EQ(1u, cookie_map.count(kLaxName)); | 
| +  EXPECT_EQ(CookieSameSite::LAX_MODE, cookie_map[kLaxName]->SameSite()); | 
| + | 
| +  ASSERT_EQ(1u, cookie_map.count(kStrictName)); | 
| +  EXPECT_EQ(CookieSameSite::STRICT_MODE, cookie_map[kStrictName]->SameSite()); | 
| + | 
| +  STLDeleteElements(&cookies); | 
| +} | 
| + | 
| TEST_F(SQLitePersistentCookieStoreTest, UpdateToEncryption) { | 
| CanonicalCookieVector cookies; | 
|  | 
|  |