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 #ifndef NET_COOKIES_COOKIE_STORE_UNITTEST_H_ | 5 #ifndef NET_COOKIES_COOKIE_STORE_UNITTEST_H_ |
6 #define NET_COOKIES_COOKIE_STORE_UNITTEST_H_ | 6 #define NET_COOKIES_COOKIE_STORE_UNITTEST_H_ |
7 | 7 |
8 #include <set> | |
9 #include <string> | |
10 #include <vector> | |
11 | |
8 #include "base/bind.h" | 12 #include "base/bind.h" |
9 #include "base/location.h" | 13 #include "base/location.h" |
10 #include "base/message_loop/message_loop.h" | 14 #include "base/message_loop/message_loop.h" |
11 #include "base/single_thread_task_runner.h" | 15 #include "base/single_thread_task_runner.h" |
16 #include "base/strings/string_split.h" | |
12 #include "base/strings/string_tokenizer.h" | 17 #include "base/strings/string_tokenizer.h" |
18 #include "base/strings/string_util.h" | |
13 #include "base/thread_task_runner_handle.h" | 19 #include "base/thread_task_runner_handle.h" |
14 #include "base/threading/thread.h" | 20 #include "base/threading/thread.h" |
15 #include "net/cookies/cookie_monster.h" | 21 #include "net/cookies/cookie_monster.h" |
16 #include "net/cookies/cookie_store.h" | 22 #include "net/cookies/cookie_store.h" |
17 #include "net/cookies/cookie_store_test_callbacks.h" | 23 #include "net/cookies/cookie_store_test_callbacks.h" |
18 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
19 #include "url/gurl.h" | 25 #include "url/gurl.h" |
20 | 26 |
21 #if defined(OS_IOS) | 27 #if defined(OS_IOS) |
22 #include "base/ios/ios_util.h" | 28 #include "base/ios/ios_util.h" |
23 #endif | 29 #endif |
24 | 30 |
25 // This file declares unittest templates that can be used to test common | 31 // This file declares unittest templates that can be used to test common |
26 // behavior of any CookieStore implementation. | 32 // behavior of any CookieStore implementation. |
27 // See cookie_monster_unittest.cc for an example of an implementation. | 33 // See cookie_monster_unittest.cc for an example of an implementation. |
28 | 34 |
29 namespace net { | 35 namespace net { |
30 | 36 |
31 using base::Thread; | 37 using base::Thread; |
32 | 38 |
33 const int kTimeout = 1000; | 39 const int kTimeout = 1000; |
34 | 40 |
35 const char kUrlFtp[] = "ftp://ftp.google.izzle/"; | |
36 const char kUrlGoogle[] = "http://www.google.izzle"; | |
37 const char kUrlGoogleFoo[] = "http://www.google.izzle/foo"; | |
38 const char kUrlGoogleBar[] = "http://www.google.izzle/bar"; | |
39 const char kUrlGoogleSecure[] = "https://www.google.izzle"; | |
40 const char kUrlGoogleWebSocket[] = "ws://www.google.izzle"; | |
41 const char kUrlGoogleWebSocketSecure[] = "wss://www.google.izzle"; | |
42 const char kValidCookieLine[] = "A=B; path=/"; | 41 const char kValidCookieLine[] = "A=B; path=/"; |
43 const char kValidDomainCookieLine[] = "A=B; path=/; domain=google.izzle"; | |
44 | 42 |
45 // The CookieStoreTestTraits must have the following members: | 43 // The CookieStoreTestTraits must have the following members: |
46 // struct CookieStoreTestTraits { | 44 // struct CookieStoreTestTraits { |
47 // // Factory function. | 45 // // Factory function. |
48 // static scoped_refptr<CookieStore> Create(); | 46 // static scoped_refptr<CookieStore> Create(); |
49 // | 47 // |
50 // // The cookie store is a CookieMonster. Only used to test | 48 // // The cookie store is a CookieMonster. Only used to test |
51 // // GetCookieMonster(). | 49 // // GetCookieMonster(). |
52 // static const bool is_cookie_monster; | 50 // static const bool is_cookie_monster; |
53 // | 51 // |
(...skipping 16 matching lines...) Expand all Loading... | |
70 // static const bool has_path_prefix_bug; | 68 // static const bool has_path_prefix_bug; |
71 // | 69 // |
72 // // Time to wait between two cookie insertions to ensure that cookies have | 70 // // Time to wait between two cookie insertions to ensure that cookies have |
73 // // different creation times. | 71 // // different creation times. |
74 // static const int creation_time_granularity_in_ms; | 72 // static const int creation_time_granularity_in_ms; |
75 // }; | 73 // }; |
76 | 74 |
77 template <class CookieStoreTestTraits> | 75 template <class CookieStoreTestTraits> |
78 class CookieStoreTest : public testing::Test { | 76 class CookieStoreTest : public testing::Test { |
79 protected: | 77 protected: |
78 class URLHelper { | |
79 public: | |
80 explicit URLHelper(const std::string& url_string) : url_(url_string) { | |
81 std::vector<std::string> parts = SplitString( | |
Mike West
2015/10/09 15:08:15
This constructor should be in a `.cc` file.
cmumford
2015/10/09 21:21:01
Done.
| |
82 url_.host(), ".", base::KEEP_WHITESPACE, base::SPLIT_WANT_ALL); | |
83 DCHECK_EQ(parts.size(), 3u); | |
84 parts.erase(parts.begin()); | |
85 domain_ = base::JoinString(parts, "."); | |
Mike West
2015/10/09 15:08:16
I think you're trying to get the registerable doma
cmumford
2015/10/09 21:21:01
Done - thx for that pointer.
| |
86 tld_ = parts[1]; | |
Mike West
2015/10/09 15:08:16
This isn't how TLDs work. Consider `co.uk`, for ex
cmumford
2015/10/09 21:21:00
Yeah - I was only trying to satisfy the needs of t
| |
87 } | |
88 const std::string& TLD() const { return tld_; } | |
89 const std::string& domain() const { return domain_; } | |
90 std::string host() const { return url_.host(); } | |
91 std::string spec() const { return url_.spec(); } | |
92 const GURL& url() const { return url_; } | |
93 const GURL AppendPath(const std::string& path) const { | |
94 return GURL(url_.spec() + path); | |
95 } | |
96 std::string Format(const std::string& format_string) const { | |
97 std::string new_string = format_string; | |
Mike West
2015/10/09 15:08:15
This should also be in a `.cc` file.
cmumford
2015/10/09 21:21:01
Done.
| |
98 base::ReplaceSubstringsAfterOffset(&new_string, 0, "%D", domain()); | |
99 base::ReplaceSubstringsAfterOffset(&new_string, 0, "%T", TLD()); | |
100 return new_string; | |
101 } | |
102 | |
103 private: | |
104 const GURL url_; | |
105 std::string tld_; | |
106 std::string domain_; | |
107 }; | |
108 | |
80 CookieStoreTest() | 109 CookieStoreTest() |
81 : url_google_(kUrlGoogle), | 110 : http_www_google_("http://www.google.izzle"), |
82 url_google_secure_(kUrlGoogleSecure), | 111 https_www_google_("https://www.google.izzle"), |
83 url_google_foo_(kUrlGoogleFoo), | 112 ftp_google_("ftp://ftp.google.izzle/"), |
84 url_google_bar_(kUrlGoogleBar) { | 113 ws_www_google_("ws://www.google.izzle"), |
114 wss_www_google_("wss://www.google.izzle"), | |
115 www_google_foo_("http://www.google.izzle/foo"), | |
116 www_google_bar_("http://www.google.izzle/bar") { | |
85 // This test may be used outside of the net test suite, and thus may not | 117 // This test may be used outside of the net test suite, and thus may not |
86 // have a message loop. | 118 // have a message loop. |
87 if (!base::MessageLoop::current()) | 119 if (!base::MessageLoop::current()) |
88 message_loop_.reset(new base::MessageLoop); | 120 message_loop_.reset(new base::MessageLoop); |
89 weak_factory_.reset(new base::WeakPtrFactory<base::MessageLoop>( | 121 weak_factory_.reset(new base::WeakPtrFactory<base::MessageLoop>( |
90 base::MessageLoop::current())); | 122 base::MessageLoop::current())); |
91 } | 123 } |
92 | 124 |
93 // Helper methods for the asynchronous Cookie Store API that call the | 125 // Helper methods for the asynchronous Cookie Store API that call the |
94 // asynchronous method and then pump the loop until the callback is invoked, | 126 // asynchronous method and then pump the loop until the callback is invoked, |
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
245 while (!matched && base::Time::Now() <= polling_end_date) { | 277 while (!matched && base::Time::Now() <= polling_end_date) { |
246 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); | 278 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); |
247 cookies = GetCookies(cs, url); | 279 cookies = GetCookies(cs, url); |
248 matched = (TokenizeCookieLine(line) == TokenizeCookieLine(cookies)); | 280 matched = (TokenizeCookieLine(line) == TokenizeCookieLine(cookies)); |
249 } | 281 } |
250 | 282 |
251 EXPECT_TRUE(matched) << "\"" << cookies | 283 EXPECT_TRUE(matched) << "\"" << cookies |
252 << "\" does not match \"" << line << "\""; | 284 << "\" does not match \"" << line << "\""; |
253 } | 285 } |
254 | 286 |
255 GURL url_google_; | 287 const URLHelper http_www_google_; |
256 GURL url_google_secure_; | 288 const URLHelper https_www_google_; |
257 GURL url_google_foo_; | 289 const URLHelper ftp_google_; |
258 GURL url_google_bar_; | 290 const URLHelper ws_www_google_; |
291 const URLHelper wss_www_google_; | |
292 const URLHelper www_google_foo_; | |
293 const URLHelper www_google_bar_; | |
259 | 294 |
260 scoped_ptr<base::WeakPtrFactory<base::MessageLoop> > weak_factory_; | 295 scoped_ptr<base::WeakPtrFactory<base::MessageLoop> > weak_factory_; |
261 scoped_ptr<base::MessageLoop> message_loop_; | 296 scoped_ptr<base::MessageLoop> message_loop_; |
262 | 297 |
263 private: | 298 private: |
264 // Returns a set of strings of type "name=value". Fails in case of duplicate. | 299 // Returns a set of strings of type "name=value". Fails in case of duplicate. |
265 std::set<std::string> TokenizeCookieLine(const std::string& line) { | 300 std::set<std::string> TokenizeCookieLine(const std::string& line) { |
266 std::set<std::string> tokens; | 301 std::set<std::string> tokens; |
267 base::StringTokenizer tokenizer(line, " ;"); | 302 base::StringTokenizer tokenizer(line, " ;"); |
268 while (tokenizer.GetNext()) | 303 while (tokenizer.GetNext()) |
269 EXPECT_TRUE(tokens.insert(tokenizer.token()).second); | 304 EXPECT_TRUE(tokens.insert(tokenizer.token()).second); |
270 return tokens; | 305 return tokens; |
271 } | 306 } |
272 }; | 307 }; |
273 | 308 |
274 TYPED_TEST_CASE_P(CookieStoreTest); | 309 TYPED_TEST_CASE_P(CookieStoreTest); |
275 | 310 |
276 TYPED_TEST_P(CookieStoreTest, TypeTest) { | 311 TYPED_TEST_P(CookieStoreTest, TypeTest) { |
277 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 312 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
278 EXPECT_EQ(cs->GetCookieMonster(), | 313 EXPECT_EQ(cs->GetCookieMonster(), |
279 (TypeParam::is_cookie_monster) ? | 314 (TypeParam::is_cookie_monster) ? |
280 static_cast<CookieMonster*>(cs.get()) : NULL); | 315 static_cast<CookieMonster*>(cs.get()) : NULL); |
281 } | 316 } |
282 | 317 |
283 TYPED_TEST_P(CookieStoreTest, DomainTest) { | 318 TYPED_TEST_P(CookieStoreTest, DomainTest) { |
284 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 319 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
285 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "A=B")); | 320 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=B")); |
286 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 321 this->MatchCookieLines( |
287 EXPECT_TRUE(this->SetCookie( | 322 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); |
288 cs.get(), this->url_google_, "C=D; domain=.google.izzle")); | 323 EXPECT_TRUE( |
289 this->MatchCookieLines("A=B; C=D", | 324 this->SetCookie(cs.get(), this->http_www_google_.url(), |
290 this->GetCookies(cs.get(), this->url_google_)); | 325 this->http_www_google_.Format("C=D; domain=.%D"))); |
326 this->MatchCookieLines( | |
327 "A=B; C=D", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
291 | 328 |
292 // Verify that A=B was set as a host cookie rather than a domain | 329 // Verify that A=B was set as a host cookie rather than a domain |
293 // cookie -- should not be accessible from a sub sub-domain. | 330 // cookie -- should not be accessible from a sub sub-domain. |
294 this->MatchCookieLines( | 331 this->MatchCookieLines( |
295 "C=D", this->GetCookies(cs.get(), GURL("http://foo.www.google.izzle"))); | 332 "C=D", |
333 this->GetCookies( | |
334 cs.get(), GURL(this->http_www_google_.Format("http://foo.www.%D")))); | |
296 | 335 |
297 // Test and make sure we find domain cookies on the same domain. | 336 // Test and make sure we find domain cookies on the same domain. |
298 EXPECT_TRUE(this->SetCookie( | 337 EXPECT_TRUE( |
299 cs.get(), this->url_google_, "E=F; domain=.www.google.izzle")); | 338 this->SetCookie(cs.get(), this->http_www_google_.url(), |
300 this->MatchCookieLines("A=B; C=D; E=F", | 339 this->http_www_google_.Format("E=F; domain=.www.%D"))); |
301 this->GetCookies(cs.get(), this->url_google_)); | 340 this->MatchCookieLines( |
341 "A=B; C=D; E=F", | |
342 this->GetCookies(cs.get(), this->http_www_google_.url())); | |
302 | 343 |
303 // Test setting a domain= that doesn't start w/ a dot, should | 344 // Test setting a domain= that doesn't start w/ a dot, should |
304 // treat it as a domain cookie, as if there was a pre-pended dot. | 345 // treat it as a domain cookie, as if there was a pre-pended dot. |
305 EXPECT_TRUE(this->SetCookie( | 346 EXPECT_TRUE( |
306 cs.get(), this->url_google_, "G=H; domain=www.google.izzle")); | 347 this->SetCookie(cs.get(), this->http_www_google_.url(), |
307 this->MatchCookieLines("A=B; C=D; E=F; G=H", | 348 this->http_www_google_.Format("G=H; domain=www.%D"))); |
308 this->GetCookies(cs.get(), this->url_google_)); | 349 this->MatchCookieLines( |
350 "A=B; C=D; E=F; G=H", | |
351 this->GetCookies(cs.get(), this->http_www_google_.url())); | |
309 | 352 |
310 // Test domain enforcement, should fail on a sub-domain or something too deep. | 353 // Test domain enforcement, should fail on a sub-domain or something too deep. |
311 EXPECT_FALSE( | 354 EXPECT_FALSE( |
312 this->SetCookie(cs.get(), this->url_google_, "I=J; domain=.izzle")); | 355 this->SetCookie(cs.get(), this->http_www_google_.url(), |
313 this->MatchCookieLines(std::string(), | 356 this->http_www_google_.Format("I=J; domain=.%T"))); |
314 this->GetCookies(cs.get(), GURL("http://a.izzle"))); | 357 this->MatchCookieLines( |
358 std::string(), | |
359 this->GetCookies(cs.get(), | |
360 GURL(this->http_www_google_.Format("http://a.%T")))); | |
315 EXPECT_FALSE(this->SetCookie( | 361 EXPECT_FALSE(this->SetCookie( |
316 cs.get(), this->url_google_, "K=L; domain=.bla.www.google.izzle")); | 362 cs.get(), this->http_www_google_.url(), |
363 this->http_www_google_.Format("K=L; domain=.bla.www.%D"))); | |
317 this->MatchCookieLines( | 364 this->MatchCookieLines( |
318 "C=D; E=F; G=H", | 365 "C=D; E=F; G=H", |
319 this->GetCookies(cs.get(), GURL("http://bla.www.google.izzle"))); | 366 this->GetCookies( |
320 this->MatchCookieLines("A=B; C=D; E=F; G=H", | 367 cs.get(), GURL(this->http_www_google_.Format("http://bla.www.%D")))); |
321 this->GetCookies(cs.get(), this->url_google_)); | 368 this->MatchCookieLines( |
369 "A=B; C=D; E=F; G=H", | |
370 this->GetCookies(cs.get(), this->http_www_google_.url())); | |
322 } | 371 } |
323 | 372 |
324 // FireFox recognizes domains containing trailing periods as valid. | 373 // FireFox recognizes domains containing trailing periods as valid. |
325 // IE and Safari do not. Assert the expected policy here. | 374 // IE and Safari do not. Assert the expected policy here. |
326 TYPED_TEST_P(CookieStoreTest, DomainWithTrailingDotTest) { | 375 TYPED_TEST_P(CookieStoreTest, DomainWithTrailingDotTest) { |
327 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 376 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
328 EXPECT_FALSE(this->SetCookie( | 377 EXPECT_FALSE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
329 cs.get(), this->url_google_, "a=1; domain=.www.google.com.")); | 378 "a=1; domain=.www.google.com.")); |
330 EXPECT_FALSE(this->SetCookie( | 379 EXPECT_FALSE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
331 cs.get(), this->url_google_, "b=2; domain=.www.google.com..")); | 380 "b=2; domain=.www.google.com..")); |
332 this->MatchCookieLines(std::string(), | 381 this->MatchCookieLines( |
333 this->GetCookies(cs.get(), this->url_google_)); | 382 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
334 } | 383 } |
335 | 384 |
336 // Test that cookies can bet set on higher level domains. | 385 // Test that cookies can bet set on higher level domains. |
337 // http://b/issue?id=896491 | 386 // http://b/issue?id=896491 |
338 TYPED_TEST_P(CookieStoreTest, ValidSubdomainTest) { | 387 TYPED_TEST_P(CookieStoreTest, ValidSubdomainTest) { |
339 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 388 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
340 GURL url_abcd("http://a.b.c.d.com"); | 389 GURL url_abcd("http://a.b.c.d.com"); |
341 GURL url_bcd("http://b.c.d.com"); | 390 GURL url_bcd("http://b.c.d.com"); |
342 GURL url_cd("http://c.d.com"); | 391 GURL url_cd("http://c.d.com"); |
343 GURL url_d("http://d.com"); | 392 GURL url_d("http://d.com"); |
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
592 this->GetCookies(cs.get(), GURL("http://hopefully-no-cookies.com/"))); | 641 this->GetCookies(cs.get(), GURL("http://hopefully-no-cookies.com/"))); |
593 this->MatchCookieLines(std::string(), | 642 this->MatchCookieLines(std::string(), |
594 this->GetCookies(cs.get(), GURL("http://.com/"))); | 643 this->GetCookies(cs.get(), GURL("http://.com/"))); |
595 } | 644 } |
596 | 645 |
597 TYPED_TEST_P(CookieStoreTest, InvalidScheme) { | 646 TYPED_TEST_P(CookieStoreTest, InvalidScheme) { |
598 if (!TypeParam::filters_schemes) | 647 if (!TypeParam::filters_schemes) |
599 return; | 648 return; |
600 | 649 |
601 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 650 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
602 EXPECT_FALSE(this->SetCookie(cs.get(), GURL(kUrlFtp), kValidCookieLine)); | 651 EXPECT_FALSE( |
652 this->SetCookie(cs.get(), this->ftp_google_.url(), kValidCookieLine)); | |
603 } | 653 } |
604 | 654 |
605 TYPED_TEST_P(CookieStoreTest, InvalidScheme_Read) { | 655 TYPED_TEST_P(CookieStoreTest, InvalidScheme_Read) { |
606 if (!TypeParam::filters_schemes) | 656 if (!TypeParam::filters_schemes) |
607 return; | 657 return; |
608 | 658 |
659 const std::string kValidDomainCookieLine = | |
660 this->http_www_google_.Format("A=B; path=/; domain=%D"); | |
661 | |
609 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 662 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
610 EXPECT_TRUE( | 663 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
611 this->SetCookie(cs.get(), GURL(kUrlGoogle), kValidDomainCookieLine)); | 664 kValidDomainCookieLine)); |
612 this->MatchCookieLines(std::string(), | 665 this->MatchCookieLines(std::string(), |
613 this->GetCookies(cs.get(), GURL(kUrlFtp))); | 666 this->GetCookies(cs.get(), this->ftp_google_.url())); |
614 } | 667 } |
615 | 668 |
616 TYPED_TEST_P(CookieStoreTest, PathTest) { | 669 TYPED_TEST_P(CookieStoreTest, PathTest) { |
617 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 670 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
618 std::string url("http://www.google.izzle"); | 671 std::string url("http://www.google.izzle"); |
619 EXPECT_TRUE(this->SetCookie(cs.get(), GURL(url), "A=B; path=/wee")); | 672 EXPECT_TRUE(this->SetCookie(cs.get(), GURL(url), "A=B; path=/wee")); |
620 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), GURL(url + "/wee"))); | 673 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), GURL(url + "/wee"))); |
621 this->MatchCookieLines("A=B", | 674 this->MatchCookieLines("A=B", |
622 this->GetCookies(cs.get(), GURL(url + "/wee/"))); | 675 this->GetCookies(cs.get(), GURL(url + "/wee/"))); |
623 this->MatchCookieLines("A=B", | 676 this->MatchCookieLines("A=B", |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
664 | 717 |
665 TYPED_TEST_P(CookieStoreTest, HttpOnlyTest) { | 718 TYPED_TEST_P(CookieStoreTest, HttpOnlyTest) { |
666 if (!TypeParam::supports_http_only) | 719 if (!TypeParam::supports_http_only) |
667 return; | 720 return; |
668 | 721 |
669 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 722 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
670 CookieOptions options; | 723 CookieOptions options; |
671 options.set_include_httponly(); | 724 options.set_include_httponly(); |
672 | 725 |
673 // Create a httponly cookie. | 726 // Create a httponly cookie. |
674 EXPECT_TRUE(this->SetCookieWithOptions( | 727 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
675 cs.get(), this->url_google_, "A=B; httponly", options)); | 728 "A=B; httponly", options)); |
676 | 729 |
677 // Check httponly read protection. | 730 // Check httponly read protection. |
678 this->MatchCookieLines(std::string(), | |
679 this->GetCookies(cs.get(), this->url_google_)); | |
680 this->MatchCookieLines( | 731 this->MatchCookieLines( |
681 "A=B", this->GetCookiesWithOptions(cs.get(), this->url_google_, options)); | 732 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
733 this->MatchCookieLines( | |
734 "A=B", this->GetCookiesWithOptions(cs.get(), this->http_www_google_.url(), | |
735 options)); | |
682 | 736 |
683 // Check httponly overwrite protection. | 737 // Check httponly overwrite protection. |
684 EXPECT_FALSE(this->SetCookie(cs.get(), this->url_google_, "A=C")); | 738 EXPECT_FALSE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=C")); |
685 this->MatchCookieLines(std::string(), | |
686 this->GetCookies(cs.get(), this->url_google_)); | |
687 this->MatchCookieLines( | 739 this->MatchCookieLines( |
688 "A=B", this->GetCookiesWithOptions(cs.get(), this->url_google_, options)); | 740 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
689 EXPECT_TRUE( | 741 this->MatchCookieLines( |
690 this->SetCookieWithOptions(cs.get(), this->url_google_, "A=C", options)); | 742 "A=B", this->GetCookiesWithOptions(cs.get(), this->http_www_google_.url(), |
691 this->MatchCookieLines("A=C", this->GetCookies(cs.get(), this->url_google_)); | 743 options)); |
744 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), | |
745 "A=C", options)); | |
746 this->MatchCookieLines( | |
747 "A=C", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
692 | 748 |
693 // Check httponly create protection. | 749 // Check httponly create protection. |
694 EXPECT_FALSE(this->SetCookie(cs.get(), this->url_google_, "B=A; httponly")); | 750 EXPECT_FALSE( |
751 this->SetCookie(cs.get(), this->http_www_google_.url(), "B=A; httponly")); | |
695 this->MatchCookieLines( | 752 this->MatchCookieLines( |
696 "A=C", this->GetCookiesWithOptions(cs.get(), this->url_google_, options)); | 753 "A=C", this->GetCookiesWithOptions(cs.get(), this->http_www_google_.url(), |
697 EXPECT_TRUE(this->SetCookieWithOptions( | 754 options)); |
698 cs.get(), this->url_google_, "B=A; httponly", options)); | 755 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
756 "B=A; httponly", options)); | |
757 this->MatchCookieLines("A=C; B=A", | |
758 this->GetCookiesWithOptions( | |
759 cs.get(), this->http_www_google_.url(), options)); | |
699 this->MatchCookieLines( | 760 this->MatchCookieLines( |
700 "A=C; B=A", | 761 "A=C", this->GetCookies(cs.get(), this->http_www_google_.url())); |
701 this->GetCookiesWithOptions(cs.get(), this->url_google_, options)); | |
702 this->MatchCookieLines("A=C", this->GetCookies(cs.get(), this->url_google_)); | |
703 } | 762 } |
704 | 763 |
705 TYPED_TEST_P(CookieStoreTest, TestCookieDeletion) { | 764 TYPED_TEST_P(CookieStoreTest, TestCookieDeletion) { |
706 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 765 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
707 | 766 |
708 // Create a session cookie. | 767 // Create a session cookie. |
709 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, kValidCookieLine)); | 768 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
710 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 769 kValidCookieLine)); |
770 this->MatchCookieLines( | |
771 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
711 // Delete it via Max-Age. | 772 // Delete it via Max-Age. |
712 EXPECT_TRUE(this->SetCookie(cs.get(), | 773 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
713 this->url_google_, | |
714 std::string(kValidCookieLine) + "; max-age=0")); | 774 std::string(kValidCookieLine) + "; max-age=0")); |
715 this->MatchCookieLineWithTimeout(cs.get(), this->url_google_, std::string()); | 775 this->MatchCookieLineWithTimeout(cs.get(), this->http_www_google_.url(), |
776 std::string()); | |
716 | 777 |
717 // Create a session cookie. | 778 // Create a session cookie. |
718 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, kValidCookieLine)); | 779 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
719 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 780 kValidCookieLine)); |
781 this->MatchCookieLines( | |
782 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
720 // Delete it via Expires. | 783 // Delete it via Expires. |
721 EXPECT_TRUE(this->SetCookie(cs.get(), | 784 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
722 this->url_google_, | |
723 std::string(kValidCookieLine) + | 785 std::string(kValidCookieLine) + |
724 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); | 786 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); |
725 this->MatchCookieLines(std::string(), | 787 this->MatchCookieLines( |
726 this->GetCookies(cs.get(), this->url_google_)); | 788 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
727 | 789 |
728 // Create a persistent cookie. | 790 // Create a persistent cookie. |
729 EXPECT_TRUE(this->SetCookie( | 791 EXPECT_TRUE(this->SetCookie( |
730 cs.get(), | 792 cs.get(), this->http_www_google_.url(), |
731 this->url_google_, | |
732 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 793 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
733 | 794 |
734 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 795 this->MatchCookieLines( |
796 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
735 // Delete it via Max-Age. | 797 // Delete it via Max-Age. |
736 EXPECT_TRUE(this->SetCookie(cs.get(), | 798 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
737 this->url_google_, | |
738 std::string(kValidCookieLine) + "; max-age=0")); | 799 std::string(kValidCookieLine) + "; max-age=0")); |
739 this->MatchCookieLineWithTimeout(cs.get(), this->url_google_, std::string()); | 800 this->MatchCookieLineWithTimeout(cs.get(), this->http_www_google_.url(), |
801 std::string()); | |
740 | 802 |
741 // Create a persistent cookie. | 803 // Create a persistent cookie. |
742 EXPECT_TRUE(this->SetCookie( | 804 EXPECT_TRUE(this->SetCookie( |
743 cs.get(), | 805 cs.get(), this->http_www_google_.url(), |
744 this->url_google_, | |
745 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 806 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
746 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 807 this->MatchCookieLines( |
808 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
747 // Delete it via Expires. | 809 // Delete it via Expires. |
748 EXPECT_TRUE(this->SetCookie(cs.get(), | 810 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
749 this->url_google_, | |
750 std::string(kValidCookieLine) + | 811 std::string(kValidCookieLine) + |
751 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); | 812 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); |
752 this->MatchCookieLines(std::string(), | 813 this->MatchCookieLines( |
753 this->GetCookies(cs.get(), this->url_google_)); | 814 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
754 | 815 |
755 // Create a persistent cookie. | 816 // Create a persistent cookie. |
756 EXPECT_TRUE(this->SetCookie( | 817 EXPECT_TRUE(this->SetCookie( |
757 cs.get(), | 818 cs.get(), this->http_www_google_.url(), |
758 this->url_google_, | |
759 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 819 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
760 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 820 this->MatchCookieLines( |
821 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
761 // Check that it is not deleted with significant enough clock skew. | 822 // Check that it is not deleted with significant enough clock skew. |
762 base::Time server_time; | 823 base::Time server_time; |
763 EXPECT_TRUE(base::Time::FromString("Sun, 17-Apr-1977 22:50:13 GMT", | 824 EXPECT_TRUE(base::Time::FromString("Sun, 17-Apr-1977 22:50:13 GMT", |
764 &server_time)); | 825 &server_time)); |
765 EXPECT_TRUE(this->SetCookieWithServerTime( | 826 EXPECT_TRUE(this->SetCookieWithServerTime( |
766 cs.get(), | 827 cs.get(), this->http_www_google_.url(), |
767 this->url_google_, | |
768 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-1977 22:50:13 GMT", | 828 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-1977 22:50:13 GMT", |
769 server_time)); | 829 server_time)); |
770 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 830 this->MatchCookieLines( |
831 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
771 | 832 |
772 // Create a persistent cookie. | 833 // Create a persistent cookie. |
773 EXPECT_TRUE(this->SetCookie( | 834 EXPECT_TRUE(this->SetCookie( |
774 cs.get(), | 835 cs.get(), this->http_www_google_.url(), |
775 this->url_google_, | |
776 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 836 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
777 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 837 this->MatchCookieLines( |
838 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
778 // Delete it via Expires, with a unix epoch of 0. | 839 // Delete it via Expires, with a unix epoch of 0. |
779 EXPECT_TRUE(this->SetCookie(cs.get(), | 840 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), |
780 this->url_google_, | |
781 std::string(kValidCookieLine) + | 841 std::string(kValidCookieLine) + |
782 "; expires=Thu, 1-Jan-1970 00:00:00 GMT")); | 842 "; expires=Thu, 1-Jan-1970 00:00:00 GMT")); |
783 this->MatchCookieLines(std::string(), | 843 this->MatchCookieLines( |
784 this->GetCookies(cs.get(), this->url_google_)); | 844 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
785 } | 845 } |
786 | 846 |
787 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetween) { | 847 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetween) { |
788 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 848 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
789 const base::Time last_month = base::Time::Now() - | 849 const base::Time last_month = base::Time::Now() - |
790 base::TimeDelta::FromDays(30); | 850 base::TimeDelta::FromDays(30); |
791 const base::Time last_minute = base::Time::Now() - | 851 const base::Time last_minute = base::Time::Now() - |
792 base::TimeDelta::FromMinutes(1); | 852 base::TimeDelta::FromMinutes(1); |
793 const base::Time next_minute = base::Time::Now() + | 853 const base::Time next_minute = base::Time::Now() + |
794 base::TimeDelta::FromMinutes(1); | 854 base::TimeDelta::FromMinutes(1); |
795 const base::Time next_month = base::Time::Now() + | 855 const base::Time next_month = base::Time::Now() + |
796 base::TimeDelta::FromDays(30); | 856 base::TimeDelta::FromDays(30); |
797 | 857 |
798 // Add a cookie. | 858 // Add a cookie. |
799 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "A=B")); | 859 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=B")); |
800 // Check that the cookie is in the store. | 860 // Check that the cookie is in the store. |
801 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 861 this->MatchCookieLines( |
862 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
802 | 863 |
803 // Remove cookies in empty intervals. | 864 // Remove cookies in empty intervals. |
804 EXPECT_EQ(0, this->DeleteCreatedBetween(cs.get(), last_month, last_minute)); | 865 EXPECT_EQ(0, this->DeleteCreatedBetween(cs.get(), last_month, last_minute)); |
805 EXPECT_EQ(0, this->DeleteCreatedBetween(cs.get(), next_minute, next_month)); | 866 EXPECT_EQ(0, this->DeleteCreatedBetween(cs.get(), next_minute, next_month)); |
806 // Check that the cookie is still there. | 867 // Check that the cookie is still there. |
807 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 868 this->MatchCookieLines( |
869 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
808 | 870 |
809 // Remove the cookie with an interval defined by two dates. | 871 // Remove the cookie with an interval defined by two dates. |
810 EXPECT_EQ(1, this->DeleteCreatedBetween(cs.get(), last_minute, next_minute)); | 872 EXPECT_EQ(1, this->DeleteCreatedBetween(cs.get(), last_minute, next_minute)); |
811 // Check that the cookie disappeared. | 873 // Check that the cookie disappeared. |
812 this->MatchCookieLines(std::string(), | 874 this->MatchCookieLines( |
813 this->GetCookies(cs.get(), this->url_google_)); | 875 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
814 | 876 |
815 // Add another cookie. | 877 // Add another cookie. |
816 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "C=D")); | 878 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "C=D")); |
817 // Check that the cookie is in the store. | 879 // Check that the cookie is in the store. |
818 this->MatchCookieLines("C=D", this->GetCookies(cs.get(), this->url_google_)); | 880 this->MatchCookieLines( |
881 "C=D", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
819 | 882 |
820 // Remove the cookie with a null ending time. | 883 // Remove the cookie with a null ending time. |
821 EXPECT_EQ(1, this->DeleteCreatedBetween(cs.get(), last_minute, base::Time())); | 884 EXPECT_EQ(1, this->DeleteCreatedBetween(cs.get(), last_minute, base::Time())); |
822 // Check that the cookie disappeared. | 885 // Check that the cookie disappeared. |
823 this->MatchCookieLines(std::string(), | 886 this->MatchCookieLines( |
824 this->GetCookies(cs.get(), this->url_google_)); | 887 std::string(), this->GetCookies(cs.get(), this->http_www_google_.url())); |
825 } | 888 } |
826 | 889 |
827 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetweenForHost) { | 890 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetweenForHost) { |
828 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 891 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
829 GURL url_not_google("http://www.notgoogle.com"); | 892 GURL url_not_google("http://www.notgoogle.com"); |
830 base::Time now = base::Time::Now(); | 893 base::Time now = base::Time::Now(); |
831 | 894 |
832 // These 3 cookies match the time range and host. | 895 // These 3 cookies match the time range and host. |
833 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "A=B")); | 896 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=B")); |
834 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "C=D")); | 897 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "C=D")); |
835 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "Y=Z")); | 898 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "Y=Z")); |
836 | 899 |
837 // This cookie does not match host. | 900 // This cookie does not match host. |
838 EXPECT_TRUE(this->SetCookie(cs.get(), url_not_google, "E=F")); | 901 EXPECT_TRUE(this->SetCookie(cs.get(), url_not_google, "E=F")); |
839 | 902 |
840 // Delete cookies. | 903 // Delete cookies. |
841 EXPECT_EQ( | 904 EXPECT_EQ( |
842 3, // Deletes A=B, C=D, Y=Z | 905 3, // Deletes A=B, C=D, Y=Z |
843 this->DeleteAllCreatedBetweenForHost( | 906 this->DeleteAllCreatedBetweenForHost(cs.get(), now, base::Time::Max(), |
844 cs.get(), now, base::Time::Max(), this->url_google_)); | 907 this->http_www_google_.url())); |
845 } | 908 } |
846 | 909 |
847 TYPED_TEST_P(CookieStoreTest, TestSecure) { | 910 TYPED_TEST_P(CookieStoreTest, TestSecure) { |
848 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 911 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
849 | 912 |
850 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "A=B")); | 913 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=B")); |
851 this->MatchCookieLines("A=B", | |
852 this->GetCookies(cs.get(), this->url_google_)); | |
853 this->MatchCookieLines( | 914 this->MatchCookieLines( |
854 "A=B", this->GetCookies(cs.get(), this->url_google_secure_)); | 915 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); |
916 this->MatchCookieLines( | |
917 "A=B", this->GetCookies(cs.get(), this->https_www_google_.url())); | |
855 | 918 |
856 EXPECT_TRUE( | 919 EXPECT_TRUE(this->SetCookie(cs.get(), this->https_www_google_.url(), |
857 this->SetCookie(cs.get(), this->url_google_secure_, "A=B; secure")); | 920 "A=B; secure")); |
858 // The secure should overwrite the non-secure. | 921 // The secure should overwrite the non-secure. |
859 this->MatchCookieLines(std::string(), | 922 this->MatchCookieLines( |
860 this->GetCookies(cs.get(), this->url_google_)); | 923 std::string(), |
861 this->MatchCookieLines("A=B", | 924 this->GetCookies(cs.get(), this->http_www_google_.url())); |
862 this->GetCookies(cs.get(), this->url_google_secure_)); | 925 this->MatchCookieLines( |
926 "A=B", this->GetCookies(cs.get(), this->https_www_google_.url())); | |
863 | 927 |
864 EXPECT_TRUE( | 928 EXPECT_TRUE(this->SetCookie(cs.get(), this->https_www_google_.url(), |
865 this->SetCookie(cs.get(), this->url_google_secure_, "D=E; secure")); | 929 "D=E; secure")); |
866 this->MatchCookieLines(std::string(), | 930 this->MatchCookieLines( |
867 this->GetCookies(cs.get(), this->url_google_)); | 931 std::string(), |
868 this->MatchCookieLines("A=B; D=E", | 932 this->GetCookies(cs.get(), this->http_www_google_.url())); |
869 this->GetCookies(cs.get(), this->url_google_secure_)); | 933 this->MatchCookieLines( |
934 "A=B; D=E", this->GetCookies(cs.get(), this->https_www_google_.url())); | |
870 | 935 |
871 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_secure_, "A=B")); | 936 EXPECT_TRUE( |
937 this->SetCookie(cs.get(), this->https_www_google_.url(), "A=B")); | |
872 // The non-secure should overwrite the secure. | 938 // The non-secure should overwrite the secure. |
873 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 939 this->MatchCookieLines( |
874 this->MatchCookieLines("D=E; A=B", | 940 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); |
875 this->GetCookies(cs.get(), this->url_google_secure_)); | 941 this->MatchCookieLines( |
942 "D=E; A=B", this->GetCookies(cs.get(), this->https_www_google_.url())); | |
876 } | 943 } |
877 | 944 |
878 static const int kLastAccessThresholdMilliseconds = 200; | 945 static const int kLastAccessThresholdMilliseconds = 200; |
879 | 946 |
880 // Formerly NetUtilTest.CookieTest back when we used wininet's cookie handling. | 947 // Formerly NetUtilTest.CookieTest back when we used wininet's cookie handling. |
881 TYPED_TEST_P(CookieStoreTest, NetUtilCookieTest) { | 948 TYPED_TEST_P(CookieStoreTest, NetUtilCookieTest) { |
882 const GURL test_url("http://mojo.jojo.google.izzle/"); | 949 const GURL test_url("http://mojo.jojo.google.izzle/"); |
883 | 950 |
884 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 951 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
885 | 952 |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
986 EXPECT_TRUE(this->SetCookie( | 1053 EXPECT_TRUE(this->SetCookie( |
987 cs.get(), GURL("http://news.bbc.co.uk/midpath/x.html"), "g=10")); | 1054 cs.get(), GURL("http://news.bbc.co.uk/midpath/x.html"), "g=10")); |
988 EXPECT_EQ("d=1; a=4; e=1; b=1; c=1", | 1055 EXPECT_EQ("d=1; a=4; e=1; b=1; c=1", |
989 this->GetCookies(cs.get(), | 1056 this->GetCookies(cs.get(), |
990 GURL("http://d.c.b.a.google.com/aa/bb/cc/dd"))); | 1057 GURL("http://d.c.b.a.google.com/aa/bb/cc/dd"))); |
991 } | 1058 } |
992 | 1059 |
993 TYPED_TEST_P(CookieStoreTest, DeleteSessionCookie) { | 1060 TYPED_TEST_P(CookieStoreTest, DeleteSessionCookie) { |
994 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 1061 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
995 // Create a session cookie and a persistent cookie. | 1062 // Create a session cookie and a persistent cookie. |
1063 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), | |
1064 std::string(kValidCookieLine))); | |
996 EXPECT_TRUE(this->SetCookie( | 1065 EXPECT_TRUE(this->SetCookie( |
997 cs.get(), this->url_google_, std::string(kValidCookieLine))); | 1066 cs.get(), this->http_www_google_.url(), |
998 EXPECT_TRUE(this->SetCookie(cs.get(), | 1067 this->http_www_google_.Format("C=D; path=/; domain=%D;" |
999 this->url_google_, | 1068 "expires=Mon, 18-Apr-22 22:50:13 GMT"))); |
1000 "C=D; path=/; domain=google.izzle;" | 1069 this->MatchCookieLines( |
1001 "expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1070 "A=B; C=D", this->GetCookies(cs.get(), this->http_www_google_.url())); |
1002 this->MatchCookieLines("A=B; C=D", | |
1003 this->GetCookies(cs.get(), this->url_google_)); | |
1004 // Delete the session cookie. | 1071 // Delete the session cookie. |
1005 this->DeleteSessionCookies(cs.get()); | 1072 this->DeleteSessionCookies(cs.get()); |
1006 // Check that the session cookie has been deleted but not the persistent one. | 1073 // Check that the session cookie has been deleted but not the persistent one. |
1007 EXPECT_EQ("C=D", this->GetCookies(cs.get(), this->url_google_)); | 1074 EXPECT_EQ("C=D", this->GetCookies(cs.get(), this->http_www_google_.url())); |
1008 } | 1075 } |
1009 | 1076 |
1010 REGISTER_TYPED_TEST_CASE_P(CookieStoreTest, | 1077 REGISTER_TYPED_TEST_CASE_P(CookieStoreTest, |
1011 TypeTest, | 1078 TypeTest, |
1012 DomainTest, | 1079 DomainTest, |
1013 DomainWithTrailingDotTest, | 1080 DomainWithTrailingDotTest, |
1014 ValidSubdomainTest, | 1081 ValidSubdomainTest, |
1015 InvalidDomainTest, | 1082 InvalidDomainTest, |
1016 DomainWithoutLeadingDotTest, | 1083 DomainWithoutLeadingDotTest, |
1017 CaseInsensitiveDomainTest, | 1084 CaseInsensitiveDomainTest, |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1103 Thread other_thread_; | 1170 Thread other_thread_; |
1104 }; | 1171 }; |
1105 | 1172 |
1106 TYPED_TEST_CASE_P(MultiThreadedCookieStoreTest); | 1173 TYPED_TEST_CASE_P(MultiThreadedCookieStoreTest); |
1107 | 1174 |
1108 // TODO(ycxiao): Eventually, we will need to create a separate thread, create | 1175 // TODO(ycxiao): Eventually, we will need to create a separate thread, create |
1109 // the cookie store on that thread (or at least its store, i.e., the DB | 1176 // the cookie store on that thread (or at least its store, i.e., the DB |
1110 // thread). | 1177 // thread). |
1111 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckGetCookies) { | 1178 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckGetCookies) { |
1112 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 1179 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
1113 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "A=B")); | 1180 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=B")); |
1114 this->MatchCookieLines("A=B", this->GetCookies(cs.get(), this->url_google_)); | 1181 this->MatchCookieLines( |
1182 "A=B", this->GetCookies(cs.get(), this->http_www_google_.url())); | |
1115 StringResultCookieCallback callback(&this->other_thread_); | 1183 StringResultCookieCallback callback(&this->other_thread_); |
1116 base::Closure task = | 1184 base::Closure task = base::Bind( |
1117 base::Bind(&MultiThreadedCookieStoreTest<TypeParam>::GetCookiesTask, | 1185 &MultiThreadedCookieStoreTest<TypeParam>::GetCookiesTask, |
1118 base::Unretained(this), cs, this->url_google_, &callback); | 1186 base::Unretained(this), cs, this->http_www_google_.url(), &callback); |
1119 this->RunOnOtherThread(task); | 1187 this->RunOnOtherThread(task); |
1120 EXPECT_TRUE(callback.did_run()); | 1188 EXPECT_TRUE(callback.did_run()); |
1121 EXPECT_EQ("A=B", callback.result()); | 1189 EXPECT_EQ("A=B", callback.result()); |
1122 } | 1190 } |
1123 | 1191 |
1124 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckGetCookiesWithOptions) { | 1192 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckGetCookiesWithOptions) { |
1125 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 1193 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
1126 CookieOptions options; | 1194 CookieOptions options; |
1127 if (!TypeParam::supports_http_only) | 1195 if (!TypeParam::supports_http_only) |
1128 options.set_include_httponly(); | 1196 options.set_include_httponly(); |
1129 EXPECT_TRUE(this->SetCookie(cs.get(), this->url_google_, "A=B")); | 1197 EXPECT_TRUE(this->SetCookie(cs.get(), this->http_www_google_.url(), "A=B")); |
1130 this->MatchCookieLines( | 1198 this->MatchCookieLines( |
1131 "A=B", this->GetCookiesWithOptions(cs.get(), this->url_google_, options)); | 1199 "A=B", this->GetCookiesWithOptions(cs.get(), this->http_www_google_.url(), |
1200 options)); | |
1132 StringResultCookieCallback callback(&this->other_thread_); | 1201 StringResultCookieCallback callback(&this->other_thread_); |
1133 base::Closure task = base::Bind( | 1202 base::Closure task = base::Bind( |
1134 &MultiThreadedCookieStoreTest<TypeParam>::GetCookiesWithOptionsTask, | 1203 &MultiThreadedCookieStoreTest<TypeParam>::GetCookiesWithOptionsTask, |
1135 base::Unretained(this), cs, this->url_google_, options, &callback); | 1204 base::Unretained(this), cs, this->http_www_google_.url(), options, |
1205 &callback); | |
1136 this->RunOnOtherThread(task); | 1206 this->RunOnOtherThread(task); |
1137 EXPECT_TRUE(callback.did_run()); | 1207 EXPECT_TRUE(callback.did_run()); |
1138 EXPECT_EQ("A=B", callback.result()); | 1208 EXPECT_EQ("A=B", callback.result()); |
1139 } | 1209 } |
1140 | 1210 |
1141 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckSetCookieWithOptions) { | 1211 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckSetCookieWithOptions) { |
1142 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 1212 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
1143 CookieOptions options; | 1213 CookieOptions options; |
1144 if (!TypeParam::supports_http_only) | 1214 if (!TypeParam::supports_http_only) |
1145 options.set_include_httponly(); | 1215 options.set_include_httponly(); |
1146 EXPECT_TRUE( | 1216 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
1147 this->SetCookieWithOptions(cs.get(), this->url_google_, "A=B", options)); | 1217 "A=B", options)); |
1148 ResultSavingCookieCallback<bool> callback(&this->other_thread_); | 1218 ResultSavingCookieCallback<bool> callback(&this->other_thread_); |
1149 base::Closure task = base::Bind( | 1219 base::Closure task = base::Bind( |
1150 &MultiThreadedCookieStoreTest<TypeParam>::SetCookieWithOptionsTask, | 1220 &MultiThreadedCookieStoreTest<TypeParam>::SetCookieWithOptionsTask, |
1151 base::Unretained(this), cs, this->url_google_, "A=B", options, &callback); | 1221 base::Unretained(this), cs, this->http_www_google_.url(), "A=B", options, |
1222 &callback); | |
1152 this->RunOnOtherThread(task); | 1223 this->RunOnOtherThread(task); |
1153 EXPECT_TRUE(callback.did_run()); | 1224 EXPECT_TRUE(callback.did_run()); |
1154 EXPECT_TRUE(callback.result()); | 1225 EXPECT_TRUE(callback.result()); |
1155 } | 1226 } |
1156 | 1227 |
1157 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckDeleteCookie) { | 1228 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckDeleteCookie) { |
1158 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 1229 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
1159 CookieOptions options; | 1230 CookieOptions options; |
1160 if (!TypeParam::supports_http_only) | 1231 if (!TypeParam::supports_http_only) |
1161 options.set_include_httponly(); | 1232 options.set_include_httponly(); |
1162 EXPECT_TRUE( | 1233 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
1163 this->SetCookieWithOptions(cs.get(), this->url_google_, "A=B", options)); | 1234 "A=B", options)); |
1164 this->DeleteCookie(cs.get(), this->url_google_, "A"); | 1235 this->DeleteCookie(cs.get(), this->http_www_google_.url(), "A"); |
1165 EXPECT_TRUE( | 1236 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
1166 this->SetCookieWithOptions(cs.get(), this->url_google_, "A=B", options)); | 1237 "A=B", options)); |
1167 NoResultCookieCallback callback(&this->other_thread_); | 1238 NoResultCookieCallback callback(&this->other_thread_); |
1168 base::Closure task = | 1239 base::Closure task = base::Bind( |
1169 base::Bind(&MultiThreadedCookieStoreTest<TypeParam>::DeleteCookieTask, | 1240 &MultiThreadedCookieStoreTest<TypeParam>::DeleteCookieTask, |
1170 base::Unretained(this), cs, this->url_google_, "A", &callback); | 1241 base::Unretained(this), cs, this->http_www_google_.url(), "A", &callback); |
1171 this->RunOnOtherThread(task); | 1242 this->RunOnOtherThread(task); |
1172 EXPECT_TRUE(callback.did_run()); | 1243 EXPECT_TRUE(callback.did_run()); |
1173 } | 1244 } |
1174 | 1245 |
1175 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckDeleteSessionCookies) { | 1246 TYPED_TEST_P(MultiThreadedCookieStoreTest, ThreadCheckDeleteSessionCookies) { |
1176 scoped_refptr<CookieStore> cs(this->GetCookieStore()); | 1247 scoped_refptr<CookieStore> cs(this->GetCookieStore()); |
1177 CookieOptions options; | 1248 CookieOptions options; |
1178 if (!TypeParam::supports_http_only) | 1249 if (!TypeParam::supports_http_only) |
1179 options.set_include_httponly(); | 1250 options.set_include_httponly(); |
1180 EXPECT_TRUE( | 1251 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
1181 this->SetCookieWithOptions(cs.get(), this->url_google_, "A=B", options)); | 1252 "A=B", options)); |
1182 EXPECT_TRUE( | 1253 EXPECT_TRUE(this->SetCookieWithOptions( |
1183 this->SetCookieWithOptions(cs.get(), | 1254 cs.get(), this->http_www_google_.url(), |
1184 this->url_google_, | 1255 "B=C; expires=Mon, 18-Apr-22 22:50:13 GMT", options)); |
1185 "B=C; expires=Mon, 18-Apr-22 22:50:13 GMT", | |
1186 options)); | |
1187 EXPECT_EQ(1, this->DeleteSessionCookies(cs.get())); | 1256 EXPECT_EQ(1, this->DeleteSessionCookies(cs.get())); |
1188 EXPECT_EQ(0, this->DeleteSessionCookies(cs.get())); | 1257 EXPECT_EQ(0, this->DeleteSessionCookies(cs.get())); |
1189 EXPECT_TRUE( | 1258 EXPECT_TRUE(this->SetCookieWithOptions(cs.get(), this->http_www_google_.url(), |
1190 this->SetCookieWithOptions(cs.get(), this->url_google_, "A=B", options)); | 1259 "A=B", options)); |
1191 ResultSavingCookieCallback<int> callback(&this->other_thread_); | 1260 ResultSavingCookieCallback<int> callback(&this->other_thread_); |
1192 base::Closure task = base::Bind( | 1261 base::Closure task = base::Bind( |
1193 &MultiThreadedCookieStoreTest<TypeParam>::DeleteSessionCookiesTask, | 1262 &MultiThreadedCookieStoreTest<TypeParam>::DeleteSessionCookiesTask, |
1194 base::Unretained(this), cs, &callback); | 1263 base::Unretained(this), cs, &callback); |
1195 this->RunOnOtherThread(task); | 1264 this->RunOnOtherThread(task); |
1196 EXPECT_TRUE(callback.did_run()); | 1265 EXPECT_TRUE(callback.did_run()); |
1197 EXPECT_EQ(1, callback.result()); | 1266 EXPECT_EQ(1, callback.result()); |
1198 } | 1267 } |
1199 | 1268 |
1200 REGISTER_TYPED_TEST_CASE_P(MultiThreadedCookieStoreTest, | 1269 REGISTER_TYPED_TEST_CASE_P(MultiThreadedCookieStoreTest, |
1201 ThreadCheckGetCookies, | 1270 ThreadCheckGetCookies, |
1202 ThreadCheckGetCookiesWithOptions, | 1271 ThreadCheckGetCookiesWithOptions, |
1203 ThreadCheckSetCookieWithOptions, | 1272 ThreadCheckSetCookieWithOptions, |
1204 ThreadCheckDeleteCookie, | 1273 ThreadCheckDeleteCookie, |
1205 ThreadCheckDeleteSessionCookies); | 1274 ThreadCheckDeleteSessionCookies); |
1206 | 1275 |
1207 } // namespace net | 1276 } // namespace net |
1208 | 1277 |
1209 #endif // NET_COOKIES_COOKIE_STORE_UNITTEST_H_ | 1278 #endif // NET_COOKIES_COOKIE_STORE_UNITTEST_H_ |
OLD | NEW |