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..54c520c5158f74edb156cf21c5a5e559e0d806d2 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,58 @@ 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 (auto& cookie_info : cookies_info) { |
+ stmt.Reset(true); |
+ |
+ stmt.BindInt64(0, creation_time++); |
+ stmt.BindString(1, cookie_info.name); |
+ stmt.BindString(2, cookie_info.value); |
+ stmt.BindString(3, cookie_info.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()); |
+ 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); |