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

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: Fix leak 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
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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 // of cookies to create. Cookies are created in the order they appear in 470 // of cookies to create. Cookies are created in the order they appear in
471 // cookie_entries. The value of cookie_entries[x].num_cookies specifies how 471 // cookie_entries. The value of cookie_entries[x].num_cookies specifies how
472 // many cookies of that type to create consecutively, while if 472 // many cookies of that type to create consecutively, while if
473 // cookie_entries[x].is_secure is |true|, those cookies will be marke as 473 // cookie_entries[x].is_secure is |true|, those cookies will be marke as
474 // Secure. 474 // Secure.
475 void TestSecureCookieEviction(const CookiesEntry* cookie_entries, 475 void TestSecureCookieEviction(const CookiesEntry* cookie_entries,
476 size_t num_cookie_entries, 476 size_t num_cookie_entries,
477 size_t expected_secure_cookies, 477 size_t expected_secure_cookies,
478 size_t expected_non_secure_cookies, 478 size_t expected_non_secure_cookies,
479 const AltHosts* alt_host_entries) { 479 const AltHosts* alt_host_entries) {
480 scoped_refptr<CookieMonster> cm; 480 scoped_ptr<CookieMonster> cm;
481 481
482 if (alt_host_entries == nullptr) { 482 if (alt_host_entries == nullptr) {
483 cm = new CookieMonster(nullptr, nullptr); 483 cm.reset(new CookieMonster(nullptr, nullptr));
484 } else { 484 } else {
485 // When generating all of these cookies on alternate hosts, they need to 485 // When generating all of these cookies on alternate hosts, they need to
486 // be all older than the max "safe" date for GC, which is currently 30 486 // be all older than the max "safe" date for GC, which is currently 30
487 // days, so we set them to 60. 487 // days, so we set them to 60.
488 cm = CreateMonsterFromStoreForGC( 488 cm = CreateMonsterFromStoreForGC(
489 alt_host_entries->first, alt_host_entries->first, 489 alt_host_entries->first, alt_host_entries->first,
490 alt_host_entries->second, alt_host_entries->second, 60); 490 alt_host_entries->second, alt_host_entries->second, 60);
491 } 491 }
492 492
493 int next_cookie_id = 0; 493 int next_cookie_id = 0;
(...skipping 24 matching lines...) Expand all
518 EXPECT_EQ(expected_secure_cookies, total_secure_cookies); 518 EXPECT_EQ(expected_secure_cookies, total_secure_cookies);
519 EXPECT_EQ(expected_non_secure_cookies, total_non_secure_cookies); 519 EXPECT_EQ(expected_non_secure_cookies, total_non_secure_cookies);
520 } 520 }
521 521
522 void TestPriorityAwareGarbageCollectHelperNonSecure() { 522 void TestPriorityAwareGarbageCollectHelperNonSecure() {
523 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint. 523 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint.
524 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies); 524 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies);
525 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies - 525 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies -
526 CookieMonster::kDomainPurgeCookies); 526 CookieMonster::kDomainPurgeCookies);
527 527
528 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 528 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
529 529
530 // Each test case adds 181 cookies, so 31 cookies are evicted. 530 // Each test case adds 181 cookies, so 31 cookies are evicted.
531 // Cookie same priority, repeated for each priority. 531 // Cookie same priority, repeated for each priority.
532 TestPriorityCookieCase(cm.get(), "181LN", 150U, 0U, 0U, 150U, 0U); 532 TestPriorityCookieCase(cm.get(), "181LN", 150U, 0U, 0U, 150U, 0U);
533 TestPriorityCookieCase(cm.get(), "181MN", 0U, 150U, 0U, 150U, 0U); 533 TestPriorityCookieCase(cm.get(), "181MN", 0U, 150U, 0U, 150U, 0U);
534 TestPriorityCookieCase(cm.get(), "181HN", 0U, 0U, 150U, 150U, 0U); 534 TestPriorityCookieCase(cm.get(), "181HN", 0U, 0U, 150U, 150U, 0U);
535 535
536 // Pairwise scenarios. 536 // Pairwise scenarios.
537 // Round 1 => none; round2 => 31M; round 3 => none. 537 // Round 1 => none; round2 => 31M; round 3 => none.
538 TestPriorityCookieCase(cm.get(), "10HN 171MN", 0U, 140U, 10U, 150U, 0U); 538 TestPriorityCookieCase(cm.get(), "10HN 171MN", 0U, 140U, 10U, 150U, 0U);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 TestPriorityCookieCase(cm.get(), "11MN 10HN 10LN 90MN 60HN", 0U, 80U, 70U, 572 TestPriorityCookieCase(cm.get(), "11MN 10HN 10LN 90MN 60HN", 0U, 80U, 70U,
573 150U, 0U); 573 150U, 0U);
574 } 574 }
575 575
576 void TestPriorityAwareGarbageCollectHelperSecure() { 576 void TestPriorityAwareGarbageCollectHelperSecure() {
577 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint. 577 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint.
578 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies); 578 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies);
579 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies - 579 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies -
580 CookieMonster::kDomainPurgeCookies); 580 CookieMonster::kDomainPurgeCookies);
581 581
582 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 582 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
583 583
584 // Each test case adds 181 cookies, so 31 cookies are evicted. 584 // Each test case adds 181 cookies, so 31 cookies are evicted.
585 // Cookie same priority, repeated for each priority. 585 // Cookie same priority, repeated for each priority.
586 TestPriorityCookieCase(cm.get(), "181LS", 150U, 0U, 0U, 0U, 150U); 586 TestPriorityCookieCase(cm.get(), "181LS", 150U, 0U, 0U, 0U, 150U);
587 TestPriorityCookieCase(cm.get(), "181MS", 0U, 150U, 0U, 0U, 150U); 587 TestPriorityCookieCase(cm.get(), "181MS", 0U, 150U, 0U, 0U, 150U);
588 TestPriorityCookieCase(cm.get(), "181HS", 0U, 0U, 150U, 0U, 150U); 588 TestPriorityCookieCase(cm.get(), "181HS", 0U, 0U, 150U, 0U, 150U);
589 589
590 // Pairwise scenarios. 590 // Pairwise scenarios.
591 // Round 1 => none; round2 => 31M; round 3 => none. 591 // Round 1 => none; round2 => 31M; round 3 => none.
592 TestPriorityCookieCase(cm.get(), "10HS 171MS", 0U, 140U, 10U, 0U, 150U); 592 TestPriorityCookieCase(cm.get(), "10HS 171MS", 0U, 140U, 10U, 0U, 150U);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 TestPriorityCookieCase(cm.get(), "11MS 10HS 10LS 90MS 60HS", 0U, 80U, 70U, 626 TestPriorityCookieCase(cm.get(), "11MS 10HS 10LS 90MS 60HS", 0U, 80U, 70U,
627 0U, 150U); 627 0U, 150U);
628 } 628 }
629 629
630 void TestPriorityAwareGarbageCollectHelperMixed() { 630 void TestPriorityAwareGarbageCollectHelperMixed() {
631 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint. 631 // Hard-coding limits in the test, but use DCHECK_EQ to enforce constraint.
632 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies); 632 DCHECK_EQ(180U, CookieMonster::kDomainMaxCookies);
633 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies - 633 DCHECK_EQ(150U, CookieMonster::kDomainMaxCookies -
634 CookieMonster::kDomainPurgeCookies); 634 CookieMonster::kDomainPurgeCookies);
635 635
636 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 636 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
637 637
638 // Each test case adds 180 secure cookies, and some non-secure cookie. The 638 // Each test case adds 180 secure cookies, and some non-secure cookie. The
639 // secure cookies take priority, so the non-secure cookie is removed, along 639 // secure cookies take priority, so the non-secure cookie is removed, along
640 // with 30 secure cookies. Repeated for each priority, and with the 640 // with 30 secure cookies. Repeated for each priority, and with the
641 // non-secure cookie as older and newer. 641 // non-secure cookie as older and newer.
642 TestPriorityCookieCase(cm.get(), "1LN 180LS", 150U, 0U, 0U, 0U, 150U); 642 TestPriorityCookieCase(cm.get(), "1LN 180LS", 150U, 0U, 0U, 0U, 150U);
643 TestPriorityCookieCase(cm.get(), "1MN 180MS", 0U, 150U, 0U, 0U, 150U); 643 TestPriorityCookieCase(cm.get(), "1MN 180MS", 0U, 150U, 0U, 0U, 150U);
644 TestPriorityCookieCase(cm.get(), "1HN 180HS", 0U, 0U, 150U, 0U, 150U); 644 TestPriorityCookieCase(cm.get(), "1HN 180HS", 0U, 0U, 150U, 0U, 150U);
645 TestPriorityCookieCase(cm.get(), "180LS 1LN", 150U, 0U, 0U, 0U, 150U); 645 TestPriorityCookieCase(cm.get(), "180LS 1LN", 150U, 0U, 0U, 0U, 150U);
646 TestPriorityCookieCase(cm.get(), "180MS 1MN", 0U, 150U, 0U, 0U, 150U); 646 TestPriorityCookieCase(cm.get(), "180MS 1MN", 0U, 150U, 0U, 0U, 150U);
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
843 // Specifically, for each asynchronous method, verify that: 843 // Specifically, for each asynchronous method, verify that:
844 // 1. invoking it on an uninitialized cookie store causes the store to begin 844 // 1. invoking it on an uninitialized cookie store causes the store to begin
845 // chain-loading its backing data or loading data for a specific domain key 845 // chain-loading its backing data or loading data for a specific domain key
846 // (eTLD+1). 846 // (eTLD+1).
847 // 2. The initial invocation does not complete until the loading completes. 847 // 2. The initial invocation does not complete until the loading completes.
848 // 3. Invocations after the loading has completed complete immediately. 848 // 3. Invocations after the loading has completed complete immediately.
849 class DeferredCookieTaskTest : public CookieMonsterTest { 849 class DeferredCookieTaskTest : public CookieMonsterTest {
850 protected: 850 protected:
851 DeferredCookieTaskTest() : expect_load_called_(false) { 851 DeferredCookieTaskTest() : expect_load_called_(false) {
852 persistent_store_ = new NewMockPersistentCookieStore(); 852 persistent_store_ = new NewMockPersistentCookieStore();
853 cookie_monster_ = new CookieMonster(persistent_store_.get(), NULL); 853 cookie_monster_.reset(new CookieMonster(persistent_store_.get(), nullptr));
854 } 854 }
855 855
856 // Defines a cookie to be returned from PersistentCookieStore::Load 856 // Defines a cookie to be returned from PersistentCookieStore::Load
857 void DeclareLoadedCookie(const std::string& key, 857 void DeclareLoadedCookie(const std::string& key,
858 const std::string& cookie_line, 858 const std::string& cookie_line,
859 const base::Time& creation_time) { 859 const base::Time& creation_time) {
860 AddCookieToList(key, cookie_line, creation_time, &loaded_cookies_); 860 AddCookieToList(key, cookie_line, creation_time, &loaded_cookies_);
861 } 861 }
862 862
863 // Runs the message loop, waiting until PersistentCookieStore::Load is called. 863 // Runs the message loop, waiting until PersistentCookieStore::Load is called.
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
932 CookieMonster::PersistentCookieStore::LoadedCallback loaded_callback_; 932 CookieMonster::PersistentCookieStore::LoadedCallback loaded_callback_;
933 // Stores the callback passed from the CookieMonster to the 933 // Stores the callback passed from the CookieMonster to the
934 // PersistentCookieStore::LoadCookiesForKey 934 // PersistentCookieStore::LoadCookiesForKey
935 std::queue<CookieMonster::PersistentCookieStore::LoadedCallback> 935 std::queue<CookieMonster::PersistentCookieStore::LoadedCallback>
936 loaded_for_key_callbacks_; 936 loaded_for_key_callbacks_;
937 // base::RunLoop used to wait for PersistentCookieStore::Load to be called. 937 // base::RunLoop used to wait for PersistentCookieStore::Load to be called.
938 base::RunLoop load_run_loop_; 938 base::RunLoop load_run_loop_;
939 // Indicates whether ExpectLoadCall() has been called. 939 // Indicates whether ExpectLoadCall() has been called.
940 bool expect_load_called_; 940 bool expect_load_called_;
941 // Stores the CookieMonster under test. 941 // Stores the CookieMonster under test.
942 scoped_refptr<CookieMonster> cookie_monster_; 942 scoped_ptr<CookieMonster> cookie_monster_;
943 // Stores the mock PersistentCookieStore. 943 // Stores the mock PersistentCookieStore.
944 scoped_refptr<NewMockPersistentCookieStore> persistent_store_; 944 scoped_refptr<NewMockPersistentCookieStore> persistent_store_;
945 }; 945 };
946 946
947 TEST_F(DeferredCookieTaskTest, DeferredGetCookies) { 947 TEST_F(DeferredCookieTaskTest, DeferredGetCookies) {
948 DeclareLoadedCookie(http_www_google_.host(), 948 DeclareLoadedCookie(http_www_google_.host(),
949 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", 949 "X=1; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT",
950 Time::Now() + TimeDelta::FromDays(3)); 950 Time::Now() + TimeDelta::FromDays(3));
951 951
952 MockGetCookiesCallback get_cookies_callback; 952 MockGetCookiesCallback get_cookies_callback;
(...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
1275 base::RunLoop loop; 1275 base::RunLoop loop;
1276 EXPECT_CALL(get_cookies_callback_deferred, Invoke("A=B; X=1")) 1276 EXPECT_CALL(get_cookies_callback_deferred, Invoke("A=B; X=1"))
1277 .WillOnce(QuitRunLoop(&loop)); 1277 .WillOnce(QuitRunLoop(&loop));
1278 1278
1279 CompleteLoading(); 1279 CompleteLoading();
1280 loop.Run(); 1280 loop.Run();
1281 } 1281 }
1282 1282
1283 TEST_F(CookieMonsterTest, TestCookieDeleteAll) { 1283 TEST_F(CookieMonsterTest, TestCookieDeleteAll) {
1284 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 1284 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
1285 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 1285 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
1286 CookieOptions options; 1286 CookieOptions options;
1287 options.set_include_httponly(); 1287 options.set_include_httponly();
1288 1288
1289 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), kValidCookieLine)); 1289 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), kValidCookieLine));
1290 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); 1290 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url()));
1291 1291
1292 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(), 1292 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(),
1293 "C=D; httponly", options)); 1293 "C=D; httponly", options));
1294 EXPECT_EQ("A=B; C=D", 1294 EXPECT_EQ("A=B; C=D",
1295 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options)); 1295 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options));
(...skipping 12 matching lines...) Expand all
1308 1308
1309 EXPECT_EQ(1, DeleteAll(cm.get())); // sync_to_store = true. 1309 EXPECT_EQ(1, DeleteAll(cm.get())); // sync_to_store = true.
1310 ASSERT_EQ(2u, store->commands().size()); 1310 ASSERT_EQ(2u, store->commands().size());
1311 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[1].type); 1311 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[1].type);
1312 1312
1313 EXPECT_EQ("", 1313 EXPECT_EQ("",
1314 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options)); 1314 GetCookiesWithOptions(cm.get(), http_www_google_.url(), options));
1315 } 1315 }
1316 1316
1317 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) { 1317 TEST_F(CookieMonsterTest, TestCookieDeleteAllCreatedBetweenTimestamps) {
1318 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1318 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1319 Time now = Time::Now(); 1319 Time now = Time::Now();
1320 1320
1321 // Nothing has been added so nothing should be deleted. 1321 // Nothing has been added so nothing should be deleted.
1322 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99), 1322 EXPECT_EQ(0, DeleteAllCreatedBetween(cm.get(), now - TimeDelta::FromDays(99),
1323 Time())); 1323 Time()));
1324 1324
1325 // Create 3 cookies with creation date of today, yesterday and the day before. 1325 // Create 3 cookies with creation date of today, yesterday and the day before.
1326 EXPECT_TRUE( 1326 EXPECT_TRUE(
1327 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now)); 1327 cm->SetCookieWithCreationTime(http_www_google_.url(), "T-0=Now", now));
1328 EXPECT_TRUE(cm->SetCookieWithCreationTime( 1328 EXPECT_TRUE(cm->SetCookieWithCreationTime(
(...skipping 21 matching lines...) Expand all
1350 // Delete the last (now) item. 1350 // Delete the last (now) item.
1351 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time())); 1351 EXPECT_EQ(1, DeleteAllCreatedBetween(cm.get(), Time(), Time()));
1352 1352
1353 // Really make sure everything is gone. 1353 // Really make sure everything is gone.
1354 EXPECT_EQ(0, DeleteAll(cm.get())); 1354 EXPECT_EQ(0, DeleteAll(cm.get()));
1355 } 1355 }
1356 1356
1357 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20; 1357 static const int kAccessDelayMs = kLastAccessThresholdMilliseconds + 20;
1358 1358
1359 TEST_F(CookieMonsterTest, TestLastAccess) { 1359 TEST_F(CookieMonsterTest, TestLastAccess) {
1360 scoped_refptr<CookieMonster> cm( 1360 scoped_ptr<CookieMonster> cm(
1361 new CookieMonster(NULL, NULL, kLastAccessThresholdMilliseconds)); 1361 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds));
1362 1362
1363 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 1363 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
1364 const Time last_access_date(GetFirstCookieAccessDate(cm.get())); 1364 const Time last_access_date(GetFirstCookieAccessDate(cm.get()));
1365 1365
1366 // Reading the cookie again immediately shouldn't update the access date, 1366 // Reading the cookie again immediately shouldn't update the access date,
1367 // since we're inside the threshold. 1367 // since we're inside the threshold.
1368 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); 1368 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url()));
1369 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get())); 1369 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get()));
1370 1370
1371 // Reading after a short wait will update the access date, if the cookie 1371 // Reading after a short wait will update the access date, if the cookie
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1406 1406
1407 TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollectionSecure) { 1407 TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollectionSecure) {
1408 TestPriorityAwareGarbageCollectHelperSecure(); 1408 TestPriorityAwareGarbageCollectHelperSecure();
1409 } 1409 }
1410 1410
1411 TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollectionMixed) { 1411 TEST_F(CookieMonsterTest, TestPriorityAwareGarbageCollectionMixed) {
1412 TestPriorityAwareGarbageCollectHelperMixed(); 1412 TestPriorityAwareGarbageCollectHelperMixed();
1413 } 1413 }
1414 1414
1415 TEST_F(CookieMonsterTest, SetCookieableSchemes) { 1415 TEST_F(CookieMonsterTest, SetCookieableSchemes) {
1416 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1416 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1417 scoped_refptr<CookieMonster> cm_foo(new CookieMonster(NULL, NULL)); 1417 scoped_ptr<CookieMonster> cm_foo(new CookieMonster(nullptr, nullptr));
1418 1418
1419 // Only cm_foo should allow foo:// cookies. 1419 // Only cm_foo should allow foo:// cookies.
1420 std::vector<std::string> schemes; 1420 std::vector<std::string> schemes;
1421 schemes.push_back("foo"); 1421 schemes.push_back("foo");
1422 cm_foo->SetCookieableSchemes(schemes); 1422 cm_foo->SetCookieableSchemes(schemes);
1423 1423
1424 GURL foo_url("foo://host/path"); 1424 GURL foo_url("foo://host/path");
1425 GURL http_url("http://host/path"); 1425 GURL http_url("http://host/path");
1426 1426
1427 EXPECT_TRUE(SetCookie(cm.get(), http_url, "x=1")); 1427 EXPECT_TRUE(SetCookie(cm.get(), http_url, "x=1"));
1428 EXPECT_FALSE(SetCookie(cm.get(), foo_url, "x=1")); 1428 EXPECT_FALSE(SetCookie(cm.get(), foo_url, "x=1"));
1429 EXPECT_TRUE(SetCookie(cm_foo.get(), foo_url, "x=1")); 1429 EXPECT_TRUE(SetCookie(cm_foo.get(), foo_url, "x=1"));
1430 EXPECT_FALSE(SetCookie(cm_foo.get(), http_url, "x=1")); 1430 EXPECT_FALSE(SetCookie(cm_foo.get(), http_url, "x=1"));
1431 } 1431 }
1432 1432
1433 TEST_F(CookieMonsterTest, GetAllCookiesForURL) { 1433 TEST_F(CookieMonsterTest, GetAllCookiesForURL) {
1434 scoped_refptr<CookieMonster> cm( 1434 scoped_ptr<CookieMonster> cm(
1435 new CookieMonster(NULL, NULL, kLastAccessThresholdMilliseconds)); 1435 new CookieMonster(nullptr, nullptr, kLastAccessThresholdMilliseconds));
1436 1436
1437 // Create an httponly cookie. 1437 // Create an httponly cookie.
1438 CookieOptions options; 1438 CookieOptions options;
1439 options.set_include_httponly(); 1439 options.set_include_httponly();
1440 1440
1441 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(), 1441 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(),
1442 "A=B; httponly", options)); 1442 "A=B; httponly", options));
1443 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(), 1443 EXPECT_TRUE(SetCookieWithOptions(cm.get(), http_www_google_.url(),
1444 http_www_google_.Format("C=D; domain=.%D"), 1444 http_www_google_.Format("C=D; domain=.%D"),
1445 options)); 1445 options));
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
1493 EXPECT_EQ(http_www_google_.Format(".%D"), it->Domain()); 1493 EXPECT_EQ(http_www_google_.Format(".%D"), it->Domain());
1494 EXPECT_EQ("E", it->Name()); 1494 EXPECT_EQ("E", it->Name());
1495 1495
1496 ASSERT_TRUE(++it == cookies.end()); 1496 ASSERT_TRUE(++it == cookies.end());
1497 1497
1498 // Reading after a short wait should not update the access date. 1498 // Reading after a short wait should not update the access date.
1499 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get())); 1499 EXPECT_EQ(last_access_date, GetFirstCookieAccessDate(cm.get()));
1500 } 1500 }
1501 1501
1502 TEST_F(CookieMonsterTest, GetAllCookiesForURLPathMatching) { 1502 TEST_F(CookieMonsterTest, GetAllCookiesForURLPathMatching) {
1503 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1503 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1504 CookieOptions options; 1504 CookieOptions options;
1505 1505
1506 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_foo_.url(), 1506 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_foo_.url(),
1507 "A=B; path=/foo;", options)); 1507 "A=B; path=/foo;", options));
1508 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_bar_.url(), 1508 EXPECT_TRUE(SetCookieWithOptions(cm.get(), www_google_bar_.url(),
1509 "C=D; path=/bar;", options)); 1509 "C=D; path=/bar;", options));
1510 EXPECT_TRUE( 1510 EXPECT_TRUE(
1511 SetCookieWithOptions(cm.get(), http_www_google_.url(), "E=F;", options)); 1511 SetCookieWithOptions(cm.get(), http_www_google_.url(), "E=F;", options));
1512 1512
1513 CookieList cookies = GetAllCookiesForURL(cm.get(), www_google_foo_.url()); 1513 CookieList cookies = GetAllCookiesForURL(cm.get(), www_google_foo_.url());
(...skipping 17 matching lines...) Expand all
1531 EXPECT_EQ("/bar", it->Path()); 1531 EXPECT_EQ("/bar", it->Path());
1532 1532
1533 ASSERT_TRUE(++it != cookies.end()); 1533 ASSERT_TRUE(++it != cookies.end());
1534 EXPECT_EQ("E", it->Name()); 1534 EXPECT_EQ("E", it->Name());
1535 EXPECT_EQ("/", it->Path()); 1535 EXPECT_EQ("/", it->Path());
1536 1536
1537 ASSERT_TRUE(++it == cookies.end()); 1537 ASSERT_TRUE(++it == cookies.end());
1538 } 1538 }
1539 1539
1540 TEST_F(CookieMonsterTest, CookieSorting) { 1540 TEST_F(CookieMonsterTest, CookieSorting) {
1541 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1541 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1542 1542
1543 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/")); 1543 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/"));
1544 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo")); 1544 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo"));
1545 EXPECT_TRUE( 1545 EXPECT_TRUE(
1546 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar")); 1546 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar"));
1547 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/")); 1547 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/"));
1548 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo")); 1548 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo"));
1549 EXPECT_TRUE( 1549 EXPECT_TRUE(
1550 SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/foo/bar")); 1550 SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/foo/bar"));
1551 1551
1552 // Re-set cookie which should not change sort order. 1552 // Re-set cookie which should not change sort order.
1553 EXPECT_TRUE( 1553 EXPECT_TRUE(
1554 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar")); 1554 SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/foo/bar"));
1555 1555
1556 CookieList cookies = GetAllCookies(cm.get()); 1556 CookieList cookies = GetAllCookies(cm.get());
1557 ASSERT_EQ(6u, cookies.size()); 1557 ASSERT_EQ(6u, cookies.size());
1558 // According to RFC 6265 5.3 (11) re-setting this cookie should retain the 1558 // According to RFC 6265 5.3 (11) re-setting this cookie should retain the
1559 // initial creation-time from above, and the sort order should not change. 1559 // initial creation-time from above, and the sort order should not change.
1560 // Chrome's current implementation deviates from the spec so capturing this to 1560 // Chrome's current implementation deviates from the spec so capturing this to
1561 // avoid any inadvertent changes to this behavior. 1561 // avoid any inadvertent changes to this behavior.
1562 EXPECT_EQ("A3", cookies[0].Value()); 1562 EXPECT_EQ("A3", cookies[0].Value());
1563 EXPECT_EQ("B3", cookies[1].Value()); 1563 EXPECT_EQ("B3", cookies[1].Value());
1564 EXPECT_EQ("B2", cookies[2].Value()); 1564 EXPECT_EQ("B2", cookies[2].Value());
1565 EXPECT_EQ("A2", cookies[3].Value()); 1565 EXPECT_EQ("A2", cookies[3].Value());
1566 EXPECT_EQ("B1", cookies[4].Value()); 1566 EXPECT_EQ("B1", cookies[4].Value());
1567 EXPECT_EQ("A1", cookies[5].Value()); 1567 EXPECT_EQ("A1", cookies[5].Value());
1568 } 1568 }
1569 1569
1570 TEST_F(CookieMonsterTest, DeleteCookieByName) { 1570 TEST_F(CookieMonsterTest, DeleteCookieByName) {
1571 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1571 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1572 1572
1573 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/")); 1573 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A1; path=/"));
1574 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo")); 1574 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A2; path=/foo"));
1575 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/bar")); 1575 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=A3; path=/bar"));
1576 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/")); 1576 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B1; path=/"));
1577 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo")); 1577 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B2; path=/foo"));
1578 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/bar")); 1578 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "B=B3; path=/bar"));
1579 1579
1580 DeleteCookie(cm.get(), http_www_google_.AppendPath("foo/bar"), "A"); 1580 DeleteCookie(cm.get(), http_www_google_.AppendPath("foo/bar"), "A");
1581 1581
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1637 Time::Now() + TimeDelta::FromDays(2), &initial_cookies); 1637 Time::Now() + TimeDelta::FromDays(2), &initial_cookies);
1638 1638
1639 // Insert 1 cookie with name "Y" on path "/". 1639 // Insert 1 cookie with name "Y" on path "/".
1640 AddCookieToList("www.google.com", 1640 AddCookieToList("www.google.com",
1641 "Y=a; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT", 1641 "Y=a; path=/; expires=Mon, 18-Apr-22 22:50:14 GMT",
1642 Time::Now() + TimeDelta::FromDays(10), &initial_cookies); 1642 Time::Now() + TimeDelta::FromDays(10), &initial_cookies);
1643 1643
1644 // Inject our initial cookies into the mock PersistentCookieStore. 1644 // Inject our initial cookies into the mock PersistentCookieStore.
1645 store->SetLoadExpectation(true, initial_cookies); 1645 store->SetLoadExpectation(true, initial_cookies);
1646 1646
1647 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 1647 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
1648 1648
1649 // Verify that duplicates were not imported for path "/". 1649 // Verify that duplicates were not imported for path "/".
1650 // (If this had failed, GetCookies() would have also returned X=1, X=2, X=4). 1650 // (If this had failed, GetCookies() would have also returned X=1, X=2, X=4).
1651 EXPECT_EQ("X=3; Y=a", GetCookies(cm.get(), GURL("http://www.google.com/"))); 1651 EXPECT_EQ("X=3; Y=a", GetCookies(cm.get(), GURL("http://www.google.com/")));
1652 1652
1653 // Verify that same-named cookie on a different path ("/x2") didn't get 1653 // Verify that same-named cookie on a different path ("/x2") didn't get
1654 // messed up. 1654 // messed up.
1655 EXPECT_EQ("X=a1; X=3; Y=a", 1655 EXPECT_EQ("X=a1; X=3; Y=a",
1656 GetCookies(cm.get(), GURL("http://www.google.com/2/x"))); 1656 GetCookies(cm.get(), GURL("http://www.google.com/2/x")));
1657 1657
(...skipping 27 matching lines...) Expand all
1685 AddCookieToList("www.google.com", "X=4; path=/", now, &initial_cookies); 1685 AddCookieToList("www.google.com", "X=4; path=/", now, &initial_cookies);
1686 1686
1687 AddCookieToList("www.google.com", "Y=1; path=/", earlier, &initial_cookies); 1687 AddCookieToList("www.google.com", "Y=1; path=/", earlier, &initial_cookies);
1688 AddCookieToList("www.google.com", "Y=2; path=/", earlier, &initial_cookies); 1688 AddCookieToList("www.google.com", "Y=2; path=/", earlier, &initial_cookies);
1689 AddCookieToList("www.google.com", "Y=3; path=/", earlier, &initial_cookies); 1689 AddCookieToList("www.google.com", "Y=3; path=/", earlier, &initial_cookies);
1690 AddCookieToList("www.google.com", "Y=4; path=/", earlier, &initial_cookies); 1690 AddCookieToList("www.google.com", "Y=4; path=/", earlier, &initial_cookies);
1691 1691
1692 // Inject our initial cookies into the mock PersistentCookieStore. 1692 // Inject our initial cookies into the mock PersistentCookieStore.
1693 store->SetLoadExpectation(true, initial_cookies); 1693 store->SetLoadExpectation(true, initial_cookies);
1694 1694
1695 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 1695 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
1696 1696
1697 CookieList list(GetAllCookies(cm.get())); 1697 CookieList list(GetAllCookies(cm.get()));
1698 EXPECT_EQ(2U, list.size()); 1698 EXPECT_EQ(2U, list.size());
1699 // Confirm that we have one of each. 1699 // Confirm that we have one of each.
1700 std::string name1(list[0].Name()); 1700 std::string name1(list[0].Name());
1701 std::string name2(list[1].Name()); 1701 std::string name2(list[1].Name());
1702 EXPECT_TRUE(name1 == "X" || name2 == "X"); 1702 EXPECT_TRUE(name1 == "X" || name2 == "X");
1703 EXPECT_TRUE(name1 == "Y" || name2 == "Y"); 1703 EXPECT_TRUE(name1 == "Y" || name2 == "Y");
1704 EXPECT_NE(name1, name2); 1704 EXPECT_NE(name1, name2);
1705 } 1705 }
1706 1706
1707 TEST_F(CookieMonsterTest, CookieMonsterDelegate) { 1707 TEST_F(CookieMonsterTest, CookieMonsterDelegate) {
1708 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 1708 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
1709 scoped_refptr<MockCookieMonsterDelegate> delegate( 1709 scoped_refptr<MockCookieMonsterDelegate> delegate(
1710 new MockCookieMonsterDelegate); 1710 new MockCookieMonsterDelegate);
1711 scoped_refptr<CookieMonster> cm( 1711 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), delegate.get()));
1712 new CookieMonster(store.get(), delegate.get()));
1713 1712
1714 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 1713 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
1715 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "C=D")); 1714 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "C=D"));
1716 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "E=F")); 1715 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "E=F"));
1717 EXPECT_EQ("A=B; C=D; E=F", GetCookies(cm.get(), http_www_google_.url())); 1716 EXPECT_EQ("A=B; C=D; E=F", GetCookies(cm.get(), http_www_google_.url()));
1718 ASSERT_EQ(3u, delegate->changes().size()); 1717 ASSERT_EQ(3u, delegate->changes().size());
1719 EXPECT_FALSE(delegate->changes()[0].second); 1718 EXPECT_FALSE(delegate->changes()[0].second);
1720 EXPECT_EQ(http_www_google_.url().host(), 1719 EXPECT_EQ(http_www_google_.url().host(),
1721 delegate->changes()[0].first.Domain()); 1720 delegate->changes()[0].first.Domain());
1722 EXPECT_EQ("A", delegate->changes()[0].first.Name()); 1721 EXPECT_EQ("A", delegate->changes()[0].first.Name());
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
1781 EXPECT_EQ("val1", delegate->changes()[0].first.Value()); 1780 EXPECT_EQ("val1", delegate->changes()[0].first.Value());
1782 EXPECT_EQ(http_www_google_.url().host(), 1781 EXPECT_EQ(http_www_google_.url().host(),
1783 delegate->changes()[1].first.Domain()); 1782 delegate->changes()[1].first.Domain());
1784 EXPECT_FALSE(delegate->changes()[1].second); 1783 EXPECT_FALSE(delegate->changes()[1].second);
1785 EXPECT_EQ("a", delegate->changes()[1].first.Name()); 1784 EXPECT_EQ("a", delegate->changes()[1].first.Name());
1786 EXPECT_EQ("val2", delegate->changes()[1].first.Value()); 1785 EXPECT_EQ("val2", delegate->changes()[1].first.Value());
1787 delegate->reset(); 1786 delegate->reset();
1788 } 1787 }
1789 1788
1790 TEST_F(CookieMonsterTest, DeleteAllForHost) { 1789 TEST_F(CookieMonsterTest, DeleteAllForHost) {
1791 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1790 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1792 1791
1793 // Test probes: 1792 // Test probes:
1794 // * Non-secure URL, mid-level (http://w.c.b.a) 1793 // * Non-secure URL, mid-level (http://w.c.b.a)
1795 // * Secure URL, mid-level (https://w.c.b.a) 1794 // * Secure URL, mid-level (https://w.c.b.a)
1796 // * URL with path, mid-level (https:/w.c.b.a/dir1/xx) 1795 // * URL with path, mid-level (https:/w.c.b.a/dir1/xx)
1797 // All three tests should nuke only the midlevel host cookie, 1796 // All three tests should nuke only the midlevel host cookie,
1798 // the http_only cookie, the host secure cookie, and the two host 1797 // the http_only cookie, the host secure cookie, and the two host
1799 // path cookies. http_only, secure, and paths are ignored by 1798 // path cookies. http_only, secure, and paths are ignored by
1800 // this call, and domain cookies arent touched. 1799 // this call, and domain cookies arent touched.
1801 PopulateCmForDeleteAllForHost(cm); 1800 PopulateCmForDeleteAllForHost(cm.get());
1802 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1801 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1803 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1802 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1804 EXPECT_EQ("dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X", 1803 EXPECT_EQ("dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X",
1805 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1804 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1806 EXPECT_EQ("dom_1=X; host_1=X", 1805 EXPECT_EQ("dom_1=X; host_1=X",
1807 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1806 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1808 EXPECT_EQ( 1807 EXPECT_EQ(
1809 "dom_path_2=X; host_path_2=X; dom_path_1=X; host_path_1=X; " 1808 "dom_path_2=X; host_path_2=X; dom_path_1=X; host_path_1=X; "
1810 "dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X", 1809 "dom_1=X; dom_2=X; host_2=X; sec_dom=X; sec_host=X",
1811 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1810 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1812 std::string("/dir1/dir2/xxx")))); 1811 std::string("/dir1/dir2/xxx"))));
1813 1812
1814 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(cm.get(), base::Time(), 1813 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(cm.get(), base::Time(),
1815 base::Time::Now(), 1814 base::Time::Now(),
1816 GURL(kTopLevelDomainPlus2))); 1815 GURL(kTopLevelDomainPlus2)));
1817 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); 1816 EXPECT_EQ(8U, GetAllCookies(cm.get()).size());
1818 1817
1819 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1818 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1820 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1819 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1821 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", 1820 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X",
1822 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1821 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1823 EXPECT_EQ("dom_1=X; host_1=X", 1822 EXPECT_EQ("dom_1=X; host_1=X",
1824 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1823 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1825 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", 1824 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X",
1826 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1825 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1827 std::string("/dir1/dir2/xxx")))); 1826 std::string("/dir1/dir2/xxx"))));
1828 1827
1829 PopulateCmForDeleteAllForHost(cm); 1828 PopulateCmForDeleteAllForHost(cm.get());
1830 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost( 1829 EXPECT_EQ(6, DeleteAllCreatedBetweenForHost(
1831 cm.get(), base::Time(), base::Time::Now(), 1830 cm.get(), base::Time(), base::Time::Now(),
1832 GURL(kTopLevelDomainPlus2Secure))); 1831 GURL(kTopLevelDomainPlus2Secure)));
1833 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); 1832 EXPECT_EQ(8U, GetAllCookies(cm.get()).size());
1834 1833
1835 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1834 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1836 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1835 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1837 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", 1836 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X",
1838 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1837 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1839 EXPECT_EQ("dom_1=X; host_1=X", 1838 EXPECT_EQ("dom_1=X; host_1=X",
1840 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1839 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1841 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", 1840 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X",
1842 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1841 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1843 std::string("/dir1/dir2/xxx")))); 1842 std::string("/dir1/dir2/xxx"))));
1844 1843
1845 PopulateCmForDeleteAllForHost(cm); 1844 PopulateCmForDeleteAllForHost(cm.get());
1846 EXPECT_EQ(6, 1845 EXPECT_EQ(6,
1847 DeleteAllCreatedBetweenForHost( 1846 DeleteAllCreatedBetweenForHost(
1848 cm.get(), base::Time(), base::Time::Now(), 1847 cm.get(), base::Time(), base::Time::Now(),
1849 GURL(kTopLevelDomainPlus2Secure + std::string("/dir1/xxx")))); 1848 GURL(kTopLevelDomainPlus2Secure + std::string("/dir1/xxx"))));
1850 EXPECT_EQ(8U, GetAllCookies(cm.get()).size()); 1849 EXPECT_EQ(8U, GetAllCookies(cm.get()).size());
1851 1850
1852 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X", 1851 EXPECT_EQ("dom_1=X; dom_2=X; dom_3=X; host_3=X",
1853 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3))); 1852 GetCookies(cm.get(), GURL(kTopLevelDomainPlus3)));
1854 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X", 1853 EXPECT_EQ("dom_1=X; dom_2=X; sec_dom=X",
1855 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure))); 1854 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure)));
1856 EXPECT_EQ("dom_1=X; host_1=X", 1855 EXPECT_EQ("dom_1=X; host_1=X",
1857 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1))); 1856 GetCookies(cm.get(), GURL(kTopLevelDomainPlus1)));
1858 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X", 1857 EXPECT_EQ("dom_path_2=X; dom_path_1=X; dom_1=X; dom_2=X; sec_dom=X",
1859 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure + 1858 GetCookies(cm.get(), GURL(kTopLevelDomainPlus2Secure +
1860 std::string("/dir1/dir2/xxx")))); 1859 std::string("/dir1/dir2/xxx"))));
1861 } 1860 }
1862 1861
1863 TEST_F(CookieMonsterTest, UniqueCreationTime) { 1862 TEST_F(CookieMonsterTest, UniqueCreationTime) {
1864 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1863 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1865 CookieOptions options; 1864 CookieOptions options;
1866 1865
1867 // Add in three cookies through every public interface to the 1866 // Add in three cookies through every public interface to the
1868 // CookieMonster and confirm that none of them have duplicate 1867 // CookieMonster and confirm that none of them have duplicate
1869 // creation times. 1868 // creation times.
1870 1869
1871 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions 1870 // SetCookieWithCreationTime and SetCookieWithCreationTimeAndOptions
1872 // are not included as they aren't going to be public for very much 1871 // are not included as they aren't going to be public for very much
1873 // longer. 1872 // longer.
1874 1873
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1917 if (existing_cookie_it == check_map.end()) { 1916 if (existing_cookie_it == check_map.end()) {
1918 check_map.insert( 1917 check_map.insert(
1919 TimeCookieMap::value_type(it->CreationDate().ToInternalValue(), *it)); 1918 TimeCookieMap::value_type(it->CreationDate().ToInternalValue(), *it));
1920 } 1919 }
1921 } 1920 }
1922 } 1921 }
1923 1922
1924 // Mainly a test of GetEffectiveDomain, or more specifically, of the 1923 // Mainly a test of GetEffectiveDomain, or more specifically, of the
1925 // expected behavior of GetEffectiveDomain within the CookieMonster. 1924 // expected behavior of GetEffectiveDomain within the CookieMonster.
1926 TEST_F(CookieMonsterTest, GetKey) { 1925 TEST_F(CookieMonsterTest, GetKey) {
1927 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 1926 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
1928 1927
1929 // This test is really only interesting if GetKey() actually does something. 1928 // This test is really only interesting if GetKey() actually does something.
1930 EXPECT_EQ("google.com", cm->GetKey("www.google.com")); 1929 EXPECT_EQ("google.com", cm->GetKey("www.google.com"));
1931 EXPECT_EQ("google.izzie", cm->GetKey("www.google.izzie")); 1930 EXPECT_EQ("google.izzie", cm->GetKey("www.google.izzie"));
1932 EXPECT_EQ("google.izzie", cm->GetKey(".google.izzie")); 1931 EXPECT_EQ("google.izzie", cm->GetKey(".google.izzie"));
1933 EXPECT_EQ("bbc.co.uk", cm->GetKey("bbc.co.uk")); 1932 EXPECT_EQ("bbc.co.uk", cm->GetKey("bbc.co.uk"));
1934 EXPECT_EQ("bbc.co.uk", cm->GetKey("a.b.c.d.bbc.co.uk")); 1933 EXPECT_EQ("bbc.co.uk", cm->GetKey("a.b.c.d.bbc.co.uk"));
1935 EXPECT_EQ("apple.com", cm->GetKey("a.b.c.d.apple.com")); 1934 EXPECT_EQ("apple.com", cm->GetKey("a.b.c.d.apple.com"));
1936 EXPECT_EQ("apple.izzie", cm->GetKey("a.b.c.d.apple.izzie")); 1935 EXPECT_EQ("apple.izzie", cm->GetKey("a.b.c.d.apple.izzie"));
1937 1936
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1983 "/another/path/to/cookie", 1982 "/another/path/to/cookie",
1984 base::Time::Now() + base::TimeDelta::FromSeconds(100), 1983 base::Time::Now() + base::TimeDelta::FromSeconds(100),
1985 true, 1984 true,
1986 false, 1985 false,
1987 true, 1986 true,
1988 COOKIE_PRIORITY_DEFAULT}}; 1987 COOKIE_PRIORITY_DEFAULT}};
1989 const int INPUT_DELETE = 1; 1988 const int INPUT_DELETE = 1;
1990 1989
1991 // Create new cookies and flush them to the store. 1990 // Create new cookies and flush them to the store.
1992 { 1991 {
1993 scoped_refptr<CookieMonster> cmout(new CookieMonster(store.get(), NULL)); 1992 scoped_ptr<CookieMonster> cmout(new CookieMonster(store.get(), nullptr));
1994 for (const CookiesInputInfo* p = input_info; 1993 for (const CookiesInputInfo* p = input_info;
1995 p < &input_info[arraysize(input_info)]; p++) { 1994 p < &input_info[arraysize(input_info)]; p++) {
1996 EXPECT_TRUE(SetCookieWithDetails( 1995 EXPECT_TRUE(SetCookieWithDetails(
1997 cmout.get(), p->url, p->name, p->value, p->domain, p->path, 1996 cmout.get(), p->url, p->name, p->value, p->domain, p->path,
1998 base::Time(), p->expiration_time, base::Time(), p->secure, 1997 base::Time(), p->expiration_time, base::Time(), p->secure,
1999 p->http_only, p->same_site, p->priority)); 1998 p->http_only, p->same_site, p->priority));
2000 } 1999 }
2001 GURL del_url(input_info[INPUT_DELETE] 2000 GURL del_url(input_info[INPUT_DELETE]
2002 .url.Resolve(input_info[INPUT_DELETE].path) 2001 .url.Resolve(input_info[INPUT_DELETE].path)
2003 .spec()); 2002 .spec());
2004 DeleteCookie(cmout.get(), del_url, input_info[INPUT_DELETE].name); 2003 DeleteCookie(cmout.get(), del_url, input_info[INPUT_DELETE].name);
2005 } 2004 }
2006 2005
2007 // Create a new cookie monster and make sure that everything is correct 2006 // Create a new cookie monster and make sure that everything is correct
2008 { 2007 {
2009 scoped_refptr<CookieMonster> cmin(new CookieMonster(store.get(), NULL)); 2008 scoped_ptr<CookieMonster> cmin(new CookieMonster(store.get(), nullptr));
2010 CookieList cookies(GetAllCookies(cmin.get())); 2009 CookieList cookies(GetAllCookies(cmin.get()));
2011 ASSERT_EQ(2u, cookies.size()); 2010 ASSERT_EQ(2u, cookies.size());
2012 // Ordering is path length, then creation time. So second cookie 2011 // Ordering is path length, then creation time. So second cookie
2013 // will come first, and we need to swap them. 2012 // will come first, and we need to swap them.
2014 std::swap(cookies[0], cookies[1]); 2013 std::swap(cookies[0], cookies[1]);
2015 for (int output_index = 0; output_index < 2; output_index++) { 2014 for (int output_index = 0; output_index < 2; output_index++) {
2016 int input_index = output_index * 2; 2015 int input_index = output_index * 2;
2017 const CookiesInputInfo* input = &input_info[input_index]; 2016 const CookiesInputInfo* input = &input_info[input_index];
2018 const CanonicalCookie* output = &cookies[output_index]; 2017 const CanonicalCookie* output = &cookies[output_index];
2019 2018
2020 EXPECT_EQ(input->name, output->Name()); 2019 EXPECT_EQ(input->name, output->Name());
2021 EXPECT_EQ(input->value, output->Value()); 2020 EXPECT_EQ(input->value, output->Value());
2022 EXPECT_EQ(input->url.host(), output->Domain()); 2021 EXPECT_EQ(input->url.host(), output->Domain());
2023 EXPECT_EQ(input->path, output->Path()); 2022 EXPECT_EQ(input->path, output->Path());
2024 EXPECT_LE(current.ToInternalValue(), 2023 EXPECT_LE(current.ToInternalValue(),
2025 output->CreationDate().ToInternalValue()); 2024 output->CreationDate().ToInternalValue());
2026 EXPECT_EQ(input->secure, output->IsSecure()); 2025 EXPECT_EQ(input->secure, output->IsSecure());
2027 EXPECT_EQ(input->http_only, output->IsHttpOnly()); 2026 EXPECT_EQ(input->http_only, output->IsHttpOnly());
2028 EXPECT_EQ(input->same_site, output->IsSameSite()); 2027 EXPECT_EQ(input->same_site, output->IsSameSite());
2029 EXPECT_TRUE(output->IsPersistent()); 2028 EXPECT_TRUE(output->IsPersistent());
2030 EXPECT_EQ(input->expiration_time.ToInternalValue(), 2029 EXPECT_EQ(input->expiration_time.ToInternalValue(),
2031 output->ExpiryDate().ToInternalValue()); 2030 output->ExpiryDate().ToInternalValue());
2032 } 2031 }
2033 } 2032 }
2034 } 2033 }
2035 2034
2036 TEST_F(CookieMonsterTest, CookieListOrdering) { 2035 TEST_F(CookieMonsterTest, CookieListOrdering) {
2037 // Put a random set of cookies into a monster and make sure 2036 // Put a random set of cookies into a monster and make sure
2038 // they're returned in the right order. 2037 // they're returned in the right order.
2039 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2038 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2040 EXPECT_TRUE( 2039 EXPECT_TRUE(
2041 SetCookie(cm.get(), GURL("http://d.c.b.a.google.com/aa/x.html"), "c=1")); 2040 SetCookie(cm.get(), GURL("http://d.c.b.a.google.com/aa/x.html"), "c=1"));
2042 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"), 2041 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"),
2043 "d=1; domain=b.a.google.com")); 2042 "d=1; domain=b.a.google.com"));
2044 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"), 2043 EXPECT_TRUE(SetCookie(cm.get(), GURL("http://b.a.google.com/aa/bb/cc/x.html"),
2045 "a=4; domain=b.a.google.com")); 2044 "a=4; domain=b.a.google.com"));
2046 EXPECT_TRUE(SetCookie(cm.get(), 2045 EXPECT_TRUE(SetCookie(cm.get(),
2047 GURL("http://c.b.a.google.com/aa/bb/cc/x.html"), 2046 GURL("http://c.b.a.google.com/aa/bb/cc/x.html"),
2048 "e=1; domain=c.b.a.google.com")); 2047 "e=1; domain=c.b.a.google.com"));
2049 EXPECT_TRUE(SetCookie(cm.get(), 2048 EXPECT_TRUE(SetCookie(cm.get(),
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2086 #if defined(OS_WIN) 2085 #if defined(OS_WIN)
2087 #define MAYBE_GarbageCollectionTriggers DISABLED_GarbageCollectionTriggers 2086 #define MAYBE_GarbageCollectionTriggers DISABLED_GarbageCollectionTriggers
2088 #else 2087 #else
2089 #define MAYBE_GarbageCollectionTriggers GarbageCollectionTriggers 2088 #define MAYBE_GarbageCollectionTriggers GarbageCollectionTriggers
2090 #endif 2089 #endif
2091 2090
2092 TEST_F(CookieMonsterTest, MAYBE_GarbageCollectionTriggers) { 2091 TEST_F(CookieMonsterTest, MAYBE_GarbageCollectionTriggers) {
2093 // First we check to make sure that a whole lot of recent cookies 2092 // First we check to make sure that a whole lot of recent cookies
2094 // doesn't get rid of anything after garbage collection is checked for. 2093 // doesn't get rid of anything after garbage collection is checked for.
2095 { 2094 {
2096 scoped_refptr<CookieMonster> cm( 2095 scoped_ptr<CookieMonster> cm(
2097 CreateMonsterForGC(CookieMonster::kMaxCookies * 2)); 2096 CreateMonsterForGC(CookieMonster::kMaxCookies * 2));
2098 EXPECT_EQ(CookieMonster::kMaxCookies * 2, GetAllCookies(cm.get()).size()); 2097 EXPECT_EQ(CookieMonster::kMaxCookies * 2, GetAllCookies(cm.get()).size());
2099 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2"); 2098 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2");
2100 EXPECT_EQ(CookieMonster::kMaxCookies * 2 + 1, 2099 EXPECT_EQ(CookieMonster::kMaxCookies * 2 + 1,
2101 GetAllCookies(cm.get()).size()); 2100 GetAllCookies(cm.get()).size());
2102 } 2101 }
2103 2102
2104 // Now we explore a series of relationships between cookie last access 2103 // Now we explore a series of relationships between cookie last access
2105 // time and size of store to make sure we only get rid of cookies when 2104 // time and size of store to make sure we only get rid of cookies when
2106 // we really should. 2105 // we really should.
(...skipping 21 matching lines...) Expand all
2128 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies}, 2127 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies},
2129 {// Old cookies enough to bring below our purge line (which we 2128 {// Old cookies enough to bring below our purge line (which we
2130 // shouldn't do). 2129 // shouldn't do).
2131 CookieMonster::kMaxCookies * 2, 2130 CookieMonster::kMaxCookies * 2,
2132 CookieMonster::kMaxCookies * 3 / 2, 2131 CookieMonster::kMaxCookies * 3 / 2,
2133 CookieMonster::kMaxCookies * 2, 2132 CookieMonster::kMaxCookies * 2,
2134 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies}}; 2133 CookieMonster::kMaxCookies - CookieMonster::kPurgeCookies}};
2135 2134
2136 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) { 2135 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) {
2137 const TestCase* test_case = &test_cases[ci]; 2136 const TestCase* test_case = &test_cases[ci];
2138 scoped_refptr<CookieMonster> cm(CreateMonsterFromStoreForGC( 2137 scoped_ptr<CookieMonster> cm = CreateMonsterFromStoreForGC(
2139 test_case->num_cookies, test_case->num_old_cookies, 0, 0, 2138 test_case->num_cookies, test_case->num_old_cookies, 0, 0,
2140 CookieMonster::kSafeFromGlobalPurgeDays * 2)); 2139 CookieMonster::kSafeFromGlobalPurgeDays * 2);
2141 EXPECT_EQ(test_case->expected_initial_cookies, 2140 EXPECT_EQ(test_case->expected_initial_cookies,
2142 GetAllCookies(cm.get()).size()) 2141 GetAllCookies(cm.get()).size())
2143 << "For test case " << ci; 2142 << "For test case " << ci;
2144 // Will trigger GC 2143 // Will trigger GC
2145 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2"); 2144 SetCookie(cm.get(), GURL("http://newdomain.com"), "b=2");
2146 EXPECT_EQ(test_case->expected_cookies_after_set, 2145 EXPECT_EQ(test_case->expected_cookies_after_set,
2147 GetAllCookies(cm.get()).size()) 2146 GetAllCookies(cm.get()).size())
2148 << "For test case " << ci; 2147 << "For test case " << ci;
2149 } 2148 }
2150 } 2149 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
2203 2202
2204 volatile int callback_count_; 2203 volatile int callback_count_;
2205 }; 2204 };
2206 2205
2207 } // namespace 2206 } // namespace
2208 2207
2209 // Test that FlushStore() is forwarded to the store and callbacks are posted. 2208 // Test that FlushStore() is forwarded to the store and callbacks are posted.
2210 TEST_F(CookieMonsterTest, FlushStore) { 2209 TEST_F(CookieMonsterTest, FlushStore) {
2211 scoped_refptr<CallbackCounter> counter(new CallbackCounter()); 2210 scoped_refptr<CallbackCounter> counter(new CallbackCounter());
2212 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore()); 2211 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore());
2213 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2212 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2214 2213
2215 ASSERT_EQ(0, store->flush_count()); 2214 ASSERT_EQ(0, store->flush_count());
2216 ASSERT_EQ(0, counter->callback_count()); 2215 ASSERT_EQ(0, counter->callback_count());
2217 2216
2218 // Before initialization, FlushStore() should just run the callback. 2217 // Before initialization, FlushStore() should just run the callback.
2219 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get())); 2218 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get()));
2220 base::MessageLoop::current()->RunUntilIdle(); 2219 base::MessageLoop::current()->RunUntilIdle();
2221 2220
2222 ASSERT_EQ(0, store->flush_count()); 2221 ASSERT_EQ(0, store->flush_count());
2223 ASSERT_EQ(1, counter->callback_count()); 2222 ASSERT_EQ(1, counter->callback_count());
(...skipping 14 matching lines...) Expand all
2238 ASSERT_EQ(2, counter->callback_count()); 2237 ASSERT_EQ(2, counter->callback_count());
2239 2238
2240 // NULL callback is still safe. 2239 // NULL callback is still safe.
2241 cm->FlushStore(base::Closure()); 2240 cm->FlushStore(base::Closure());
2242 base::MessageLoop::current()->RunUntilIdle(); 2241 base::MessageLoop::current()->RunUntilIdle();
2243 2242
2244 ASSERT_EQ(2, store->flush_count()); 2243 ASSERT_EQ(2, store->flush_count());
2245 ASSERT_EQ(2, counter->callback_count()); 2244 ASSERT_EQ(2, counter->callback_count());
2246 2245
2247 // If there's no backing store, FlushStore() is always a safe no-op. 2246 // If there's no backing store, FlushStore() is always a safe no-op.
2248 cm = new CookieMonster(NULL, NULL); 2247 cm.reset(new CookieMonster(nullptr, nullptr));
2249 GetAllCookies(cm.get()); // Force init. 2248 GetAllCookies(cm.get()); // Force init.
2250 cm->FlushStore(base::Closure()); 2249 cm->FlushStore(base::Closure());
2251 base::MessageLoop::current()->RunUntilIdle(); 2250 base::MessageLoop::current()->RunUntilIdle();
2252 2251
2253 ASSERT_EQ(2, counter->callback_count()); 2252 ASSERT_EQ(2, counter->callback_count());
2254 2253
2255 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get())); 2254 cm->FlushStore(base::Bind(&CallbackCounter::Callback, counter.get()));
2256 base::MessageLoop::current()->RunUntilIdle(); 2255 base::MessageLoop::current()->RunUntilIdle();
2257 2256
2258 ASSERT_EQ(3, counter->callback_count()); 2257 ASSERT_EQ(3, counter->callback_count());
2259 } 2258 }
2260 2259
2261 TEST_F(CookieMonsterTest, SetAllCookies) { 2260 TEST_F(CookieMonsterTest, SetAllCookies) {
2262 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore()); 2261 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore());
2263 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2262 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2264 cm->SetPersistSessionCookies(true); 2263 cm->SetPersistSessionCookies(true);
2265 2264
2266 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "U=V; path=/")); 2265 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "U=V; path=/"));
2267 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "W=X; path=/foo")); 2266 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "W=X; path=/foo"));
2268 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "Y=Z; path=/")); 2267 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "Y=Z; path=/"));
2269 2268
2270 CookieList list; 2269 CookieList list;
2271 list.push_back(CanonicalCookie(http_www_google_.url(), "A", "B", 2270 list.push_back(CanonicalCookie(http_www_google_.url(), "A", "B",
2272 http_www_google_.url().host(), "/", 2271 http_www_google_.url().host(), "/",
2273 base::Time::Now(), base::Time(), base::Time(), 2272 base::Time::Now(), base::Time(), base::Time(),
(...skipping 25 matching lines...) Expand all
2299 ASSERT_TRUE(++it != cookies.end()); 2298 ASSERT_TRUE(++it != cookies.end());
2300 EXPECT_EQ("A", it->Name()); 2299 EXPECT_EQ("A", it->Name());
2301 EXPECT_EQ("B", it->Value()); 2300 EXPECT_EQ("B", it->Value());
2302 2301
2303 ASSERT_TRUE(++it != cookies.end()); 2302 ASSERT_TRUE(++it != cookies.end());
2304 EXPECT_EQ("Y", it->Name()); 2303 EXPECT_EQ("Y", it->Name());
2305 EXPECT_EQ("Z", it->Value()); 2304 EXPECT_EQ("Z", it->Value());
2306 } 2305 }
2307 2306
2308 TEST_F(CookieMonsterTest, ComputeCookieDiff) { 2307 TEST_F(CookieMonsterTest, ComputeCookieDiff) {
2309 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2308 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2310 2309
2311 base::Time now = base::Time::Now(); 2310 base::Time now = base::Time::Now();
2312 base::Time creation_time = now - base::TimeDelta::FromSeconds(1); 2311 base::Time creation_time = now - base::TimeDelta::FromSeconds(1);
2313 2312
2314 CanonicalCookie cookie1(http_www_google_.url(), "A", "B", 2313 CanonicalCookie cookie1(http_www_google_.url(), "A", "B",
2315 http_www_google_.url().host(), "/", creation_time, 2314 http_www_google_.url().host(), "/", creation_time,
2316 base::Time(), base::Time(), false, false, false, 2315 base::Time(), base::Time(), false, false, false,
2317 COOKIE_PRIORITY_DEFAULT); 2316 COOKIE_PRIORITY_DEFAULT);
2318 CanonicalCookie cookie2(http_www_google_.url(), "C", "D", 2317 CanonicalCookie cookie2(http_www_google_.url(), "C", "D",
2319 http_www_google_.url().host(), "/", creation_time, 2318 http_www_google_.url().host(), "/", creation_time,
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
2416 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_add)); 2415 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_add));
2417 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_delete)); 2416 EXPECT_FALSE(IsCookieInList(cookie7, cookies_to_delete));
2418 EXPECT_TRUE(IsCookieInList(cookie7_with_new_path, cookies_to_add)); 2417 EXPECT_TRUE(IsCookieInList(cookie7_with_new_path, cookies_to_add));
2419 EXPECT_FALSE(IsCookieInList(cookie7_with_new_path, cookies_to_delete)); 2418 EXPECT_FALSE(IsCookieInList(cookie7_with_new_path, cookies_to_delete));
2420 } 2419 }
2421 2420
2422 // Check that DeleteAll does flush (as a sanity check that flush_count() 2421 // Check that DeleteAll does flush (as a sanity check that flush_count()
2423 // works). 2422 // works).
2424 TEST_F(CookieMonsterTest, DeleteAll) { 2423 TEST_F(CookieMonsterTest, DeleteAll) {
2425 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore()); 2424 scoped_refptr<FlushablePersistentStore> store(new FlushablePersistentStore());
2426 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2425 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2427 cm->SetPersistSessionCookies(true); 2426 cm->SetPersistSessionCookies(true);
2428 2427
2429 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "X=Y; path=/")); 2428 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "X=Y; path=/"));
2430 2429
2431 ASSERT_EQ(0, store->flush_count()); 2430 ASSERT_EQ(0, store->flush_count());
2432 EXPECT_EQ(1, DeleteAll(cm.get())); 2431 EXPECT_EQ(1, DeleteAll(cm.get()));
2433 EXPECT_EQ(1, store->flush_count()); 2432 EXPECT_EQ(1, store->flush_count());
2434 } 2433 }
2435 2434
2436 TEST_F(CookieMonsterTest, HistogramCheck) { 2435 TEST_F(CookieMonsterTest, HistogramCheck) {
2437 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2436 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2438 // Should match call in InitializeHistograms, but doesn't really matter 2437 // Should match call in InitializeHistograms, but doesn't really matter
2439 // since the histogram should have been initialized by the CM construction 2438 // since the histogram should have been initialized by the CM construction
2440 // above. 2439 // above.
2441 base::HistogramBase* expired_histogram = base::Histogram::FactoryGet( 2440 base::HistogramBase* expired_histogram = base::Histogram::FactoryGet(
2442 "Cookie.ExpirationDurationMinutes", 1, 10 * 365 * 24 * 60, 50, 2441 "Cookie.ExpirationDurationMinutes", 1, 10 * 365 * 24 * 60, 50,
2443 base::Histogram::kUmaTargetedHistogramFlag); 2442 base::Histogram::kUmaTargetedHistogramFlag);
2444 2443
2445 scoped_ptr<base::HistogramSamples> samples1( 2444 scoped_ptr<base::HistogramSamples> samples1(
2446 expired_histogram->SnapshotSamples()); 2445 expired_histogram->SnapshotSamples());
2447 ASSERT_TRUE(SetCookieWithDetails( 2446 ASSERT_TRUE(SetCookieWithDetails(
(...skipping 18 matching lines...) Expand all
2466 std::string(kValidCookieLine) + "; expires=Blarg arg arg"; 2465 std::string(kValidCookieLine) + "; expires=Blarg arg arg";
2467 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create( 2466 scoped_ptr<CanonicalCookie> cookie(CanonicalCookie::Create(
2468 http_www_google_.url(), cookie_line, Time::Now(), CookieOptions())); 2467 http_www_google_.url(), cookie_line, Time::Now(), CookieOptions()));
2469 ASSERT_FALSE(cookie->IsPersistent()); 2468 ASSERT_FALSE(cookie->IsPersistent());
2470 } 2469 }
2471 2470
2472 // Test that CookieMonster writes session cookies into the underlying 2471 // Test that CookieMonster writes session cookies into the underlying
2473 // CookieStore if the "persist session cookies" option is on. 2472 // CookieStore if the "persist session cookies" option is on.
2474 TEST_F(CookieMonsterTest, PersistSessionCookies) { 2473 TEST_F(CookieMonsterTest, PersistSessionCookies) {
2475 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2474 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2476 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2475 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2477 cm->SetPersistSessionCookies(true); 2476 cm->SetPersistSessionCookies(true);
2478 2477
2479 // All cookies set with SetCookie are session cookies. 2478 // All cookies set with SetCookie are session cookies.
2480 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B")); 2479 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B"));
2481 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url())); 2480 EXPECT_EQ("A=B", GetCookies(cm.get(), http_www_google_.url()));
2482 2481
2483 // The cookie was written to the backing store. 2482 // The cookie was written to the backing store.
2484 EXPECT_EQ(1u, store->commands().size()); 2483 EXPECT_EQ(1u, store->commands().size());
2485 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type); 2484 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type);
2486 EXPECT_EQ("A", store->commands()[0].cookie.Name()); 2485 EXPECT_EQ("A", store->commands()[0].cookie.Name());
(...skipping 15 matching lines...) Expand all
2502 EXPECT_EQ("", GetCookies(cm.get(), http_www_google_.url())); 2501 EXPECT_EQ("", GetCookies(cm.get(), http_www_google_.url()));
2503 EXPECT_EQ(4u, store->commands().size()); 2502 EXPECT_EQ(4u, store->commands().size());
2504 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[3].type); 2503 EXPECT_EQ(CookieStoreCommand::REMOVE, store->commands()[3].type);
2505 EXPECT_EQ("A", store->commands()[3].cookie.Name()); 2504 EXPECT_EQ("A", store->commands()[3].cookie.Name());
2506 EXPECT_EQ("C", store->commands()[3].cookie.Value()); 2505 EXPECT_EQ("C", store->commands()[3].cookie.Value());
2507 } 2506 }
2508 2507
2509 // Test the commands sent to the persistent cookie store. 2508 // Test the commands sent to the persistent cookie store.
2510 TEST_F(CookieMonsterTest, PersisentCookieStorageTest) { 2509 TEST_F(CookieMonsterTest, PersisentCookieStorageTest) {
2511 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2510 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2512 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2511 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2513 2512
2514 // Add a cookie. 2513 // Add a cookie.
2515 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), 2514 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(),
2516 "A=B; expires=Mon, 18-Apr-22 22:50:13 GMT")); 2515 "A=B; expires=Mon, 18-Apr-22 22:50:13 GMT"));
2517 this->MatchCookieLines("A=B", GetCookies(cm.get(), http_www_google_.url())); 2516 this->MatchCookieLines("A=B", GetCookies(cm.get(), http_www_google_.url()));
2518 ASSERT_EQ(1u, store->commands().size()); 2517 ASSERT_EQ(1u, store->commands().size());
2519 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type); 2518 EXPECT_EQ(CookieStoreCommand::ADD, store->commands()[0].type);
2520 // Remove it. 2519 // Remove it.
2521 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B; max-age=0")); 2520 EXPECT_TRUE(SetCookie(cm.get(), http_www_google_.url(), "A=B; max-age=0"));
2522 this->MatchCookieLines(std::string(), 2521 this->MatchCookieLines(std::string(),
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
2571 "boo", 2570 "boo",
2572 domain, path, now2, later, now2, false, false, false, 2571 domain, path, now2, later, now2, false, false, false,
2573 COOKIE_PRIORITY_DEFAULT); 2572 COOKIE_PRIORITY_DEFAULT);
2574 initial_cookies.push_back(cc); 2573 initial_cookies.push_back(cc);
2575 2574
2576 AddCookieToList(domain, "hello=world; path=" + path, now3, &initial_cookies); 2575 AddCookieToList(domain, "hello=world; path=" + path, now3, &initial_cookies);
2577 2576
2578 // Inject our initial cookies into the mock PersistentCookieStore. 2577 // Inject our initial cookies into the mock PersistentCookieStore.
2579 store->SetLoadExpectation(true, initial_cookies); 2578 store->SetLoadExpectation(true, initial_cookies);
2580 2579
2581 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2580 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2582 2581
2583 EXPECT_EQ("foo=bar; hello=world", GetCookies(cm.get(), url)); 2582 EXPECT_EQ("foo=bar; hello=world", GetCookies(cm.get(), url));
2584 } 2583 }
2585 2584
2586 // Test that cookie source schemes are histogrammed correctly. 2585 // Test that cookie source schemes are histogrammed correctly.
2587 TEST_F(CookieMonsterTest, CookieSourceHistogram) { 2586 TEST_F(CookieMonsterTest, CookieSourceHistogram) {
2588 base::HistogramTester histograms; 2587 base::HistogramTester histograms;
2589 const std::string cookie_source_histogram = "Cookie.CookieSourceScheme"; 2588 const std::string cookie_source_histogram = "Cookie.CookieSourceScheme";
2590 2589
2591 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2590 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2592 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2591 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2593 2592
2594 histograms.ExpectTotalCount(cookie_source_histogram, 0); 2593 histograms.ExpectTotalCount(cookie_source_histogram, 0);
2595 2594
2596 // Set a secure cookie on a cryptographic scheme. 2595 // Set a secure cookie on a cryptographic scheme.
2597 EXPECT_TRUE( 2596 EXPECT_TRUE(
2598 SetCookie(cm.get(), https_www_google_.url(), "A=B; path=/; Secure")); 2597 SetCookie(cm.get(), https_www_google_.url(), "A=B; path=/; Secure"));
2599 histograms.ExpectTotalCount(cookie_source_histogram, 1); 2598 histograms.ExpectTotalCount(cookie_source_histogram, 1);
2600 histograms.ExpectBucketCount( 2599 histograms.ExpectBucketCount(
2601 cookie_source_histogram, 2600 cookie_source_histogram,
2602 CookieMonster::COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME, 1); 2601 CookieMonster::COOKIE_SOURCE_SECURE_COOKIE_CRYPTOGRAPHIC_SCHEME, 1);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
2649 CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1); 2648 CookieMonster::COOKIE_SOURCE_NONSECURE_COOKIE_NONCRYPTOGRAPHIC_SCHEME, 1);
2650 } 2649 }
2651 2650
2652 // Test that cookie delete equivalent histograms are recorded correctly when 2651 // Test that cookie delete equivalent histograms are recorded correctly when
2653 // strict secure cookies are not enabled. 2652 // strict secure cookies are not enabled.
2654 TEST_F(CookieMonsterTest, CookieDeleteEquivalentHistogramTest) { 2653 TEST_F(CookieMonsterTest, CookieDeleteEquivalentHistogramTest) {
2655 base::HistogramTester histograms; 2654 base::HistogramTester histograms;
2656 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent"; 2655 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent";
2657 2656
2658 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2657 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2659 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2658 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2660 2659
2661 // Set a secure cookie from a secure origin 2660 // Set a secure cookie from a secure origin
2662 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure")); 2661 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure"));
2663 histograms.ExpectTotalCount(cookie_source_histogram, 1); 2662 histograms.ExpectTotalCount(cookie_source_histogram, 1);
2664 histograms.ExpectBucketCount(cookie_source_histogram, 2663 histograms.ExpectBucketCount(cookie_source_histogram,
2665 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2664 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2666 1); 2665 1);
2667 2666
2668 // Set a new cookie with a different name from a variety of origins (including 2667 // Set a new cookie with a different name from a variety of origins (including
2669 // the same one). 2668 // the same one).
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
2714 // already existing cookie and is not equivalent. 2713 // already existing cookie and is not equivalent.
2715 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), 2714 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(),
2716 "A=E; secure; path=/some/other/path")); 2715 "A=E; secure; path=/some/other/path"));
2717 histograms.ExpectTotalCount(cookie_source_histogram, 9); 2716 histograms.ExpectTotalCount(cookie_source_histogram, 9);
2718 histograms.ExpectBucketCount(cookie_source_histogram, 2717 histograms.ExpectBucketCount(cookie_source_histogram,
2719 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2718 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2720 7); 2719 7);
2721 } 2720 }
2722 2721
2723 TEST_F(CookieMonsterStrictSecureTest, SetSecureCookies) { 2722 TEST_F(CookieMonsterStrictSecureTest, SetSecureCookies) {
2724 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2723 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2725 GURL http_url("http://www.google.com"); 2724 GURL http_url("http://www.google.com");
2726 GURL http_superdomain_url("http://google.com"); 2725 GURL http_superdomain_url("http://google.com");
2727 GURL https_url("https://www.google.com"); 2726 GURL https_url("https://www.google.com");
2728 2727
2729 // A non-secure cookie can be created from either a URL with a secure or 2728 // A non-secure cookie can be created from either a URL with a secure or
2730 // insecure scheme. 2729 // insecure scheme.
2731 EXPECT_TRUE(SetCookie(cm.get(), http_url, "A=C;")); 2730 EXPECT_TRUE(SetCookie(cm.get(), http_url, "A=C;"));
2732 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B;")); 2731 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B;"));
2733 2732
2734 // A secure cookie cannot be created from a URL with an insecure scheme. 2733 // A secure cookie cannot be created from a URL with an insecure scheme.
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after
2909 // global purge goal (3000), but the secure cookies are not evicted. 2908 // global purge goal (3000), but the secure cookies are not evicted.
2910 const CookiesEntry test14[] = {{1U, true}}; 2909 const CookiesEntry test14[] = {{1U, true}};
2911 const AltHosts test14_alt_hosts(1500, 1800); 2910 const AltHosts test14_alt_hosts(1500, 1800);
2912 TestSecureCookieEviction(test14, arraysize(test14), 1501U, 1499, 2911 TestSecureCookieEviction(test14, arraysize(test14), 1501U, 1499,
2913 &test14_alt_hosts); 2912 &test14_alt_hosts);
2914 } 2913 }
2915 2914
2916 // Tests that strict secure cookies doesn't trip equivalent cookie checks 2915 // Tests that strict secure cookies doesn't trip equivalent cookie checks
2917 // accidentally. Regression test for https://crbug.com/569943. 2916 // accidentally. Regression test for https://crbug.com/569943.
2918 TEST_F(CookieMonsterStrictSecureTest, EquivalentCookies) { 2917 TEST_F(CookieMonsterStrictSecureTest, EquivalentCookies) {
2919 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); 2918 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr));
2920 GURL http_url("http://www.google.com"); 2919 GURL http_url("http://www.google.com");
2921 GURL http_superdomain_url("http://google.com"); 2920 GURL http_superdomain_url("http://google.com");
2922 GURL https_url("https://www.google.com"); 2921 GURL https_url("https://www.google.com");
2923 2922
2924 // Tests that non-equivalent cookies because of the path attribute can be set 2923 // Tests that non-equivalent cookies because of the path attribute can be set
2925 // successfully. 2924 // successfully.
2926 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure")); 2925 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure"));
2927 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; path=/some/other/path")); 2926 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; path=/some/other/path"));
2928 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; path=/some/other/path")); 2927 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; path=/some/other/path"));
2929 2928
2930 // Tests that non-equivalent cookies because of the domain attribute can be 2929 // Tests that non-equivalent cookies because of the domain attribute can be
2931 // set successfully. 2930 // set successfully.
2932 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure")); 2931 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=B; Secure"));
2933 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; domain=google.com")); 2932 EXPECT_TRUE(SetCookie(cm.get(), https_url, "A=C; domain=google.com"));
2934 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; domain=google.com")); 2933 EXPECT_FALSE(SetCookie(cm.get(), http_url, "A=D; domain=google.com"));
2935 } 2934 }
2936 2935
2937 // Test that cookie delete equivalent histograms are recorded correctly for 2936 // Test that cookie delete equivalent histograms are recorded correctly for
2938 // strict secure cookies. 2937 // strict secure cookies.
2939 TEST_F(CookieMonsterStrictSecureTest, CookieDeleteEquivalentHistogramTest) { 2938 TEST_F(CookieMonsterStrictSecureTest, CookieDeleteEquivalentHistogramTest) {
2940 base::HistogramTester histograms; 2939 base::HistogramTester histograms;
2941 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent"; 2940 const std::string cookie_source_histogram = "Cookie.CookieDeleteEquivalent";
2942 2941
2943 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore); 2942 scoped_refptr<MockPersistentCookieStore> store(new MockPersistentCookieStore);
2944 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); 2943 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr));
2945 2944
2946 // Set a secure cookie from a secure origin 2945 // Set a secure cookie from a secure origin
2947 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure")); 2946 EXPECT_TRUE(SetCookie(cm.get(), https_www_google_.url(), "A=B; Secure"));
2948 histograms.ExpectTotalCount(cookie_source_histogram, 1); 2947 histograms.ExpectTotalCount(cookie_source_histogram, 1);
2949 histograms.ExpectBucketCount(cookie_source_histogram, 2948 histograms.ExpectBucketCount(cookie_source_histogram,
2950 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 2949 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
2951 1); 2950 1);
2952 2951
2953 // Set a new cookie with a different name from a variety of origins (including 2952 // Set a new cookie with a different name from a variety of origins (including
2954 // the same one). 2953 // the same one).
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
3009 histograms.ExpectBucketCount(cookie_source_histogram, 3008 histograms.ExpectBucketCount(cookie_source_histogram,
3010 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT, 3009 CookieMonster::COOKIE_DELETE_EQUIVALENT_ATTEMPT,
3011 7); 3010 7);
3012 } 3011 }
3013 3012
3014 class CookieMonsterNotificationTest : public CookieMonsterTest { 3013 class CookieMonsterNotificationTest : public CookieMonsterTest {
3015 public: 3014 public:
3016 CookieMonsterNotificationTest() 3015 CookieMonsterNotificationTest()
3017 : test_url_("http://www.google.com/foo"), 3016 : test_url_("http://www.google.com/foo"),
3018 store_(new MockPersistentCookieStore), 3017 store_(new MockPersistentCookieStore),
3019 monster_(new CookieMonster(store_.get(), NULL)) {} 3018 monster_(new CookieMonster(store_.get(), nullptr)) {}
3020 3019
3021 ~CookieMonsterNotificationTest() override {} 3020 ~CookieMonsterNotificationTest() override {}
3022 3021
3023 CookieMonster* monster() { return monster_.get(); } 3022 CookieMonster* monster() { return monster_.get(); }
3024 3023
3025 protected: 3024 protected:
3026 const GURL test_url_; 3025 const GURL test_url_;
3027 3026
3028 private: 3027 private:
3029 scoped_refptr<MockPersistentCookieStore> store_; 3028 scoped_refptr<MockPersistentCookieStore> store_;
3030 scoped_refptr<CookieMonster> monster_; 3029 scoped_ptr<CookieMonster> monster_;
3031 }; 3030 };
3032 3031
3033 void RecordCookieChanges(std::vector<CanonicalCookie>* out_cookies, 3032 void RecordCookieChanges(std::vector<CanonicalCookie>* out_cookies,
3034 std::vector<bool>* out_removes, 3033 std::vector<bool>* out_removes,
3035 const CanonicalCookie& cookie, 3034 const CanonicalCookie& cookie,
3036 bool removed) { 3035 bool removed) {
3037 DCHECK(out_cookies); 3036 DCHECK(out_cookies);
3038 out_cookies->push_back(cookie); 3037 out_cookies->push_back(cookie);
3039 if (out_removes) 3038 if (out_removes)
3040 out_removes->push_back(removed); 3039 out_removes->push_back(removed);
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
3161 monster()->AddCallbackForCookie( 3160 monster()->AddCallbackForCookie(
3162 test_url_, "abc", 3161 test_url_, "abc",
3163 base::Bind(&RecordCookieChanges, &cookies1, nullptr))); 3162 base::Bind(&RecordCookieChanges, &cookies1, nullptr)));
3164 SetCookie(monster(), test_url_, "abc=def"); 3163 SetCookie(monster(), test_url_, "abc=def");
3165 base::MessageLoop::current()->RunUntilIdle(); 3164 base::MessageLoop::current()->RunUntilIdle();
3166 EXPECT_EQ(1U, cookies0.size()); 3165 EXPECT_EQ(1U, cookies0.size());
3167 EXPECT_EQ(1U, cookies0.size()); 3166 EXPECT_EQ(1U, cookies0.size());
3168 } 3167 }
3169 3168
3170 } // namespace net 3169 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698