| Index: chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc
|
| ===================================================================
|
| --- chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc (revision 100345)
|
| +++ chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc (working copy)
|
| @@ -2,11 +2,13 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| +#include "base/bind.h"
|
| #include "base/file_util.h"
|
| #include "base/memory/ref_counted.h"
|
| #include "base/message_loop.h"
|
| #include "base/scoped_temp_dir.h"
|
| #include "base/stl_util.h"
|
| +#include "base/synchronization/waitable_event.h"
|
| #include "base/test/thread_test_helper.h"
|
| #include "base/time.h"
|
| #include "chrome/browser/net/sqlite_persistent_cookie_store.h"
|
| @@ -19,19 +21,37 @@
|
| public:
|
| SQLitePersistentCookieStoreTest()
|
| : ui_thread_(BrowserThread::UI),
|
| - db_thread_(BrowserThread::DB) {
|
| + db_thread_(BrowserThread::DB),
|
| + io_thread_(BrowserThread::IO),
|
| + event_(false, false) {
|
| }
|
|
|
| protected:
|
| + void OnLoaded(
|
| + const std::vector<net::CookieMonster::CanonicalCookie*>& cookies) {
|
| + cookies_ = cookies;
|
| + event_.Signal();
|
| + }
|
| +
|
| + bool Load(std::vector<net::CookieMonster::CanonicalCookie*>* cookies) {
|
| + bool result =
|
| + store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded,
|
| + base::Unretained(this)));
|
| + event_.Wait();
|
| + *cookies = cookies_;
|
| + return result;
|
| + }
|
| +
|
| virtual void SetUp() {
|
| ui_thread_.Start();
|
| db_thread_.Start();
|
| + io_thread_.Start();
|
| ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
|
| store_ = new SQLitePersistentCookieStore(
|
| temp_dir_.path().Append(chrome::kCookieFilename));
|
| std::vector<net::CookieMonster::CanonicalCookie*> cookies;
|
| - ASSERT_TRUE(store_->Load(&cookies));
|
| - ASSERT_TRUE(0 == cookies.size());
|
| + ASSERT_TRUE(Load(&cookies));
|
| + ASSERT_EQ(0u, cookies.size());
|
| // Make sure the store gets written at least once.
|
| store_->AddCookie(
|
| net::CookieMonster::CanonicalCookie(GURL(), "A", "B", "http://foo.bar",
|
| @@ -44,6 +64,9 @@
|
|
|
| BrowserThread ui_thread_;
|
| BrowserThread db_thread_;
|
| + BrowserThread io_thread_;
|
| + base::WaitableEvent event_;
|
| + std::vector<net::CookieMonster::CanonicalCookie*> cookies_;
|
| ScopedTempDir temp_dir_;
|
| scoped_refptr<SQLitePersistentCookieStore> store_;
|
| };
|
| @@ -95,7 +118,7 @@
|
| temp_dir_.path().Append(chrome::kCookieFilename));
|
|
|
| // Reload and test for persistence
|
| - ASSERT_TRUE(store_->Load(&cookies));
|
| + ASSERT_TRUE(Load(&cookies));
|
| ASSERT_EQ(1U, cookies.size());
|
| ASSERT_STREQ("http://foo.bar", cookies[0]->Domain().c_str());
|
| ASSERT_STREQ("A", cookies[0]->Name().c_str());
|
| @@ -112,7 +135,7 @@
|
| temp_dir_.path().Append(chrome::kCookieFilename));
|
|
|
| // Reload and check if the cookie has been removed.
|
| - ASSERT_TRUE(store_->Load(&cookies));
|
| + ASSERT_TRUE(Load(&cookies));
|
| ASSERT_EQ(0U, cookies.size());
|
| }
|
|
|
|
|