| 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/cookies/cookie_store_unittest.h" | 5 #include "net/cookies/cookie_store_unittest.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 MultiThreadedCookieStoreTest, | 108 MultiThreadedCookieStoreTest, |
| 109 CookieMonsterTestTraits); | 109 CookieMonsterTestTraits); |
| 110 | 110 |
| 111 INSTANTIATE_TYPED_TEST_CASE_P(CookieMonsterStrictSecure, | 111 INSTANTIATE_TYPED_TEST_CASE_P(CookieMonsterStrictSecure, |
| 112 CookieStoreTest, | 112 CookieStoreTest, |
| 113 CookieMonsterEnforcingStrictSecure); | 113 CookieMonsterEnforcingStrictSecure); |
| 114 | 114 |
| 115 template <typename T> | 115 template <typename T> |
| 116 class CookieMonsterTestBase : public CookieStoreTest<T> { | 116 class CookieMonsterTestBase : public CookieStoreTest<T> { |
| 117 public: | 117 public: |
| 118 using CookieStoreTest<T>::RunFor; | |
| 119 using CookieStoreTest<T>::SetCookie; | 118 using CookieStoreTest<T>::SetCookie; |
| 120 | 119 |
| 121 protected: | 120 protected: |
| 122 using CookieStoreTest<T>::http_www_google_; | 121 using CookieStoreTest<T>::http_www_google_; |
| 123 using CookieStoreTest<T>::https_www_google_; | 122 using CookieStoreTest<T>::https_www_google_; |
| 124 | 123 |
| 125 CookieList GetAllCookiesForURL(CookieMonster* cm, const GURL& url) { | 124 CookieList GetAllCookiesForURL(CookieMonster* cm, const GURL& url) { |
| 126 DCHECK(cm); | 125 DCHECK(cm); |
| 127 GetCookieListCallback callback; | 126 GetCookieListCallback callback; |
| 128 cm->GetAllCookiesForURLAsync(url, base::Bind(&GetCookieListCallback::Run, | 127 cm->GetAllCookiesForURLAsync(url, base::Bind(&GetCookieListCallback::Run, |
| 129 base::Unretained(&callback))); | 128 base::Unretained(&callback))); |
| 130 RunFor(kTimeout); | 129 callback.WaitUntilDone(); |
| 131 EXPECT_TRUE(callback.did_run()); | |
| 132 return callback.cookies(); | 130 return callback.cookies(); |
| 133 } | 131 } |
| 134 | 132 |
| 135 CookieList GetAllCookiesForURLWithOptions(CookieMonster* cm, | 133 CookieList GetAllCookiesForURLWithOptions(CookieMonster* cm, |
| 136 const GURL& url, | 134 const GURL& url, |
| 137 const CookieOptions& options) { | 135 const CookieOptions& options) { |
| 138 DCHECK(cm); | 136 DCHECK(cm); |
| 139 GetCookieListCallback callback; | 137 GetCookieListCallback callback; |
| 140 cm->GetAllCookiesForURLWithOptionsAsync( | 138 cm->GetAllCookiesForURLWithOptionsAsync( |
| 141 url, options, | 139 url, options, |
| 142 base::Bind(&GetCookieListCallback::Run, base::Unretained(&callback))); | 140 base::Bind(&GetCookieListCallback::Run, base::Unretained(&callback))); |
| 143 RunFor(kTimeout); | 141 callback.WaitUntilDone(); |
| 144 EXPECT_TRUE(callback.did_run()); | |
| 145 return callback.cookies(); | 142 return callback.cookies(); |
| 146 } | 143 } |
| 147 | 144 |
| 148 bool SetCookieWithDetails(CookieMonster* cm, | 145 bool SetCookieWithDetails(CookieMonster* cm, |
| 149 const GURL& url, | 146 const GURL& url, |
| 150 const std::string& name, | 147 const std::string& name, |
| 151 const std::string& value, | 148 const std::string& value, |
| 152 const std::string& domain, | 149 const std::string& domain, |
| 153 const std::string& path, | 150 const std::string& path, |
| 154 const base::Time& expiration_time, | 151 const base::Time& expiration_time, |
| 155 bool secure, | 152 bool secure, |
| 156 bool http_only, | 153 bool http_only, |
| 157 bool first_party_only, | 154 bool first_party_only, |
| 158 CookiePriority priority) { | 155 CookiePriority priority) { |
| 159 DCHECK(cm); | 156 DCHECK(cm); |
| 160 ResultSavingCookieCallback<bool> callback; | 157 ResultSavingCookieCallback<bool> callback; |
| 161 cm->SetCookieWithDetailsAsync( | 158 cm->SetCookieWithDetailsAsync( |
| 162 url, name, value, domain, path, expiration_time, secure, http_only, | 159 url, name, value, domain, path, expiration_time, secure, http_only, |
| 163 first_party_only, false /* enforce prefixes */, | 160 first_party_only, false /* enforce prefixes */, |
| 164 false /* enforces strict secure cookies */, priority, | 161 false /* enforces strict secure cookies */, priority, |
| 165 base::Bind(&ResultSavingCookieCallback<bool>::Run, | 162 base::Bind(&ResultSavingCookieCallback<bool>::Run, |
| 166 base::Unretained(&callback))); | 163 base::Unretained(&callback))); |
| 167 RunFor(kTimeout); | 164 callback.WaitUntilDone(); |
| 168 EXPECT_TRUE(callback.did_run()); | |
| 169 return callback.result(); | 165 return callback.result(); |
| 170 } | 166 } |
| 171 | 167 |
| 172 bool SetAllCookies(CookieMonster* cm, const CookieList& list) { | 168 bool SetAllCookies(CookieMonster* cm, const CookieList& list) { |
| 173 DCHECK(cm); | 169 DCHECK(cm); |
| 174 ResultSavingCookieCallback<bool> callback; | 170 ResultSavingCookieCallback<bool> callback; |
| 175 cm->SetAllCookiesAsync(list, | 171 cm->SetAllCookiesAsync(list, |
| 176 base::Bind(&ResultSavingCookieCallback<bool>::Run, | 172 base::Bind(&ResultSavingCookieCallback<bool>::Run, |
| 177 base::Unretained(&callback))); | 173 base::Unretained(&callback))); |
| 178 RunFor(kTimeout); | 174 callback.WaitUntilDone(); |
| 179 EXPECT_TRUE(callback.did_run()); | |
| 180 return callback.result(); | 175 return callback.result(); |
| 181 } | 176 } |
| 182 | 177 |
| 183 int DeleteAll(CookieMonster* cm) { | 178 int DeleteAll(CookieMonster* cm) { |
| 184 DCHECK(cm); | 179 DCHECK(cm); |
| 185 ResultSavingCookieCallback<int> callback; | 180 ResultSavingCookieCallback<int> callback; |
| 186 cm->DeleteAllAsync(base::Bind(&ResultSavingCookieCallback<int>::Run, | 181 cm->DeleteAllAsync(base::Bind(&ResultSavingCookieCallback<int>::Run, |
| 187 base::Unretained(&callback))); | 182 base::Unretained(&callback))); |
| 188 RunFor(kTimeout); | 183 callback.WaitUntilDone(); |
| 189 EXPECT_TRUE(callback.did_run()); | |
| 190 return callback.result(); | 184 return callback.result(); |
| 191 } | 185 } |
| 192 | 186 |
| 193 int DeleteAllCreatedBetween(CookieMonster* cm, | 187 int DeleteAllCreatedBetween(CookieMonster* cm, |
| 194 const base::Time& delete_begin, | 188 const base::Time& delete_begin, |
| 195 const base::Time& delete_end) { | 189 const base::Time& delete_end) { |
| 196 DCHECK(cm); | 190 DCHECK(cm); |
| 197 ResultSavingCookieCallback<int> callback; | 191 ResultSavingCookieCallback<int> callback; |
| 198 cm->DeleteAllCreatedBetweenAsync( | 192 cm->DeleteAllCreatedBetweenAsync( |
| 199 delete_begin, delete_end, | 193 delete_begin, delete_end, |
| 200 base::Bind(&ResultSavingCookieCallback<int>::Run, | 194 base::Bind(&ResultSavingCookieCallback<int>::Run, |
| 201 base::Unretained(&callback))); | 195 base::Unretained(&callback))); |
| 202 RunFor(kTimeout); | 196 callback.WaitUntilDone(); |
| 203 EXPECT_TRUE(callback.did_run()); | |
| 204 return callback.result(); | 197 return callback.result(); |
| 205 } | 198 } |
| 206 | 199 |
| 207 int DeleteAllCreatedBetweenForHost(CookieMonster* cm, | 200 int DeleteAllCreatedBetweenForHost(CookieMonster* cm, |
| 208 const base::Time delete_begin, | 201 const base::Time delete_begin, |
| 209 const base::Time delete_end, | 202 const base::Time delete_end, |
| 210 const GURL& url) { | 203 const GURL& url) { |
| 211 DCHECK(cm); | 204 DCHECK(cm); |
| 212 ResultSavingCookieCallback<int> callback; | 205 ResultSavingCookieCallback<int> callback; |
| 213 cm->DeleteAllCreatedBetweenForHostAsync( | 206 cm->DeleteAllCreatedBetweenForHostAsync( |
| 214 delete_begin, delete_end, url, | 207 delete_begin, delete_end, url, |
| 215 base::Bind(&ResultSavingCookieCallback<int>::Run, | 208 base::Bind(&ResultSavingCookieCallback<int>::Run, |
| 216 base::Unretained(&callback))); | 209 base::Unretained(&callback))); |
| 217 RunFor(kTimeout); | 210 callback.WaitUntilDone(); |
| 218 EXPECT_TRUE(callback.did_run()); | |
| 219 return callback.result(); | 211 return callback.result(); |
| 220 } | 212 } |
| 221 | 213 |
| 222 int DeleteAllForHost(CookieMonster* cm, const GURL& url) { | 214 int DeleteAllForHost(CookieMonster* cm, const GURL& url) { |
| 223 DCHECK(cm); | 215 DCHECK(cm); |
| 224 ResultSavingCookieCallback<int> callback; | 216 ResultSavingCookieCallback<int> callback; |
| 225 cm->DeleteAllForHostAsync(url, | 217 cm->DeleteAllForHostAsync(url, |
| 226 base::Bind(&ResultSavingCookieCallback<int>::Run, | 218 base::Bind(&ResultSavingCookieCallback<int>::Run, |
| 227 base::Unretained(&callback))); | 219 base::Unretained(&callback))); |
| 228 RunFor(kTimeout); | 220 callback.WaitUntilDone(); |
| 229 EXPECT_TRUE(callback.did_run()); | |
| 230 return callback.result(); | 221 return callback.result(); |
| 231 } | 222 } |
| 232 | 223 |
| 233 bool DeleteCanonicalCookie(CookieMonster* cm, const CanonicalCookie& cookie) { | 224 bool DeleteCanonicalCookie(CookieMonster* cm, const CanonicalCookie& cookie) { |
| 234 DCHECK(cm); | 225 DCHECK(cm); |
| 235 ResultSavingCookieCallback<bool> callback; | 226 ResultSavingCookieCallback<bool> callback; |
| 236 cm->DeleteCanonicalCookieAsync( | 227 cm->DeleteCanonicalCookieAsync( |
| 237 cookie, base::Bind(&ResultSavingCookieCallback<bool>::Run, | 228 cookie, base::Bind(&ResultSavingCookieCallback<bool>::Run, |
| 238 base::Unretained(&callback))); | 229 base::Unretained(&callback))); |
| 239 RunFor(kTimeout); | 230 callback.WaitUntilDone(); |
| 240 EXPECT_TRUE(callback.did_run()); | |
| 241 return callback.result(); | 231 return callback.result(); |
| 242 } | 232 } |
| 243 | 233 |
| 244 // Helper for DeleteAllForHost test; repopulates CM with same layout | 234 // Helper for DeleteAllForHost test; repopulates CM with same layout |
| 245 // each time. | 235 // each time. |
| 246 void PopulateCmForDeleteAllForHost(scoped_refptr<CookieMonster> cm) { | 236 void PopulateCmForDeleteAllForHost(scoped_refptr<CookieMonster> cm) { |
| 247 GURL url_top_level_domain_plus_1(kTopLevelDomainPlus1); | 237 GURL url_top_level_domain_plus_1(kTopLevelDomainPlus1); |
| 248 GURL url_top_level_domain_plus_2(kTopLevelDomainPlus2); | 238 GURL url_top_level_domain_plus_2(kTopLevelDomainPlus2); |
| 249 GURL url_top_level_domain_plus_2_secure(kTopLevelDomainPlus2Secure); | 239 GURL url_top_level_domain_plus_2_secure(kTopLevelDomainPlus2Secure); |
| 250 GURL url_top_level_domain_plus_3(kTopLevelDomainPlus3); | 240 GURL url_top_level_domain_plus_3(kTopLevelDomainPlus3); |
| (...skipping 447 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 698 const std::string value; | 688 const std::string value; |
| 699 const std::string domain; | 689 const std::string domain; |
| 700 const std::string path; | 690 const std::string path; |
| 701 const base::Time expiration_time; | 691 const base::Time expiration_time; |
| 702 bool secure; | 692 bool secure; |
| 703 bool http_only; | 693 bool http_only; |
| 704 bool first_party_only; | 694 bool first_party_only; |
| 705 CookiePriority priority; | 695 CookiePriority priority; |
| 706 }; | 696 }; |
| 707 | 697 |
| 708 ACTION(QuitCurrentMessageLoop) { | 698 ACTION_P(QuitRunLoop, run_loop) { |
| 709 base::ThreadTaskRunnerHandle::Get()->PostTask( | 699 run_loop->Quit(); |
| 710 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); | |
| 711 } | 700 } |
| 712 | 701 |
| 713 // TODO(erikwright): When the synchronous helpers 'GetCookies' etc. are removed, | 702 // TODO(erikwright): When the synchronous helpers 'GetCookies' etc. are removed, |
| 714 // rename these, removing the 'Action' suffix. | 703 // rename these, removing the 'Action' suffix. |
| 715 ACTION_P4(DeleteCookieAction, cookie_monster, url, name, callback) { | 704 ACTION_P4(DeleteCookieAction, cookie_monster, url, name, callback) { |
| 716 cookie_monster->DeleteCookieAsync(url, name, callback->AsCallback()); | 705 cookie_monster->DeleteCookieAsync(url, name, callback->AsCallback()); |
| 717 } | 706 } |
| 718 ACTION_P3(GetCookiesAction, cookie_monster, url, callback) { | 707 ACTION_P3(GetCookiesAction, cookie_monster, url, callback) { |
| 719 cookie_monster->GetCookiesWithOptionsAsync(url, CookieOptions(), | 708 cookie_monster->GetCookiesWithOptionsAsync(url, CookieOptions(), |
| 720 callback->AsCallback()); | 709 callback->AsCallback()); |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 779 | 768 |
| 780 // This test suite verifies the task deferral behaviour of the CookieMonster. | 769 // This test suite verifies the task deferral behaviour of the CookieMonster. |
| 781 // Specifically, for each asynchronous method, verify that: | 770 // Specifically, for each asynchronous method, verify that: |
| 782 // 1. invoking it on an uninitialized cookie store causes the store to begin | 771 // 1. invoking it on an uninitialized cookie store causes the store to begin |
| 783 // chain-loading its backing data or loading data for a specific domain key | 772 // chain-loading its backing data or loading data for a specific domain key |
| 784 // (eTLD+1). | 773 // (eTLD+1). |
| 785 // 2. The initial invocation does not complete until the loading completes. | 774 // 2. The initial invocation does not complete until the loading completes. |
| 786 // 3. Invocations after the loading has completed complete immediately. | 775 // 3. Invocations after the loading has completed complete immediately. |
| 787 class DeferredCookieTaskTest : public CookieMonsterTest { | 776 class DeferredCookieTaskTest : public CookieMonsterTest { |
| 788 protected: | 777 protected: |
| 789 DeferredCookieTaskTest() { | 778 DeferredCookieTaskTest() : expect_load_called_(false) { |
| 790 persistent_store_ = new NewMockPersistentCookieStore(); | 779 persistent_store_ = new NewMockPersistentCookieStore(); |
| 791 cookie_monster_ = new CookieMonster(persistent_store_.get(), NULL); | 780 cookie_monster_ = new CookieMonster(persistent_store_.get(), NULL); |
| 792 } | 781 } |
| 793 | 782 |
| 794 // Defines a cookie to be returned from PersistentCookieStore::Load | 783 // Defines a cookie to be returned from PersistentCookieStore::Load |
| 795 void DeclareLoadedCookie(const std::string& key, | 784 void DeclareLoadedCookie(const std::string& key, |
| 796 const std::string& cookie_line, | 785 const std::string& cookie_line, |
| 797 const base::Time& creation_time) { | 786 const base::Time& creation_time) { |
| 798 AddCookieToList(key, cookie_line, creation_time, &loaded_cookies_); | 787 AddCookieToList(key, cookie_line, creation_time, &loaded_cookies_); |
| 799 } | 788 } |
| 800 | 789 |
| 801 // Runs the message loop, waiting until PersistentCookieStore::Load is called. | 790 // Runs the message loop, waiting until PersistentCookieStore::Load is called. |
| 802 // Call CompleteLoadingAndWait to cause the load to complete. | 791 // Call CompleteLoading to cause the load to complete. |
| 803 void WaitForLoadCall() { | 792 void WaitForLoadCall() { |
| 804 RunFor(kTimeout); | 793 load_run_loop_.Run(); |
| 805 | 794 |
| 806 // Verify that PeristentStore::Load was called. | 795 // Verify that PeristentStore::Load was called. |
| 807 testing::Mock::VerifyAndClear(persistent_store_.get()); | 796 testing::Mock::VerifyAndClear(persistent_store_.get()); |
| 808 } | 797 } |
| 809 | 798 |
| 810 // Invokes the PersistentCookieStore::LoadCookiesForKey completion callbacks | 799 // Invokes the PersistentCookieStore::LoadCookiesForKey completion callbacks |
| 811 // and PersistentCookieStore::Load completion callback and waits | 800 // and PersistentCookieStore::Load completion callback. |
| 812 // until the message loop is quit. | 801 void CompleteLoading() { |
| 813 void CompleteLoadingAndWait() { | |
| 814 while (!loaded_for_key_callbacks_.empty()) { | 802 while (!loaded_for_key_callbacks_.empty()) { |
| 815 loaded_for_key_callbacks_.front().Run(loaded_cookies_); | 803 loaded_for_key_callbacks_.front().Run(loaded_cookies_); |
| 816 loaded_cookies_.clear(); | 804 loaded_cookies_.clear(); |
| 817 loaded_for_key_callbacks_.pop(); | 805 loaded_for_key_callbacks_.pop(); |
| 818 } | 806 } |
| 819 | |
| 820 loaded_callback_.Run(loaded_cookies_); | 807 loaded_callback_.Run(loaded_cookies_); |
| 821 RunFor(kTimeout); | |
| 822 } | 808 } |
| 823 | 809 |
| 824 // Performs the provided action, expecting it to cause a call to | 810 // Performs the provided action, expecting it to cause a call to |
| 825 // PersistentCookieStore::Load. Call WaitForLoadCall to verify the load call | 811 // PersistentCookieStore::Load. Call WaitForLoadCall to verify the load call |
| 826 // is received. | 812 // is received. |
| 827 void BeginWith(testing::Action<void(void)> action) { | 813 void BeginWith(testing::Action<void(void)> action) { |
| 828 EXPECT_CALL(*this, Begin()).WillOnce(action); | 814 EXPECT_CALL(*this, Begin()).WillOnce(action); |
| 829 ExpectLoadCall(); | 815 ExpectLoadCall(); |
| 830 Begin(); | 816 Begin(); |
| 831 } | 817 } |
| 832 | 818 |
| 833 void BeginWithForDomainKey(std::string key, | 819 void BeginWithForDomainKey(std::string key, |
| 834 testing::Action<void(void)> action) { | 820 testing::Action<void(void)> action) { |
| 835 EXPECT_CALL(*this, Begin()).WillOnce(action); | 821 EXPECT_CALL(*this, Begin()).WillOnce(action); |
| 836 ExpectLoadCall(); | 822 ExpectLoadCall(); |
| 837 ExpectLoadForKeyCall(key, false); | 823 ExpectLoadForKeyCall(key); |
| 838 Begin(); | 824 Begin(); |
| 839 } | 825 } |
| 840 | 826 |
| 841 // Declares an expectation that PersistentCookieStore::Load will be called, | 827 // Declares an expectation that PersistentCookieStore::Load will be called, |
| 842 // saving the provided callback and sending a quit to the message loop. | 828 // saving the provided callback and sending a quit to |load_run_loop_|. |
| 843 void ExpectLoadCall() { | 829 void ExpectLoadCall() { |
| 830 // Make sure the |load_run_loop_| is not reused. |
| 831 CHECK(!expect_load_called_); |
| 832 expect_load_called_ = true; |
| 844 EXPECT_CALL(*persistent_store_.get(), Load(testing::_)) | 833 EXPECT_CALL(*persistent_store_.get(), Load(testing::_)) |
| 845 .WillOnce(testing::DoAll(testing::SaveArg<0>(&loaded_callback_), | 834 .WillOnce(testing::DoAll(testing::SaveArg<0>(&loaded_callback_), |
| 846 QuitCurrentMessageLoop())); | 835 QuitRunLoop(&load_run_loop_))); |
| 847 } | 836 } |
| 848 | 837 |
| 849 // Declares an expectation that PersistentCookieStore::LoadCookiesForKey | 838 // Declares an expectation that PersistentCookieStore::LoadCookiesForKey |
| 850 // will be called, saving the provided callback and sending a quit to the | 839 // will be called, saving the provided callback. |
| 851 // message loop. | 840 void ExpectLoadForKeyCall(const std::string& key) { |
| 852 void ExpectLoadForKeyCall(const std::string& key, bool quit_queue) { | 841 EXPECT_CALL(*persistent_store_.get(), LoadCookiesForKey(key, testing::_)) |
| 853 if (quit_queue) | 842 .WillOnce(PushCallbackAction(&loaded_for_key_callbacks_)); |
| 854 EXPECT_CALL(*persistent_store_.get(), LoadCookiesForKey(key, testing::_)) | |
| 855 .WillOnce( | |
| 856 testing::DoAll(PushCallbackAction(&loaded_for_key_callbacks_), | |
| 857 QuitCurrentMessageLoop())); | |
| 858 else | |
| 859 EXPECT_CALL(*persistent_store_.get(), LoadCookiesForKey(key, testing::_)) | |
| 860 .WillOnce(PushCallbackAction(&loaded_for_key_callbacks_)); | |
| 861 } | 843 } |
| 862 | 844 |
| 863 // Invokes the initial action. | 845 // Invokes the initial action. |
| 864 MOCK_METHOD0(Begin, void(void)); | 846 MOCK_METHOD0(Begin, void(void)); |
| 865 | 847 |
| 866 // Returns the CookieMonster instance under test. | 848 // Returns the CookieMonster instance under test. |
| 867 CookieMonster& cookie_monster() { return *cookie_monster_.get(); } | 849 CookieMonster& cookie_monster() { return *cookie_monster_.get(); } |
| 868 | 850 |
| 869 private: | 851 private: |
| 870 // Declares that mock expectations in this test suite are strictly ordered. | 852 // Declares that mock expectations in this test suite are strictly ordered. |
| 871 testing::InSequence in_sequence_; | 853 testing::InSequence in_sequence_; |
| 872 // Holds cookies to be returned from PersistentCookieStore::Load or | 854 // Holds cookies to be returned from PersistentCookieStore::Load or |
| 873 // PersistentCookieStore::LoadCookiesForKey. | 855 // PersistentCookieStore::LoadCookiesForKey. |
| 874 std::vector<CanonicalCookie*> loaded_cookies_; | 856 std::vector<CanonicalCookie*> loaded_cookies_; |
| 875 // Stores the callback passed from the CookieMonster to the | 857 // Stores the callback passed from the CookieMonster to the |
| 876 // PersistentCookieStore::Load | 858 // PersistentCookieStore::Load |
| 877 CookieMonster::PersistentCookieStore::LoadedCallback loaded_callback_; | 859 CookieMonster::PersistentCookieStore::LoadedCallback loaded_callback_; |
| 878 // Stores the callback passed from the CookieMonster to the | 860 // Stores the callback passed from the CookieMonster to the |
| 879 // PersistentCookieStore::LoadCookiesForKey | 861 // PersistentCookieStore::LoadCookiesForKey |
| 880 std::queue<CookieMonster::PersistentCookieStore::LoadedCallback> | 862 std::queue<CookieMonster::PersistentCookieStore::LoadedCallback> |
| 881 loaded_for_key_callbacks_; | 863 loaded_for_key_callbacks_; |
| 882 | 864 // base::RunLoop used to wait for PersistentCookieStore::Load to be called. |
| 865 base::RunLoop load_run_loop_; |
| 866 // Indicates whether ExpectLoadCall() has been called. |
| 867 bool expect_load_called_; |
| 883 // Stores the CookieMonster under test. | 868 // Stores the CookieMonster under test. |
| 884 scoped_refptr<CookieMonster> cookie_monster_; | 869 scoped_refptr<CookieMonster> cookie_monster_; |
| 885 // Stores the mock PersistentCookieStore. | 870 // Stores the mock PersistentCookieStore. |
| 886 scoped_refptr<NewMockPersistentCookieStore> persistent_store_; | 871 scoped_refptr<NewMockPersistentCookieStore> persistent_store_; |
| 887 }; | 872 }; |
| 888 | 873 |
| 889 TEST_F(DeferredCookieTaskTest, DeferredGetCookies) { | 874 TEST_F(DeferredCookieTaskTest, DeferredGetCookies) { |
| 890 DeclareLoadedCookie(http_www_google_.host(), | 875 DeclareLoadedCookie(http_www_google_.host(), |
| 891 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", | 876 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", |
| 892 Time::Now() + TimeDelta::FromDays(3)); | 877 Time::Now() + TimeDelta::FromDays(3)); |
| 893 | 878 |
| 894 MockGetCookiesCallback get_cookies_callback; | 879 MockGetCookiesCallback get_cookies_callback; |
| 895 | 880 |
| 896 BeginWithForDomainKey( | 881 BeginWithForDomainKey( |
| 897 http_www_google_.domain(), | 882 http_www_google_.domain(), |
| 898 GetCookiesAction(&cookie_monster(), http_www_google_.url(), | 883 GetCookiesAction(&cookie_monster(), http_www_google_.url(), |
| 899 &get_cookies_callback)); | 884 &get_cookies_callback)); |
| 900 | 885 |
| 901 WaitForLoadCall(); | 886 WaitForLoadCall(); |
| 902 | 887 |
| 903 EXPECT_CALL(get_cookies_callback, Invoke("X=1")) | 888 EXPECT_CALL(get_cookies_callback, Invoke("X=1")) |
| 904 .WillOnce(GetCookiesAction(&cookie_monster(), http_www_google_.url(), | 889 .WillOnce(GetCookiesAction(&cookie_monster(), http_www_google_.url(), |
| 905 &get_cookies_callback)); | 890 &get_cookies_callback)); |
| 906 EXPECT_CALL(get_cookies_callback, Invoke("X=1")) | 891 base::RunLoop loop; |
| 907 .WillOnce(QuitCurrentMessageLoop()); | 892 EXPECT_CALL(get_cookies_callback, Invoke("X=1")).WillOnce(QuitRunLoop(&loop)); |
| 908 | 893 |
| 909 CompleteLoadingAndWait(); | 894 CompleteLoading(); |
| 895 loop.Run(); |
| 910 } | 896 } |
| 911 | 897 |
| 912 TEST_F(DeferredCookieTaskTest, DeferredSetCookie) { | 898 TEST_F(DeferredCookieTaskTest, DeferredSetCookie) { |
| 913 MockSetCookiesCallback set_cookies_callback; | 899 MockSetCookiesCallback set_cookies_callback; |
| 914 | 900 |
| 915 BeginWithForDomainKey( | 901 BeginWithForDomainKey( |
| 916 http_www_google_.domain(), | 902 http_www_google_.domain(), |
| 917 SetCookieAction(&cookie_monster(), http_www_google_.url(), "A=B", | 903 SetCookieAction(&cookie_monster(), http_www_google_.url(), "A=B", |
| 918 &set_cookies_callback)); | 904 &set_cookies_callback)); |
| 919 | 905 |
| 920 WaitForLoadCall(); | 906 WaitForLoadCall(); |
| 921 | 907 |
| 922 EXPECT_CALL(set_cookies_callback, Invoke(true)) | 908 EXPECT_CALL(set_cookies_callback, Invoke(true)) |
| 923 .WillOnce(SetCookieAction(&cookie_monster(), http_www_google_.url(), | 909 .WillOnce(SetCookieAction(&cookie_monster(), http_www_google_.url(), |
| 924 "X=Y", &set_cookies_callback)); | 910 "X=Y", &set_cookies_callback)); |
| 925 EXPECT_CALL(set_cookies_callback, Invoke(true)) | 911 base::RunLoop loop; |
| 926 .WillOnce(QuitCurrentMessageLoop()); | 912 EXPECT_CALL(set_cookies_callback, Invoke(true)).WillOnce(QuitRunLoop(&loop)); |
| 927 | 913 |
| 928 CompleteLoadingAndWait(); | 914 CompleteLoading(); |
| 915 loop.Run(); |
| 929 } | 916 } |
| 930 | 917 |
| 931 TEST_F(DeferredCookieTaskTest, DeferredSetAllCookies) { | 918 TEST_F(DeferredCookieTaskTest, DeferredSetAllCookies) { |
| 932 MockSetCookiesCallback set_cookies_callback; | 919 MockSetCookiesCallback set_cookies_callback; |
| 933 CookieList list; | 920 CookieList list; |
| 934 list.push_back(CanonicalCookie(http_www_google_.url(), "A", "B", | 921 list.push_back(CanonicalCookie(http_www_google_.url(), "A", "B", |
| 935 http_www_google_.domain(), "/", | 922 http_www_google_.domain(), "/", |
| 936 base::Time::Now(), base::Time(), base::Time(), | 923 base::Time::Now(), base::Time(), base::Time(), |
| 937 false, true, false, COOKIE_PRIORITY_DEFAULT)); | 924 false, true, false, COOKIE_PRIORITY_DEFAULT)); |
| 938 list.push_back(CanonicalCookie(http_www_google_.url(), "C", "D", | 925 list.push_back(CanonicalCookie(http_www_google_.url(), "C", "D", |
| 939 http_www_google_.domain(), "/", | 926 http_www_google_.domain(), "/", |
| 940 base::Time::Now(), base::Time(), base::Time(), | 927 base::Time::Now(), base::Time(), base::Time(), |
| 941 false, true, false, COOKIE_PRIORITY_DEFAULT)); | 928 false, true, false, COOKIE_PRIORITY_DEFAULT)); |
| 942 | 929 |
| 943 BeginWith( | 930 BeginWith( |
| 944 SetAllCookiesAction(&cookie_monster(), list, &set_cookies_callback)); | 931 SetAllCookiesAction(&cookie_monster(), list, &set_cookies_callback)); |
| 945 | 932 |
| 946 WaitForLoadCall(); | 933 WaitForLoadCall(); |
| 947 | 934 |
| 948 EXPECT_CALL(set_cookies_callback, Invoke(true)) | 935 EXPECT_CALL(set_cookies_callback, Invoke(true)) |
| 949 .WillOnce( | 936 .WillOnce( |
| 950 SetAllCookiesAction(&cookie_monster(), list, &set_cookies_callback)); | 937 SetAllCookiesAction(&cookie_monster(), list, &set_cookies_callback)); |
| 951 EXPECT_CALL(set_cookies_callback, Invoke(true)) | 938 base::RunLoop loop; |
| 952 .WillOnce(QuitCurrentMessageLoop()); | 939 EXPECT_CALL(set_cookies_callback, Invoke(true)).WillOnce(QuitRunLoop(&loop)); |
| 953 | 940 |
| 954 CompleteLoadingAndWait(); | 941 CompleteLoading(); |
| 942 loop.Run(); |
| 955 } | 943 } |
| 956 | 944 |
| 957 TEST_F(DeferredCookieTaskTest, DeferredDeleteCookie) { | 945 TEST_F(DeferredCookieTaskTest, DeferredDeleteCookie) { |
| 958 MockClosure delete_cookie_callback; | 946 MockClosure delete_cookie_callback; |
| 959 | 947 |
| 960 BeginWithForDomainKey( | 948 BeginWithForDomainKey( |
| 961 http_www_google_.domain(), | 949 http_www_google_.domain(), |
| 962 DeleteCookieAction(&cookie_monster(), http_www_google_.url(), "A", | 950 DeleteCookieAction(&cookie_monster(), http_www_google_.url(), "A", |
| 963 &delete_cookie_callback)); | 951 &delete_cookie_callback)); |
| 964 | 952 |
| 965 WaitForLoadCall(); | 953 WaitForLoadCall(); |
| 966 | 954 |
| 967 EXPECT_CALL(delete_cookie_callback, Invoke()) | 955 EXPECT_CALL(delete_cookie_callback, Invoke()) |
| 968 .WillOnce(DeleteCookieAction(&cookie_monster(), http_www_google_.url(), | 956 .WillOnce(DeleteCookieAction(&cookie_monster(), http_www_google_.url(), |
| 969 "X", &delete_cookie_callback)); | 957 "X", &delete_cookie_callback)); |
| 970 EXPECT_CALL(delete_cookie_callback, Invoke()) | 958 base::RunLoop loop; |
| 971 .WillOnce(QuitCurrentMessageLoop()); | 959 EXPECT_CALL(delete_cookie_callback, Invoke()).WillOnce(QuitRunLoop(&loop)); |
| 972 | 960 |
| 973 CompleteLoadingAndWait(); | 961 CompleteLoading(); |
| 962 loop.Run(); |
| 974 } | 963 } |
| 975 | 964 |
| 976 TEST_F(DeferredCookieTaskTest, DeferredSetCookieWithDetails) { | 965 TEST_F(DeferredCookieTaskTest, DeferredSetCookieWithDetails) { |
| 977 MockSetCookiesCallback set_cookies_callback; | 966 MockSetCookiesCallback set_cookies_callback; |
| 978 | 967 |
| 979 CookiesInputInfo cookie_info = {www_google_foo_.url(), | 968 CookiesInputInfo cookie_info = {www_google_foo_.url(), |
| 980 "A", | 969 "A", |
| 981 "B", | 970 "B", |
| 982 std::string(), | 971 std::string(), |
| 983 "/foo", | 972 "/foo", |
| (...skipping 15 matching lines...) Expand all Loading... |
| 999 std::string(), | 988 std::string(), |
| 1000 "/foo", | 989 "/foo", |
| 1001 base::Time(), | 990 base::Time(), |
| 1002 false, | 991 false, |
| 1003 false, | 992 false, |
| 1004 false, | 993 false, |
| 1005 COOKIE_PRIORITY_DEFAULT}; | 994 COOKIE_PRIORITY_DEFAULT}; |
| 1006 EXPECT_CALL(set_cookies_callback, Invoke(true)) | 995 EXPECT_CALL(set_cookies_callback, Invoke(true)) |
| 1007 .WillOnce(SetCookieWithDetailsAction(&cookie_monster(), cookie_info_exp, | 996 .WillOnce(SetCookieWithDetailsAction(&cookie_monster(), cookie_info_exp, |
| 1008 &set_cookies_callback)); | 997 &set_cookies_callback)); |
| 1009 EXPECT_CALL(set_cookies_callback, Invoke(true)) | 998 base::RunLoop loop; |
| 1010 .WillOnce(QuitCurrentMessageLoop()); | 999 EXPECT_CALL(set_cookies_callback, Invoke(true)).WillOnce(QuitRunLoop(&loop)); |
| 1011 | 1000 |
| 1012 CompleteLoadingAndWait(); | 1001 CompleteLoading(); |
| 1002 loop.Run(); |
| 1013 } | 1003 } |
| 1014 | 1004 |
| 1015 TEST_F(DeferredCookieTaskTest, DeferredGetAllCookies) { | 1005 TEST_F(DeferredCookieTaskTest, DeferredGetAllCookies) { |
| 1016 DeclareLoadedCookie(http_www_google_.host(), | 1006 DeclareLoadedCookie(http_www_google_.host(), |
| 1017 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", | 1007 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", |
| 1018 Time::Now() + TimeDelta::FromDays(3)); | 1008 Time::Now() + TimeDelta::FromDays(3)); |
| 1019 | 1009 |
| 1020 MockGetCookieListCallback get_cookie_list_callback; | 1010 MockGetCookieListCallback get_cookie_list_callback; |
| 1021 | 1011 |
| 1022 BeginWith(GetAllCookiesAction(&cookie_monster(), &get_cookie_list_callback)); | 1012 BeginWith(GetAllCookiesAction(&cookie_monster(), &get_cookie_list_callback)); |
| 1023 | 1013 |
| 1024 WaitForLoadCall(); | 1014 WaitForLoadCall(); |
| 1025 | 1015 |
| 1026 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) | 1016 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) |
| 1027 .WillOnce( | 1017 .WillOnce( |
| 1028 GetAllCookiesAction(&cookie_monster(), &get_cookie_list_callback)); | 1018 GetAllCookiesAction(&cookie_monster(), &get_cookie_list_callback)); |
| 1019 base::RunLoop loop; |
| 1029 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) | 1020 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) |
| 1030 .WillOnce(QuitCurrentMessageLoop()); | 1021 .WillOnce(QuitRunLoop(&loop)); |
| 1031 | 1022 |
| 1032 CompleteLoadingAndWait(); | 1023 CompleteLoading(); |
| 1024 loop.Run(); |
| 1033 } | 1025 } |
| 1034 | 1026 |
| 1035 TEST_F(DeferredCookieTaskTest, DeferredGetAllForUrlCookies) { | 1027 TEST_F(DeferredCookieTaskTest, DeferredGetAllForUrlCookies) { |
| 1036 DeclareLoadedCookie(http_www_google_.host(), | 1028 DeclareLoadedCookie(http_www_google_.host(), |
| 1037 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", | 1029 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", |
| 1038 Time::Now() + TimeDelta::FromDays(3)); | 1030 Time::Now() + TimeDelta::FromDays(3)); |
| 1039 | 1031 |
| 1040 MockGetCookieListCallback get_cookie_list_callback; | 1032 MockGetCookieListCallback get_cookie_list_callback; |
| 1041 | 1033 |
| 1042 BeginWithForDomainKey( | 1034 BeginWithForDomainKey( |
| 1043 http_www_google_.domain(), | 1035 http_www_google_.domain(), |
| 1044 GetAllCookiesForUrlAction(&cookie_monster(), http_www_google_.url(), | 1036 GetAllCookiesForUrlAction(&cookie_monster(), http_www_google_.url(), |
| 1045 &get_cookie_list_callback)); | 1037 &get_cookie_list_callback)); |
| 1046 | 1038 |
| 1047 WaitForLoadCall(); | 1039 WaitForLoadCall(); |
| 1048 | 1040 |
| 1049 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) | 1041 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) |
| 1050 .WillOnce(GetAllCookiesForUrlAction(&cookie_monster(), | 1042 .WillOnce(GetAllCookiesForUrlAction(&cookie_monster(), |
| 1051 http_www_google_.url(), | 1043 http_www_google_.url(), |
| 1052 &get_cookie_list_callback)); | 1044 &get_cookie_list_callback)); |
| 1045 base::RunLoop loop; |
| 1053 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) | 1046 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) |
| 1054 .WillOnce(QuitCurrentMessageLoop()); | 1047 .WillOnce(QuitRunLoop(&loop)); |
| 1055 | 1048 |
| 1056 CompleteLoadingAndWait(); | 1049 CompleteLoading(); |
| 1050 loop.Run(); |
| 1057 } | 1051 } |
| 1058 | 1052 |
| 1059 TEST_F(DeferredCookieTaskTest, DeferredGetAllForUrlWithOptionsCookies) { | 1053 TEST_F(DeferredCookieTaskTest, DeferredGetAllForUrlWithOptionsCookies) { |
| 1060 DeclareLoadedCookie(http_www_google_.host(), | 1054 DeclareLoadedCookie(http_www_google_.host(), |
| 1061 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", | 1055 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", |
| 1062 Time::Now() + TimeDelta::FromDays(3)); | 1056 Time::Now() + TimeDelta::FromDays(3)); |
| 1063 | 1057 |
| 1064 MockGetCookieListCallback get_cookie_list_callback; | 1058 MockGetCookieListCallback get_cookie_list_callback; |
| 1065 | 1059 |
| 1066 BeginWithForDomainKey(http_www_google_.domain(), | 1060 BeginWithForDomainKey(http_www_google_.domain(), |
| 1067 GetAllCookiesForUrlWithOptionsAction( | 1061 GetAllCookiesForUrlWithOptionsAction( |
| 1068 &cookie_monster(), http_www_google_.url(), | 1062 &cookie_monster(), http_www_google_.url(), |
| 1069 &get_cookie_list_callback)); | 1063 &get_cookie_list_callback)); |
| 1070 | 1064 |
| 1071 WaitForLoadCall(); | 1065 WaitForLoadCall(); |
| 1072 | 1066 |
| 1073 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) | 1067 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) |
| 1074 .WillOnce(GetAllCookiesForUrlWithOptionsAction( | 1068 .WillOnce(GetAllCookiesForUrlWithOptionsAction( |
| 1075 &cookie_monster(), http_www_google_.url(), | 1069 &cookie_monster(), http_www_google_.url(), |
| 1076 &get_cookie_list_callback)); | 1070 &get_cookie_list_callback)); |
| 1071 base::RunLoop loop; |
| 1077 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) | 1072 EXPECT_CALL(get_cookie_list_callback, Invoke(testing::_)) |
| 1078 .WillOnce(QuitCurrentMessageLoop()); | 1073 .WillOnce(QuitRunLoop(&loop)); |
| 1079 | 1074 |
| 1080 CompleteLoadingAndWait(); | 1075 CompleteLoading(); |
| 1076 loop.Run(); |
| 1081 } | 1077 } |
| 1082 | 1078 |
| 1083 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllCookies) { | 1079 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllCookies) { |
| 1084 MockDeleteCallback delete_callback; | 1080 MockDeleteCallback delete_callback; |
| 1085 | 1081 |
| 1086 BeginWith(DeleteAllAction(&cookie_monster(), &delete_callback)); | 1082 BeginWith(DeleteAllAction(&cookie_monster(), &delete_callback)); |
| 1087 | 1083 |
| 1088 WaitForLoadCall(); | 1084 WaitForLoadCall(); |
| 1089 | 1085 |
| 1090 EXPECT_CALL(delete_callback, Invoke(false)) | 1086 EXPECT_CALL(delete_callback, Invoke(false)) |
| 1091 .WillOnce(DeleteAllAction(&cookie_monster(), &delete_callback)); | 1087 .WillOnce(DeleteAllAction(&cookie_monster(), &delete_callback)); |
| 1092 EXPECT_CALL(delete_callback, Invoke(false)) | |
| 1093 .WillOnce(QuitCurrentMessageLoop()); | |
| 1094 | 1088 |
| 1095 CompleteLoadingAndWait(); | 1089 base::RunLoop loop; |
| 1090 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); |
| 1091 |
| 1092 CompleteLoading(); |
| 1093 loop.Run(); |
| 1096 } | 1094 } |
| 1097 | 1095 |
| 1098 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllCreatedBetweenCookies) { | 1096 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllCreatedBetweenCookies) { |
| 1099 MockDeleteCallback delete_callback; | 1097 MockDeleteCallback delete_callback; |
| 1100 | 1098 |
| 1101 BeginWith(DeleteAllCreatedBetweenAction(&cookie_monster(), base::Time(), | 1099 BeginWith(DeleteAllCreatedBetweenAction(&cookie_monster(), base::Time(), |
| 1102 base::Time::Now(), &delete_callback)); | 1100 base::Time::Now(), &delete_callback)); |
| 1103 | 1101 |
| 1104 WaitForLoadCall(); | 1102 WaitForLoadCall(); |
| 1105 | 1103 |
| 1106 EXPECT_CALL(delete_callback, Invoke(false)) | 1104 EXPECT_CALL(delete_callback, Invoke(false)) |
| 1107 .WillOnce(DeleteAllCreatedBetweenAction(&cookie_monster(), base::Time(), | 1105 .WillOnce(DeleteAllCreatedBetweenAction(&cookie_monster(), base::Time(), |
| 1108 base::Time::Now(), | 1106 base::Time::Now(), |
| 1109 &delete_callback)); | 1107 &delete_callback)); |
| 1110 EXPECT_CALL(delete_callback, Invoke(false)) | 1108 base::RunLoop loop; |
| 1111 .WillOnce(QuitCurrentMessageLoop()); | 1109 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); |
| 1112 | 1110 |
| 1113 CompleteLoadingAndWait(); | 1111 CompleteLoading(); |
| 1112 loop.Run(); |
| 1114 } | 1113 } |
| 1115 | 1114 |
| 1116 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllForHostCookies) { | 1115 TEST_F(DeferredCookieTaskTest, DeferredDeleteAllForHostCookies) { |
| 1117 MockDeleteCallback delete_callback; | 1116 MockDeleteCallback delete_callback; |
| 1118 | 1117 |
| 1119 BeginWithForDomainKey( | 1118 BeginWithForDomainKey( |
| 1120 http_www_google_.domain(), | 1119 http_www_google_.domain(), |
| 1121 DeleteAllForHostAction(&cookie_monster(), http_www_google_.url(), | 1120 DeleteAllForHostAction(&cookie_monster(), http_www_google_.url(), |
| 1122 &delete_callback)); | 1121 &delete_callback)); |
| 1123 | 1122 |
| 1124 WaitForLoadCall(); | 1123 WaitForLoadCall(); |
| 1125 | 1124 |
| 1126 EXPECT_CALL(delete_callback, Invoke(false)) | 1125 EXPECT_CALL(delete_callback, Invoke(false)) |
| 1127 .WillOnce(DeleteAllForHostAction( | 1126 .WillOnce(DeleteAllForHostAction( |
| 1128 &cookie_monster(), http_www_google_.url(), &delete_callback)); | 1127 &cookie_monster(), http_www_google_.url(), &delete_callback)); |
| 1129 EXPECT_CALL(delete_callback, Invoke(false)) | 1128 base::RunLoop loop; |
| 1130 .WillOnce(QuitCurrentMessageLoop()); | 1129 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); |
| 1131 | 1130 |
| 1132 CompleteLoadingAndWait(); | 1131 CompleteLoading(); |
| 1132 loop.Run(); |
| 1133 } | 1133 } |
| 1134 | 1134 |
| 1135 TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) { | 1135 TEST_F(DeferredCookieTaskTest, DeferredDeleteCanonicalCookie) { |
| 1136 std::vector<CanonicalCookie*> cookies; | 1136 std::vector<CanonicalCookie*> cookies; |
| 1137 CanonicalCookie cookie = BuildCanonicalCookie( | 1137 CanonicalCookie cookie = BuildCanonicalCookie( |
| 1138 http_www_google_.host(), "X=1; path=/", base::Time::Now()); | 1138 http_www_google_.host(), "X=1; path=/", base::Time::Now()); |
| 1139 | 1139 |
| 1140 MockDeleteCookieCallback delete_cookie_callback; | 1140 MockDeleteCookieCallback delete_cookie_callback; |
| 1141 | 1141 |
| 1142 BeginWith(DeleteCanonicalCookieAction(&cookie_monster(), cookie, | 1142 BeginWith(DeleteCanonicalCookieAction(&cookie_monster(), cookie, |
| 1143 &delete_cookie_callback)); | 1143 &delete_cookie_callback)); |
| 1144 | 1144 |
| 1145 WaitForLoadCall(); | 1145 WaitForLoadCall(); |
| 1146 | 1146 |
| 1147 EXPECT_CALL(delete_cookie_callback, Invoke(false)) | 1147 EXPECT_CALL(delete_cookie_callback, Invoke(false)) |
| 1148 .WillOnce(DeleteCanonicalCookieAction(&cookie_monster(), cookie, | 1148 .WillOnce(DeleteCanonicalCookieAction(&cookie_monster(), cookie, |
| 1149 &delete_cookie_callback)); | 1149 &delete_cookie_callback)); |
| 1150 base::RunLoop loop; |
| 1150 EXPECT_CALL(delete_cookie_callback, Invoke(false)) | 1151 EXPECT_CALL(delete_cookie_callback, Invoke(false)) |
| 1151 .WillOnce(QuitCurrentMessageLoop()); | 1152 .WillOnce(QuitRunLoop(&loop)); |
| 1152 | 1153 |
| 1153 CompleteLoadingAndWait(); | 1154 CompleteLoading(); |
| 1155 loop.Run(); |
| 1154 } | 1156 } |
| 1155 | 1157 |
| 1156 TEST_F(DeferredCookieTaskTest, DeferredDeleteSessionCookies) { | 1158 TEST_F(DeferredCookieTaskTest, DeferredDeleteSessionCookies) { |
| 1157 MockDeleteCallback delete_callback; | 1159 MockDeleteCallback delete_callback; |
| 1158 | 1160 |
| 1159 BeginWith(DeleteSessionCookiesAction(&cookie_monster(), &delete_callback)); | 1161 BeginWith(DeleteSessionCookiesAction(&cookie_monster(), &delete_callback)); |
| 1160 | 1162 |
| 1161 WaitForLoadCall(); | 1163 WaitForLoadCall(); |
| 1162 | 1164 |
| 1163 EXPECT_CALL(delete_callback, Invoke(false)) | 1165 EXPECT_CALL(delete_callback, Invoke(false)) |
| 1164 .WillOnce( | 1166 .WillOnce( |
| 1165 DeleteSessionCookiesAction(&cookie_monster(), &delete_callback)); | 1167 DeleteSessionCookiesAction(&cookie_monster(), &delete_callback)); |
| 1166 EXPECT_CALL(delete_callback, Invoke(false)) | 1168 base::RunLoop loop; |
| 1167 .WillOnce(QuitCurrentMessageLoop()); | 1169 EXPECT_CALL(delete_callback, Invoke(false)).WillOnce(QuitRunLoop(&loop)); |
| 1168 | 1170 |
| 1169 CompleteLoadingAndWait(); | 1171 CompleteLoading(); |
| 1172 loop.Run(); |
| 1170 } | 1173 } |
| 1171 | 1174 |
| 1172 // Verify that a series of queued tasks are executed in order upon loading of | 1175 // Verify that a series of queued tasks are executed in order upon loading of |
| 1173 // the backing store and that new tasks received while the queued tasks are | 1176 // the backing store and that new tasks received while the queued tasks are |
| 1174 // being dispatched go to the end of the queue. | 1177 // being dispatched go to the end of the queue. |
| 1175 TEST_F(DeferredCookieTaskTest, DeferredTaskOrder) { | 1178 TEST_F(DeferredCookieTaskTest, DeferredTaskOrder) { |
| 1176 DeclareLoadedCookie(http_www_google_.host(), | 1179 DeclareLoadedCookie(http_www_google_.host(), |
| 1177 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", | 1180 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", |
| 1178 Time::Now() + TimeDelta::FromDays(3)); | 1181 Time::Now() + TimeDelta::FromDays(3)); |
| 1179 | 1182 |
| 1180 MockGetCookiesCallback get_cookies_callback; | 1183 MockGetCookiesCallback get_cookies_callback; |
| 1181 MockSetCookiesCallback set_cookies_callback; | 1184 MockSetCookiesCallback set_cookies_callback; |
| 1182 MockGetCookiesCallback get_cookies_callback_deferred; | 1185 MockGetCookiesCallback get_cookies_callback_deferred; |
| 1183 | 1186 |
| 1184 EXPECT_CALL(*this, Begin()) | 1187 EXPECT_CALL(*this, Begin()) |
| 1185 .WillOnce(testing::DoAll( | 1188 .WillOnce(testing::DoAll( |
| 1186 GetCookiesAction(&cookie_monster(), http_www_google_.url(), | 1189 GetCookiesAction(&cookie_monster(), http_www_google_.url(), |
| 1187 &get_cookies_callback), | 1190 &get_cookies_callback), |
| 1188 SetCookieAction(&cookie_monster(), http_www_google_.url(), "A=B", | 1191 SetCookieAction(&cookie_monster(), http_www_google_.url(), "A=B", |
| 1189 &set_cookies_callback))); | 1192 &set_cookies_callback))); |
| 1190 ExpectLoadCall(); | 1193 ExpectLoadCall(); |
| 1191 ExpectLoadForKeyCall(http_www_google_.domain(), false); | 1194 ExpectLoadForKeyCall(http_www_google_.domain()); |
| 1192 Begin(); | 1195 Begin(); |
| 1193 | 1196 |
| 1194 WaitForLoadCall(); | 1197 WaitForLoadCall(); |
| 1195 EXPECT_CALL(get_cookies_callback, Invoke("X=1")) | 1198 EXPECT_CALL(get_cookies_callback, Invoke("X=1")) |
| 1196 .WillOnce(GetCookiesAction(&cookie_monster(), http_www_google_.url(), | 1199 .WillOnce(GetCookiesAction(&cookie_monster(), http_www_google_.url(), |
| 1197 &get_cookies_callback_deferred)); | 1200 &get_cookies_callback_deferred)); |
| 1198 EXPECT_CALL(set_cookies_callback, Invoke(true)); | 1201 EXPECT_CALL(set_cookies_callback, Invoke(true)); |
| 1202 base::RunLoop loop; |
| 1199 EXPECT_CALL(get_cookies_callback_deferred, Invoke("A=B; X=1")) | 1203 EXPECT_CALL(get_cookies_callback_deferred, Invoke("A=B; X=1")) |
| 1200 .WillOnce(QuitCurrentMessageLoop()); | 1204 .WillOnce(QuitRunLoop(&loop)); |
| 1201 | 1205 |
| 1202 CompleteLoadingAndWait(); | 1206 CompleteLoading(); |
| 1207 loop.Run(); |
| 1203 } | 1208 } |
| 1204 | 1209 |
| 1205 TEST_F(CookieMonsterTest, TestCookieDeleteAll) { | 1210 TEST_F(CookieMonsterTest, TestCookieDeleteAll) { |
| 1206 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); | 1211 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); |
| 1207 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); | 1212 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); |
| 1208 CookieOptions options; | 1213 CookieOptions options; |
| 1209 options.set_include_httponly(); | 1214 options.set_include_httponly(); |
| 1210 | 1215 |
| 1211 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), kValidCookieLine)); | 1216 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), kValidCookieLine)); |
| 1212 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); | 1217 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); |
| (...skipping 1371 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2584 ResultSavingCookieCallback<bool>* callback) { | 2589 ResultSavingCookieCallback<bool>* callback) { |
| 2585 cm->DeleteCanonicalCookieAsync( | 2590 cm->DeleteCanonicalCookieAsync( |
| 2586 cookie, base::Bind(&ResultSavingCookieCallback<bool>::Run, | 2591 cookie, base::Bind(&ResultSavingCookieCallback<bool>::Run, |
| 2587 base::Unretained(callback))); | 2592 base::Unretained(callback))); |
| 2588 } | 2593 } |
| 2589 | 2594 |
| 2590 protected: | 2595 protected: |
| 2591 void RunOnOtherThread(const base::Closure& task) { | 2596 void RunOnOtherThread(const base::Closure& task) { |
| 2592 other_thread_.Start(); | 2597 other_thread_.Start(); |
| 2593 other_thread_.task_runner()->PostTask(FROM_HERE, task); | 2598 other_thread_.task_runner()->PostTask(FROM_HERE, task); |
| 2594 RunFor(kTimeout); | |
| 2595 other_thread_.Stop(); | 2599 other_thread_.Stop(); |
| 2596 } | 2600 } |
| 2597 | 2601 |
| 2598 Thread other_thread_; | 2602 Thread other_thread_; |
| 2599 }; | 2603 }; |
| 2600 | 2604 |
| 2601 } // namespace | 2605 } // namespace |
| 2602 | 2606 |
| 2603 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckGetAllCookies) { | 2607 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckGetAllCookies) { |
| 2604 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2608 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2605 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); | 2609 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); |
| 2606 CookieList cookies = GetAllCookies(cm.get()); | 2610 CookieList cookies = GetAllCookies(cm.get()); |
| 2607 CookieList::const_iterator it = cookies.begin(); | 2611 CookieList::const_iterator it = cookies.begin(); |
| 2608 ASSERT_TRUE(it != cookies.end()); | 2612 ASSERT_TRUE(it != cookies.end()); |
| 2609 EXPECT_EQ(http_www_google_.host(), it->Domain()); | 2613 EXPECT_EQ(http_www_google_.host(), it->Domain()); |
| 2610 EXPECT_EQ("A", it->Name()); | 2614 EXPECT_EQ("A", it->Name()); |
| 2611 ASSERT_TRUE(++it == cookies.end()); | 2615 ASSERT_TRUE(++it == cookies.end()); |
| 2612 GetCookieListCallback callback(&other_thread_); | 2616 GetCookieListCallback callback(&other_thread_); |
| 2613 base::Closure task = | 2617 base::Closure task = |
| 2614 base::Bind(&MultiThreadedCookieMonsterTest::GetAllCookiesTask, | 2618 base::Bind(&MultiThreadedCookieMonsterTest::GetAllCookiesTask, |
| 2615 base::Unretained(this), cm, &callback); | 2619 base::Unretained(this), cm, &callback); |
| 2616 RunOnOtherThread(task); | 2620 RunOnOtherThread(task); |
| 2617 EXPECT_TRUE(callback.did_run()); | 2621 callback.WaitUntilDone(); |
| 2618 it = callback.cookies().begin(); | 2622 it = callback.cookies().begin(); |
| 2619 ASSERT_TRUE(it != callback.cookies().end()); | 2623 ASSERT_TRUE(it != callback.cookies().end()); |
| 2620 EXPECT_EQ(http_www_google_.host(), it->Domain()); | 2624 EXPECT_EQ(http_www_google_.host(), it->Domain()); |
| 2621 EXPECT_EQ("A", it->Name()); | 2625 EXPECT_EQ("A", it->Name()); |
| 2622 ASSERT_TRUE(++it == callback.cookies().end()); | 2626 ASSERT_TRUE(++it == callback.cookies().end()); |
| 2623 } | 2627 } |
| 2624 | 2628 |
| 2625 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckGetAllCookiesForURL) { | 2629 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckGetAllCookiesForURL) { |
| 2626 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2630 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2627 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); | 2631 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); |
| 2628 CookieList cookies = GetAllCookiesForURL(cm.get(), http_www_google_.url()); | 2632 CookieList cookies = GetAllCookiesForURL(cm.get(), http_www_google_.url()); |
| 2629 CookieList::const_iterator it = cookies.begin(); | 2633 CookieList::const_iterator it = cookies.begin(); |
| 2630 ASSERT_TRUE(it != cookies.end()); | 2634 ASSERT_TRUE(it != cookies.end()); |
| 2631 EXPECT_EQ(http_www_google_.host(), it->Domain()); | 2635 EXPECT_EQ(http_www_google_.host(), it->Domain()); |
| 2632 EXPECT_EQ("A", it->Name()); | 2636 EXPECT_EQ("A", it->Name()); |
| 2633 ASSERT_TRUE(++it == cookies.end()); | 2637 ASSERT_TRUE(++it == cookies.end()); |
| 2634 GetCookieListCallback callback(&other_thread_); | 2638 GetCookieListCallback callback(&other_thread_); |
| 2635 base::Closure task = | 2639 base::Closure task = |
| 2636 base::Bind(&MultiThreadedCookieMonsterTest::GetAllCookiesForURLTask, | 2640 base::Bind(&MultiThreadedCookieMonsterTest::GetAllCookiesForURLTask, |
| 2637 base::Unretained(this), cm, http_www_google_.url(), &callback); | 2641 base::Unretained(this), cm, http_www_google_.url(), &callback); |
| 2638 RunOnOtherThread(task); | 2642 RunOnOtherThread(task); |
| 2639 EXPECT_TRUE(callback.did_run()); | 2643 callback.WaitUntilDone(); |
| 2640 it = callback.cookies().begin(); | 2644 it = callback.cookies().begin(); |
| 2641 ASSERT_TRUE(it != callback.cookies().end()); | 2645 ASSERT_TRUE(it != callback.cookies().end()); |
| 2642 EXPECT_EQ(http_www_google_.host(), it->Domain()); | 2646 EXPECT_EQ(http_www_google_.host(), it->Domain()); |
| 2643 EXPECT_EQ("A", it->Name()); | 2647 EXPECT_EQ("A", it->Name()); |
| 2644 ASSERT_TRUE(++it == callback.cookies().end()); | 2648 ASSERT_TRUE(++it == callback.cookies().end()); |
| 2645 } | 2649 } |
| 2646 | 2650 |
| 2647 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckGetAllCookiesForURLWithOpt) { | 2651 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckGetAllCookiesForURLWithOpt) { |
| 2648 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2652 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2649 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); | 2653 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); |
| 2650 CookieOptions options; | 2654 CookieOptions options; |
| 2651 CookieList cookies = | 2655 CookieList cookies = |
| 2652 GetAllCookiesForURLWithOptions(cm.get(), http_www_google_.url(), options); | 2656 GetAllCookiesForURLWithOptions(cm.get(), http_www_google_.url(), options); |
| 2653 CookieList::const_iterator it = cookies.begin(); | 2657 CookieList::const_iterator it = cookies.begin(); |
| 2654 ASSERT_TRUE(it != cookies.end()); | 2658 ASSERT_TRUE(it != cookies.end()); |
| 2655 EXPECT_EQ(http_www_google_.host(), it->Domain()); | 2659 EXPECT_EQ(http_www_google_.host(), it->Domain()); |
| 2656 EXPECT_EQ("A", it->Name()); | 2660 EXPECT_EQ("A", it->Name()); |
| 2657 ASSERT_TRUE(++it == cookies.end()); | 2661 ASSERT_TRUE(++it == cookies.end()); |
| 2658 GetCookieListCallback callback(&other_thread_); | 2662 GetCookieListCallback callback(&other_thread_); |
| 2659 base::Closure task = base::Bind( | 2663 base::Closure task = base::Bind( |
| 2660 &MultiThreadedCookieMonsterTest::GetAllCookiesForURLWithOptionsTask, | 2664 &MultiThreadedCookieMonsterTest::GetAllCookiesForURLWithOptionsTask, |
| 2661 base::Unretained(this), cm, http_www_google_.url(), options, &callback); | 2665 base::Unretained(this), cm, http_www_google_.url(), options, &callback); |
| 2662 RunOnOtherThread(task); | 2666 RunOnOtherThread(task); |
| 2663 EXPECT_TRUE(callback.did_run()); | 2667 callback.WaitUntilDone(); |
| 2664 it = callback.cookies().begin(); | 2668 it = callback.cookies().begin(); |
| 2665 ASSERT_TRUE(it != callback.cookies().end()); | 2669 ASSERT_TRUE(it != callback.cookies().end()); |
| 2666 EXPECT_EQ(http_www_google_.host(), it->Domain()); | 2670 EXPECT_EQ(http_www_google_.host(), it->Domain()); |
| 2667 EXPECT_EQ("A", it->Name()); | 2671 EXPECT_EQ("A", it->Name()); |
| 2668 ASSERT_TRUE(++it == callback.cookies().end()); | 2672 ASSERT_TRUE(++it == callback.cookies().end()); |
| 2669 } | 2673 } |
| 2670 | 2674 |
| 2671 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckSetCookieWithDetails) { | 2675 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckSetCookieWithDetails) { |
| 2672 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2676 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2673 EXPECT_TRUE(SetCookieWithDetails(cm.get(), www_google_foo_.url(), "A", "B", | 2677 EXPECT_TRUE(SetCookieWithDetails(cm.get(), www_google_foo_.url(), "A", "B", |
| 2674 std::string(), "/foo", base::Time(), false, | 2678 std::string(), "/foo", base::Time(), false, |
| 2675 false, false, COOKIE_PRIORITY_DEFAULT)); | 2679 false, false, COOKIE_PRIORITY_DEFAULT)); |
| 2676 ResultSavingCookieCallback<bool> callback(&other_thread_); | 2680 ResultSavingCookieCallback<bool> callback(&other_thread_); |
| 2677 base::Closure task = | 2681 base::Closure task = |
| 2678 base::Bind(&MultiThreadedCookieMonsterTest::SetCookieWithDetailsTask, | 2682 base::Bind(&MultiThreadedCookieMonsterTest::SetCookieWithDetailsTask, |
| 2679 base::Unretained(this), cm, www_google_foo_.url(), &callback); | 2683 base::Unretained(this), cm, www_google_foo_.url(), &callback); |
| 2680 RunOnOtherThread(task); | 2684 RunOnOtherThread(task); |
| 2681 EXPECT_TRUE(callback.did_run()); | 2685 callback.WaitUntilDone(); |
| 2682 EXPECT_TRUE(callback.result()); | 2686 EXPECT_TRUE(callback.result()); |
| 2683 } | 2687 } |
| 2684 | 2688 |
| 2685 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteAllCreatedBetween) { | 2689 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteAllCreatedBetween) { |
| 2686 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2690 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2687 CookieOptions options; | 2691 CookieOptions options; |
| 2688 Time now = Time::Now(); | 2692 Time now = Time::Now(); |
| 2689 EXPECT_TRUE( | 2693 EXPECT_TRUE( |
| 2690 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2694 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2691 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), | 2695 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), |
| 2692 Time())); | 2696 Time())); |
| 2693 EXPECT_TRUE( | 2697 EXPECT_TRUE( |
| 2694 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2698 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2695 ResultSavingCookieCallback<int> callback(&other_thread_); | 2699 ResultSavingCookieCallback<int> callback(&other_thread_); |
| 2696 base::Closure task = | 2700 base::Closure task = |
| 2697 base::Bind(&MultiThreadedCookieMonsterTest::DeleteAllCreatedBetweenTask, | 2701 base::Bind(&MultiThreadedCookieMonsterTest::DeleteAllCreatedBetweenTask, |
| 2698 base::Unretained(this), cm, now - TimeDelta::FromDays(99), | 2702 base::Unretained(this), cm, now - TimeDelta::FromDays(99), |
| 2699 Time(), &callback); | 2703 Time(), &callback); |
| 2700 RunOnOtherThread(task); | 2704 RunOnOtherThread(task); |
| 2701 EXPECT_TRUE(callback.did_run()); | 2705 callback.WaitUntilDone(); |
| 2702 EXPECT_EQ(1, callback.result()); | 2706 EXPECT_EQ(1, callback.result()); |
| 2703 } | 2707 } |
| 2704 | 2708 |
| 2705 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteAllForHost) { | 2709 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteAllForHost) { |
| 2706 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2710 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2707 CookieOptions options; | 2711 CookieOptions options; |
| 2708 EXPECT_TRUE( | 2712 EXPECT_TRUE( |
| 2709 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2713 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2710 EXPECT_EQ(1, DeleteAllForHost(cm.get(), http_www_google_.url())); | 2714 EXPECT_EQ(1, DeleteAllForHost(cm.get(), http_www_google_.url())); |
| 2711 EXPECT_TRUE( | 2715 EXPECT_TRUE( |
| 2712 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2716 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2713 ResultSavingCookieCallback<int> callback(&other_thread_); | 2717 ResultSavingCookieCallback<int> callback(&other_thread_); |
| 2714 base::Closure task = | 2718 base::Closure task = |
| 2715 base::Bind(&MultiThreadedCookieMonsterTest::DeleteAllForHostTask, | 2719 base::Bind(&MultiThreadedCookieMonsterTest::DeleteAllForHostTask, |
| 2716 base::Unretained(this), cm, http_www_google_.url(), &callback); | 2720 base::Unretained(this), cm, http_www_google_.url(), &callback); |
| 2717 RunOnOtherThread(task); | 2721 RunOnOtherThread(task); |
| 2718 EXPECT_TRUE(callback.did_run()); | 2722 callback.WaitUntilDone(); |
| 2719 EXPECT_EQ(1, callback.result()); | 2723 EXPECT_EQ(1, callback.result()); |
| 2720 } | 2724 } |
| 2721 | 2725 |
| 2722 TEST_F(MultiThreadedCookieMonsterTest, | 2726 TEST_F(MultiThreadedCookieMonsterTest, |
| 2723 ThreadCheckDeleteAllCreatedBetweenForHost) { | 2727 ThreadCheckDeleteAllCreatedBetweenForHost) { |
| 2724 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2728 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2725 GURL url_not_google("http://www.notgoogle.com"); | 2729 GURL url_not_google("http://www.notgoogle.com"); |
| 2726 | 2730 |
| 2727 CookieOptions options; | 2731 CookieOptions options; |
| 2728 Time now = Time::Now(); | 2732 Time now = Time::Now(); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 2755 EXPECT_TRUE( | 2759 EXPECT_TRUE( |
| 2756 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2760 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2757 ResultSavingCookieCallback<int> callback(&other_thread_); | 2761 ResultSavingCookieCallback<int> callback(&other_thread_); |
| 2758 | 2762 |
| 2759 // 2. Second set of deletions. | 2763 // 2. Second set of deletions. |
| 2760 base::Closure task = base::Bind( | 2764 base::Closure task = base::Bind( |
| 2761 &MultiThreadedCookieMonsterTest::DeleteAllCreatedBetweenForHostTask, | 2765 &MultiThreadedCookieMonsterTest::DeleteAllCreatedBetweenForHostTask, |
| 2762 base::Unretained(this), cm, ago1, Time(), http_www_google_.url(), | 2766 base::Unretained(this), cm, ago1, Time(), http_www_google_.url(), |
| 2763 &callback); | 2767 &callback); |
| 2764 RunOnOtherThread(task); | 2768 RunOnOtherThread(task); |
| 2765 EXPECT_TRUE(callback.did_run()); | 2769 callback.WaitUntilDone(); |
| 2766 EXPECT_EQ(2, callback.result()); // Deletes A=B, G=H. | 2770 EXPECT_EQ(2, callback.result()); // Deletes A=B, G=H. |
| 2767 } | 2771 } |
| 2768 | 2772 |
| 2769 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteCanonicalCookie) { | 2773 TEST_F(MultiThreadedCookieMonsterTest, ThreadCheckDeleteCanonicalCookie) { |
| 2770 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 2774 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); |
| 2771 CookieOptions options; | 2775 CookieOptions options; |
| 2772 EXPECT_TRUE( | 2776 EXPECT_TRUE( |
| 2773 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2777 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2774 CookieList cookies = GetAllCookies(cm.get()); | 2778 CookieList cookies = GetAllCookies(cm.get()); |
| 2775 CookieList::iterator it = cookies.begin(); | 2779 CookieList::iterator it = cookies.begin(); |
| 2776 EXPECT_TRUE(DeleteCanonicalCookie(cm.get(), *it)); | 2780 EXPECT_TRUE(DeleteCanonicalCookie(cm.get(), *it)); |
| 2777 | 2781 |
| 2778 EXPECT_TRUE( | 2782 EXPECT_TRUE( |
| 2779 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); | 2783 SetCookieWithOptions(cm.get(), http_www_google_.url(), "A=B", options)); |
| 2780 ResultSavingCookieCallback<bool> callback(&other_thread_); | 2784 ResultSavingCookieCallback<bool> callback(&other_thread_); |
| 2781 cookies = GetAllCookies(cm.get()); | 2785 cookies = GetAllCookies(cm.get()); |
| 2782 it = cookies.begin(); | 2786 it = cookies.begin(); |
| 2783 base::Closure task = | 2787 base::Closure task = |
| 2784 base::Bind(&MultiThreadedCookieMonsterTest::DeleteCanonicalCookieTask, | 2788 base::Bind(&MultiThreadedCookieMonsterTest::DeleteCanonicalCookieTask, |
| 2785 base::Unretained(this), cm, *it, &callback); | 2789 base::Unretained(this), cm, *it, &callback); |
| 2786 RunOnOtherThread(task); | 2790 RunOnOtherThread(task); |
| 2787 EXPECT_TRUE(callback.did_run()); | 2791 callback.WaitUntilDone(); |
| 2788 EXPECT_TRUE(callback.result()); | 2792 EXPECT_TRUE(callback.result()); |
| 2789 } | 2793 } |
| 2790 | 2794 |
| 2791 // Ensure that cookies for http, https, ws, and wss all share the same storage | 2795 // Ensure that cookies for http, https, ws, and wss all share the same storage |
| 2792 // and policies when GetAllCookiesForURLAsync is used. This test is part of | 2796 // and policies when GetAllCookiesForURLAsync is used. This test is part of |
| 2793 // MultiThreadedCookieMonsterTest in order to test and use | 2797 // MultiThreadedCookieMonsterTest in order to test and use |
| 2794 // GetAllCookiesForURLAsync, but it does not use any additional threads. | 2798 // GetAllCookiesForURLAsync, but it does not use any additional threads. |
| 2795 TEST_F(MultiThreadedCookieMonsterTest, GetAllCookiesForURLEffectiveDomain) { | 2799 TEST_F(MultiThreadedCookieMonsterTest, GetAllCookiesForURLEffectiveDomain) { |
| 2796 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create( | 2800 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create( |
| 2797 http_www_google_.url(), kValidCookieLine, Time::Now(), CookieOptions())); | 2801 http_www_google_.url(), kValidCookieLine, Time::Now(), CookieOptions())); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 2815 EXPECT_CALL(checkpoint, Call(1)); | 2819 EXPECT_CALL(checkpoint, Call(1)); |
| 2816 // LoadCookiesForKey will never be called after checkpoint.Call(1) although | 2820 // LoadCookiesForKey will never be called after checkpoint.Call(1) although |
| 2817 // we will call GetAllCookiesForURLAsync again, because all URLs below share | 2821 // we will call GetAllCookiesForURLAsync again, because all URLs below share |
| 2818 // the same key. | 2822 // the same key. |
| 2819 EXPECT_CALL(*store, LoadCookiesForKey(::testing::_, ::testing::_)).Times(0); | 2823 EXPECT_CALL(*store, LoadCookiesForKey(::testing::_, ::testing::_)).Times(0); |
| 2820 | 2824 |
| 2821 GetCookieListCallback callback; | 2825 GetCookieListCallback callback; |
| 2822 checkpoint.Call(0); | 2826 checkpoint.Call(0); |
| 2823 GetAllCookiesForURLTask(cm.get(), http_www_google_.url(), &callback); | 2827 GetAllCookiesForURLTask(cm.get(), http_www_google_.url(), &callback); |
| 2824 checkpoint.Call(1); | 2828 checkpoint.Call(1); |
| 2825 ASSERT_FALSE(callback.did_run()); | |
| 2826 // Pass the cookies to the CookieMonster. | 2829 // Pass the cookies to the CookieMonster. |
| 2827 loaded_callback.Run(cookies); | 2830 loaded_callback.Run(cookies); |
| 2828 // Now GetAllCookiesForURLTask is done. | 2831 // Now GetAllCookiesForURLTask is done. |
| 2829 ASSERT_TRUE(callback.did_run()); | 2832 callback.WaitUntilDone(); |
| 2830 // See that the callback was called with the cookies. | 2833 // See that the callback was called with the cookies. |
| 2831 ASSERT_EQ(1u, callback.cookies().size()); | 2834 ASSERT_EQ(1u, callback.cookies().size()); |
| 2832 EXPECT_TRUE(cookie->IsEquivalent(callback.cookies()[0])); | 2835 EXPECT_TRUE(cookie->IsEquivalent(callback.cookies()[0])); |
| 2833 | 2836 |
| 2834 // All urls in |urls| should share the same cookie domain. | 2837 // All urls in |urls| should share the same cookie domain. |
| 2835 const GURL kUrls[] = { | 2838 const GURL kUrls[] = { |
| 2836 http_www_google_.url(), https_www_google_.url(), ws_www_google_.url(), | 2839 http_www_google_.url(), https_www_google_.url(), ws_www_google_.url(), |
| 2837 wss_www_google_.url(), | 2840 wss_www_google_.url(), |
| 2838 }; | 2841 }; |
| 2839 for (const GURL& url : kUrls) { | 2842 for (const GURL& url : kUrls) { |
| 2840 // Call the function with |url| and verify it is done synchronously without | 2843 // Call the function with |url| and verify it is done synchronously without |
| 2841 // calling LoadCookiesForKey. | 2844 // calling LoadCookiesForKey. |
| 2842 GetCookieListCallback callback; | 2845 GetCookieListCallback callback; |
| 2843 GetAllCookiesForURLTask(cm.get(), url, &callback); | 2846 GetAllCookiesForURLTask(cm.get(), url, &callback); |
| 2844 ASSERT_TRUE(callback.did_run()); | 2847 callback.WaitUntilDone(); |
| 2845 ASSERT_EQ(1u, callback.cookies().size()); | 2848 ASSERT_EQ(1u, callback.cookies().size()); |
| 2846 EXPECT_TRUE(cookie->IsEquivalent(callback.cookies()[0])); | 2849 EXPECT_TRUE(cookie->IsEquivalent(callback.cookies()[0])); |
| 2847 } | 2850 } |
| 2848 } | 2851 } |
| 2849 | 2852 |
| 2850 TEST_F(CookieMonsterTest, InvalidExpiryTime) { | 2853 TEST_F(CookieMonsterTest, InvalidExpiryTime) { |
| 2851 std::string cookie_line = | 2854 std::string cookie_line = |
| 2852 std::string(kValidCookieLine) + "; expires=Blarg arg arg"; | 2855 std::string(kValidCookieLine) + "; expires=Blarg arg arg"; |
| 2853 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create( | 2856 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create( |
| 2854 http_www_google_.url(), cookie_line, Time::Now(), CookieOptions())); | 2857 http_www_google_.url(), cookie_line, Time::Now(), CookieOptions())); |
| (...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3545 monster()->AddCallbackForCookie( | 3548 monster()->AddCallbackForCookie( |
| 3546 test_url_, "abc", | 3549 test_url_, "abc", |
| 3547 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); | 3550 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); |
| 3548 SetCookie(monster(), test_url_, "abc=def"); | 3551 SetCookie(monster(), test_url_, "abc=def"); |
| 3549 base::MessageLoop::current()->RunUntilIdle(); | 3552 base::MessageLoop::current()->RunUntilIdle(); |
| 3550 EXPECT_EQ(1U, cookies0.size()); | 3553 EXPECT_EQ(1U, cookies0.size()); |
| 3551 EXPECT_EQ(1U, cookies0.size()); | 3554 EXPECT_EQ(1U, cookies0.size()); |
| 3552 } | 3555 } |
| 3553 | 3556 |
| 3554 } // namespace net | 3557 } // namespace net |
| OLD | NEW |