| 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 e80c5cd454755c425db920b5d6ad0b1066aed480..b59c28ca63216e6c9d67bd179ddced4f836bda8a 100644
|
| --- a/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
|
| +++ b/net/extras/sqlite/sqlite_persistent_cookie_store_unittest.cc
|
| @@ -13,6 +13,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/sequenced_task_runner.h"
|
| #include "base/synchronization/waitable_event.h"
|
| @@ -469,7 +470,7 @@ TEST_F(SQLitePersistentCookieStoreTest, TestLoadOldSessionCookies) {
|
| cookies.clear();
|
| }
|
|
|
| -// Test loading old session cookies from the disk.
|
| +// Test refusing to load old session cookies from the disk.
|
| TEST_F(SQLitePersistentCookieStoreTest, TestDontLoadOldSessionCookies) {
|
| InitializeStore(false, true);
|
|
|
| @@ -498,6 +499,60 @@ TEST_F(SQLitePersistentCookieStoreTest, TestDontLoadOldSessionCookies) {
|
| 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.
|
| + {"", "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++) {
|
| + 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());
|
| + 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();
|
| +}
|
| +
|
| TEST_F(SQLitePersistentCookieStoreTest, PersistIsPersistent) {
|
| InitializeStore(false, true);
|
| static const char kSessionName[] = "session";
|
|
|