| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/extras/sqlite/sqlite_persistent_cookie_store.h" | 5 #include "net/extras/sqlite/sqlite_persistent_cookie_store.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 } | 79 } |
| 80 | 80 |
| 81 } // namespace | 81 } // namespace |
| 82 | 82 |
| 83 typedef std::vector<CanonicalCookie*> CanonicalCookieVector; | 83 typedef std::vector<CanonicalCookie*> CanonicalCookieVector; |
| 84 | 84 |
| 85 class SQLitePersistentCookieStoreTest : public testing::Test { | 85 class SQLitePersistentCookieStoreTest : public testing::Test { |
| 86 public: | 86 public: |
| 87 SQLitePersistentCookieStoreTest() | 87 SQLitePersistentCookieStoreTest() |
| 88 : pool_owner_(new base::SequencedWorkerPoolOwner(3, "Background Pool")), | 88 : pool_owner_(new base::SequencedWorkerPoolOwner(3, "Background Pool")), |
| 89 loaded_event_(false, false), | 89 loaded_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 90 key_loaded_event_(false, false), | 90 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| 91 db_thread_event_(false, false) {} | 91 key_loaded_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 92 base::WaitableEvent::InitialState::NOT_SIGNALED), |
| 93 db_thread_event_(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 94 base::WaitableEvent::InitialState::NOT_SIGNALED) {} |
| 92 | 95 |
| 93 void OnLoaded(const CanonicalCookieVector& cookies) { | 96 void OnLoaded(const CanonicalCookieVector& cookies) { |
| 94 cookies_ = cookies; | 97 cookies_ = cookies; |
| 95 loaded_event_.Signal(); | 98 loaded_event_.Signal(); |
| 96 } | 99 } |
| 97 | 100 |
| 98 void OnKeyLoaded(const CanonicalCookieVector& cookies) { | 101 void OnKeyLoaded(const CanonicalCookieVector& cookies) { |
| 99 cookies_ = cookies; | 102 cookies_ = cookies; |
| 100 key_loaded_event_.Signal(); | 103 key_loaded_event_.Signal(); |
| 101 } | 104 } |
| 102 | 105 |
| 103 void Load(CanonicalCookieVector* cookies) { | 106 void Load(CanonicalCookieVector* cookies) { |
| 104 EXPECT_FALSE(loaded_event_.IsSignaled()); | 107 EXPECT_FALSE(loaded_event_.IsSignaled()); |
| 105 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, | 108 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, |
| 106 base::Unretained(this))); | 109 base::Unretained(this))); |
| 107 loaded_event_.Wait(); | 110 loaded_event_.Wait(); |
| 108 *cookies = cookies_; | 111 *cookies = cookies_; |
| 109 } | 112 } |
| 110 | 113 |
| 111 void Flush() { | 114 void Flush() { |
| 112 base::WaitableEvent event(false, false); | 115 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 116 base::WaitableEvent::InitialState::NOT_SIGNALED); |
| 113 store_->Flush( | 117 store_->Flush( |
| 114 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event))); | 118 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event))); |
| 115 event.Wait(); | 119 event.Wait(); |
| 116 } | 120 } |
| 117 | 121 |
| 118 scoped_refptr<base::SequencedTaskRunner> background_task_runner() { | 122 scoped_refptr<base::SequencedTaskRunner> background_task_runner() { |
| 119 return pool_owner_->pool()->GetSequencedTaskRunner( | 123 return pool_owner_->pool()->GetSequencedTaskRunner( |
| 120 pool_owner_->pool()->GetNamedSequenceToken("background")); | 124 pool_owner_->pool()->GetNamedSequenceToken("background")); |
| 121 } | 125 } |
| 122 | 126 |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 | 313 |
| 310 // Posting a blocking task to db_thread_ makes sure that the DB thread waits | 314 // Posting a blocking task to db_thread_ makes sure that the DB thread waits |
| 311 // until both Load and Flush have been posted to its task queue. | 315 // until both Load and Flush have been posted to its task queue. |
| 312 background_task_runner()->PostTask( | 316 background_task_runner()->PostTask( |
| 313 FROM_HERE, base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent, | 317 FROM_HERE, base::Bind(&SQLitePersistentCookieStoreTest::WaitOnDBEvent, |
| 314 base::Unretained(this))); | 318 base::Unretained(this))); |
| 315 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, | 319 store_->Load(base::Bind(&SQLitePersistentCookieStoreTest::OnLoaded, |
| 316 base::Unretained(this))); | 320 base::Unretained(this))); |
| 317 t += base::TimeDelta::FromInternalValue(10); | 321 t += base::TimeDelta::FromInternalValue(10); |
| 318 AddCookieWithExpiration("A", "B", "c.com", "/", t, base::Time()); | 322 AddCookieWithExpiration("A", "B", "c.com", "/", t, base::Time()); |
| 319 base::WaitableEvent event(false, false); | 323 base::WaitableEvent event(base::WaitableEvent::ResetPolicy::AUTOMATIC, |
| 324 base::WaitableEvent::InitialState::NOT_SIGNALED); |
| 320 store_->Flush( | 325 store_->Flush( |
| 321 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event))); | 326 base::Bind(&base::WaitableEvent::Signal, base::Unretained(&event))); |
| 322 | 327 |
| 323 // Now the DB-thread queue contains: | 328 // Now the DB-thread queue contains: |
| 324 // (active:) | 329 // (active:) |
| 325 // 1. Wait (on db_event) | 330 // 1. Wait (on db_event) |
| 326 // (pending:) | 331 // (pending:) |
| 327 // 2. "Init And Chain-Load First Domain" | 332 // 2. "Init And Chain-Load First Domain" |
| 328 // 3. Add Cookie (c.com) | 333 // 3. Add Cookie (c.com) |
| 329 // 4. Flush Cookie (c.com) | 334 // 4. Flush Cookie (c.com) |
| (...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 804 EXPECT_TRUE(was_called_with_no_cookies); | 809 EXPECT_TRUE(was_called_with_no_cookies); |
| 805 | 810 |
| 806 // Same with trying to load a specific cookie. | 811 // Same with trying to load a specific cookie. |
| 807 was_called_with_no_cookies = false; | 812 was_called_with_no_cookies = false; |
| 808 store_->LoadCookiesForKey("foo.bar", base::Bind(WasCalledWithNoCookies, | 813 store_->LoadCookiesForKey("foo.bar", base::Bind(WasCalledWithNoCookies, |
| 809 &was_called_with_no_cookies)); | 814 &was_called_with_no_cookies)); |
| 810 EXPECT_TRUE(was_called_with_no_cookies); | 815 EXPECT_TRUE(was_called_with_no_cookies); |
| 811 } | 816 } |
| 812 | 817 |
| 813 } // namespace net | 818 } // namespace net |
| OLD | NEW |