Index: chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc |
=================================================================== |
--- chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc (revision 105639) |
+++ chrome/browser/net/sqlite_persistent_cookie_store_unittest.cc (working copy) |
@@ -23,36 +23,25 @@ |
: ui_thread_(BrowserThread::UI), |
db_thread_(BrowserThread::DB), |
io_thread_(BrowserThread::IO), |
- loaded_event_(false, false), |
- key_loaded_event_(false, false), |
- db_thread_event_(true, false) { |
+ event_(false, false) { |
} |
+ protected: |
void OnLoaded( |
const std::vector<net::CookieMonster::CanonicalCookie*>& cookies) { |
cookies_ = cookies; |
- loaded_event_.Signal(); |
+ event_.Signal(); |
} |
- void OnKeyLoaded( |
- const std::vector<net::CookieMonster::CanonicalCookie*>& cookies) { |
- cookies_ = cookies; |
- key_loaded_event_.Signal(); |
- } |
- |
- void Load(std::vector<net::CookieMonster::CanonicalCookie*>* cookies) { |
- store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, |
+ bool Load(std::vector<net::CookieMonster::CanonicalCookie*>* cookies) { |
+ bool result = |
+ store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, |
base::Unretained(this))); |
- loaded_event_.Wait(); |
+ event_.Wait(); |
*cookies = cookies_; |
+ return result; |
} |
- // We have to create this method to wrap WaitableEvent::Wait, since we cannot |
- // bind a non-void returning method as a Closure. |
- void WaitOnDBEvent() { |
- db_thread_event_.Wait(); |
- } |
- |
virtual void SetUp() { |
ui_thread_.Start(); |
db_thread_.Start(); |
@@ -61,7 +50,7 @@ |
store_ = new SQLitePersistentCookieStore( |
temp_dir_.path().Append(chrome::kCookieFilename)); |
std::vector<net::CookieMonster::CanonicalCookie*> cookies; |
- Load(&cookies); |
+ ASSERT_TRUE(Load(&cookies)); |
ASSERT_EQ(0u, cookies.size()); |
// Make sure the store gets written at least once. |
store_->AddCookie( |
@@ -73,13 +62,10 @@ |
false, false, true)); |
} |
- protected: |
BrowserThread ui_thread_; |
BrowserThread db_thread_; |
BrowserThread io_thread_; |
- base::WaitableEvent loaded_event_; |
- base::WaitableEvent key_loaded_event_; |
- base::WaitableEvent db_thread_event_; |
+ base::WaitableEvent event_; |
std::vector<net::CookieMonster::CanonicalCookie*> cookies_; |
ScopedTempDir temp_dir_; |
scoped_refptr<SQLitePersistentCookieStore> store_; |
@@ -132,7 +118,7 @@ |
temp_dir_.path().Append(chrome::kCookieFilename)); |
// Reload and test for persistence |
- 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()); |
@@ -149,86 +135,10 @@ |
temp_dir_.path().Append(chrome::kCookieFilename)); |
// Reload and check if the cookie has been removed. |
- Load(&cookies); |
+ ASSERT_TRUE(Load(&cookies)); |
ASSERT_EQ(0U, cookies.size()); |
} |
-// Test that priority load of cookies for a specfic domain key could be |
-// completed before the entire store is loaded |
-TEST_F(SQLitePersistentCookieStoreTest, TestLoadCookiesForKey) { |
- base::Time t = base::Time::Now() + base::TimeDelta::FromInternalValue(10); |
- // A foo.bar cookie was already added in setup. |
- store_->AddCookie( |
- net::CookieMonster::CanonicalCookie(GURL(), "A", "B", |
- "www.aaa.com", "/", |
- std::string(), std::string(), |
- t, t, t, false, false, true)); |
- t += base::TimeDelta::FromInternalValue(10); |
- store_->AddCookie( |
- net::CookieMonster::CanonicalCookie(GURL(), "A", "B", |
- "travel.aaa.com", "/", |
- std::string(), std::string(), |
- t, t, t, false, false, true)); |
- t += base::TimeDelta::FromInternalValue(10); |
- store_->AddCookie( |
- net::CookieMonster::CanonicalCookie(GURL(), "A", "B", |
- "www.bbb.com", "/", |
- std::string(), std::string(), |
- t, t, t, false, false, true)); |
- store_ = NULL; |
- |
- scoped_refptr<base::ThreadTestHelper> helper( |
- new base::ThreadTestHelper( |
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB))); |
- // Make sure we wait until the destructor has run. |
- ASSERT_TRUE(helper->Run()); |
- |
- store_ = new SQLitePersistentCookieStore( |
- temp_dir_.path().Append(chrome::kCookieFilename)); |
- // Posting a blocking task to db_thread_ makes sure that the DB thread waits |
- // until both Load and LoadCookiesForKey have been posted to its task queue. |
- db_thread_.PostTask(BrowserThread::DB, FROM_HERE, |
- base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent, |
- base::Unretained(this))); |
- store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, |
- base::Unretained(this))); |
- store_->LoadCookiesForKey("aaa.com", |
- base::Bind(&SQLitePersistentCookieStoreTest::OnKeyLoaded, |
- base::Unretained(this))); |
- db_thread_.PostTask(BrowserThread::DB, FROM_HERE, |
- base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent, |
- base::Unretained(this))); |
- |
- // Now the DB-thread queue contains: |
- // (active:) |
- // 1. Wait (on db_event) |
- // (pending:) |
- // 2. "Init And Chain-Load First Domain" |
- // 3. Priority Load (aaa.com) |
- // 4. Wait (on db_event) |
- db_thread_event_.Signal(); |
- key_loaded_event_.Wait(); |
- ASSERT_EQ(loaded_event_.IsSignaled(), false); |
- std::set<std::string> cookies_loaded; |
- for (std::vector<net::CookieMonster::CanonicalCookie*>::iterator |
- it = cookies_.begin(); it != cookies_.end(); ++it) |
- cookies_loaded.insert((*it)->Domain().c_str()); |
- ASSERT_GT(4U, cookies_loaded.size()); |
- ASSERT_EQ(cookies_loaded.find("www.aaa.com") != cookies_loaded.end(), true); |
- ASSERT_EQ(cookies_loaded.find("travel.aaa.com") != cookies_loaded.end(), |
- true); |
- |
- db_thread_event_.Signal(); |
- loaded_event_.Wait(); |
- for (std::vector<net::CookieMonster::CanonicalCookie*>::iterator |
- it = cookies_.begin(); it != cookies_.end(); ++it) |
- cookies_loaded.insert((*it)->Domain().c_str()); |
- ASSERT_EQ(4U, cookies_loaded.size()); |
- ASSERT_EQ(cookies_loaded.find("http://foo.bar") != cookies_loaded.end(), |
- true); |
- ASSERT_EQ(cookies_loaded.find("www.bbb.com") != cookies_loaded.end(), true); |
-} |
- |
// Test that we can force the database to be written by calling Flush(). |
TEST_F(SQLitePersistentCookieStoreTest, TestFlush) { |
// File timestamps don't work well on all platforms, so we'll determine |