Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(144)

Side by Side Diff: net/cookies/cookie_monster_unittest.cc

Issue 1701063002: CookieStore: Remove reference counting. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@threadsafe
Patch Set: merge Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/cookies/cookie_monster_store_test.cc ('k') | net/cookies/cookie_store.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 virtual ~NewMockPersistentCookieStore() {} 64 virtual ~NewMockPersistentCookieStore() {}
65 }; 65 };
66 66
67 const char kTopLevelDomainPlus1[] = "http://www.harvard.edu"; 67 const char kTopLevelDomainPlus1[] = "http://www.harvard.edu";
68 const char kTopLevelDomainPlus2[] = "http://www.math.harvard.edu"; 68 const char kTopLevelDomainPlus2[] = "http://www.math.harvard.edu";
69 const char kTopLevelDomainPlus2Secure[] = "https://www.math.harvard.edu"; 69 const char kTopLevelDomainPlus2Secure[] = "https://www.math.harvard.edu";
70 const char kTopLevelDomainPlus3[] = "http://www.bourbaki.math.harvard.edu"; 70 const char kTopLevelDomainPlus3[] = "http://www.bourbaki.math.harvard.edu";
71 const char kOtherDomain[] = "http://www.mit.edu"; 71 const char kOtherDomain[] = "http://www.mit.edu";
72 72
73 struct CookieMonsterTestTraits { 73 struct CookieMonsterTestTraits {
74 static scoped_refptr<CookieStore> Create() { 74 static scoped_ptr<CookieStore> Create() {
75 return new CookieMonster(NULL, NULL); 75 return make_scoped_ptr(new CookieMonster(nullptr, nullptr));
76 } 76 }
77 77
78 static const bool supports_http_only = true; 78 static const bool supports_http_only = true;
79 static const bool supports_non_dotted_domains = true; 79 static const bool supports_non_dotted_domains = true;
80 static const bool preserves_trailing_dots = true; 80 static const bool preserves_trailing_dots = true;
81 static const bool filters_schemes = true; 81 static const bool filters_schemes = true;
82 static const bool has_path_prefix_bug = false; 82 static const bool has_path_prefix_bug = false;
83 static const int creation_time_granularity_in_ms = 0; 83 static const int creation_time_granularity_in_ms = 0;
84 static const bool enforce_strict_secure = false; 84 static const bool enforce_strict_secure = false;
85 }; 85 };
86 86
87 struct CookieMonsterEnforcingStrictSecure { 87 struct CookieMonsterEnforcingStrictSecure {
88 static scoped_refptr<CookieStore> Create() { 88 static scoped_ptr<CookieStore> Create() {
89 return new CookieMonster(NULL, NULL); 89 return make_scoped_ptr(new CookieMonster(nullptr, nullptr));
90 } 90 }
91 91
92 static const bool supports_http_only = true; 92 static const bool supports_http_only = true;
93 static const bool supports_non_dotted_domains = true; 93 static const bool supports_non_dotted_domains = true;
94 static const bool preserves_trailing_dots = true; 94 static const bool preserves_trailing_dots = true;
95 static const bool filters_schemes = true; 95 static const bool filters_schemes = true;
96 static const bool has_path_prefix_bug = false; 96 static const bool has_path_prefix_bug = false;
97 static const int creation_time_granularity_in_ms = 0; 97 static const int creation_time_granularity_in_ms = 0;
98 static const bool enforce_strict_secure = true; 98 static const bool enforce_strict_secure = true;
99 }; 99 };
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 cm->DeleteAllCreatedBetweenForHostAsync( 159 cm->DeleteAllCreatedBetweenForHostAsync(
160 delete_begin, delete_end, url, 160 delete_begin, delete_end, url,
161 base::Bind(&ResultSavingCookieCallback<int>::Run, 161 base::Bind(&ResultSavingCookieCallback<int>::Run,
162 base::Unretained(&callback))); 162 base::Unretained(&callback)));
163 callback.WaitUntilDone(); 163 callback.WaitUntilDone();
164 return callback.result(); 164 return callback.result();
165 } 165 }
166 166
167 // Helper for DeleteAllForHost test; repopulates CM with same layout 167 // Helper for DeleteAllForHost test; repopulates CM with same layout
168 // each time. 168 // each time.
169 void PopulateCmForDeleteAllForHost(scoped_refptr<CookieMonster> cm) { 169 void PopulateCmForDeleteAllForHost(CookieMonster* cm) {
170 GURL url_top_level_domain_plus_1(kTopLevelDomainPlus1); 170 GURL url_top_level_domain_plus_1(kTopLevelDomainPlus1);
171 GURL url_top_level_domain_plus_2(kTopLevelDomainPlus2); 171 GURL url_top_level_domain_plus_2(kTopLevelDomainPlus2);
172 GURL url_top_level_domain_plus_2_secure(kTopLevelDomainPlus2Secure); 172 GURL url_top_level_domain_plus_2_secure(kTopLevelDomainPlus2Secure);
173 GURL url_top_level_domain_plus_3(kTopLevelDomainPlus3); 173 GURL url_top_level_domain_plus_3(kTopLevelDomainPlus3);
174 GURL url_other(kOtherDomain); 174 GURL url_other(kOtherDomain);
175 175
176 this->DeleteAll(cm.get()); 176 this->DeleteAll(cm);
177 177
178 // Static population for probe: 178 // Static population for probe:
179 // * Three levels of domain cookie (.b.a, .c.b.a, .d.c.b.a) 179 // * Three levels of domain cookie (.b.a, .c.b.a, .d.c.b.a)
180 // * Three levels of host cookie (w.b.a, w.c.b.a, w.d.c.b.a) 180 // * Three levels of host cookie (w.b.a, w.c.b.a, w.d.c.b.a)
181 // * http_only cookie (w.c.b.a) 181 // * http_only cookie (w.c.b.a)
182 // * same_site cookie (w.c.b.a) 182 // * same_site cookie (w.c.b.a)
183 // * Two secure cookies (.c.b.a, w.c.b.a) 183 // * Two secure cookies (.c.b.a, w.c.b.a)
184 // * Two domain path cookies (.c.b.a/dir1, .c.b.a/dir1/dir2) 184 // * Two domain path cookies (.c.b.a/dir1, .c.b.a/dir1/dir2)
185 // * Two host path cookies (w.c.b.a/dir1, w.c.b.a/dir1/dir2) 185 // * Two host path cookies (w.c.b.a/dir1, w.c.b.a/dir1/dir2)
186 186
187 // Domain cookies 187 // Domain cookies
188 EXPECT_TRUE(this->SetCookieWithDetails( 188 EXPECT_TRUE(this->SetCookieWithDetails(
189 cm.get(), url_top_level_domain_plus_1, "dom_1", "X", ".harvard.edu", 189 cm, url_top_level_domain_plus_1, "dom_1", "X", ".harvard.edu", "/",
190 "/", base::Time(), base::Time(), base::Time(), false, false, false, 190 base::Time(), base::Time(), base::Time(), false, false, false,
191 COOKIE_PRIORITY_DEFAULT)); 191 COOKIE_PRIORITY_DEFAULT));
192 EXPECT_TRUE(this->SetCookieWithDetails( 192 EXPECT_TRUE(this->SetCookieWithDetails(
193 cm.get(), url_top_level_domain_plus_2, "dom_2", "X", 193 cm, url_top_level_domain_plus_2, "dom_2", "X", ".math.harvard.edu", "/",
194 ".math.harvard.edu", "/", base::Time(), base::Time(), base::Time(), 194 base::Time(), base::Time(), base::Time(), false, false, false,
195 false, false, false, COOKIE_PRIORITY_DEFAULT)); 195 COOKIE_PRIORITY_DEFAULT));
196 EXPECT_TRUE(this->SetCookieWithDetails( 196 EXPECT_TRUE(this->SetCookieWithDetails(
197 cm.get(), url_top_level_domain_plus_3, "dom_3", "X", 197 cm, url_top_level_domain_plus_3, "dom_3", "X",
198 ".bourbaki.math.harvard.edu", "/", base::Time(), base::Time(), 198 ".bourbaki.math.harvard.edu", "/", base::Time(), base::Time(),
199 base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); 199 base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT));
200 200
201 // Host cookies 201 // Host cookies
202 EXPECT_TRUE(this->SetCookieWithDetails( 202 EXPECT_TRUE(this->SetCookieWithDetails(
203 cm.get(), url_top_level_domain_plus_1, "host_1", "X", std::string(), 203 cm, url_top_level_domain_plus_1, "host_1", "X", std::string(), "/",
204 "/", base::Time(), base::Time(), base::Time(), false, false, false, 204 base::Time(), base::Time(), base::Time(), false, false, false,
205 COOKIE_PRIORITY_DEFAULT)); 205 COOKIE_PRIORITY_DEFAULT));
206 EXPECT_TRUE(this->SetCookieWithDetails( 206 EXPECT_TRUE(this->SetCookieWithDetails(
207 cm.get(), url_top_level_domain_plus_2, "host_2", "X", std::string(), 207 cm, url_top_level_domain_plus_2, "host_2", "X", std::string(), "/",
208 "/", base::Time(), base::Time(), base::Time(), false, false, false, 208 base::Time(), base::Time(), base::Time(), false, false, false,
209 COOKIE_PRIORITY_DEFAULT)); 209 COOKIE_PRIORITY_DEFAULT));
210 EXPECT_TRUE(this->SetCookieWithDetails( 210 EXPECT_TRUE(this->SetCookieWithDetails(
211 cm.get(), url_top_level_domain_plus_3, "host_3", "X", std::string(), 211 cm, url_top_level_domain_plus_3, "host_3", "X", std::string(), "/",
212 "/", base::Time(), base::Time(), base::Time(), false, false, false, 212 base::Time(), base::Time(), base::Time(), false, false, false,
213 COOKIE_PRIORITY_DEFAULT)); 213 COOKIE_PRIORITY_DEFAULT));
214 214
215 // http_only cookie 215 // http_only cookie
216 EXPECT_TRUE(this->SetCookieWithDetails( 216 EXPECT_TRUE(this->SetCookieWithDetails(
217 cm.get(), url_top_level_domain_plus_2, "httpo_check", "x", 217 cm, url_top_level_domain_plus_2, "httpo_check", "x", std::string(), "/",
218 std::string(), "/", base::Time(), base::Time(), base::Time(), false, 218 base::Time(), base::Time(), base::Time(), false, true, false,
219 true, false, COOKIE_PRIORITY_DEFAULT)); 219 COOKIE_PRIORITY_DEFAULT));
220 220
221 // same-site cookie 221 // same-site cookie
222 EXPECT_TRUE(this->SetCookieWithDetails( 222 EXPECT_TRUE(this->SetCookieWithDetails(
223 cm.get(), url_top_level_domain_plus_2, "firstp_check", "x", 223 cm, url_top_level_domain_plus_2, "firstp_check", "x", std::string(),
224 std::string(), "/", base::Time(), base::Time(), base::Time(), false, 224 "/", base::Time(), base::Time(), base::Time(), false, false, true,
225 false, true, COOKIE_PRIORITY_DEFAULT)); 225 COOKIE_PRIORITY_DEFAULT));
226 226
227 // Secure cookies 227 // Secure cookies
228 EXPECT_TRUE(this->SetCookieWithDetails( 228 EXPECT_TRUE(this->SetCookieWithDetails(
229 cm.get(), url_top_level_domain_plus_2_secure, "sec_dom", "X", 229 cm, url_top_level_domain_plus_2_secure, "sec_dom", "X",
230 ".math.harvard.edu", "/", base::Time(), base::Time(), base::Time(), 230 ".math.harvard.edu", "/", base::Time(), base::Time(), base::Time(),
231 true, false, false, COOKIE_PRIORITY_DEFAULT)); 231 true, false, false, COOKIE_PRIORITY_DEFAULT));
232 EXPECT_TRUE(this->SetCookieWithDetails( 232 EXPECT_TRUE(this->SetCookieWithDetails(
233 cm.get(), url_top_level_domain_plus_2_secure, "sec_host", "X", 233 cm, url_top_level_domain_plus_2_secure, "sec_host", "X", std::string(),
234 std::string(), "/", base::Time(), base::Time(), base::Time(), true, 234 "/", base::Time(), base::Time(), base::Time(), true, false, false,
235 false, false, COOKIE_PRIORITY_DEFAULT)); 235 COOKIE_PRIORITY_DEFAULT));
236 236
237 // Domain path cookies 237 // Domain path cookies
238 EXPECT_TRUE(this->SetCookieWithDetails( 238 EXPECT_TRUE(this->SetCookieWithDetails(
239 cm.get(), url_top_level_domain_plus_2, "dom_path_1", "X", 239 cm, url_top_level_domain_plus_2, "dom_path_1", "X", ".math.harvard.edu",
240 ".math.harvard.edu", "/dir1", base::Time(), base::Time(), base::Time(), 240 "/dir1", base::Time(), base::Time(), base::Time(), false, false, false,
241 false, false, false, COOKIE_PRIORITY_DEFAULT)); 241 COOKIE_PRIORITY_DEFAULT));
242 EXPECT_TRUE(this->SetCookieWithDetails( 242 EXPECT_TRUE(this->SetCookieWithDetails(
243 cm.get(), url_top_level_domain_plus_2, "dom_path_2", "X", 243 cm, url_top_level_domain_plus_2, "dom_path_2", "X", ".math.harvard.edu",
244 ".math.harvard.edu", "/dir1/dir2", base::Time(), base::Time(), 244 "/dir1/dir2", base::Time(), base::Time(), base::Time(), false, false,
245 base::Time(), false, false, false, COOKIE_PRIORITY_DEFAULT)); 245 false, COOKIE_PRIORITY_DEFAULT));
246 246
247 // Host path cookies 247 // Host path cookies
248 EXPECT_TRUE(this->SetCookieWithDetails( 248 EXPECT_TRUE(this->SetCookieWithDetails(
249 cm.get(), url_top_level_domain_plus_2, "host_path_1", "X", 249 cm, url_top_level_domain_plus_2, "host_path_1", "X", std::string(),
250 std::string(), "/dir1", base::Time(), base::Time(), base::Time(), false, 250 "/dir1", base::Time(), base::Time(), base::Time(), false, false, false,
251 false, false, COOKIE_PRIORITY_DEFAULT)); 251 COOKIE_PRIORITY_DEFAULT));
252 EXPECT_TRUE(this->SetCookieWithDetails( 252 EXPECT_TRUE(this->SetCookieWithDetails(
253 cm.get(), url_top_level_domain_plus_2, "host_path_2", "X", 253 cm, url_top_level_domain_plus_2, "host_path_2", "X", std::string(),
254 std::string(), "/dir1/dir2", base::Time(), base::Time(), base::Time(), 254 "/dir1/dir2", base::Time(), base::Time(), base::Time(), false, false,
255 false, false, false, COOKIE_PRIORITY_DEFAULT)); 255 false, COOKIE_PRIORITY_DEFAULT));
256 256
257 EXPECT_EQ(14U, this->GetAllCookies(cm.get()).size()); 257 EXPECT_EQ(14U, this->GetAllCookies(cm).size());
258 } 258 }
259 259
260 Time GetFirstCookieAccessDate(CookieMonster* cm) { 260 Time GetFirstCookieAccessDate(CookieMonster* cm) {
261 const CookieList all_cookies(this->GetAllCookies(cm)); 261 const CookieList all_cookies(this->GetAllCookies(cm));
262 return all_cookies.front().LastAccessDate(); 262 return all_cookies.front().LastAccessDate();
263 } 263 }
264 264
265 bool FindAndDeleteCookie(CookieMonster* cm, 265 bool FindAndDeleteCookie(CookieMonster* cm,
266 const std::string& domain, 266 const std::string& domain,
267 const std::string& name) { 267 const std::string& name) {
268 CookieList cookies = this->GetAllCookies(cm); 268 CookieList cookies = this->GetAllCookies(cm);
269 for (CookieList::iterator it = cookies.begin(); it != cookies.end(); ++it) 269 for (CookieList::iterator it = cookies.begin(); it != cookies.end(); ++it)
270 if (it->Domain() == domain && it->Name() == name) 270 if (it->Domain() == domain && it->Name() == name)
271 return this->DeleteCanonicalCookie(cm, *it); 271 return this->DeleteCanonicalCookie(cm, *it);
272 return false; 272 return false;
273 } 273 }
274 274
275 int CountInString(const std::string& str, char c) { 275 int CountInString(const std::string& str, char c) {
276 return std::count(str.begin(), str.end(), c); 276 return std::count(str.begin(), str.end(), c);
277 } 277 }
278 278
279 void TestHostGarbageCollectHelper() { 279 void TestHostGarbageCollectHelper() {
280 int domain_max_cookies = CookieMonster::kDomainMaxCookies; 280 int domain_max_cookies = CookieMonster::kDomainMaxCookies;
281 int domain_purge_cookies = CookieMonster::kDomainPurgeCookies; 281 int domain_purge_cookies = CookieMonster::kDomainPurgeCookies;
282 const int more_than_enough_cookies = 282 const int more_than_enough_cookies =
283 (domain_max_cookies + domain_purge_cookies) * 2; 283 (domain_max_cookies + domain_purge_cookies) * 2;
284 // Add a bunch of cookies on a single host, should purge them. 284 // Add a bunch of cookies on a single host, should purge them.
285 { 285 {
286 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 286 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
287 for (int i = 0; i < more_than_enough_cookies; ++i) { 287 for (int i = 0; i < more_than_enough_cookies; ++i) {
288 std::string cookie = base::StringPrintf("a%03d=b", i); 288 std::string cookie = base::StringPrintf("a%03d=b", i);
289 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), cookie)); 289 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), cookie));
290 std::string cookies = 290 std::string cookies =
291 this->GetCookies(cm.get(), http_www_google_.url()); 291 this->GetCookies(cm.get(), http_www_google_.url());
292 // Make sure we find it in the cookies. 292 // Make sure we find it in the cookies.
293 EXPECT_NE(cookies.find(cookie), std::string::npos); 293 EXPECT_NE(cookies.find(cookie), std::string::npos);
294 // Count the number of cookies. 294 // Count the number of cookies.
295 EXPECT_LE(CountInString(cookies, '='), domain_max_cookies); 295 EXPECT_LE(CountInString(cookies, '='), domain_max_cookies);
296 } 296 }
297 } 297 }
298 298
299 // Add a bunch of cookies on multiple hosts within a single eTLD. 299 // Add a bunch of cookies on multiple hosts within a single eTLD.
300 // Should keep at least kDomainMaxCookies - kDomainPurgeCookies 300 // Should keep at least kDomainMaxCookies - kDomainPurgeCookies
301 // between them. We shouldn't go above kDomainMaxCookies for both together. 301 // between them. We shouldn't go above kDomainMaxCookies for both together.
302 GURL url_google_specific(http_www_google_.Format("http://www.gmail.%D")); 302 GURL url_google_specific(http_www_google_.Format("http://www.gmail.%D"));
303 { 303 {
304 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 304 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
305 for (int i = 0; i < more_than_enough_cookies; ++i) { 305 for (int i = 0; i < more_than_enough_cookies; ++i) {
306 std::string cookie_general = base::StringPrintf("a%03d=b", i); 306 std::string cookie_general = base::StringPrintf("a%03d=b", i);
307 EXPECT_TRUE( 307 EXPECT_TRUE(
308 SetCookie(cm.get(), http_www_google_.url(), cookie_general)); 308 SetCookie(cm.get(), http_www_google_.url(), cookie_general));
309 std::string cookie_specific = base::StringPrintf("c%03d=b", i); 309 std::string cookie_specific = base::StringPrintf("c%03d=b", i);
310 EXPECT_TRUE(SetCookie(cm.get(), url_google_specific, cookie_specific)); 310 EXPECT_TRUE(SetCookie(cm.get(), url_google_specific, cookie_specific));
311 std::string cookies_general = 311 std::string cookies_general =
312 this->GetCookies(cm.get(), http_www_google_.url()); 312 this->GetCookies(cm.get(), http_www_google_.url());
313 EXPECT_NE(cookies_general.find(cookie_general), std::string::npos); 313 EXPECT_NE(cookies_general.find(cookie_general), std::string::npos);
314 std::string cookies_specific = 314 std::string cookies_specific =
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
437 // of cookies to create. Cookies are created in the order they appear in 437 // of cookies to create. Cookies are created in the order they appear in
438 // cookie_entries. The value of cookie_entries[x].num_cookies specifies how 438 // cookie_entries. The value of cookie_entries[x].num_cookies specifies how
439 // many cookies of that type to create consecutively, while if 439 // many cookies of that type to create consecutively, while if
440 // cookie_entries[x].is_secure is |true|, those cookies will be marke as 440 // cookie_entries[x].is_secure is |true|, those cookies will be marke as
441 // Secure. 441 // Secure.
442 void TestSecureCookieEviction(const CookiesEntry* cookie_entries, 442 void TestSecureCookieEviction(const CookiesEntry* cookie_entries,
443 size_t num_cookie_entries, 443 size_t num_cookie_entries,
444 size_t expected_secure_cookies, 444 size_t expected_secure_cookies,
445 size_t expected_non_secure_cookies, 445 size_t expected_non_secure_cookies,
446 const AltHosts* alt_host_entries) { 446 const AltHosts* alt_host_entries) {
447 scoped_refptr<CookieMonster> cm; 447 scoped_ptr<CookieMonster> cm;
448 448
449 if (alt_host_entries == nullptr) { 449 if (alt_host_entries == nullptr) {
450 cm = new CookieMonster(nullptr, nullptr); 450 cm.reset(new CookieMonster(nullptr, nullptr));
451 } else { 451 } else {
452 // When generating all of these cookies on alternate hosts, they need to 452 // When generating all of these cookies on alternate hosts, they need to
453 // be all older than the max "safe" date for GC, which is currently 30 453 // be all older than the max "safe" date for GC, which is currently 30
454 // days, so we set them to 60. 454 // days, so we set them to 60.
455 cm = CreateMonsterFromStoreForGC( 455 cm = CreateMonsterFromStoreForGC(
456 alt_host_entries->first, alt_host_entries->first, 456 alt_host_entries->first, alt_host_entries->first,
457 alt_host_entries->second, alt_host_entries->second, 60); 457 alt_host_entries->second, alt_host_entries->second, 60);
458 } 458 }
459 459
460 int next_cookie_id = 0; 460 int next_cookie_id = 0;
(...skipping 27 matching lines...) Expand all
488 488
489 void TestPriorityAwareGarbageCollectHelper() { 489 void TestPriorityAwareGarbageCollectHelper() {
490 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint. 490 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint.
491 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies); 491 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies);
492 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies - 492 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies -
493 CookieMonster::kDomainPurgeCookies); 493 CookieMonster::kDomainPurgeCookies);
494 DCHECK_EQ(30U, CookieMonster::kDomainCookiesQuotaLow); 494 DCHECK_EQ(30U, CookieMonster::kDomainCookiesQuotaLow);
495 DCHECK_EQ(50U, CookieMonster::kDomainCookiesQuotaMedium); 495 DCHECK_EQ(50U, CookieMonster::kDomainCookiesQuotaMedium);
496 DCHECK_EQ(70U, CookieMonster::kDomainCookiesQuotaHigh); 496 DCHECK_EQ(70U, CookieMonster::kDomainCookiesQuotaHigh);
497 497
498 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 498 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
499 499
500 // Each test case adds 181 cookies, so 31 cookies are evicted. 500 // Each test case adds 181 cookies, so 31 cookies are evicted.
501 // Cookie same priority, repeated for each priority. 501 // Cookie same priority, repeated for each priority.
502 TestPriorityCookieCase(cm.get(), "181L", 150U, 0U, 0U); 502 TestPriorityCookieCase(cm.get(), "181L", 150U, 0U, 0U);
503 TestPriorityCookieCase(cm.get(), "181M", 0U, 150U, 0U); 503 TestPriorityCookieCase(cm.get(), "181M", 0U, 150U, 0U);
504 TestPriorityCookieCase(cm.get(), "181H", 0U, 0U, 150U); 504 TestPriorityCookieCase(cm.get(), "181H", 0U, 0U, 150U);
505 505
506 // Pairwise scenarios. 506 // Pairwise scenarios.
507 // Round 1 => none; round2 => 31M; round 3 => none. 507 // Round 1 => none; round2 => 31M; round 3 => none.
508 TestPriorityCookieCase(cm.get(), "10H 171M", 0U, 140U, 10U); 508 TestPriorityCookieCase(cm.get(), "10H 171M", 0U, 140U, 10U);
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 // Specifically, for each asynchronous method, verify that: 706 // Specifically, for each asynchronous method, verify that:
707 // 1. invoking it on an uninitialized cookie store causes the store to begin 707 // 1. invoking it on an uninitialized cookie store causes the store to begin
708 // chain-loading its backing data or loading data for a specific domain key 708 // chain-loading its backing data or loading data for a specific domain key
709 // (eTLD+1). 709 // (eTLD+1).
710 // 2. The initial invocation does not complete until the loading completes. 710 // 2. The initial invocation does not complete until the loading completes.
711 // 3. Invocations after the loading has completed complete immediately. 711 // 3. Invocations after the loading has completed complete immediately.
712 class DeferredCookieTaskTest : public CookieMonsterTest { 712 class DeferredCookieTaskTest : public CookieMonsterTest {
713 protected: 713 protected:
714 DeferredCookieTaskTest() : expect_load_called_(false) { 714 DeferredCookieTaskTest() : expect_load_called_(false) {
715 persistent_store_ = new NewMockPersistentCookieStore(); 715 persistent_store_ = new NewMockPersistentCookieStore();
716 cookie_monster_ = new CookieMonster(persistent_store_.get(), NULL); 716 cookie_monster_.reset(new CookieMonster(persistent_store_.get(), nullptr));
717 } 717 }
718 718
719 // Defines a cookie to be returned from PersistentCookieStore::Load 719 // Defines a cookie to be returned from PersistentCookieStore::Load
720 void DeclareLoadedCookie(const std::string& key, 720 void DeclareLoadedCookie(const std::string& key,
721 const std::string& cookie_line, 721 const std::string& cookie_line,
722 const base::Time& creation_time) { 722 const base::Time& creation_time) {
723 AddCookieToList(key, cookie_line, creation_time, &loaded_cookies_); 723 AddCookieToList(key, cookie_line, creation_time, &loaded_cookies_);
724 } 724 }
725 725
726 // Runs the message loop, waiting until PersistentCookieStore::Load is called. 726 // Runs the message loop, waiting until PersistentCookieStore::Load is called.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
795 CookieMonster::PersistentCookieStore::LoadedCallback loaded_callback_; 795 CookieMonster::PersistentCookieStore::LoadedCallback loaded_callback_;
796 // Stores the callback passed from the CookieMonster to the 796 // Stores the callback passed from the CookieMonster to the
797 // PersistentCookieStore::LoadCookiesForKey 797 // PersistentCookieStore::LoadCookiesForKey
798 std::queue<CookieMonster::PersistentCookieStore::LoadedCallback> 798 std::queue<CookieMonster::PersistentCookieStore::LoadedCallback>
799 loaded_for_key_callbacks_; 799 loaded_for_key_callbacks_;
800 // base::RunLoop used to wait for PersistentCookieStore::Load to be called. 800 // base::RunLoop used to wait for PersistentCookieStore::Load to be called.
801 base::RunLoop load_run_loop_; 801 base::RunLoop load_run_loop_;
802 // Indicates whether ExpectLoadCall() has been called. 802 // Indicates whether ExpectLoadCall() has been called.
803 bool expect_load_called_; 803 bool expect_load_called_;
804 // Stores the CookieMonster under test. 804 // Stores the CookieMonster under test.
805 scoped_refptr<CookieMonster> cookie_monster_; 805 scoped_ptr<CookieMonster> cookie_monster_;
806 // Stores the mock PersistentCookieStore. 806 // Stores the mock PersistentCookieStore.
807 scoped_refptr<NewMockPersistentCookieStore> persistent_store_; 807 scoped_refptr<NewMockPersistentCookieStore> persistent_store_;
808 }; 808 };
809 809
810 TEST_F(DeferredCookieTaskTest, DeferredGetCookies) { 810 TEST_F(DeferredCookieTaskTest, DeferredGetCookies) {
811 DeclareLoadedCookie(http_www_google_.host(), 811 DeclareLoadedCookie(http_www_google_.host(),
812 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", 812 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT",
813 Time::Now() + TimeDelta::FromDays(3)); 813 Time::Now() + TimeDelta::FromDays(3));
814 814
815 MockGetCookiesCallback get_cookies_callback; 815 MockGetCookiesCallback get_cookies_callback;
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1138 base::RunLoop loop; 1138 base::RunLoop loop;
1139 EXPECT_CALL(get_cookies_callback_deferred, Invoke("A=B; X=1")) 1139 EXPECT_CALL(get_cookies_callback_deferred, Invoke("A=B; X=1"))
1140 .WillOnce(QuitRunLoop(&loop)); 1140 .WillOnce(QuitRunLoop(&loop));
1141 1141
1142 CompleteLoading(); 1142 CompleteLoading();
1143 loop.Run(); 1143 loop.Run();
1144 } 1144 }
1145 1145
1146 TEST_F(CookieMonsterTest, TestCookieDeleteAll) { 1146 TEST_F(CookieMonsterTest, TestCookieDeleteAll) {
1147 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 1147 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
1148 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 1148 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
1149 CookieOptions options; 1149 CookieOptions options;
1150 options.set_include_httponly(); 1150 options.set_include_httponly();
1151 1151
1152 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), kValidCookieLine)); 1152 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), kValidCookieLine));
1153 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); 1153 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url()));
1154 1154
1155 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(), 1155 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(),
1156 "C=D; httponly", options)); 1156 "C=D; httponly", options));
1157 EXPECT_EQ("A=B; C=D", 1157 EXPECT_EQ("A=B; C=D",
1158 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options)); 1158 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options));
(...skipping 12 matching lines...) Expand all
1171 1171
1172 EXPECT_EQ(1, DeleteAll(cm.get())); // sync_to_store = true. 1172 EXPECT_EQ(1, DeleteAll(cm.get())); // sync_to_store = true.
1173 ASSERT_EQ(2u, store->commands().size()); 1173 ASSERT_EQ(2u, store->commands().size());
1174 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[1].type); 1174 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[1].type);
1175 1175
1176 EXPECT_EQ("", 1176 EXPECT_EQ("",
1177 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options)); 1177 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options));
1178 } 1178 }
1179 1179
1180 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) { 1180 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) {
1181 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1181 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1182 Time now = Time::Now(); 1182 Time now = Time::Now();
1183 1183
1184 // Nothing has been added so nothing should be deleted. 1184 // Nothing has been added so nothing should be deleted.
1185 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), 1185 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99),
1186 Time())); 1186 Time()));
1187 1187
1188 // Create 3 cookies with creation date of today, yesterday and the day before. 1188 // Create 3 cookies with creation date of today, yesterday and the day before.
1189 EXPECT_TRUE( 1189 EXPECT_TRUE(
1190 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now)); 1190 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now));
1191 EXPECT_TRUE(cm->SetCookieWithCreationTime( 1191 EXPECT_TRUE(cm->SetCookieWithCreationTime(
(...skipping 21 matching lines...) Expand all
1213 // Delete the last (now) item. 1213 // Delete the last (now) item.
1214 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time())); 1214 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time()));
1215 1215
1216 // Really make sure everything is gone. 1216 // Really make sure everything is gone.
1217 EXPECT_EQ(0, DeleteAll(cm.get())); 1217 EXPECT_EQ(0, DeleteAll(cm.get()));
1218 } 1218 }
1219 1219
1220 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20; 1220 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20;
1221 1221
1222 TEST_F(CookieMonsterTest, TestLastAccess) { 1222 TEST_F(CookieMonsterTest, TestLastAccess) {
1223 scoped_refptr<CookieMonster> cm( 1223 scoped_ptr<CookieMonster> cm(
1224 new CookieMonster(NULL, NULL, kLastAccessThresholdMilliseconds)); 1224 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds));
1225 1225
1226 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 1226 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
1227 const Time last_access_date(GetFirstCookieAccessDate(cm.get())); 1227 const Time last_access_date(GetFirstCookieAccessDate(cm.get()));
1228 1228
1229 // Reading the cookie again immediately shouldn't update the access date, 1229 // Reading the cookie again immediately shouldn't update the access date,
1230 // since we're inside the threshold. 1230 // since we're inside the threshold.
1231 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); 1231 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url()));
1232 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get())); 1232 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get()));
1233 1233
1234 // Reading after a short wait will update the access date, if the cookie 1234 // Reading after a short wait will update the access date, if the cookie
(...skipping 26 matching lines...) Expand all
1261 1261
1262 TEST_F(CookieMonsterTest, TestHostGarbageCollection) { 1262 TEST_F(CookieMonsterTest, TestHostGarbageCollection) {
1263 TestHostGarbageCollectHelper(); 1263 TestHostGarbageCollectHelper();
1264 } 1264 }
1265 1265
1266 TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollection) { 1266 TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollection) {
1267 TestPriorityAwareGarbageCollectHelper(); 1267 TestPriorityAwareGarbageCollectHelper();
1268 } 1268 }
1269 1269
1270 TEST_F(CookieMonsterTest, SetCookieableSchemes) { 1270 TEST_F(CookieMonsterTest, SetCookieableSchemes) {
1271 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1271 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1272 scoped_refptr<CookieMonster> cm_foo(new CookieMonster(NULL, NULL)); 1272 scoped_ptr<CookieMonster> cm_foo(new CookieMonster(nullptr, nullptr));
1273 1273
1274 // Only cm_foo should allow foo:// cookies. 1274 // Only cm_foo should allow foo:// cookies.
1275 std::vector<std::string> schemes; 1275 std::vector<std::string> schemes;
1276 schemes.push_back("foo"); 1276 schemes.push_back("foo");
1277 cm_foo->SetCookieableSchemes(schemes); 1277 cm_foo->SetCookieableSchemes(schemes);
1278 1278
1279 GURL foo_url("foo://host/path"); 1279 GURL foo_url("foo://host/path");
1280 GURL http_url("http://host/path"); 1280 GURL http_url("http://host/path");
1281 1281
1282 EXPECT_TRUE(SetCookie(cm.get(), http_url, "x=1")); 1282 EXPECT_TRUE(SetCookie(cm.get(), http_url, "x=1"));
1283 EXPECT_FALSE(SetCookie(cm.get(), foo_url, "x=1")); 1283 EXPECT_FALSE(SetCookie(cm.get(), foo_url, "x=1"));
1284 EXPECT_TRUE(SetCookie(cm_foo.get(), foo_url, "x=1")); 1284 EXPECT_TRUE(SetCookie(cm_foo.get(), foo_url, "x=1"));
1285 EXPECT_FALSE(SetCookie(cm_foo.get(), http_url, "x=1")); 1285 EXPECT_FALSE(SetCookie(cm_foo.get(), http_url, "x=1"));
1286 } 1286 }
1287 1287
1288 TEST_F(CookieMonsterTest, GetAllCookiesForURL) { 1288 TEST_F(CookieMonsterTest, GetAllCookiesForURL) {
1289 scoped_refptr<CookieMonster> cm( 1289 scoped_ptr<CookieMonster> cm(
1290 new CookieMonster(NULL, NULL, kLastAccessThresholdMilliseconds)); 1290 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds));
1291 1291
1292 // Create an httponly cookie. 1292 // Create an httponly cookie.
1293 CookieOptions options; 1293 CookieOptions options;
1294 options.set_include_httponly(); 1294 options.set_include_httponly();
1295 1295
1296 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(), 1296 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(),
1297 "A=B; httponly", options)); 1297 "A=B; httponly", options));
1298 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(), 1298 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(),
1299 http_www_google_.Format("C=D; domain=.%D"), 1299 http_www_google_.Format("C=D; domain=.%D"),
1300 options)); 1300 options));
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1348 EXPECT_EQ(http_www_google_.Format(".%D"), it->Domain()); 1348 EXPECT_EQ(http_www_google_.Format(".%D"), it->Domain());
1349 EXPECT_EQ("E", it->Name()); 1349 EXPECT_EQ("E", it->Name());
1350 1350
1351 ASSERT_TRUE(++it == cookies.end()); 1351 ASSERT_TRUE(++it == cookies.end());
1352 1352
1353 // Reading after a short wait should not update the access date. 1353 // Reading after a short wait should not update the access date.
1354 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get())); 1354 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get()));
1355 } 1355 }
1356 1356
1357 TEST_F(CookieMonsterTest, GetAllCookiesForURLPathMatching) { 1357 TEST_F(CookieMonsterTest, GetAllCookiesForURLPathMatching) {
1358 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1358 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1359 CookieOptions options; 1359 CookieOptions options;
1360 1360
1361 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_foo_.url(), 1361 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_foo_.url(),
1362 "A=B; path=/foo;", options)); 1362 "A=B; path=/foo;", options));
1363 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_bar_.url(), 1363 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_bar_.url(),
1364 "C=D; path=/bar;", options)); 1364 "C=D; path=/bar;", options));
1365 EXPECT_TRUE( 1365 EXPECT_TRUE(
1366 SetCookieWithOptions(cm.get(), http_www_google_.url(), "E=F;", options)); 1366 SetCookieWithOptions(cm.get(), http_www_google_.url(), "E=F;", options));
1367 1367
1368 CookieList cookies = GetAllCookiesForURL(cm.get(), www_google_foo_.url()); 1368 CookieList cookies = GetAllCookiesForURL(cm.get(), www_google_foo_.url());
(...skipping 17 matching lines...) Expand all
1386 EXPECT_EQ("/bar", it->Path()); 1386 EXPECT_EQ("/bar", it->Path());
1387 1387
1388 ASSERT_TRUE(++it != cookies.end()); 1388 ASSERT_TRUE(++it != cookies.end());
1389 EXPECT_EQ("E", it->Name()); 1389 EXPECT_EQ("E", it->Name());
1390 EXPECT_EQ("/", it->Path()); 1390 EXPECT_EQ("/", it->Path());
1391 1391
1392 ASSERT_TRUE(++it == cookies.end()); 1392 ASSERT_TRUE(++it == cookies.end());
1393 } 1393 }
1394 1394
1395 TEST_F(CookieMonsterTest, CookieSorting) { 1395 TEST_F(CookieMonsterTest, CookieSorting) {
1396 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1396 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1397 1397
1398 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/")); 1398 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/"));
1399 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo")); 1399 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo"));
1400 EXPECT_TRUE( 1400 EXPECT_TRUE(
1401 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar")); 1401 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar"));
1402 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/")); 1402 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/"));
1403 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo")); 1403 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo"));
1404 EXPECT_TRUE( 1404 EXPECT_TRUE(
1405 SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/foo/bar")); 1405 SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/foo/bar"));
1406 1406
1407 // Re-set cookie which should not change sort order. 1407 // Re-set cookie which should not change sort order.
1408 EXPECT_TRUE( 1408 EXPECT_TRUE(
1409 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar")); 1409 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar"));
1410 1410
1411 CookieList cookies = GetAllCookies(cm.get()); 1411 CookieList cookies = GetAllCookies(cm.get());
1412 ASSERT_EQ(6u, cookies.size()); 1412 ASSERT_EQ(6u, cookies.size());
1413 // According to RFC 6265 5.3 (11) re-setting this cookie should retain the 1413 // According to RFC 6265 5.3 (11) re-setting this cookie should retain the
1414 // initial creation-time from above, and the sort order should not change. 1414 // initial creation-time from above, and the sort order should not change.
1415 // Chrome's current implementation deviates from the spec so capturing this to 1415 // Chrome's current implementation deviates from the spec so capturing this to
1416 // avoid any inadvertent changes to this behavior. 1416 // avoid any inadvertent changes to this behavior.
1417 EXPECT_EQ("A3", cookies[0].Value()); 1417 EXPECT_EQ("A3", cookies[0].Value());
1418 EXPECT_EQ("B3", cookies[1].Value()); 1418 EXPECT_EQ("B3", cookies[1].Value());
1419 EXPECT_EQ("B2", cookies[2].Value()); 1419 EXPECT_EQ("B2", cookies[2].Value());
1420 EXPECT_EQ("A2", cookies[3].Value()); 1420 EXPECT_EQ("A2", cookies[3].Value());
1421 EXPECT_EQ("B1", cookies[4].Value()); 1421 EXPECT_EQ("B1", cookies[4].Value());
1422 EXPECT_EQ("A1", cookies[5].Value()); 1422 EXPECT_EQ("A1", cookies[5].Value());
1423 } 1423 }
1424 1424
1425 TEST_F(CookieMonsterTest, DeleteCookieByName) {
1426 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1427
1428 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/"));
1429 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo"));
1430 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/bar"));
1431 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/"));
1432 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo"));
1433 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/bar"));
1434
1435 DeleteCookie(cm.get(), http_www_google_.AppendPath("foo/bar"), "A");
1436
1437 CookieList cookies = GetAllCookies(cm.get());
1438 size_t expected_size = 4;
1439 EXPECT_EQ(expected_size, cookies.size());
1440 for (CookieList::iterator it = cookies.begin(); it != cookies.end(); ++it) {
1441 EXPECT_NE("A1", it->Value());
1442 EXPECT_NE("A2", it->Value());
1443 }
1444 }
1445
1425 // Tests importing from a persistent cookie store that contains duplicate 1446 // Tests importing from a persistent cookie store that contains duplicate
1426 // equivalent cookies. This situation should be handled by removing the 1447 // equivalent cookies. This situation should be handled by removing the
1427 // duplicate cookie (both from the in-memory cache, and from the backing store). 1448 // duplicate cookie (both from the in-memory cache, and from the backing store).
1428 // 1449 //
1429 // This is a regression test for: http://crbug.com/17855. 1450 // This is a regression test for: http://crbug.com/17855.
1430 TEST_F(CookieMonsterTest, DontImportDuplicateCookies) { 1451 TEST_F(CookieMonsterTest, DontImportDuplicateCookies) {
1431 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 1452 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
1432 1453
1433 // We will fill some initial cookies into the PersistentCookieStore, 1454 // We will fill some initial cookies into the PersistentCookieStore,
1434 // to simulate a database with 4 duplicates. Note that we need to 1455 // to simulate a database with 4 duplicates. Note that we need to
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1471 Time::Now() + TimeDelta::FromDays(2), &initial_cookies); 1492 Time::Now() + TimeDelta::FromDays(2), &initial_cookies);
1472 1493
1473 // Insert 1 cookie with name "Y" on path "/". 1494 // Insert 1 cookie with name "Y" on path "/".
1474 AddCookieToList("www.google.com", 1495 AddCookieToList("www.google.com",
1475 "Y=a; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", 1496 "Y=a; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT",
1476 Time::Now() + TimeDelta::FromDays(10), &initial_cookies); 1497 Time::Now() + TimeDelta::FromDays(10), &initial_cookies);
1477 1498
1478 // Inject our initial cookies into the mock PersistentCookieStore. 1499 // Inject our initial cookies into the mock PersistentCookieStore.
1479 store->SetLoadExpectation(true, initial_cookies); 1500 store->SetLoadExpectation(true, initial_cookies);
1480 1501
1481 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 1502 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
1482 1503
1483 // Verify that duplicates were not imported for path "/". 1504 // Verify that duplicates were not imported for path "/".
1484 // (If this had failed, GetCookies() would have also returned X=1, X=2, X=4). 1505 // (If this had failed, GetCookies() would have also returned X=1, X=2, X=4).
1485 EXPECT_EQ("X=3; Y=a", GetCookies(cm.get(), GURL("http://www.google.com/"))); 1506 EXPECT_EQ("X=3; Y=a", GetCookies(cm.get(), GURL("http://www.google.com/")));
1486 1507
1487 // Verify that same-named cookie on a different path ("/x2") didn't get 1508 // Verify that same-named cookie on a different path ("/x2") didn't get
1488 // messed up. 1509 // messed up.
1489 EXPECT_EQ("X=a1; X=3; Y=a", 1510 EXPECT_EQ("X=a1; X=3; Y=a",
1490 GetCookies(cm.get(), GURL("http://www.google.com/2/x"))); 1511 GetCookies(cm.get(), GURL("http://www.google.com/2/x")));
1491 1512
(...skipping 27 matching lines...) Expand all
1519 AddCookieToList("www.google.com", "X=4; path=/", now, &initial_cookies); 1540 AddCookieToList("www.google.com", "X=4; path=/", now, &initial_cookies);
1520 1541
1521 AddCookieToList("www.google.com", "Y=1; path=/", earlier, &initial_cookies); 1542 AddCookieToList("www.google.com", "Y=1; path=/", earlier, &initial_cookies);
1522 AddCookieToList("www.google.com", "Y=2; path=/", earlier, &initial_cookies); 1543 AddCookieToList("www.google.com", "Y=2; path=/", earlier, &initial_cookies);
1523 AddCookieToList("www.google.com", "Y=3; path=/", earlier, &initial_cookies); 1544 AddCookieToList("www.google.com", "Y=3; path=/", earlier, &initial_cookies);
1524 AddCookieToList("www.google.com", "Y=4; path=/", earlier, &initial_cookies); 1545 AddCookieToList("www.google.com", "Y=4; path=/", earlier, &initial_cookies);
1525 1546
1526 // Inject our initial cookies into the mock PersistentCookieStore. 1547 // Inject our initial cookies into the mock PersistentCookieStore.
1527 store->SetLoadExpectation(true, initial_cookies); 1548 store->SetLoadExpectation(true, initial_cookies);
1528 1549
1529 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 1550 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
1530 1551
1531 CookieList list(GetAllCookies(cm.get())); 1552 CookieList list(GetAllCookies(cm.get()));
1532 EXPECT_EQ(2U, list.size()); 1553 EXPECT_EQ(2U, list.size());
1533 // Confirm that we have one of each. 1554 // Confirm that we have one of each.
1534 std::string name1(list[0].Name()); 1555 std::string name1(list[0].Name());
1535 std::string name2(list[1].Name()); 1556 std::string name2(list[1].Name());
1536 EXPECT_TRUE(name1 == "X" || name2 == "X"); 1557 EXPECT_TRUE(name1 == "X" || name2 == "X");
1537 EXPECT_TRUE(name1 == "Y" || name2 == "Y"); 1558 EXPECT_TRUE(name1 == "Y" || name2 == "Y");
1538 EXPECT_NE(name1, name2); 1559 EXPECT_NE(name1, name2);
1539 } 1560 }
1540 1561
1541 TEST_F(CookieMonsterTest, CookieMonsterDelegate) { 1562 TEST_F(CookieMonsterTest, CookieMonsterDelegate) {
1542 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 1563 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
1543 scoped_refptr<MockCookieMonsterDelegate> delegate( 1564 scoped_refptr<MockCookieMonsterDelegate> delegate(
1544 new MockCookieMonsterDelegate); 1565 new MockCookieMonsterDelegate);
1545 scoped_refptr<CookieMonster> cm( 1566 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), delegate.get()));
1546 new CookieMonster(store.get(), delegate.get()));
1547 1567
1548 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 1568 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
1549 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "C=D")); 1569 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "C=D"));
1550 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "E=F")); 1570 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "E=F"));
1551 EXPECT_EQ("A=B; C=D; E=F", GetCookies(cm.get(), http_www_google_.url())); 1571 EXPECT_EQ("A=B; C=D; E=F", GetCookies(cm.get(), http_www_google_.url()));
1552 ASSERT_EQ(3u, delegate->changes().size()); 1572 ASSERT_EQ(3u, delegate->changes().size());
1553 EXPECT_FALSE(delegate->changes()[0].second); 1573 EXPECT_FALSE(delegate->changes()[0].second);
1554 EXPECT_EQ(http_www_google_.url().host(), 1574 EXPECT_EQ(http_www_google_.url().host(),
1555 delegate->changes()[0].first.Domain()); 1575 delegate->changes()[0].first.Domain());
1556 EXPECT_EQ("A", delegate->changes()[0].first.Name()); 1576 EXPECT_EQ("A", delegate->changes()[0].first.Name());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1615 EXPECT_EQ("val1", delegate->changes()[0].first.Value()); 1635 EXPECT_EQ("val1", delegate->changes()[0].first.Value());
1616 EXPECT_EQ(http_www_google_.url().host(), 1636 EXPECT_EQ(http_www_google_.url().host(),
1617 delegate->changes()[1].first.Domain()); 1637 delegate->changes()[1].first.Domain());
1618 EXPECT_FALSE(delegate->changes()[1].second); 1638 EXPECT_FALSE(delegate->changes()[1].second);
1619 EXPECT_EQ("a", delegate->changes()[1].first.Name()); 1639 EXPECT_EQ("a", delegate->changes()[1].first.Name());
1620 EXPECT_EQ("val2", delegate->changes()[1].first.Value()); 1640 EXPECT_EQ("val2", delegate->changes()[1].first.Value());
1621 delegate->reset(); 1641 delegate->reset();
1622 } 1642 }
1623 1643
1624 TEST_F(CookieMonsterTest, DeleteAllForHost) { 1644 TEST_F(CookieMonsterTest, DeleteAllForHost) {
1625 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1645 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1626 1646
1627 // Test probes: 1647 // Test probes:
1628 // * Non-secure URL, mid-level (http://w.c.b.a) 1648 // * Non-secure URL, mid-level (http://w.c.b.a)
1629 // * Secure URL, mid-level (https://w.c.b.a) 1649 // * Secure URL, mid-level (https://w.c.b.a)
1630 // * URL with path, mid-level (https:/w.c.b.a/dir1/xx) 1650 // * URL with path, mid-level (https:/w.c.b.a/dir1/xx)
1631 // All three tests should nuke only the midlevel host cookie, 1651 // All three tests should nuke only the midlevel host cookie,
1632 // the http_only cookie, the host secure cookie, and the two host 1652 // the http_only cookie, the host secure cookie, and the two host
1633 // path cookies. http_only, secure, and paths are ignored by 1653 // path cookies. http_only, secure, and paths are ignored by
1634 // this call, and domain cookies arent touched. 1654 // this call, and domain cookies arent touched.
1635 PopulateCmForDeleteAllForHost(cm); 1655 PopulateCmForDeleteAllForHost(cm.get());
1636 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1656 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1637 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1657 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1638 EXPECT_EQ("dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X", 1658 EXPECT_EQ("dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X",
1639 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1659 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1640 EXPECT_EQ("dom_1=X; host_1=X", 1660 EXPECT_EQ("dom_1=X; host_1=X",
1641 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1661 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1642 EXPECT_EQ( 1662 EXPECT_EQ(
1643 "dom_path_2=X; host_path_2=X; dom_path_1=X; host_path_1=X; " 1663 "dom_path_2=X; host_path_2=X; dom_path_1=X; host_path_1=X; "
1644 "dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X", 1664 "dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X",
1645 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1665 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1646 std::string("/dir1/dir2/xxx")))); 1666 std::string("/dir1/dir2/xxx"))));
1647 1667
1648 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(cm.get(), base::Time(), 1668 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(cm.get(), base::Time(),
1649 base::Time::Now(), 1669 base::Time::Now(),
1650 GURL(kTopLevelDomainPlus2))); 1670 GURL(kTopLevelDomainPlus2)));
1651 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); 1671 EXPECT_EQ(8U, GetAllCookies(cm.get()).size());
1652 1672
1653 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1673 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1654 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1674 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1655 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", 1675 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X",
1656 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1676 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1657 EXPECT_EQ("dom_1=X; host_1=X", 1677 EXPECT_EQ("dom_1=X; host_1=X",
1658 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1678 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1659 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", 1679 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X",
1660 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1680 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1661 std::string("/dir1/dir2/xxx")))); 1681 std::string("/dir1/dir2/xxx"))));
1662 1682
1663 PopulateCmForDeleteAllForHost(cm); 1683 PopulateCmForDeleteAllForHost(cm.get());
1664 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost( 1684 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(
1665 cm.get(), base::Time(), base::Time::Now(), 1685 cm.get(), base::Time(), base::Time::Now(),
1666 GURL(kTopLevelDomainPlus2Secure))); 1686 GURL(kTopLevelDomainPlus2Secure)));
1667 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); 1687 EXPECT_EQ(8U, GetAllCookies(cm.get()).size());
1668 1688
1669 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1689 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1670 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1690 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1671 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", 1691 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X",
1672 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1692 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1673 EXPECT_EQ("dom_1=X; host_1=X", 1693 EXPECT_EQ("dom_1=X; host_1=X",
1674 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1694 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1675 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", 1695 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X",
1676 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1696 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1677 std::string("/dir1/dir2/xxx")))); 1697 std::string("/dir1/dir2/xxx"))));
1678 1698
1679 PopulateCmForDeleteAllForHost(cm); 1699 PopulateCmForDeleteAllForHost(cm.get());
1680 EXPECT_EQ(6, 1700 EXPECT_EQ(6,
1681 DeleteAllCreatedBetweenForHost( 1701 DeleteAllCreatedBetweenForHost(
1682 cm.get(), base::Time(), base::Time::Now(), 1702 cm.get(), base::Time(), base::Time::Now(),
1683 GURL(kTopLevelDomainPlus2Secure + std::string("/dir1/xxx")))); 1703 GURL(kTopLevelDomainPlus2Secure + std::string("/dir1/xxx"))));
1684 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); 1704 EXPECT_EQ(8U, GetAllCookies(cm.get()).size());
1685 1705
1686 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1706 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1687 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1707 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1688 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", 1708 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X",
1689 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1709 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1690 EXPECT_EQ("dom_1=X; host_1=X", 1710 EXPECT_EQ("dom_1=X; host_1=X",
1691 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1711 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1692 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", 1712 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X",
1693 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1713 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1694 std::string("/dir1/dir2/xxx")))); 1714 std::string("/dir1/dir2/xxx"))));
1695 } 1715 }
1696 1716
1697 TEST_F(CookieMonsterTest, UniqueCreationTime) { 1717 TEST_F(CookieMonsterTest, UniqueCreationTime) {
1698 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1718 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1699 CookieOptions options; 1719 CookieOptions options;
1700 1720
1701 // Add in three cookies through every public interface to the 1721 // Add in three cookies through every public interface to the
1702 // CookieMonster and confirm that none of them have duplicate 1722 // CookieMonster and confirm that none of them have duplicate
1703 // creation times. 1723 // creation times.
1704 1724
1705 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions 1725 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions
1706 // are not included as they aren't going to be public for very much 1726 // are not included as they aren't going to be public for very much
1707 // longer. 1727 // longer.
1708 1728
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1751 if (existing_cookie_it == check_map.end()) { 1771 if (existing_cookie_it == check_map.end()) {
1752 check_map.insert( 1772 check_map.insert(
1753 TimeCookieMap::value_type(it->CreationDate().ToInternalValue(), *it)); 1773 TimeCookieMap::value_type(it->CreationDate().ToInternalValue(), *it));
1754 } 1774 }
1755 } 1775 }
1756 } 1776 }
1757 1777
1758 // Mainly a test of GetEffectiveDomain, or more specifically, of the 1778 // Mainly a test of GetEffectiveDomain, or more specifically, of the
1759 // expected behavior of GetEffectiveDomain within the CookieMonster. 1779 // expected behavior of GetEffectiveDomain within the CookieMonster.
1760 TEST_F(CookieMonsterTest, GetKey) { 1780 TEST_F(CookieMonsterTest, GetKey) {
1761 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1781 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1762 1782
1763 // This test is really only interesting if GetKey() actually does something. 1783 // This test is really only interesting if GetKey() actually does something.
1764 EXPECT_EQ("google.com", cm->GetKey("www.google.com")); 1784 EXPECT_EQ("google.com", cm->GetKey("www.google.com"));
1765 EXPECT_EQ("google.izzie", cm->GetKey("www.google.izzie")); 1785 EXPECT_EQ("google.izzie", cm->GetKey("www.google.izzie"));
1766 EXPECT_EQ("google.izzie", cm->GetKey(".google.izzie")); 1786 EXPECT_EQ("google.izzie", cm->GetKey(".google.izzie"));
1767 EXPECT_EQ("bbc.co.uk", cm->GetKey("bbc.co.uk")); 1787 EXPECT_EQ("bbc.co.uk", cm->GetKey("bbc.co.uk"));
1768 EXPECT_EQ("bbc.co.uk", cm->GetKey("a.b.c.d.bbc.co.uk")); 1788 EXPECT_EQ("bbc.co.uk", cm->GetKey("a.b.c.d.bbc.co.uk"));
1769 EXPECT_EQ("apple.com", cm->GetKey("a.b.c.d.apple.com")); 1789 EXPECT_EQ("apple.com", cm->GetKey("a.b.c.d.apple.com"));
1770 EXPECT_EQ("apple.izzie", cm->GetKey("a.b.c.d.apple.izzie")); 1790 EXPECT_EQ("apple.izzie", cm->GetKey("a.b.c.d.apple.izzie"));
1771 1791
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1817 "/another/path/to/cookie", 1837 "/another/path/to/cookie",
1818 base::Time::Now() + base::TimeDelta::FromSeconds(100), 1838 base::Time::Now() + base::TimeDelta::FromSeconds(100),
1819 true, 1839 true,
1820 false, 1840 false,
1821 true, 1841 true,
1822 COOKIE_PRIORITY_DEFAULT}}; 1842 COOKIE_PRIORITY_DEFAULT}};
1823 const int INPUT_DELETE = 1; 1843 const int INPUT_DELETE = 1;
1824 1844
1825 // Create new cookies and flush them to the store. 1845 // Create new cookies and flush them to the store.
1826 { 1846 {
1827 scoped_refptr<CookieMonster> cmout(new CookieMonster(store.get(), NULL)); 1847 scoped_ptr<CookieMonster> cmout(new CookieMonster(store.get(), nullptr));
1828 for (const CookiesInputInfo* p = input_info; 1848 for (const CookiesInputInfo* p = input_info;
1829 p < &input_info[arraysize(input_info)]; p++) { 1849 p < &input_info[arraysize(input_info)]; p++) {
1830 EXPECT_TRUE(SetCookieWithDetails( 1850 EXPECT_TRUE(SetCookieWithDetails(
1831 cmout.get(), p->url, p->name, p->value, p->domain, p->path, 1851 cmout.get(), p->url, p->name, p->value, p->domain, p->path,
1832 base::Time(), p->expiration_time, base::Time(), p->secure, 1852 base::Time(), p->expiration_time, base::Time(), p->secure,
1833 p->http_only, p->same_site, p->priority)); 1853 p->http_only, p->same_site, p->priority));
1834 } 1854 }
1835 GURL del_url(input_info[INPUT_DELETE] 1855 GURL del_url(input_info[INPUT_DELETE]
1836 .url.Resolve(input_info[INPUT_DELETE].path) 1856 .url.Resolve(input_info[INPUT_DELETE].path)
1837 .spec()); 1857 .spec());
1838 DeleteCookie(cmout.get(), del_url, input_info[INPUT_DELETE].name); 1858 DeleteCookie(cmout.get(), del_url, input_info[INPUT_DELETE].name);
1839 } 1859 }
1840 1860
1841 // Create a new cookie monster and make sure that everything is correct 1861 // Create a new cookie monster and make sure that everything is correct
1842 { 1862 {
1843 scoped_refptr<CookieMonster> cmin(new CookieMonster(store.get(), NULL)); 1863 scoped_ptr<CookieMonster> cmin(new CookieMonster(store.get(), nullptr));
1844 CookieList cookies(GetAllCookies(cmin.get())); 1864 CookieList cookies(GetAllCookies(cmin.get()));
1845 ASSERT_EQ(2u, cookies.size()); 1865 ASSERT_EQ(2u, cookies.size());
1846 // Ordering is path length, then creation time. So second cookie 1866 // Ordering is path length, then creation time. So second cookie
1847 // will come first, and we need to swap them. 1867 // will come first, and we need to swap them.
1848 std::swap(cookies[0], cookies[1]); 1868 std::swap(cookies[0], cookies[1]);
1849 for (int output_index = 0; output_index < 2; output_index++) { 1869 for (int output_index = 0; output_index < 2; output_index++) {
1850 int input_index = output_index * 2; 1870 int input_index = output_index * 2;
1851 const CookiesInputInfo* input = &input_info[input_index]; 1871 const CookiesInputInfo* input = &input_info[input_index];
1852 const CanonicalCookie* output = &cookies[output_index]; 1872 const CanonicalCookie* output = &cookies[output_index];
1853 1873
1854 EXPECT_EQ(input->name, output->Name()); 1874 EXPECT_EQ(input->name, output->Name());
1855 EXPECT_EQ(input->value, output->Value()); 1875 EXPECT_EQ(input->value, output->Value());
1856 EXPECT_EQ(input->url.host(), output->Domain()); 1876 EXPECT_EQ(input->url.host(), output->Domain());
1857 EXPECT_EQ(input->path, output->Path()); 1877 EXPECT_EQ(input->path, output->Path());
1858 EXPECT_LE(current.ToInternalValue(), 1878 EXPECT_LE(current.ToInternalValue(),
1859 output->CreationDate().ToInternalValue()); 1879 output->CreationDate().ToInternalValue());
1860 EXPECT_EQ(input->secure, output->IsSecure()); 1880 EXPECT_EQ(input->secure, output->IsSecure());
1861 EXPECT_EQ(input->http_only, output->IsHttpOnly()); 1881 EXPECT_EQ(input->http_only, output->IsHttpOnly());
1862 EXPECT_EQ(input->same_site, output->IsSameSite()); 1882 EXPECT_EQ(input->same_site, output->IsSameSite());
1863 EXPECT_TRUE(output->IsPersistent()); 1883 EXPECT_TRUE(output->IsPersistent());
1864 EXPECT_EQ(input->expiration_time.ToInternalValue(), 1884 EXPECT_EQ(input->expiration_time.ToInternalValue(),
1865 output->ExpiryDate().ToInternalValue()); 1885 output->ExpiryDate().ToInternalValue());
1866 } 1886 }
1867 } 1887 }
1868 } 1888 }
1869 1889
1870 TEST_F(CookieMonsterTest, CookieListOrdering) { 1890 TEST_F(CookieMonsterTest, CookieListOrdering) {
1871 // Put a random set of cookies into a monster and make sure 1891 // Put a random set of cookies into a monster and make sure
1872 // they're returned in the right order. 1892 // they're returned in the right order.
1873 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1893 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1874 EXPECT_TRUE( 1894 EXPECT_TRUE(
1875 SetCookie(cm.get(), GURL("http://d.c.b.a.google.com/aa/x.html"), "c=1")); 1895 SetCookie(cm.get(), GURL("http://d.c.b.a.google.com/aa/x.html"), "c=1"));
1876 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"), 1896 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"),
1877 "d=1; domain=b.a.google.com")); 1897 "d=1; domain=b.a.google.com"));
1878 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"), 1898 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"),
1879 "a=4; domain=b.a.google.com")); 1899 "a=4; domain=b.a.google.com"));
1880 EXPECT_TRUE(SetCookie(cm.get(), 1900 EXPECT_TRUE(SetCookie(cm.get(),
1881 GURL("http://c.b.a.google.com/aa/bb/cc/x.html"), 1901 GURL("http://c.b.a.google.com/aa/bb/cc/x.html"),
1882 "e=1; domain=c.b.a.google.com")); 1902 "e=1; domain=c.b.a.google.com"));
1883 EXPECT_TRUE(SetCookie(cm.get(), 1903 EXPECT_TRUE(SetCookie(cm.get(),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1920 #if defined(OS_WIN) 1940 #if defined(OS_WIN)
1921 #define MAYBE_GarbageCollectionTriggers DISABLED_GarbageCollectionTriggers 1941 #define MAYBE_GarbageCollectionTriggers DISABLED_GarbageCollectionTriggers
1922 #else 1942 #else
1923 #define MAYBE_GarbageCollectionTriggers GarbageCollectionTriggers 1943 #define MAYBE_GarbageCollectionTriggers GarbageCollectionTriggers
1924 #endif 1944 #endif
1925 1945
1926 TEST_F(CookieMonsterTest, MAYBE_GarbageCollectionTriggers) { 1946 TEST_F(CookieMonsterTest, MAYBE_GarbageCollectionTriggers) {
1927 // First we check to make sure that a whole lot of recent cookies 1947 // First we check to make sure that a whole lot of recent cookies
1928 // doesn't get rid of anything after garbage collection is checked for. 1948 // doesn't get rid of anything after garbage collection is checked for.
1929 { 1949 {
1930 scoped_refptr<CookieMonster> cm( 1950 scoped_ptr<CookieMonster> cm(
1931 CreateMonsterForGC(CookieMonster::kMaxCookies * 2)); 1951 CreateMonsterForGC(CookieMonster::kMaxCookies * 2));
1932 EXPECT_EQ(CookieMonster::kMaxCookies * 2, GetAllCookies(cm.get()).size()); 1952 EXPECT_EQ(CookieMonster::kMaxCookies * 2, GetAllCookies(cm.get()).size());
1933 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2"); 1953 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2");
1934 EXPECT_EQ(CookieMonster::kMaxCookies * 2 + 1, 1954 EXPECT_EQ(CookieMonster::kMaxCookies * 2 + 1,
1935 GetAllCookies(cm.get()).size()); 1955 GetAllCookies(cm.get()).size());
1936 } 1956 }
1937 1957
1938 // Now we explore a series of relationships between cookie last access 1958 // Now we explore a series of relationships between cookie last access
1939 // time and size of store to make sure we only get rid of cookies when 1959 // time and size of store to make sure we only get rid of cookies when
1940 // we really should. 1960 // we really should.
(...skipping 21 matching lines...) Expand all
1962 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies}, 1982 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies},
1963 {// Old cookies enough to bring below our purge line (which we 1983 {// Old cookies enough to bring below our purge line (which we
1964 // shouldn't do). 1984 // shouldn't do).
1965 CookieMonster::kMaxCookies * 2, 1985 CookieMonster::kMaxCookies * 2,
1966 CookieMonster::kMaxCookies * 3 / 2, 1986 CookieMonster::kMaxCookies * 3 / 2,
1967 CookieMonster::kMaxCookies * 2, 1987 CookieMonster::kMaxCookies * 2,
1968 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies}}; 1988 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies}};
1969 1989
1970 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) { 1990 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) {
1971 const TestCase* test_case = &test_cases[ci]; 1991 const TestCase* test_case = &test_cases[ci];
1972 scoped_refptr<CookieMonster> cm(CreateMonsterFromStoreForGC( 1992 scoped_ptr<CookieMonster> cm = CreateMonsterFromStoreForGC(
1973 test_case->num_cookies, test_case->num_old_cookies, 0, 0, 1993 test_case->num_cookies, test_case->num_old_cookies, 0, 0,
1974 CookieMonster::kSafeFromGlobalPurgeDays * 2)); 1994 CookieMonster::kSafeFromGlobalPurgeDays * 2);
1975 EXPECT_EQ(test_case->expected_initial_cookies, 1995 EXPECT_EQ(test_case->expected_initial_cookies,
1976 GetAllCookies(cm.get()).size()) 1996 GetAllCookies(cm.get()).size())
1977 << "For test case " << ci; 1997 << "For test case " << ci;
1978 // Will trigger GC 1998 // Will trigger GC
1979 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2"); 1999 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2");
1980 EXPECT_EQ(test_case->expected_cookies_after_set, 2000 EXPECT_EQ(test_case->expected_cookies_after_set,
1981 GetAllCookies(cm.get()).size()) 2001 GetAllCookies(cm.get()).size())
1982 << "For test case " << ci; 2002 << "For test case " << ci;
1983 } 2003 }
1984 } 2004 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2037 2057
2038 volatile int callback_count_; 2058 volatile int callback_count_;
2039 }; 2059 };
2040 2060
2041 } // namespace 2061 } // namespace
2042 2062
2043 // Test that FlushStore() is forwarded to the store and callbacks are posted. 2063 // Test that FlushStore() is forwarded to the store and callbacks are posted.
2044 TEST_F(CookieMonsterTest, FlushStore) { 2064 TEST_F(CookieMonsterTest, FlushStore) {
2045 scoped_refptr<CallbackCounter> counter(new CallbackCounter()); 2065 scoped_refptr<CallbackCounter> counter(new CallbackCounter());
2046 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore()); 2066 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore());
2047 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2067 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2048 2068
2049 ASSERT_EQ(0, store->flush_count()); 2069 ASSERT_EQ(0, store->flush_count());
2050 ASSERT_EQ(0, counter->callback_count()); 2070 ASSERT_EQ(0, counter->callback_count());
2051 2071
2052 // Before initialization, FlushStore() should just run the callback. 2072 // Before initialization, FlushStore() should just run the callback.
2053 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get())); 2073 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get()));
2054 base::MessageLoop::current()->RunUntilIdle(); 2074 base::MessageLoop::current()->RunUntilIdle();
2055 2075
2056 ASSERT_EQ(0, store->flush_count()); 2076 ASSERT_EQ(0, store->flush_count());
2057 ASSERT_EQ(1, counter->callback_count()); 2077 ASSERT_EQ(1, counter->callback_count());
(...skipping 14 matching lines...) Expand all
2072 ASSERT_EQ(2, counter->callback_count()); 2092 ASSERT_EQ(2, counter->callback_count());
2073 2093
2074 // NULL callback is still safe. 2094 // NULL callback is still safe.
2075 cm->FlushStore(base::Closure()); 2095 cm->FlushStore(base::Closure());
2076 base::MessageLoop::current()->RunUntilIdle(); 2096 base::MessageLoop::current()->RunUntilIdle();
2077 2097
2078 ASSERT_EQ(2, store->flush_count()); 2098 ASSERT_EQ(2, store->flush_count());
2079 ASSERT_EQ(2, counter->callback_count()); 2099 ASSERT_EQ(2, counter->callback_count());
2080 2100
2081 // If there's no backing store, FlushStore() is always a safe no-op. 2101 // If there's no backing store, FlushStore() is always a safe no-op.
2082 cm = new CookieMonster(NULL, NULL); 2102 cm.reset(new CookieMonster(nullptr, nullptr));
2083 GetAllCookies(cm.get()); // Force init. 2103 GetAllCookies(cm.get()); // Force init.
2084 cm->FlushStore(base::Closure()); 2104 cm->FlushStore(base::Closure());
2085 base::MessageLoop::current()->RunUntilIdle(); 2105 base::MessageLoop::current()->RunUntilIdle();
2086 2106
2087 ASSERT_EQ(2, counter->callback_count()); 2107 ASSERT_EQ(2, counter->callback_count());
2088 2108
2089 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get())); 2109 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get()));
2090 base::MessageLoop::current()->RunUntilIdle(); 2110 base::MessageLoop::current()->RunUntilIdle();
2091 2111
2092 ASSERT_EQ(3, counter->callback_count()); 2112 ASSERT_EQ(3, counter->callback_count());
2093 } 2113 }
2094 2114
2095 TEST_F(CookieMonsterTest, SetAllCookies) { 2115 TEST_F(CookieMonsterTest, SetAllCookies) {
2096 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore()); 2116 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore());
2097 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2117 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2098 cm->SetPersistSessionCookies(true); 2118 cm->SetPersistSessionCookies(true);
2099 2119
2100 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "U=V; path=/")); 2120 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "U=V; path=/"));
2101 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "W=X; path=/foo")); 2121 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "W=X; path=/foo"));
2102 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "Y=Z; path=/")); 2122 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "Y=Z; path=/"));
2103 2123
2104 CookieList list; 2124 CookieList list;
2105 list.push_back(CanonicalCookie(http_www_google_.url(), "A", "B", 2125 list.push_back(CanonicalCookie(http_www_google_.url(), "A", "B",
2106 http_www_google_.url().host(), "/", 2126 http_www_google_.url().host(), "/",
2107 base::Time::Now(), base::Time(), base::Time(), 2127 base::Time::Now(), base::Time(), base::Time(),
(...skipping 25 matching lines...) Expand all
2133 ASSERT_TRUE(++it != cookies.end()); 2153 ASSERT_TRUE(++it != cookies.end());
2134 EXPECT_EQ("A", it->Name()); 2154 EXPECT_EQ("A", it->Name());
2135 EXPECT_EQ("B", it->Value()); 2155 EXPECT_EQ("B", it->Value());
2136 2156
2137 ASSERT_TRUE(++it != cookies.end()); 2157 ASSERT_TRUE(++it != cookies.end());
2138 EXPECT_EQ("Y", it->Name()); 2158 EXPECT_EQ("Y", it->Name());
2139 EXPECT_EQ("Z", it->Value()); 2159 EXPECT_EQ("Z", it->Value());
2140 } 2160 }
2141 2161
2142 TEST_F(CookieMonsterTest, ComputeCookieDiff) { 2162 TEST_F(CookieMonsterTest, ComputeCookieDiff) {
2143 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2163 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2144 2164
2145 base::Time now = base::Time::Now(); 2165 base::Time now = base::Time::Now();
2146 base::Time creation_time = now - base::TimeDelta::FromSeconds(1); 2166 base::Time creation_time = now - base::TimeDelta::FromSeconds(1);
2147 2167
2148 CanonicalCookie cookie1(http_www_google_.url(), "A", "B", 2168 CanonicalCookie cookie1(http_www_google_.url(), "A", "B",
2149 http_www_google_.url().host(), "/", creation_time, 2169 http_www_google_.url().host(), "/", creation_time,
2150 base::Time(), base::Time(), false, false, false, 2170 base::Time(), base::Time(), false, false, false,
2151 COOKIE_PRIORITY_DEFAULT); 2171 COOKIE_PRIORITY_DEFAULT);
2152 CanonicalCookie cookie2(http_www_google_.url(), "C", "D", 2172 CanonicalCookie cookie2(http_www_google_.url(), "C", "D",
2153 http_www_google_.url().host(), "/", creation_time, 2173 http_www_google_.url().host(), "/", creation_time,
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
2250 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_add)); 2270 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_add));
2251 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_delete)); 2271 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_delete));
2252 EXPECT_TRUE(IsCookieInList(cookie7_with_new_path, cookies_to_add)); 2272 EXPECT_TRUE(IsCookieInList(cookie7_with_new_path, cookies_to_add));
2253 EXPECT_FALSE(IsCookieInList(cookie7_with_new_path, cookies_to_delete)); 2273 EXPECT_FALSE(IsCookieInList(cookie7_with_new_path, cookies_to_delete));
2254 } 2274 }
2255 2275
2256 // Check that DeleteAll does flush (as a sanity check that flush_count() 2276 // Check that DeleteAll does flush (as a sanity check that flush_count()
2257 // works). 2277 // works).
2258 TEST_F(CookieMonsterTest, DeleteAll) { 2278 TEST_F(CookieMonsterTest, DeleteAll) {
2259 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore()); 2279 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore());
2260 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2280 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2261 cm->SetPersistSessionCookies(true); 2281 cm->SetPersistSessionCookies(true);
2262 2282
2263 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "X=Y; path=/")); 2283 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "X=Y; path=/"));
2264 2284
2265 ASSERT_EQ(0, store->flush_count()); 2285 ASSERT_EQ(0, store->flush_count());
2266 EXPECT_EQ(1, DeleteAll(cm.get())); 2286 EXPECT_EQ(1, DeleteAll(cm.get()));
2267 EXPECT_EQ(1, store->flush_count()); 2287 EXPECT_EQ(1, store->flush_count());
2268 } 2288 }
2269 2289
2270 TEST_F(CookieMonsterTest, HistogramCheck) { 2290 TEST_F(CookieMonsterTest, HistogramCheck) {
2271 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2291 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2272 // Should match call in InitializeHistograms, but doesn't really matter 2292 // Should match call in InitializeHistograms, but doesn't really matter
2273 // since the histogram should have been initialized by the CM construction 2293 // since the histogram should have been initialized by the CM construction
2274 // above. 2294 // above.
2275 base::HistogramBase* expired_histogram = base::Histogram::FactoryGet( 2295 base::HistogramBase* expired_histogram = base::Histogram::FactoryGet(
2276 "Cookie.ExpirationDurationMinutes", 1, 10 * 365 * 24 * 60, 50, 2296 "Cookie.ExpirationDurationMinutes", 1, 10 * 365 * 24 * 60, 50,
2277 base::Histogram::kUmaTargetedHistogramFlag); 2297 base::Histogram::kUmaTargetedHistogramFlag);
2278 2298
2279 scoped_ptr<base::HistogramSamples> samples1( 2299 scoped_ptr<base::HistogramSamples> samples1(
2280 expired_histogram->SnapshotSamples()); 2300 expired_histogram->SnapshotSamples());
2281 ASSERT_TRUE(SetCookieWithDetails( 2301 ASSERT_TRUE(SetCookieWithDetails(
(...skipping 18 matching lines...) Expand all
2300 std::string(kValidCookieLine) + "; expires=Blarg arg arg"; 2320 std::string(kValidCookieLine) + "; expires=Blarg arg arg";
2301 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create( 2321 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create(
2302 http_www_google_.url(), cookie_line, Time::Now(), CookieOptions())); 2322 http_www_google_.url(), cookie_line, Time::Now(), CookieOptions()));
2303 ASSERT_FALSE(cookie->IsPersistent()); 2323 ASSERT_FALSE(cookie->IsPersistent());
2304 } 2324 }
2305 2325
2306 // Test that CookieMonster writes session cookies into the underlying 2326 // Test that CookieMonster writes session cookies into the underlying
2307 // CookieStore if the "persist session cookies" option is on. 2327 // CookieStore if the "persist session cookies" option is on.
2308 TEST_F(CookieMonsterTest, PersistSessionCookies) { 2328 TEST_F(CookieMonsterTest, PersistSessionCookies) {
2309 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2329 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2310 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2330 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2311 cm->SetPersistSessionCookies(true); 2331 cm->SetPersistSessionCookies(true);
2312 2332
2313 // All cookies set with SetCookie are session cookies. 2333 // All cookies set with SetCookie are session cookies.
2314 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 2334 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
2315 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); 2335 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url()));
2316 2336
2317 // The cookie was written to the backing store. 2337 // The cookie was written to the backing store.
2318 EXPECT_EQ(1u, store->commands().size()); 2338 EXPECT_EQ(1u, store->commands().size());
2319 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type); 2339 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type);
2320 EXPECT_EQ("A", store->commands()[0].cookie.Name()); 2340 EXPECT_EQ("A", store->commands()[0].cookie.Name());
(...skipping 15 matching lines...) Expand all
2336 EXPECT_EQ("", GetCookies(cm.get(), http_www_google_.url())); 2356 EXPECT_EQ("", GetCookies(cm.get(), http_www_google_.url()));
2337 EXPECT_EQ(4u, store->commands().size()); 2357 EXPECT_EQ(4u, store->commands().size());
2338 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[3].type); 2358 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[3].type);
2339 EXPECT_EQ("A", store->commands()[3].cookie.Name()); 2359 EXPECT_EQ("A", store->commands()[3].cookie.Name());
2340 EXPECT_EQ("C", store->commands()[3].cookie.Value()); 2360 EXPECT_EQ("C", store->commands()[3].cookie.Value());
2341 } 2361 }
2342 2362
2343 // Test the commands sent to the persistent cookie store. 2363 // Test the commands sent to the persistent cookie store.
2344 TEST_F(CookieMonsterTest, PersisentCookieStorageTest) { 2364 TEST_F(CookieMonsterTest, PersisentCookieStorageTest) {
2345 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2365 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2346 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2366 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2347 2367
2348 // Add a cookie. 2368 // Add a cookie.
2349 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), 2369 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(),
2350 "A=B; expires=Mon, 18-Apr-22 22:50:13 GMT")); 2370 "A=B; expires=Mon, 18-Apr-22 22:50:13 GMT"));
2351 this->MatchCookieLines("A=B", GetCookies(cm.get(), http_www_google_.url())); 2371 this->MatchCookieLines("A=B", GetCookies(cm.get(), http_www_google_.url()));
2352 ASSERT_EQ(1u, store->commands().size()); 2372 ASSERT_EQ(1u, store->commands().size());
2353 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type); 2373 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type);
2354 // Remove it. 2374 // Remove it.
2355 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B; max-age=0")); 2375 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B; max-age=0"));
2356 this->MatchCookieLines(std::string(), 2376 this->MatchCookieLines(std::string(),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2405 "boo", 2425 "boo",
2406 domain, path, now2, later, now2, false, false, false, 2426 domain, path, now2, later, now2, false, false, false,
2407 COOKIE_PRIORITY_DEFAULT); 2427 COOKIE_PRIORITY_DEFAULT);
2408 initial_cookies.push_back(cc); 2428 initial_cookies.push_back(cc);
2409 2429
2410 AddCookieToList(domain, "hello=world; path=" + path, now3, &initial_cookies); 2430 AddCookieToList(domain, "hello=world; path=" + path, now3, &initial_cookies);
2411 2431
2412 // Inject our initial cookies into the mock PersistentCookieStore. 2432 // Inject our initial cookies into the mock PersistentCookieStore.
2413 store->SetLoadExpectation(true, initial_cookies); 2433 store->SetLoadExpectation(true, initial_cookies);
2414 2434
2415 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2435 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2416 2436
2417 EXPECT_EQ("foo=bar; hello=world", GetCookies(cm.get(), url)); 2437 EXPECT_EQ("foo=bar; hello=world", GetCookies(cm.get(), url));
2418 } 2438 }
2419 2439
2420 // Test that cookie source schemes are histogrammed correctly. 2440 // Test that cookie source schemes are histogrammed correctly.
2421 TEST_F(CookieMonsterTest, CookieSourceHistogram) { 2441 TEST_F(CookieMonsterTest, CookieSourceHistogram) {
2422 base::HistogramTester histograms; 2442 base::HistogramTester histograms;
2423 const std::string cookie_source_histogram = "Cookie.CookieSourceScheme"; 2443 const std::string cookie_source_histogram = "Cookie.CookieSourceScheme";
2424 2444
2425 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2445 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2426 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2446 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2427 2447
2428 histograms.ExpectTotalCount(cookie_source_histogram, 0); 2448 histograms.ExpectTotalCount(cookie_source_histogram, 0);
2429 2449
2430 // Set a secure cookie on a cryptographic scheme. 2450 // Set a secure cookie on a cryptographic scheme.
2431 EXPECT_TRUE( 2451 EXPECT_TRUE(
2432 SetCookie(cm.get(), https_www_google_.url(), "A=B; path=/; Secure")); 2452 SetCookie(cm.get(), https_www_google_.url(), "A=B; path=/; Secure"));
2433 histograms.ExpectTotalCount(cookie_source_histogram, 1); 2453 histograms.ExpectTotalCount(cookie_source_histogram, 1);
2434 histograms.ExpectBucketCount( 2454 histograms.ExpectBucketCount(
2435 cookie_source_histogram, 2455 cookie_source_histogram,
2436 CookieMonster::COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME, 1); 2456 CookieMonster::COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME, 1);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2483 CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1); 2503 CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1);
2484 } 2504 }
2485 2505
2486 // Test that cookie delete equivalent histograms are recorded correctly when 2506 // Test that cookie delete equivalent histograms are recorded correctly when
2487 // strict secure cookies are not enabled. 2507 // strict secure cookies are not enabled.
2488 TEST_F(CookieMonsterTest, CookieDeleteEquivalentHistogramTest) { 2508 TEST_F(CookieMonsterTest, CookieDeleteEquivalentHistogramTest) {
2489 base::HistogramTester histograms; 2509 base::HistogramTester histograms;
2490 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent"; 2510 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent";
2491 2511
2492 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2512 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2493 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2513 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2494 2514
2495 // Set a secure cookie from a secure origin 2515 // Set a secure cookie from a secure origin
2496 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure")); 2516 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure"));
2497 histograms.ExpectTotalCount(cookie_source_histogram, 1); 2517 histograms.ExpectTotalCount(cookie_source_histogram, 1);
2498 histograms.ExpectBucketCount(cookie_source_histogram, 2518 histograms.ExpectBucketCount(cookie_source_histogram,
2499 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2519 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2500 1); 2520 1);
2501 2521
2502 // Set a new cookie with a different name from a variety of origins (including 2522 // Set a new cookie with a different name from a variety of origins (including
2503 // the same one). 2523 // the same one).
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2548 // already existing cookie and is not equivalent. 2568 // already existing cookie and is not equivalent.
2549 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), 2569 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(),
2550 "A=E; secure; path=/some/other/path")); 2570 "A=E; secure; path=/some/other/path"));
2551 histograms.ExpectTotalCount(cookie_source_histogram, 9); 2571 histograms.ExpectTotalCount(cookie_source_histogram, 9);
2552 histograms.ExpectBucketCount(cookie_source_histogram, 2572 histograms.ExpectBucketCount(cookie_source_histogram,
2553 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2573 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2554 7); 2574 7);
2555 } 2575 }
2556 2576
2557 TEST_F(CookieMonsterStrictSecureTest, SetSecureCookies) { 2577 TEST_F(CookieMonsterStrictSecureTest, SetSecureCookies) {
2558 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2578 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2559 GURL http_url("http://www.google.com"); 2579 GURL http_url("http://www.google.com");
2560 GURL http_superdomain_url("http://google.com"); 2580 GURL http_superdomain_url("http://google.com");
2561 GURL https_url("https://www.google.com"); 2581 GURL https_url("https://www.google.com");
2562 2582
2563 // A non-secure cookie can be created from either a URL with a secure or 2583 // A non-secure cookie can be created from either a URL with a secure or
2564 // insecure scheme. 2584 // insecure scheme.
2565 EXPECT_TRUE(SetCookie(cm.get(), http_url, "A=C;")); 2585 EXPECT_TRUE(SetCookie(cm.get(), http_url, "A=C;"));
2566 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B;")); 2586 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B;"));
2567 2587
2568 // A secure cookie cannot be created from a URL with an insecure scheme. 2588 // A secure cookie cannot be created from a URL with an insecure scheme.
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
2741 // global purge goal (3000), but the secure cookies are not evicted. 2761 // global purge goal (3000), but the secure cookies are not evicted.
2742 const CookiesEntry test14[] = {{1U, true}}; 2762 const CookiesEntry test14[] = {{1U, true}};
2743 const AltHosts test14_alt_hosts(1500, 1800); 2763 const AltHosts test14_alt_hosts(1500, 1800);
2744 TestSecureCookieEviction(test14, arraysize(test14), 1501U, 1499, 2764 TestSecureCookieEviction(test14, arraysize(test14), 1501U, 1499,
2745 &test14_alt_hosts); 2765 &test14_alt_hosts);
2746 } 2766 }
2747 2767
2748 // Tests that strict secure cookies doesn't trip equivalent cookie checks 2768 // Tests that strict secure cookies doesn't trip equivalent cookie checks
2749 // accidentally. Regression test for https://crbug.com/569943. 2769 // accidentally. Regression test for https://crbug.com/569943.
2750 TEST_F(CookieMonsterStrictSecureTest, EquivalentCookies) { 2770 TEST_F(CookieMonsterStrictSecureTest, EquivalentCookies) {
2751 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2771 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2752 GURL http_url("http://www.google.com"); 2772 GURL http_url("http://www.google.com");
2753 GURL http_superdomain_url("http://google.com"); 2773 GURL http_superdomain_url("http://google.com");
2754 GURL https_url("https://www.google.com"); 2774 GURL https_url("https://www.google.com");
2755 2775
2756 // Tests that non-equivalent cookies because of the path attribute can be set 2776 // Tests that non-equivalent cookies because of the path attribute can be set
2757 // successfully. 2777 // successfully.
2758 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure")); 2778 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure"));
2759 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; path=/some/other/path")); 2779 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; path=/some/other/path"));
2760 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; path=/some/other/path")); 2780 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; path=/some/other/path"));
2761 2781
2762 // Tests that non-equivalent cookies because of the domain attribute can be 2782 // Tests that non-equivalent cookies because of the domain attribute can be
2763 // set successfully. 2783 // set successfully.
2764 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure")); 2784 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure"));
2765 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; domain=google.com")); 2785 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; domain=google.com"));
2766 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; domain=google.com")); 2786 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; domain=google.com"));
2767 } 2787 }
2768 2788
2769 // Test that cookie delete equivalent histograms are recorded correctly for 2789 // Test that cookie delete equivalent histograms are recorded correctly for
2770 // strict secure cookies. 2790 // strict secure cookies.
2771 TEST_F(CookieMonsterStrictSecureTest, CookieDeleteEquivalentHistogramTest) { 2791 TEST_F(CookieMonsterStrictSecureTest, CookieDeleteEquivalentHistogramTest) {
2772 base::HistogramTester histograms; 2792 base::HistogramTester histograms;
2773 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent"; 2793 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent";
2774 2794
2775 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2795 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2776 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2796 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2777 2797
2778 // Set a secure cookie from a secure origin 2798 // Set a secure cookie from a secure origin
2779 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure")); 2799 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure"));
2780 histograms.ExpectTotalCount(cookie_source_histogram, 1); 2800 histograms.ExpectTotalCount(cookie_source_histogram, 1);
2781 histograms.ExpectBucketCount(cookie_source_histogram, 2801 histograms.ExpectBucketCount(cookie_source_histogram,
2782 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2802 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2783 1); 2803 1);
2784 2804
2785 // Set a new cookie with a different name from a variety of origins (including 2805 // Set a new cookie with a different name from a variety of origins (including
2786 // the same one). 2806 // the same one).
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
2841 histograms.ExpectBucketCount(cookie_source_histogram, 2861 histograms.ExpectBucketCount(cookie_source_histogram,
2842 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2862 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2843 7); 2863 7);
2844 } 2864 }
2845 2865
2846 class CookieMonsterNotificationTest : public CookieMonsterTest { 2866 class CookieMonsterNotificationTest : public CookieMonsterTest {
2847 public: 2867 public:
2848 CookieMonsterNotificationTest() 2868 CookieMonsterNotificationTest()
2849 : test_url_("http://www.google.com/foo"), 2869 : test_url_("http://www.google.com/foo"),
2850 store_(new MockPersistentCookieStore), 2870 store_(new MockPersistentCookieStore),
2851 monster_(new CookieMonster(store_.get(), NULL)) {} 2871 monster_(new CookieMonster(store_.get(), nullptr)) {}
2852 2872
2853 ~CookieMonsterNotificationTest() override {} 2873 ~CookieMonsterNotificationTest() override {}
2854 2874
2855 CookieMonster* monster() { return monster_.get(); } 2875 CookieMonster* monster() { return monster_.get(); }
2856 2876
2857 protected: 2877 protected:
2858 const GURL test_url_; 2878 const GURL test_url_;
2859 2879
2860 private: 2880 private:
2861 scoped_refptr<MockPersistentCookieStore> store_; 2881 scoped_refptr<MockPersistentCookieStore> store_;
2862 scoped_refptr<CookieMonster> monster_; 2882 scoped_ptr<CookieMonster> monster_;
2863 }; 2883 };
2864 2884
2865 void RecordCookieChanges(std::vector<CanonicalCookie>* out_cookies, 2885 void RecordCookieChanges(std::vector<CanonicalCookie>* out_cookies,
2866 std::vector<bool>* out_removes, 2886 std::vector<bool>* out_removes,
2867 const CanonicalCookie& cookie, 2887 const CanonicalCookie& cookie,
2868 bool removed) { 2888 bool removed) {
2869 DCHECK(out_cookies); 2889 DCHECK(out_cookies);
2870 out_cookies->push_back(cookie); 2890 out_cookies->push_back(cookie);
2871 if (out_removes) 2891 if (out_removes)
2872 out_removes->push_back(removed); 2892 out_removes->push_back(removed);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
2993 monster()->AddCallbackForCookie( 3013 monster()->AddCallbackForCookie(
2994 test_url_, "abc", 3014 test_url_, "abc",
2995 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); 3015 base::Bind(&RecordCookieChanges, &cookies1, nullptr)));
2996 SetCookie(monster(), test_url_, "abc=def"); 3016 SetCookie(monster(), test_url_, "abc=def");
2997 base::MessageLoop::current()->RunUntilIdle(); 3017 base::MessageLoop::current()->RunUntilIdle();
2998 EXPECT_EQ(1U, cookies0.size()); 3018 EXPECT_EQ(1U, cookies0.size());
2999 EXPECT_EQ(1U, cookies0.size()); 3019 EXPECT_EQ(1U, cookies0.size());
3000 } 3020 }
3001 3021
3002 } // namespace net 3022 } // namespace net
OLDNEW
« no previous file with comments | « net/cookies/cookie_monster_store_test.cc ('k') | net/cookies/cookie_store.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698