Index: net/extras/sqlite/sqlite_persistent_cookie_store.cc |
diff --git a/net/extras/sqlite/sqlite_persistent_cookie_store.cc b/net/extras/sqlite/sqlite_persistent_cookie_store.cc |
index 1145871df41655f40c736cc88f303a3ffdd10a87..911f05a95818415aa5ba9103f05bb3ed2a951768 100644 |
--- a/net/extras/sqlite/sqlite_persistent_cookie_store.cc |
+++ b/net/extras/sqlite/sqlite_persistent_cookie_store.cc |
@@ -373,6 +373,41 @@ CookiePriority DBCookiePriorityToCookiePriority(DBCookiePriority value) { |
return COOKIE_PRIORITY_DEFAULT; |
} |
+// Possible values for the 'samesite' column |
+enum DBCookieSameSite { |
+ kCookieSameSiteNoRestriction = 0, |
+ kCookieSameSiteLax = 1, |
+ kCookieSameSiteStrict = 2, |
+}; |
+ |
+DBCookieSameSite CookieSameSiteToDBCookieSameSite(CookieSameSite value) { |
+ switch (value) { |
+ case CookieSameSite::NO_RESTRICTION: |
+ return kCookieSameSiteNoRestriction; |
+ case CookieSameSite::LAX_MODE: |
+ return kCookieSameSiteLax; |
+ case CookieSameSite::STRICT_MODE: |
+ return kCookieSameSiteStrict; |
+ } |
+ |
+ NOTREACHED(); |
+ return kCookieSameSiteNoRestriction; |
+} |
+ |
+CookieSameSite DBCookieSameSiteToCookieSameSite(DBCookieSameSite value) { |
+ switch (value) { |
+ case kCookieSameSiteNoRestriction: |
+ return CookieSameSite::NO_RESTRICTION; |
+ case kCookieSameSiteLax: |
+ return CookieSameSite::LAX_MODE; |
+ case kCookieSameSiteStrict: |
+ return CookieSameSite::STRICT_MODE; |
+ } |
+ |
+ NOTREACHED(); |
+ return CookieSameSite::DEFAULT_MODE; |
+} |
+ |
// Increments a specified TimeDelta by the duration between this object's |
// constructor and destructor. Not thread safe. Multiple instances may be |
// created with the same delta instance as long as their lifetimes are nested. |
@@ -414,8 +449,9 @@ bool InitTable(sql::Connection* db) { |
"persistent INTEGER NOT NULL DEFAULT 1," |
"priority INTEGER NOT NULL DEFAULT %d," |
"encrypted_value BLOB DEFAULT ''," |
- "firstpartyonly INTEGER NOT NULL DEFAULT 0)", |
- CookiePriorityToDBCookiePriority(COOKIE_PRIORITY_DEFAULT))); |
+ "firstpartyonly INTEGER NOT NULL DEFAULT %d)", |
+ CookiePriorityToDBCookiePriority(COOKIE_PRIORITY_DEFAULT), |
+ CookieSameSiteToDBCookieSameSite(CookieSameSite::DEFAULT_MODE))); |
if (!db->Execute(stmt.c_str())) |
return false; |
@@ -795,7 +831,8 @@ void SQLitePersistentCookieStore::Backend::MakeCookiesFromSQLStatement( |
Time::FromInternalValue(smt.ColumnInt64(10)), // last_access_utc |
smt.ColumnInt(7) != 0, // secure |
smt.ColumnInt(8) != 0, // httponly |
- smt.ColumnInt(9) != 0, // firstpartyonly |
+ DBCookieSameSiteToCookieSameSite( |
+ static_cast<DBCookieSameSite>(smt.ColumnInt(9))), // samesite |
DBCookiePriorityToCookiePriority( |
static_cast<DBCookiePriority>(smt.ColumnInt(13))))); // priority |
DLOG_IF(WARNING, cc->CreationDate() > Time::Now()) |
@@ -1130,7 +1167,8 @@ void SQLitePersistentCookieStore::Backend::Commit() { |
add_smt.BindInt64(6, po->cc().ExpiryDate().ToInternalValue()); |
add_smt.BindInt(7, po->cc().IsSecure()); |
add_smt.BindInt(8, po->cc().IsHttpOnly()); |
- add_smt.BindInt(9, po->cc().IsSameSite()); |
+ add_smt.BindInt(9, |
+ CookieSameSiteToDBCookieSameSite(po->cc().SameSite())); |
add_smt.BindInt64(10, po->cc().LastAccessDate().ToInternalValue()); |
add_smt.BindInt(11, po->cc().IsPersistent()); |
add_smt.BindInt(12, po->cc().IsPersistent()); |