Chromium Code Reviews| 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 d8be57ee0426f8334332d46231b0a625bce27494..4408e8dd4a6ce88b0297a56ef9e431dc98247331 100644 |
| --- a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc |
| +++ b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc |
| @@ -14,6 +14,7 @@ |
| #include "base/files/file_util.h" |
| #include "base/files/scoped_temp_dir.h" |
| #include "base/location.h" |
| +#include "base/memory/ptr_util.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/run_loop.h" |
| #include "base/sequenced_task_runner.h" |
| @@ -480,7 +481,7 @@ TEST_F(SQLitePersistentCookieStoreTest, DISABLED_TestLoadOldSessionCookies) { |
| cookies.clear(); |
| } |
| -// Test loading old session cookies from the disk. |
| +// Test refusing to load old session cookies from the disk. |
| // TODO(mattcary): disabled for possibly causing iOS timeouts: crbug.com/727566. |
| TEST_F(SQLitePersistentCookieStoreTest, |
| DISABLED_TestDontLoadOldSessionCookies) { |
| @@ -511,6 +512,60 @@ TEST_F(SQLitePersistentCookieStoreTest, |
| ASSERT_EQ(0U, cookies.size()); |
| } |
| +// Confirm bad cookies on disk don't get looaded |
| +TEST_F(SQLitePersistentCookieStoreTest, FilterBadCookies) { |
| + // Create an on-disk store. |
| + InitializeStore(false, true); |
| + DestroyStore(); |
| + |
| + // Add some cookies in by hand. |
| + base::FilePath store_name(temp_dir_.GetPath().Append(kCookieFilename)); |
| + std::unique_ptr<sql::Connection> db(base::MakeUnique<sql::Connection>()); |
| + ASSERT_TRUE(db->Open(store_name)); |
| + sql::Statement stmt(db->GetUniqueStatement( |
| + "INSERT INTO cookies (creation_utc, host_key, name, value, " |
| + "encrypted_value, path, expires_utc, secure, httponly, " |
| + "firstpartyonly, last_access_utc, has_expires, persistent, priority) " |
| + "VALUES (?,'google.izzle',?,?,'',?,0,0,0,0,0,1,1,0)")); |
| + ASSERT_TRUE(stmt.is_valid()); |
| + |
| + struct CookieInfo { |
| + const char* name; |
| + const char* value; |
| + const char* path; |
| + } cookies_info[] = {// A couple non-canonical cookies. |
| + {"A=", "B", "/path"}, |
| + {"C ", "D", "/path"}, |
| + |
| + // A canonical cookie. |
| + {"E", "F", "/path"}}; |
| + |
| + int64_t creation_time = 1; |
| + for (int i = 0; |
| + static_cast<unsigned int>(i) < sizeof(cookies_info) / sizeof(CookieInfo); |
| + i++) { |
|
mmenke
2017/06/19 17:57:13
for (const auto& cookie_info : cookies_info)
(Eve
Randy Smith (Not in Mondays)
2017/06/20 21:17:18
Completely fair. Done.
|
| + stmt.Reset(true); |
| + |
| + stmt.BindInt64(0, creation_time++); |
| + stmt.BindString(1, cookies_info[i].name); |
| + stmt.BindString(2, cookies_info[i].value); |
| + stmt.BindString(3, cookies_info[i].path); |
| + ASSERT_TRUE(stmt.Run()); |
| + } |
| + stmt.Clear(); |
| + db.reset(); |
| + |
| + // Reopen the store and confirm that the only cookie loaded is the |
| + // canonical one. |
| + CanonicalCookieVector cookies; |
| + CreateAndLoad(false, false, &cookies); |
| + ASSERT_EQ(1U, cookies.size()); |
|
mmenke
2017/06/19 17:57:13
Hrm...Most of this file uses U, but there are a fe
Randy Smith (Not in Mondays)
2017/06/20 21:17:18
I'm not sure if you're requesting a change? 'u' i
|
| + EXPECT_STREQ("E", cookies[0]->Name().c_str()); |
| + EXPECT_STREQ("F", cookies[0]->Value().c_str()); |
| + EXPECT_STREQ("/path", cookies[0]->Path().c_str()); |
| + DestroyStore(); |
| +} |
| + |
| // TODO(mattcary): disabled for possibly causing iOS timeouts: crbug.com/727566. |
| TEST_F(SQLitePersistentCookieStoreTest, DISABLED_PersistIsPersistent) { |
| InitializeStore(false, true); |