OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <algorithm> | 5 #include <algorithm> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/memory/scoped_ptr.h" |
8 #include "base/message_loop/message_loop.h" | 10 #include "base/message_loop/message_loop.h" |
9 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
10 #include "base/strings/stringprintf.h" | 12 #include "base/strings/stringprintf.h" |
11 #include "base/test/perf_time_logger.h" | 13 #include "base/test/perf_time_logger.h" |
12 #include "net/cookies/canonical_cookie.h" | 14 #include "net/cookies/canonical_cookie.h" |
13 #include "net/cookies/cookie_monster.h" | 15 #include "net/cookies/cookie_monster.h" |
14 #include "net/cookies/cookie_monster_store_test.h" | 16 #include "net/cookies/cookie_monster_store_test.h" |
15 #include "net/cookies/parsed_cookie.h" | 17 #include "net/cookies/parsed_cookie.h" |
16 #include "testing/gtest/include/gtest/gtest.h" | 18 #include "testing/gtest/include/gtest/gtest.h" |
17 #include "url/gurl.h" | 19 #include "url/gurl.h" |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
112 cookie += kCookieLine; | 114 cookie += kCookieLine; |
113 base::PerfTimeLogger timer("Parsed_cookie_parse_big_cookies"); | 115 base::PerfTimeLogger timer("Parsed_cookie_parse_big_cookies"); |
114 for (int i = 0; i < kNumCookies; ++i) { | 116 for (int i = 0; i < kNumCookies; ++i) { |
115 ParsedCookie pc(cookie); | 117 ParsedCookie pc(cookie); |
116 EXPECT_TRUE(pc.IsValid()); | 118 EXPECT_TRUE(pc.IsValid()); |
117 } | 119 } |
118 timer.Done(); | 120 timer.Done(); |
119 } | 121 } |
120 | 122 |
121 TEST_F(CookieMonsterTest, TestAddCookiesOnSingleHost) { | 123 TEST_F(CookieMonsterTest, TestAddCookiesOnSingleHost) { |
122 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 124 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
123 std::vector<std::string> cookies; | 125 std::vector<std::string> cookies; |
124 for (int i = 0; i < kNumCookies; i++) { | 126 for (int i = 0; i < kNumCookies; i++) { |
125 cookies.push_back(base::StringPrintf("a%03d=b", i)); | 127 cookies.push_back(base::StringPrintf("a%03d=b", i)); |
126 } | 128 } |
127 | 129 |
128 SetCookieCallback setCookieCallback; | 130 SetCookieCallback setCookieCallback; |
129 | 131 |
130 // Add a bunch of cookies on a single host | 132 // Add a bunch of cookies on a single host |
131 base::PerfTimeLogger timer("Cookie_monster_add_single_host"); | 133 base::PerfTimeLogger timer("Cookie_monster_add_single_host"); |
132 | 134 |
(...skipping 12 matching lines...) Expand all Loading... |
145 } | 147 } |
146 timer2.Done(); | 148 timer2.Done(); |
147 | 149 |
148 base::PerfTimeLogger timer3("Cookie_monster_deleteall_single_host"); | 150 base::PerfTimeLogger timer3("Cookie_monster_deleteall_single_host"); |
149 cm->DeleteAllAsync(CookieMonster::DeleteCallback()); | 151 cm->DeleteAllAsync(CookieMonster::DeleteCallback()); |
150 base::MessageLoop::current()->RunUntilIdle(); | 152 base::MessageLoop::current()->RunUntilIdle(); |
151 timer3.Done(); | 153 timer3.Done(); |
152 } | 154 } |
153 | 155 |
154 TEST_F(CookieMonsterTest, TestAddCookieOnManyHosts) { | 156 TEST_F(CookieMonsterTest, TestAddCookieOnManyHosts) { |
155 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 157 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
156 std::string cookie(kCookieLine); | 158 std::string cookie(kCookieLine); |
157 std::vector<GURL> gurls; // just wanna have ffffuunnn | 159 std::vector<GURL> gurls; // just wanna have ffffuunnn |
158 for (int i = 0; i < kNumCookies; ++i) { | 160 for (int i = 0; i < kNumCookies; ++i) { |
159 gurls.push_back(GURL(base::StringPrintf("https://a%04d.izzle", i))); | 161 gurls.push_back(GURL(base::StringPrintf("https://a%04d.izzle", i))); |
160 } | 162 } |
161 | 163 |
162 SetCookieCallback setCookieCallback; | 164 SetCookieCallback setCookieCallback; |
163 | 165 |
164 // Add a cookie on a bunch of host | 166 // Add a cookie on a bunch of host |
165 base::PerfTimeLogger timer("Cookie_monster_add_many_hosts"); | 167 base::PerfTimeLogger timer("Cookie_monster_add_many_hosts"); |
(...skipping 12 matching lines...) Expand all Loading... |
178 } | 180 } |
179 timer2.Done(); | 181 timer2.Done(); |
180 | 182 |
181 base::PerfTimeLogger timer3("Cookie_monster_deleteall_many_hosts"); | 183 base::PerfTimeLogger timer3("Cookie_monster_deleteall_many_hosts"); |
182 cm->DeleteAllAsync(CookieMonster::DeleteCallback()); | 184 cm->DeleteAllAsync(CookieMonster::DeleteCallback()); |
183 base::MessageLoop::current()->RunUntilIdle(); | 185 base::MessageLoop::current()->RunUntilIdle(); |
184 timer3.Done(); | 186 timer3.Done(); |
185 } | 187 } |
186 | 188 |
187 TEST_F(CookieMonsterTest, TestDomainTree) { | 189 TEST_F(CookieMonsterTest, TestDomainTree) { |
188 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 190 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
189 GetCookiesCallback getCookiesCallback; | 191 GetCookiesCallback getCookiesCallback; |
190 SetCookieCallback setCookieCallback; | 192 SetCookieCallback setCookieCallback; |
191 const char domain_cookie_format_tree[] = "a=b; domain=%s"; | 193 const char domain_cookie_format_tree[] = "a=b; domain=%s"; |
192 const std::string domain_base("top.com"); | 194 const std::string domain_base("top.com"); |
193 | 195 |
194 std::vector<std::string> domain_list; | 196 std::vector<std::string> domain_list; |
195 | 197 |
196 // Create a balanced binary tree of domains on which the cookie is set. | 198 // Create a balanced binary tree of domains on which the cookie is set. |
197 domain_list.push_back(domain_base); | 199 domain_list.push_back(domain_base); |
198 for (int i1 = 0; i1 < 2; i1++) { | 200 for (int i1 = 0; i1 < 2; i1++) { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 EXPECT_EQ(5, CountInString(cookie_line, '=')) | 233 EXPECT_EQ(5, CountInString(cookie_line, '=')) |
232 << "Cookie line: " << cookie_line; | 234 << "Cookie line: " << cookie_line; |
233 base::PerfTimeLogger timer("Cookie_monster_query_domain_tree"); | 235 base::PerfTimeLogger timer("Cookie_monster_query_domain_tree"); |
234 for (int i = 0; i < kNumCookies; i++) { | 236 for (int i = 0; i < kNumCookies; i++) { |
235 getCookiesCallback.GetCookies(cm.get(), probe_gurl); | 237 getCookiesCallback.GetCookies(cm.get(), probe_gurl); |
236 } | 238 } |
237 timer.Done(); | 239 timer.Done(); |
238 } | 240 } |
239 | 241 |
240 TEST_F(CookieMonsterTest, TestDomainLine) { | 242 TEST_F(CookieMonsterTest, TestDomainLine) { |
241 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 243 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
242 SetCookieCallback setCookieCallback; | 244 SetCookieCallback setCookieCallback; |
243 GetCookiesCallback getCookiesCallback; | 245 GetCookiesCallback getCookiesCallback; |
244 std::vector<std::string> domain_list; | 246 std::vector<std::string> domain_list; |
245 GURL probe_gurl("https://b.a.b.a.top.com/"); | 247 GURL probe_gurl("https://b.a.b.a.top.com/"); |
246 std::string cookie_line; | 248 std::string cookie_line; |
247 | 249 |
248 // Create a line of 32 domain cookies such that all cookies stored | 250 // Create a line of 32 domain cookies such that all cookies stored |
249 // by effective TLD+1 will apply to probe GURL. | 251 // by effective TLD+1 will apply to probe GURL. |
250 // (TLD + 1 is the level above .com/org/net/etc, e.g. "top.com" | 252 // (TLD + 1 is the level above .com/org/net/etc, e.g. "top.com" |
251 // or "google.com". "Effective" is added to include sites like | 253 // or "google.com". "Effective" is added to include sites like |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
293 std::string cookie_line( | 295 std::string cookie_line( |
294 base::StringPrintf("Cookie_%d=1; Path=/", cookie_num)); | 296 base::StringPrintf("Cookie_%d=1; Path=/", cookie_num)); |
295 AddCookieToList(gurl, cookie_line, | 297 AddCookieToList(gurl, cookie_line, |
296 base::Time::FromInternalValue(time_tick++), | 298 base::Time::FromInternalValue(time_tick++), |
297 &initial_cookies); | 299 &initial_cookies); |
298 } | 300 } |
299 } | 301 } |
300 | 302 |
301 store->SetLoadExpectation(true, initial_cookies); | 303 store->SetLoadExpectation(true, initial_cookies); |
302 | 304 |
303 scoped_refptr<CookieMonster> cm(new CookieMonster(store.get(), NULL)); | 305 scoped_ptr<CookieMonster> cm(new CookieMonster(store.get(), nullptr)); |
304 | 306 |
305 // Import will happen on first access. | 307 // Import will happen on first access. |
306 GURL gurl("www.google.com"); | 308 GURL gurl("www.google.com"); |
307 CookieOptions options; | 309 CookieOptions options; |
308 base::PerfTimeLogger timer("Cookie_monster_import_from_store"); | 310 base::PerfTimeLogger timer("Cookie_monster_import_from_store"); |
309 getCookiesCallback.GetCookies(cm.get(), gurl); | 311 getCookiesCallback.GetCookies(cm.get(), gurl); |
310 timer.Done(); | 312 timer.Done(); |
311 | 313 |
312 // Just confirm keys were set as expected. | 314 // Just confirm keys were set as expected. |
313 EXPECT_EQ("domain_1.com", cm->GetKey("www.Domain_1.com")); | 315 EXPECT_EQ("domain_1.com", cm->GetKey("www.Domain_1.com")); |
314 } | 316 } |
315 | 317 |
316 TEST_F(CookieMonsterTest, TestGetKey) { | 318 TEST_F(CookieMonsterTest, TestGetKey) { |
317 scoped_refptr<CookieMonster> cm(new CookieMonster(NULL, NULL)); | 319 scoped_ptr<CookieMonster> cm(new CookieMonster(nullptr, nullptr)); |
318 base::PerfTimeLogger timer("Cookie_monster_get_key"); | 320 base::PerfTimeLogger timer("Cookie_monster_get_key"); |
319 for (int i = 0; i < kNumCookies; i++) | 321 for (int i = 0; i < kNumCookies; i++) |
320 cm->GetKey("www.google.com"); | 322 cm->GetKey("www.google.com"); |
321 timer.Done(); | 323 timer.Done(); |
322 } | 324 } |
323 | 325 |
324 // This test is probing for whether garbage collection happens when it | 326 // This test is probing for whether garbage collection happens when it |
325 // shouldn't. This will not in general be visible functionally, since | 327 // shouldn't. This will not in general be visible functionally, since |
326 // if GC runs twice in a row without any change to the store, the second | 328 // if GC runs twice in a row without any change to the store, the second |
327 // GC run will not do anything the first one didn't. That's why this is | 329 // GC run will not do anything the first one didn't. That's why this is |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
363 }, | 365 }, |
364 { | 366 { |
365 "less_than_gc_thresh", | 367 "less_than_gc_thresh", |
366 // Few enough cookies that gc shouldn't happen at all. | 368 // Few enough cookies that gc shouldn't happen at all. |
367 CookieMonster::kMaxCookies - 5, | 369 CookieMonster::kMaxCookies - 5, |
368 0, | 370 0, |
369 }, | 371 }, |
370 }; | 372 }; |
371 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) { | 373 for (int ci = 0; ci < static_cast<int>(arraysize(test_cases)); ++ci) { |
372 const TestCase& test_case(test_cases[ci]); | 374 const TestCase& test_case(test_cases[ci]); |
373 scoped_refptr<CookieMonster> cm(CreateMonsterFromStoreForGC( | 375 scoped_ptr<CookieMonster> cm = CreateMonsterFromStoreForGC( |
374 test_case.num_cookies, test_case.num_old_cookies, 0, 0, | 376 test_case.num_cookies, test_case.num_old_cookies, 0, 0, |
375 CookieMonster::kSafeFromGlobalPurgeDays * 2)); | 377 CookieMonster::kSafeFromGlobalPurgeDays * 2); |
376 | 378 |
377 GURL gurl("http://google.com"); | 379 GURL gurl("http://google.com"); |
378 std::string cookie_line("z=3"); | 380 std::string cookie_line("z=3"); |
379 // Trigger the Garbage collection we're allowed. | 381 // Trigger the Garbage collection we're allowed. |
380 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line); | 382 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line); |
381 | 383 |
382 base::PerfTimeLogger timer((std::string("GC_") + test_case.name).c_str()); | 384 base::PerfTimeLogger timer((std::string("GC_") + test_case.name).c_str()); |
383 for (int i = 0; i < kNumCookies; i++) | 385 for (int i = 0; i < kNumCookies; i++) |
384 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line); | 386 setCookieCallback.SetCookie(cm.get(), gurl, cookie_line); |
385 timer.Done(); | 387 timer.Done(); |
386 } | 388 } |
387 } | 389 } |
388 | 390 |
389 } // namespace net | 391 } // namespace net |
OLD | NEW |