| 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> | 8 #include <set> |
| 9 #include <string> | 9 #include <string> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 64 // | 64 // |
| 65 // // Time to wait between two cookie insertions to ensure that cookies have | 65 // // Time to wait between two cookie insertions to ensure that cookies have |
| 66 // // different creation times. | 66 // // different creation times. |
| 67 // static const int creation_time_granularity_in_ms; | 67 // static const int creation_time_granularity_in_ms; |
| 68 // }; | 68 // }; |
| 69 | 69 |
| 70 template <class CookieStoreTestTraits> | 70 template <class CookieStoreTestTraits> |
| 71 class CookieStoreTest : public testing::Test { | 71 class CookieStoreTest : public testing::Test { |
| 72 protected: | 72 protected: |
| 73 CookieStoreTest() | 73 CookieStoreTest() |
| 74 : http_www_google_("http://www.google.izzle"), | 74 : http_www_foo_("http://www.foo.com"), |
| 75 https_www_google_("https://www.google.izzle"), | 75 https_www_foo_("https://www.foo.com"), |
| 76 ftp_google_("ftp://ftp.google.izzle/"), | 76 ftp_foo_("ftp://ftp.foo.com/"), |
| 77 ws_www_google_("ws://www.google.izzle"), | 77 ws_www_foo_("ws://www.foo.com"), |
| 78 wss_www_google_("wss://www.google.izzle"), | 78 wss_www_foo_("wss://www.foo.com"), |
| 79 www_google_foo_("http://www.google.izzle/foo"), | 79 www_foo_foo_("http://www.foo.com/foo"), |
| 80 www_google_bar_("http://www.google.izzle/bar"), | 80 www_foo_bar_("http://www.foo.com/bar"), |
| 81 http_foo_com_("http://foo.com"), | 81 http_baz_com_("http://baz.com"), |
| 82 http_bar_com_("http://bar.com") { | 82 http_bar_com_("http://bar.com") { |
| 83 // This test may be used outside of the net test suite, and thus may not | 83 // This test may be used outside of the net test suite, and thus may not |
| 84 // have a message loop. | 84 // have a message loop. |
| 85 if (!base::MessageLoop::current()) | 85 if (!base::MessageLoop::current()) |
| 86 message_loop_.reset(new base::MessageLoop); | 86 message_loop_.reset(new base::MessageLoop); |
| 87 weak_factory_.reset(new base::WeakPtrFactory<base::MessageLoop>( | 87 weak_factory_.reset(new base::WeakPtrFactory<base::MessageLoop>( |
| 88 base::MessageLoop::current())); | 88 base::MessageLoop::current())); |
| 89 } | 89 } |
| 90 | 90 |
| 91 // Helper methods for the asynchronous Cookie Store API that call the | 91 // Helper methods for the asynchronous Cookie Store API that call the |
| (...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 296 while (!matched && base::Time::Now() <= polling_end_date) { | 296 while (!matched && base::Time::Now() <= polling_end_date) { |
| 297 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); | 297 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(10)); |
| 298 cookies = GetCookies(cs, url); | 298 cookies = GetCookies(cs, url); |
| 299 matched = (TokenizeCookieLine(line) == TokenizeCookieLine(cookies)); | 299 matched = (TokenizeCookieLine(line) == TokenizeCookieLine(cookies)); |
| 300 } | 300 } |
| 301 | 301 |
| 302 EXPECT_TRUE(matched) << "\"" << cookies | 302 EXPECT_TRUE(matched) << "\"" << cookies |
| 303 << "\" does not match \"" << line << "\""; | 303 << "\" does not match \"" << line << "\""; |
| 304 } | 304 } |
| 305 | 305 |
| 306 const CookieURLHelper http_www_google_; | 306 const CookieURLHelper http_www_foo_; |
| 307 const CookieURLHelper https_www_google_; | 307 const CookieURLHelper https_www_foo_; |
| 308 const CookieURLHelper ftp_google_; | 308 const CookieURLHelper ftp_foo_; |
| 309 const CookieURLHelper ws_www_google_; | 309 const CookieURLHelper ws_www_foo_; |
| 310 const CookieURLHelper wss_www_google_; | 310 const CookieURLHelper wss_www_foo_; |
| 311 const CookieURLHelper www_google_foo_; | 311 const CookieURLHelper www_foo_foo_; |
| 312 const CookieURLHelper www_google_bar_; | 312 const CookieURLHelper www_foo_bar_; |
| 313 const CookieURLHelper http_foo_com_; | 313 const CookieURLHelper http_baz_com_; |
| 314 const CookieURLHelper http_bar_com_; | 314 const CookieURLHelper http_bar_com_; |
| 315 | 315 |
| 316 std::unique_ptr<base::WeakPtrFactory<base::MessageLoop>> weak_factory_; | 316 std::unique_ptr<base::WeakPtrFactory<base::MessageLoop>> weak_factory_; |
| 317 std::unique_ptr<base::MessageLoop> message_loop_; | 317 std::unique_ptr<base::MessageLoop> message_loop_; |
| 318 | 318 |
| 319 private: | 319 private: |
| 320 // Returns a set of strings of type "name=value". Fails in case of duplicate. | 320 // Returns a set of strings of type "name=value". Fails in case of duplicate. |
| 321 std::set<std::string> TokenizeCookieLine(const std::string& line) { | 321 std::set<std::string> TokenizeCookieLine(const std::string& line) { |
| 322 std::set<std::string> tokens; | 322 std::set<std::string> tokens; |
| 323 base::StringTokenizer tokenizer(line, " ;"); | 323 base::StringTokenizer tokenizer(line, " ;"); |
| 324 while (tokenizer.GetNext()) | 324 while (tokenizer.GetNext()) |
| 325 EXPECT_TRUE(tokens.insert(tokenizer.token()).second); | 325 EXPECT_TRUE(tokens.insert(tokenizer.token()).second); |
| 326 return tokens; | 326 return tokens; |
| 327 } | 327 } |
| 328 | 328 |
| 329 std::unique_ptr<CookieStore> cookie_store_; | 329 std::unique_ptr<CookieStore> cookie_store_; |
| 330 }; | 330 }; |
| 331 | 331 |
| 332 TYPED_TEST_CASE_P(CookieStoreTest); | 332 TYPED_TEST_CASE_P(CookieStoreTest); |
| 333 | 333 |
| 334 TYPED_TEST_P(CookieStoreTest, SetCookieWithDetailsAsync) { | 334 TYPED_TEST_P(CookieStoreTest, SetCookieWithDetailsAsync) { |
| 335 CookieStore* cs = this->GetCookieStore(); | 335 CookieStore* cs = this->GetCookieStore(); |
| 336 | 336 |
| 337 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); | 337 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); |
| 338 base::Time one_hour_ago = base::Time::Now() - base::TimeDelta::FromHours(1); | 338 base::Time one_hour_ago = base::Time::Now() - base::TimeDelta::FromHours(1); |
| 339 base::Time one_hour_from_now = | 339 base::Time one_hour_from_now = |
| 340 base::Time::Now() + base::TimeDelta::FromHours(1); | 340 base::Time::Now() + base::TimeDelta::FromHours(1); |
| 341 | 341 |
| 342 EXPECT_TRUE(this->SetCookieWithDetails( | 342 EXPECT_TRUE(this->SetCookieWithDetails( |
| 343 cs, this->www_google_foo_.url(), "A", "B", std::string(), "/foo", | 343 cs, this->www_foo_foo_.url(), "A", "B", std::string(), "/foo", |
| 344 one_hour_ago, one_hour_from_now, base::Time(), false, false, | 344 one_hour_ago, one_hour_from_now, base::Time(), false, false, |
| 345 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 345 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 346 // Note that for the creation time to be set exactly, without modification, | 346 // Note that for the creation time to be set exactly, without modification, |
| 347 // it must be different from the one set by the line above. | 347 // it must be different from the one set by the line above. |
| 348 EXPECT_TRUE(this->SetCookieWithDetails( | 348 EXPECT_TRUE(this->SetCookieWithDetails( |
| 349 cs, this->www_google_bar_.url(), "C", "D", this->www_google_bar_.domain(), | 349 cs, this->www_foo_bar_.url(), "C", "D", this->www_foo_bar_.domain(), |
| 350 "/bar", two_hours_ago, base::Time(), one_hour_ago, false, true, | 350 "/bar", two_hours_ago, base::Time(), one_hour_ago, false, true, |
| 351 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 351 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 352 // Because of strict secure cookies, a cookie made by an HTTP URL should fail | 352 // Because of strict secure cookies, a cookie made by an HTTP URL should fail |
| 353 // to create a cookie with a the secure attribute. | 353 // to create a cookie with a the secure attribute. |
| 354 EXPECT_FALSE(this->SetCookieWithDetails( | 354 EXPECT_FALSE(this->SetCookieWithDetails( |
| 355 cs, this->http_www_google_.url(), "E", "F", std::string(), std::string(), | 355 cs, this->http_www_foo_.url(), "E", "F", std::string(), std::string(), |
| 356 base::Time(), base::Time(), base::Time(), true, false, | 356 base::Time(), base::Time(), base::Time(), true, false, |
| 357 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 357 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 358 EXPECT_TRUE(this->SetCookieWithDetails( | 358 EXPECT_TRUE(this->SetCookieWithDetails( |
| 359 cs, this->https_www_google_.url(), "E", "F", std::string(), std::string(), | 359 cs, this->https_www_foo_.url(), "E", "F", std::string(), std::string(), |
| 360 base::Time(), base::Time(), base::Time(), true, false, | 360 base::Time(), base::Time(), base::Time(), true, false, |
| 361 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 361 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 362 | 362 |
| 363 // Test that malformed attributes fail to set the cookie. | 363 // Test that malformed attributes fail to set the cookie. |
| 364 EXPECT_FALSE(this->SetCookieWithDetails( | 364 EXPECT_FALSE(this->SetCookieWithDetails( |
| 365 cs, this->www_google_foo_.url(), " A", "B", std::string(), "/foo", | 365 cs, this->www_foo_foo_.url(), " A", "B", std::string(), "/foo", |
| 366 base::Time(), base::Time(), base::Time(), false, false, | 366 base::Time(), base::Time(), base::Time(), false, false, |
| 367 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 367 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 368 EXPECT_FALSE(this->SetCookieWithDetails( | 368 EXPECT_FALSE(this->SetCookieWithDetails( |
| 369 cs, this->www_google_foo_.url(), "A;", "B", std::string(), "/foo", | 369 cs, this->www_foo_foo_.url(), "A;", "B", std::string(), "/foo", |
| 370 base::Time(), base::Time(), base::Time(), false, false, | 370 base::Time(), base::Time(), base::Time(), false, false, |
| 371 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 371 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 372 EXPECT_FALSE(this->SetCookieWithDetails( | 372 EXPECT_FALSE(this->SetCookieWithDetails( |
| 373 cs, this->www_google_foo_.url(), "A=", "B", std::string(), "/foo", | 373 cs, this->www_foo_foo_.url(), "A=", "B", std::string(), "/foo", |
| 374 base::Time(), base::Time(), base::Time(), false, false, | 374 base::Time(), base::Time(), base::Time(), false, false, |
| 375 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 375 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 376 EXPECT_FALSE(this->SetCookieWithDetails( | 376 EXPECT_FALSE(this->SetCookieWithDetails( |
| 377 cs, this->www_google_foo_.url(), "A", "B", "google.ozzzzzzle", "foo", | 377 cs, this->www_foo_foo_.url(), "A", "B", "foo.ozzzzzzle", "foo", |
| 378 base::Time(), base::Time(), base::Time(), false, false, | 378 base::Time(), base::Time(), base::Time(), false, false, |
| 379 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 379 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 380 EXPECT_FALSE(this->SetCookieWithDetails( | 380 EXPECT_FALSE(this->SetCookieWithDetails( |
| 381 cs, this->www_google_foo_.url(), "A=", "B", std::string(), "foo", | 381 cs, this->www_foo_foo_.url(), "A=", "B", std::string(), "foo", |
| 382 base::Time(), base::Time(), base::Time(), false, false, | 382 base::Time(), base::Time(), base::Time(), false, false, |
| 383 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); | 383 CookieSameSite::DEFAULT_MODE, COOKIE_PRIORITY_DEFAULT)); |
| 384 | 384 |
| 385 // Get all the cookies for a given URL, regardless of properties. This 'get()' | 385 // Get all the cookies for a given URL, regardless of properties. This 'get()' |
| 386 // operation shouldn't update the access time, as the test checks that the | 386 // operation shouldn't update the access time, as the test checks that the |
| 387 // access time is set properly upon creation. Updating the access time would | 387 // access time is set properly upon creation. Updating the access time would |
| 388 // make that difficult. | 388 // make that difficult. |
| 389 CookieOptions options; | 389 CookieOptions options; |
| 390 options.set_include_httponly(); | 390 options.set_include_httponly(); |
| 391 options.set_same_site_cookie_mode( | 391 options.set_same_site_cookie_mode( |
| 392 CookieOptions::SameSiteCookieMode::INCLUDE_STRICT_AND_LAX); | 392 CookieOptions::SameSiteCookieMode::INCLUDE_STRICT_AND_LAX); |
| 393 options.set_do_not_update_access_time(); | 393 options.set_do_not_update_access_time(); |
| 394 | 394 |
| 395 CookieList cookies = | 395 CookieList cookies = |
| 396 this->GetCookieListWithOptions(cs, this->www_google_foo_.url(), options); | 396 this->GetCookieListWithOptions(cs, this->www_foo_foo_.url(), options); |
| 397 CookieList::iterator it = cookies.begin(); | 397 CookieList::iterator it = cookies.begin(); |
| 398 | 398 |
| 399 ASSERT_TRUE(it != cookies.end()); | 399 ASSERT_TRUE(it != cookies.end()); |
| 400 EXPECT_EQ("A", it->Name()); | 400 EXPECT_EQ("A", it->Name()); |
| 401 EXPECT_EQ("B", it->Value()); | 401 EXPECT_EQ("B", it->Value()); |
| 402 EXPECT_EQ(this->www_google_foo_.host(), it->Domain()); | 402 EXPECT_EQ(this->www_foo_foo_.host(), it->Domain()); |
| 403 EXPECT_EQ("/foo", it->Path()); | 403 EXPECT_EQ("/foo", it->Path()); |
| 404 EXPECT_EQ(one_hour_ago, it->CreationDate()); | 404 EXPECT_EQ(one_hour_ago, it->CreationDate()); |
| 405 EXPECT_TRUE(it->IsPersistent()); | 405 EXPECT_TRUE(it->IsPersistent()); |
| 406 // Expect expiration date is in the right range. Some cookie implementations | 406 // Expect expiration date is in the right range. Some cookie implementations |
| 407 // may not record it with millisecond accuracy. | 407 // may not record it with millisecond accuracy. |
| 408 EXPECT_LE((one_hour_from_now - it->ExpiryDate()).magnitude().InSeconds(), 5); | 408 EXPECT_LE((one_hour_from_now - it->ExpiryDate()).magnitude().InSeconds(), 5); |
| 409 // Some CookieStores don't store last access date. | 409 // Some CookieStores don't store last access date. |
| 410 if (!it->LastAccessDate().is_null()) | 410 if (!it->LastAccessDate().is_null()) |
| 411 EXPECT_EQ(one_hour_ago, it->LastAccessDate()); | 411 EXPECT_EQ(one_hour_ago, it->LastAccessDate()); |
| 412 EXPECT_FALSE(it->IsSecure()); | 412 EXPECT_FALSE(it->IsSecure()); |
| 413 EXPECT_FALSE(it->IsHttpOnly()); | 413 EXPECT_FALSE(it->IsHttpOnly()); |
| 414 | 414 |
| 415 ASSERT_TRUE(++it == cookies.end()); | 415 ASSERT_TRUE(++it == cookies.end()); |
| 416 | 416 |
| 417 // Verify that the cookie was set as 'httponly' by passing in a CookieOptions | 417 // Verify that the cookie was set as 'httponly' by passing in a CookieOptions |
| 418 // that excludes them and getting an empty result. | 418 // that excludes them and getting an empty result. |
| 419 if (TypeParam::supports_http_only) { | 419 if (TypeParam::supports_http_only) { |
| 420 cookies = this->GetCookieListWithOptions(cs, this->www_google_bar_.url(), | 420 cookies = this->GetCookieListWithOptions(cs, this->www_foo_bar_.url(), |
| 421 CookieOptions()); | 421 CookieOptions()); |
| 422 it = cookies.begin(); | 422 it = cookies.begin(); |
| 423 ASSERT_TRUE(it == cookies.end()); | 423 ASSERT_TRUE(it == cookies.end()); |
| 424 } | 424 } |
| 425 | 425 |
| 426 // Get the cookie using the wide open |options|: | 426 // Get the cookie using the wide open |options|: |
| 427 cookies = | 427 cookies = |
| 428 this->GetCookieListWithOptions(cs, this->www_google_bar_.url(), options); | 428 this->GetCookieListWithOptions(cs, this->www_foo_bar_.url(), options); |
| 429 it = cookies.begin(); | 429 it = cookies.begin(); |
| 430 | 430 |
| 431 ASSERT_TRUE(it != cookies.end()); | 431 ASSERT_TRUE(it != cookies.end()); |
| 432 EXPECT_EQ("C", it->Name()); | 432 EXPECT_EQ("C", it->Name()); |
| 433 EXPECT_EQ("D", it->Value()); | 433 EXPECT_EQ("D", it->Value()); |
| 434 EXPECT_EQ(this->www_google_bar_.Format(".%D"), it->Domain()); | 434 EXPECT_EQ(this->www_foo_bar_.Format(".%D"), it->Domain()); |
| 435 EXPECT_EQ("/bar", it->Path()); | 435 EXPECT_EQ("/bar", it->Path()); |
| 436 EXPECT_EQ(two_hours_ago, it->CreationDate()); | 436 EXPECT_EQ(two_hours_ago, it->CreationDate()); |
| 437 EXPECT_FALSE(it->IsPersistent()); | 437 EXPECT_FALSE(it->IsPersistent()); |
| 438 // Some CookieStores don't store last access date. | 438 // Some CookieStores don't store last access date. |
| 439 if (!it->LastAccessDate().is_null()) | 439 if (!it->LastAccessDate().is_null()) |
| 440 EXPECT_EQ(one_hour_ago, it->LastAccessDate()); | 440 EXPECT_EQ(one_hour_ago, it->LastAccessDate()); |
| 441 EXPECT_FALSE(it->IsSecure()); | 441 EXPECT_FALSE(it->IsSecure()); |
| 442 EXPECT_TRUE(it->IsHttpOnly()); | 442 EXPECT_TRUE(it->IsHttpOnly()); |
| 443 | 443 |
| 444 EXPECT_TRUE(++it == cookies.end()); | 444 EXPECT_TRUE(++it == cookies.end()); |
| 445 | 445 |
| 446 cookies = this->GetCookieListWithOptions(cs, this->https_www_google_.url(), | 446 cookies = |
| 447 options); | 447 this->GetCookieListWithOptions(cs, this->https_www_foo_.url(), options); |
| 448 it = cookies.begin(); | 448 it = cookies.begin(); |
| 449 | 449 |
| 450 ASSERT_TRUE(it != cookies.end()); | 450 ASSERT_TRUE(it != cookies.end()); |
| 451 EXPECT_EQ("E", it->Name()); | 451 EXPECT_EQ("E", it->Name()); |
| 452 EXPECT_EQ("F", it->Value()); | 452 EXPECT_EQ("F", it->Value()); |
| 453 EXPECT_EQ("/", it->Path()); | 453 EXPECT_EQ("/", it->Path()); |
| 454 EXPECT_EQ(this->https_www_google_.host(), it->Domain()); | 454 EXPECT_EQ(this->https_www_foo_.host(), it->Domain()); |
| 455 // Cookie should have its creation time set, and be in a reasonable range. | 455 // Cookie should have its creation time set, and be in a reasonable range. |
| 456 EXPECT_LE((base::Time::Now() - it->CreationDate()).magnitude().InMinutes(), | 456 EXPECT_LE((base::Time::Now() - it->CreationDate()).magnitude().InMinutes(), |
| 457 2); | 457 2); |
| 458 EXPECT_FALSE(it->IsPersistent()); | 458 EXPECT_FALSE(it->IsPersistent()); |
| 459 // Some CookieStores don't store last access date. | 459 // Some CookieStores don't store last access date. |
| 460 if (!it->LastAccessDate().is_null()) | 460 if (!it->LastAccessDate().is_null()) |
| 461 EXPECT_EQ(it->CreationDate(), it->LastAccessDate()); | 461 EXPECT_EQ(it->CreationDate(), it->LastAccessDate()); |
| 462 EXPECT_TRUE(it->IsSecure()); | 462 EXPECT_TRUE(it->IsSecure()); |
| 463 EXPECT_FALSE(it->IsHttpOnly()); | 463 EXPECT_FALSE(it->IsHttpOnly()); |
| 464 | 464 |
| 465 EXPECT_TRUE(++it == cookies.end()); | 465 EXPECT_TRUE(++it == cookies.end()); |
| 466 } | 466 } |
| 467 | 467 |
| 468 // Test enforcement around setting secure cookies. | 468 // Test enforcement around setting secure cookies. |
| 469 TYPED_TEST_P(CookieStoreTest, SetCookieWithDetailsSecureEnforcement) { | 469 TYPED_TEST_P(CookieStoreTest, SetCookieWithDetailsSecureEnforcement) { |
| 470 CookieStore* cs = this->GetCookieStore(); | 470 CookieStore* cs = this->GetCookieStore(); |
| 471 GURL http_url(this->http_www_google_.url()); | 471 GURL http_url(this->http_www_foo_.url()); |
| 472 std::string http_domain(http_url.host()); | 472 std::string http_domain(http_url.host()); |
| 473 GURL https_url(this->https_www_google_.url()); | 473 GURL https_url(this->https_www_foo_.url()); |
| 474 std::string https_domain(https_url.host()); | 474 std::string https_domain(https_url.host()); |
| 475 | 475 |
| 476 // Confirm that setting the secure attribute on an HTTP URL fails, but | 476 // Confirm that setting the secure attribute on an HTTP URL fails, but |
| 477 // the other combinations work. | 477 // the other combinations work. |
| 478 EXPECT_TRUE(this->SetCookieWithDetails( | 478 EXPECT_TRUE(this->SetCookieWithDetails( |
| 479 cs, http_url, "A", "B", http_domain, "/", base::Time::Now(), base::Time(), | 479 cs, http_url, "A", "B", http_domain, "/", base::Time::Now(), base::Time(), |
| 480 base::Time(), false, false, CookieSameSite::NO_RESTRICTION, | 480 base::Time(), false, false, CookieSameSite::NO_RESTRICTION, |
| 481 COOKIE_PRIORITY_DEFAULT)); | 481 COOKIE_PRIORITY_DEFAULT)); |
| 482 EXPECT_FALSE(this->SetCookieWithDetails( | 482 EXPECT_FALSE(this->SetCookieWithDetails( |
| 483 cs, http_url, "A", "B", http_domain, "/", base::Time::Now(), base::Time(), | 483 cs, http_url, "A", "B", http_domain, "/", base::Time::Now(), base::Time(), |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 528 | 528 |
| 529 GURL url6("http://foo6.bar.com"); | 529 GURL url6("http://foo6.bar.com"); |
| 530 EXPECT_TRUE(this->SetCookie(cs, url6, "foo")); | 530 EXPECT_TRUE(this->SetCookie(cs, url6, "foo")); |
| 531 EXPECT_TRUE(this->SetCookie(cs, url6, " ")); | 531 EXPECT_TRUE(this->SetCookie(cs, url6, " ")); |
| 532 EXPECT_EQ("", this->GetCookies(cs, url6)); | 532 EXPECT_EQ("", this->GetCookies(cs, url6)); |
| 533 #endif | 533 #endif |
| 534 } | 534 } |
| 535 | 535 |
| 536 TYPED_TEST_P(CookieStoreTest, DomainTest) { | 536 TYPED_TEST_P(CookieStoreTest, DomainTest) { |
| 537 CookieStore* cs = this->GetCookieStore(); | 537 CookieStore* cs = this->GetCookieStore(); |
| 538 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "A=B")); | 538 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); |
| 539 this->MatchCookieLines("A=B", | 539 this->MatchCookieLines("A=B", |
| 540 this->GetCookies(cs, this->http_www_google_.url())); | 540 this->GetCookies(cs, this->http_www_foo_.url())); |
| 541 EXPECT_TRUE( | 541 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 542 this->SetCookie(cs, this->http_www_google_.url(), | 542 this->http_www_foo_.Format("C=D; domain=.%D"))); |
| 543 this->http_www_google_.Format("C=D; domain=.%D"))); | |
| 544 this->MatchCookieLines("A=B; C=D", | 543 this->MatchCookieLines("A=B; C=D", |
| 545 this->GetCookies(cs, this->http_www_google_.url())); | 544 this->GetCookies(cs, this->http_www_foo_.url())); |
| 546 | 545 |
| 547 // Verify that A=B was set as a host cookie rather than a domain | 546 // Verify that A=B was set as a host cookie rather than a domain |
| 548 // cookie -- should not be accessible from a sub sub-domain. | 547 // cookie -- should not be accessible from a sub sub-domain. |
| 549 this->MatchCookieLines( | 548 this->MatchCookieLines( |
| 550 "C=D", this->GetCookies( | 549 "C=D", this->GetCookies( |
| 551 cs, GURL(this->http_www_google_.Format("http://foo.www.%D")))); | 550 cs, GURL(this->http_www_foo_.Format("http://foo.www.%D")))); |
| 552 | 551 |
| 553 // Test and make sure we find domain cookies on the same domain. | 552 // Test and make sure we find domain cookies on the same domain. |
| 554 EXPECT_TRUE( | 553 EXPECT_TRUE( |
| 555 this->SetCookie(cs, this->http_www_google_.url(), | 554 this->SetCookie(cs, this->http_www_foo_.url(), |
| 556 this->http_www_google_.Format("E=F; domain=.www.%D"))); | 555 this->http_www_foo_.Format("E=F; domain=.www.%D"))); |
| 557 this->MatchCookieLines("A=B; C=D; E=F", | 556 this->MatchCookieLines("A=B; C=D; E=F", |
| 558 this->GetCookies(cs, this->http_www_google_.url())); | 557 this->GetCookies(cs, this->http_www_foo_.url())); |
| 559 | 558 |
| 560 // Test setting a domain= that doesn't start w/ a dot, should | 559 // Test setting a domain= that doesn't start w/ a dot, should |
| 561 // treat it as a domain cookie, as if there was a pre-pended dot. | 560 // treat it as a domain cookie, as if there was a pre-pended dot. |
| 562 EXPECT_TRUE( | 561 EXPECT_TRUE( |
| 563 this->SetCookie(cs, this->http_www_google_.url(), | 562 this->SetCookie(cs, this->http_www_foo_.url(), |
| 564 this->http_www_google_.Format("G=H; domain=www.%D"))); | 563 this->http_www_foo_.Format("G=H; domain=www.%D"))); |
| 565 this->MatchCookieLines("A=B; C=D; E=F; G=H", | 564 this->MatchCookieLines("A=B; C=D; E=F; G=H", |
| 566 this->GetCookies(cs, this->http_www_google_.url())); | 565 this->GetCookies(cs, this->http_www_foo_.url())); |
| 567 | 566 |
| 568 // Test domain enforcement, should fail on a sub-domain or something too deep. | 567 // Test domain enforcement, should fail on a sub-domain or something too deep. |
| 569 EXPECT_FALSE( | 568 EXPECT_FALSE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 570 this->SetCookie(cs, this->http_www_google_.url(), | 569 this->http_www_foo_.Format("I=J; domain=.%R"))); |
| 571 this->http_www_google_.Format("I=J; domain=.%R"))); | |
| 572 this->MatchCookieLines( | 570 this->MatchCookieLines( |
| 573 std::string(), | 571 std::string(), |
| 574 this->GetCookies(cs, GURL(this->http_www_google_.Format("http://a.%R")))); | 572 this->GetCookies(cs, GURL(this->http_www_foo_.Format("http://a.%R")))); |
| 575 EXPECT_FALSE(this->SetCookie( | 573 EXPECT_FALSE( |
| 576 cs, this->http_www_google_.url(), | 574 this->SetCookie(cs, this->http_www_foo_.url(), |
| 577 this->http_www_google_.Format("K=L; domain=.bla.www.%D"))); | 575 this->http_www_foo_.Format("K=L; domain=.bla.www.%D"))); |
| 578 this->MatchCookieLines( | 576 this->MatchCookieLines( |
| 579 "C=D; E=F; G=H", | 577 "C=D; E=F; G=H", |
| 580 this->GetCookies( | 578 this->GetCookies(cs, |
| 581 cs, GURL(this->http_www_google_.Format("http://bla.www.%D")))); | 579 GURL(this->http_www_foo_.Format("http://bla.www.%D")))); |
| 582 this->MatchCookieLines("A=B; C=D; E=F; G=H", | 580 this->MatchCookieLines("A=B; C=D; E=F; G=H", |
| 583 this->GetCookies(cs, this->http_www_google_.url())); | 581 this->GetCookies(cs, this->http_www_foo_.url())); |
| 584 } | 582 } |
| 585 | 583 |
| 586 // FireFox recognizes domains containing trailing periods as valid. | 584 // FireFox recognizes domains containing trailing periods as valid. |
| 587 // IE and Safari do not. Assert the expected policy here. | 585 // IE and Safari do not. Assert the expected policy here. |
| 588 TYPED_TEST_P(CookieStoreTest, DomainWithTrailingDotTest) { | 586 TYPED_TEST_P(CookieStoreTest, DomainWithTrailingDotTest) { |
| 589 CookieStore* cs = this->GetCookieStore(); | 587 CookieStore* cs = this->GetCookieStore(); |
| 590 if (TypeParam::preserves_trailing_dots) { | 588 if (TypeParam::preserves_trailing_dots) { |
| 591 EXPECT_FALSE(this->SetCookie(cs, this->http_www_google_.url(), | 589 EXPECT_FALSE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 592 "a=1; domain=.www.google.izzle.")); | 590 "a=1; domain=.www.foo.com.")); |
| 593 EXPECT_FALSE(this->SetCookie(cs, this->http_www_google_.url(), | 591 EXPECT_FALSE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 594 "b=2; domain=.www.google.izzle..")); | 592 "b=2; domain=.www.foo.com..")); |
| 595 this->MatchCookieLines(std::string(), | 593 this->MatchCookieLines(std::string(), |
| 596 this->GetCookies(cs, this->http_www_google_.url())); | 594 this->GetCookies(cs, this->http_www_foo_.url())); |
| 597 } else { | 595 } else { |
| 598 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 596 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 599 "a=1; domain=.www.google.izzle.")); | 597 "a=1; domain=.www.foo.com.")); |
| 600 EXPECT_FALSE(this->SetCookie(cs, this->http_www_google_.url(), | 598 EXPECT_FALSE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 601 "b=2; domain=.www.google.izzle..")); | 599 "b=2; domain=.www.foo.com..")); |
| 602 this->MatchCookieLines("a=1", | 600 this->MatchCookieLines("a=1", |
| 603 this->GetCookies(cs, this->http_www_google_.url())); | 601 this->GetCookies(cs, this->http_www_foo_.url())); |
| 604 } | 602 } |
| 605 } | 603 } |
| 606 | 604 |
| 607 // Test that cookies can bet set on higher level domains. | 605 // Test that cookies can bet set on higher level domains. |
| 608 TYPED_TEST_P(CookieStoreTest, ValidSubdomainTest) { | 606 TYPED_TEST_P(CookieStoreTest, ValidSubdomainTest) { |
| 609 CookieStore* cs = this->GetCookieStore(); | 607 CookieStore* cs = this->GetCookieStore(); |
| 610 GURL url_abcd("http://a.b.c.d.com"); | 608 GURL url_abcd("http://a.b.c.d.com"); |
| 611 GURL url_bcd("http://b.c.d.com"); | 609 GURL url_bcd("http://b.c.d.com"); |
| 612 GURL url_cd("http://c.d.com"); | 610 GURL url_cd("http://c.d.com"); |
| 613 GURL url_d("http://d.com"); | 611 GURL url_d("http://d.com"); |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 698 GURL url_filefront("http://www.filefront.com"); | 696 GURL url_filefront("http://www.filefront.com"); |
| 699 EXPECT_TRUE(this->SetCookie(cs, url_hosted, "sawAd=1; domain=filefront.com")); | 697 EXPECT_TRUE(this->SetCookie(cs, url_hosted, "sawAd=1; domain=filefront.com")); |
| 700 this->MatchCookieLines("sawAd=1", this->GetCookies(cs, url_hosted)); | 698 this->MatchCookieLines("sawAd=1", this->GetCookies(cs, url_hosted)); |
| 701 this->MatchCookieLines("sawAd=1", this->GetCookies(cs, url_filefront)); | 699 this->MatchCookieLines("sawAd=1", this->GetCookies(cs, url_filefront)); |
| 702 } | 700 } |
| 703 | 701 |
| 704 // Even when the specified domain matches the domain of the URL exactly, treat | 702 // Even when the specified domain matches the domain of the URL exactly, treat |
| 705 // it as setting a domain cookie. | 703 // it as setting a domain cookie. |
| 706 TYPED_TEST_P(CookieStoreTest, DomainWithoutLeadingDotSameDomain) { | 704 TYPED_TEST_P(CookieStoreTest, DomainWithoutLeadingDotSameDomain) { |
| 707 CookieStore* cs = this->GetCookieStore(); | 705 CookieStore* cs = this->GetCookieStore(); |
| 708 GURL url("http://www.google.com"); | 706 GURL url("http://www.foo.com"); |
| 709 EXPECT_TRUE(this->SetCookie(cs, url, "a=1; domain=www.google.com")); | 707 EXPECT_TRUE(this->SetCookie(cs, url, "a=1; domain=www.foo.com")); |
| 710 this->MatchCookieLines("a=1", this->GetCookies(cs, url)); | 708 this->MatchCookieLines("a=1", this->GetCookies(cs, url)); |
| 711 this->MatchCookieLines( | 709 this->MatchCookieLines("a=1", |
| 712 "a=1", this->GetCookies(cs, GURL("http://sub.www.google.com"))); | 710 this->GetCookies(cs, GURL("http://sub.www.foo.com"))); |
| 713 this->MatchCookieLines( | 711 this->MatchCookieLines( |
| 714 std::string(), this->GetCookies(cs, GURL("http://something-else.com"))); | 712 std::string(), this->GetCookies(cs, GURL("http://something-else.com"))); |
| 715 } | 713 } |
| 716 | 714 |
| 717 // Test that the domain specified in cookie string is treated case-insensitive | 715 // Test that the domain specified in cookie string is treated case-insensitive |
| 718 TYPED_TEST_P(CookieStoreTest, CaseInsensitiveDomainTest) { | 716 TYPED_TEST_P(CookieStoreTest, CaseInsensitiveDomainTest) { |
| 719 CookieStore* cs = this->GetCookieStore(); | 717 CookieStore* cs = this->GetCookieStore(); |
| 720 GURL url("http://www.google.com"); | 718 GURL url("http://www.foo.com"); |
| 721 EXPECT_TRUE(this->SetCookie(cs, url, "a=1; domain=.GOOGLE.COM")); | 719 EXPECT_TRUE(this->SetCookie(cs, url, "a=1; domain=.FOO.COM")); |
| 722 EXPECT_TRUE(this->SetCookie(cs, url, "b=2; domain=.wWw.gOOgLE.coM")); | 720 EXPECT_TRUE(this->SetCookie(cs, url, "b=2; domain=.wWw.fOO.cOM")); |
| 723 this->MatchCookieLines("a=1; b=2", this->GetCookies(cs, url)); | 721 this->MatchCookieLines("a=1; b=2", this->GetCookies(cs, url)); |
| 724 } | 722 } |
| 725 | 723 |
| 726 TYPED_TEST_P(CookieStoreTest, TestIpAddress) { | 724 TYPED_TEST_P(CookieStoreTest, TestIpAddress) { |
| 727 GURL url_ip("http://1.2.3.4/weee"); | 725 GURL url_ip("http://1.2.3.4/weee"); |
| 728 CookieStore* cs = this->GetCookieStore(); | 726 CookieStore* cs = this->GetCookieStore(); |
| 729 EXPECT_TRUE(this->SetCookie(cs, url_ip, kValidCookieLine)); | 727 EXPECT_TRUE(this->SetCookie(cs, url_ip, kValidCookieLine)); |
| 730 this->MatchCookieLines("A=B", this->GetCookies(cs, url_ip)); | 728 this->MatchCookieLines("A=B", this->GetCookies(cs, url_ip)); |
| 731 } | 729 } |
| 732 | 730 |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 TYPED_TEST_P(CookieStoreTest, TestSubdomainSettingCookiesOnUnknownTLD) { | 784 TYPED_TEST_P(CookieStoreTest, TestSubdomainSettingCookiesOnUnknownTLD) { |
| 787 CookieStore* cs = this->GetCookieStore(); | 785 CookieStore* cs = this->GetCookieStore(); |
| 788 GURL url("http://a.b"); | 786 GURL url("http://a.b"); |
| 789 EXPECT_FALSE(this->SetCookie(cs, url, "a=1; domain=.b")); | 787 EXPECT_FALSE(this->SetCookie(cs, url, "a=1; domain=.b")); |
| 790 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=b")); | 788 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=b")); |
| 791 this->MatchCookieLines(std::string(), this->GetCookies(cs, url)); | 789 this->MatchCookieLines(std::string(), this->GetCookies(cs, url)); |
| 792 } | 790 } |
| 793 | 791 |
| 794 TYPED_TEST_P(CookieStoreTest, TestSubdomainSettingCookiesOnKnownTLD) { | 792 TYPED_TEST_P(CookieStoreTest, TestSubdomainSettingCookiesOnKnownTLD) { |
| 795 CookieStore* cs = this->GetCookieStore(); | 793 CookieStore* cs = this->GetCookieStore(); |
| 796 GURL url("http://google.com"); | 794 GURL url("http://foo.com"); |
| 797 EXPECT_FALSE(this->SetCookie(cs, url, "a=1; domain=.com")); | 795 EXPECT_FALSE(this->SetCookie(cs, url, "a=1; domain=.com")); |
| 798 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=com")); | 796 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=com")); |
| 799 this->MatchCookieLines(std::string(), this->GetCookies(cs, url)); | 797 this->MatchCookieLines(std::string(), this->GetCookies(cs, url)); |
| 800 } | 798 } |
| 801 | 799 |
| 802 TYPED_TEST_P(CookieStoreTest, TestSubdomainSettingCookiesOnKnownDottedTLD) { | 800 TYPED_TEST_P(CookieStoreTest, TestSubdomainSettingCookiesOnKnownDottedTLD) { |
| 803 CookieStore* cs = this->GetCookieStore(); | 801 CookieStore* cs = this->GetCookieStore(); |
| 804 GURL url("http://google.co.uk"); | 802 GURL url("http://foo.co.uk"); |
| 805 EXPECT_FALSE(this->SetCookie(cs, url, "a=1; domain=.co.uk")); | 803 EXPECT_FALSE(this->SetCookie(cs, url, "a=1; domain=.co.uk")); |
| 806 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=.uk")); | 804 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=.uk")); |
| 807 this->MatchCookieLines(std::string(), this->GetCookies(cs, url)); | 805 this->MatchCookieLines(std::string(), this->GetCookies(cs, url)); |
| 808 this->MatchCookieLines( | 806 this->MatchCookieLines( |
| 809 std::string(), this->GetCookies(cs, GURL("http://something-else.co.uk"))); | 807 std::string(), this->GetCookies(cs, GURL("http://something-else.co.uk"))); |
| 810 this->MatchCookieLines( | 808 this->MatchCookieLines( |
| 811 std::string(), this->GetCookies(cs, GURL("http://something-else.uk"))); | 809 std::string(), this->GetCookies(cs, GURL("http://something-else.uk"))); |
| 812 } | 810 } |
| 813 | 811 |
| 814 // Intranet URLs should only be able to set host cookies. | 812 // Intranet URLs should only be able to set host cookies. |
| (...skipping 19 matching lines...) Expand all Loading... |
| 834 // Make sure it doesn't show up for an intranet subdomain, it should be | 832 // Make sure it doesn't show up for an intranet subdomain, it should be |
| 835 // a host, not domain, cookie. | 833 // a host, not domain, cookie. |
| 836 this->MatchCookieLines( | 834 this->MatchCookieLines( |
| 837 std::string(), | 835 std::string(), |
| 838 this->GetCookies(cs, GURL("http://hopefully-no-cookies.b/"))); | 836 this->GetCookies(cs, GURL("http://hopefully-no-cookies.b/"))); |
| 839 this->MatchCookieLines(std::string(), | 837 this->MatchCookieLines(std::string(), |
| 840 this->GetCookies(cs, GURL("http://.b/"))); | 838 this->GetCookies(cs, GURL("http://.b/"))); |
| 841 } | 839 } |
| 842 | 840 |
| 843 // Test reading/writing cookies when the domain ends with a period, | 841 // Test reading/writing cookies when the domain ends with a period, |
| 844 // as in "www.google.com." | 842 // as in "www.foo.com." |
| 845 TYPED_TEST_P(CookieStoreTest, TestHostEndsWithDot) { | 843 TYPED_TEST_P(CookieStoreTest, TestHostEndsWithDot) { |
| 846 CookieStore* cs = this->GetCookieStore(); | 844 CookieStore* cs = this->GetCookieStore(); |
| 847 GURL url("http://www.google.com"); | 845 GURL url("http://www.foo.com"); |
| 848 GURL url_with_dot("http://www.google.com."); | 846 GURL url_with_dot("http://www.foo.com."); |
| 849 EXPECT_TRUE(this->SetCookie(cs, url, "a=1")); | 847 EXPECT_TRUE(this->SetCookie(cs, url, "a=1")); |
| 850 this->MatchCookieLines("a=1", this->GetCookies(cs, url)); | 848 this->MatchCookieLines("a=1", this->GetCookies(cs, url)); |
| 851 | 849 |
| 852 // Do not share cookie space with the dot version of domain. | 850 // Do not share cookie space with the dot version of domain. |
| 853 // Note: this is not what FireFox does, but it _is_ what IE+Safari do. | 851 // Note: this is not what FireFox does, but it _is_ what IE+Safari do. |
| 854 if (TypeParam::preserves_trailing_dots) { | 852 if (TypeParam::preserves_trailing_dots) { |
| 855 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=.www.google.com.")); | 853 EXPECT_FALSE(this->SetCookie(cs, url, "b=2; domain=.www.foo.com.")); |
| 856 this->MatchCookieLines("a=1", this->GetCookies(cs, url)); | 854 this->MatchCookieLines("a=1", this->GetCookies(cs, url)); |
| 857 EXPECT_TRUE(this->SetCookie(cs, url_with_dot, "b=2; domain=.google.com.")); | 855 EXPECT_TRUE(this->SetCookie(cs, url_with_dot, "b=2; domain=.foo.com.")); |
| 858 this->MatchCookieLines("b=2", this->GetCookies(cs, url_with_dot)); | 856 this->MatchCookieLines("b=2", this->GetCookies(cs, url_with_dot)); |
| 859 } else { | 857 } else { |
| 860 EXPECT_TRUE(this->SetCookie(cs, url, "b=2; domain=.www.google.com.")); | 858 EXPECT_TRUE(this->SetCookie(cs, url, "b=2; domain=.www.foo.com.")); |
| 861 this->MatchCookieLines("a=1 b=2", this->GetCookies(cs, url)); | 859 this->MatchCookieLines("a=1 b=2", this->GetCookies(cs, url)); |
| 862 // Setting this cookie should fail, since the trailing dot on the domain | 860 // Setting this cookie should fail, since the trailing dot on the domain |
| 863 // isn't preserved, and then the domain mismatches the URL. | 861 // isn't preserved, and then the domain mismatches the URL. |
| 864 EXPECT_FALSE(this->SetCookie(cs, url_with_dot, "b=2; domain=.google.com.")); | 862 EXPECT_FALSE(this->SetCookie(cs, url_with_dot, "b=2; domain=.foo.com.")); |
| 865 } | 863 } |
| 866 | 864 |
| 867 // Make sure there weren't any side effects. | 865 // Make sure there weren't any side effects. |
| 868 this->MatchCookieLines( | 866 this->MatchCookieLines( |
| 869 std::string(), | 867 std::string(), |
| 870 this->GetCookies(cs, GURL("http://hopefully-no-cookies.com/"))); | 868 this->GetCookies(cs, GURL("http://hopefully-no-cookies.com/"))); |
| 871 this->MatchCookieLines(std::string(), | 869 this->MatchCookieLines(std::string(), |
| 872 this->GetCookies(cs, GURL("http://.com/"))); | 870 this->GetCookies(cs, GURL("http://.com/"))); |
| 873 } | 871 } |
| 874 | 872 |
| 875 TYPED_TEST_P(CookieStoreTest, InvalidScheme) { | 873 TYPED_TEST_P(CookieStoreTest, InvalidScheme) { |
| 876 if (!TypeParam::filters_schemes) | 874 if (!TypeParam::filters_schemes) |
| 877 return; | 875 return; |
| 878 | 876 |
| 879 CookieStore* cs = this->GetCookieStore(); | 877 CookieStore* cs = this->GetCookieStore(); |
| 880 EXPECT_FALSE(this->SetCookie(cs, this->ftp_google_.url(), kValidCookieLine)); | 878 EXPECT_FALSE(this->SetCookie(cs, this->ftp_foo_.url(), kValidCookieLine)); |
| 881 } | 879 } |
| 882 | 880 |
| 883 TYPED_TEST_P(CookieStoreTest, InvalidScheme_Read) { | 881 TYPED_TEST_P(CookieStoreTest, InvalidScheme_Read) { |
| 884 if (!TypeParam::filters_schemes) | 882 if (!TypeParam::filters_schemes) |
| 885 return; | 883 return; |
| 886 | 884 |
| 887 const std::string kValidDomainCookieLine = | 885 const std::string kValidDomainCookieLine = |
| 888 this->http_www_google_.Format("A=B; path=/; domain=%D"); | 886 this->http_www_foo_.Format("A=B; path=/; domain=%D"); |
| 889 | 887 |
| 890 CookieStore* cs = this->GetCookieStore(); | 888 CookieStore* cs = this->GetCookieStore(); |
| 891 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 889 EXPECT_TRUE( |
| 892 kValidDomainCookieLine)); | 890 this->SetCookie(cs, this->http_www_foo_.url(), kValidDomainCookieLine)); |
| 893 this->MatchCookieLines(std::string(), | 891 this->MatchCookieLines(std::string(), |
| 894 this->GetCookies(cs, this->ftp_google_.url())); | 892 this->GetCookies(cs, this->ftp_foo_.url())); |
| 895 EXPECT_EQ(0U, this->GetCookieListWithOptions(cs, this->ftp_google_.url(), | 893 EXPECT_EQ(0U, this->GetCookieListWithOptions(cs, this->ftp_foo_.url(), |
| 896 CookieOptions()) | 894 CookieOptions()) |
| 897 .size()); | 895 .size()); |
| 898 } | 896 } |
| 899 | 897 |
| 900 TYPED_TEST_P(CookieStoreTest, PathTest) { | 898 TYPED_TEST_P(CookieStoreTest, PathTest) { |
| 901 CookieStore* cs = this->GetCookieStore(); | 899 CookieStore* cs = this->GetCookieStore(); |
| 902 std::string url("http://www.google.izzle"); | 900 std::string url("http://www.foo.com"); |
| 903 EXPECT_TRUE(this->SetCookie(cs, GURL(url), "A=B; path=/wee")); | 901 EXPECT_TRUE(this->SetCookie(cs, GURL(url), "A=B; path=/wee")); |
| 904 this->MatchCookieLines("A=B", this->GetCookies(cs, GURL(url + "/wee"))); | 902 this->MatchCookieLines("A=B", this->GetCookies(cs, GURL(url + "/wee"))); |
| 905 this->MatchCookieLines("A=B", this->GetCookies(cs, GURL(url + "/wee/"))); | 903 this->MatchCookieLines("A=B", this->GetCookies(cs, GURL(url + "/wee/"))); |
| 906 this->MatchCookieLines("A=B", this->GetCookies(cs, GURL(url + "/wee/war"))); | 904 this->MatchCookieLines("A=B", this->GetCookies(cs, GURL(url + "/wee/war"))); |
| 907 this->MatchCookieLines( | 905 this->MatchCookieLines( |
| 908 "A=B", this->GetCookies(cs, GURL(url + "/wee/war/more/more"))); | 906 "A=B", this->GetCookies(cs, GURL(url + "/wee/war/more/more"))); |
| 909 if (!TypeParam::has_path_prefix_bug) | 907 if (!TypeParam::has_path_prefix_bug) |
| 910 this->MatchCookieLines(std::string(), | 908 this->MatchCookieLines(std::string(), |
| 911 this->GetCookies(cs, GURL(url + "/weehee"))); | 909 this->GetCookies(cs, GURL(url + "/weehee"))); |
| 912 this->MatchCookieLines(std::string(), this->GetCookies(cs, GURL(url + "/"))); | 910 this->MatchCookieLines(std::string(), this->GetCookies(cs, GURL(url + "/"))); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 944 | 942 |
| 945 TYPED_TEST_P(CookieStoreTest, HttpOnlyTest) { | 943 TYPED_TEST_P(CookieStoreTest, HttpOnlyTest) { |
| 946 if (!TypeParam::supports_http_only) | 944 if (!TypeParam::supports_http_only) |
| 947 return; | 945 return; |
| 948 | 946 |
| 949 CookieStore* cs = this->GetCookieStore(); | 947 CookieStore* cs = this->GetCookieStore(); |
| 950 CookieOptions options; | 948 CookieOptions options; |
| 951 options.set_include_httponly(); | 949 options.set_include_httponly(); |
| 952 | 950 |
| 953 // Create a httponly cookie. | 951 // Create a httponly cookie. |
| 954 EXPECT_TRUE(this->SetCookieWithOptions(cs, this->http_www_google_.url(), | 952 EXPECT_TRUE(this->SetCookieWithOptions(cs, this->http_www_foo_.url(), |
| 955 "A=B; httponly", options)); | 953 "A=B; httponly", options)); |
| 956 | 954 |
| 957 // Check httponly read protection. | 955 // Check httponly read protection. |
| 958 this->MatchCookieLines(std::string(), | 956 this->MatchCookieLines(std::string(), |
| 959 this->GetCookies(cs, this->http_www_google_.url())); | 957 this->GetCookies(cs, this->http_www_foo_.url())); |
| 960 this->MatchCookieLines("A=B", this->GetCookiesWithOptions( | 958 this->MatchCookieLines("A=B", this->GetCookiesWithOptions( |
| 961 cs, this->http_www_google_.url(), options)); | 959 cs, this->http_www_foo_.url(), options)); |
| 962 | 960 |
| 963 // Check httponly overwrite protection. | 961 // Check httponly overwrite protection. |
| 964 EXPECT_FALSE(this->SetCookie(cs, this->http_www_google_.url(), "A=C")); | 962 EXPECT_FALSE(this->SetCookie(cs, this->http_www_foo_.url(), "A=C")); |
| 965 this->MatchCookieLines(std::string(), | 963 this->MatchCookieLines(std::string(), |
| 966 this->GetCookies(cs, this->http_www_google_.url())); | 964 this->GetCookies(cs, this->http_www_foo_.url())); |
| 967 this->MatchCookieLines("A=B", this->GetCookiesWithOptions( | 965 this->MatchCookieLines("A=B", this->GetCookiesWithOptions( |
| 968 cs, this->http_www_google_.url(), options)); | 966 cs, this->http_www_foo_.url(), options)); |
| 969 EXPECT_TRUE(this->SetCookieWithOptions(cs, this->http_www_google_.url(), | 967 EXPECT_TRUE(this->SetCookieWithOptions(cs, this->http_www_foo_.url(), "A=C", |
| 970 "A=C", options)); | 968 options)); |
| 971 this->MatchCookieLines("A=C", | 969 this->MatchCookieLines("A=C", |
| 972 this->GetCookies(cs, this->http_www_google_.url())); | 970 this->GetCookies(cs, this->http_www_foo_.url())); |
| 973 | 971 |
| 974 // Check httponly create protection. | 972 // Check httponly create protection. |
| 975 EXPECT_FALSE( | 973 EXPECT_FALSE(this->SetCookie(cs, this->http_www_foo_.url(), "B=A; httponly")); |
| 976 this->SetCookie(cs, this->http_www_google_.url(), "B=A; httponly")); | |
| 977 this->MatchCookieLines("A=C", this->GetCookiesWithOptions( | 974 this->MatchCookieLines("A=C", this->GetCookiesWithOptions( |
| 978 cs, this->http_www_google_.url(), options)); | 975 cs, this->http_www_foo_.url(), options)); |
| 979 EXPECT_TRUE(this->SetCookieWithOptions(cs, this->http_www_google_.url(), | 976 EXPECT_TRUE(this->SetCookieWithOptions(cs, this->http_www_foo_.url(), |
| 980 "B=A; httponly", options)); | 977 "B=A; httponly", options)); |
| 981 this->MatchCookieLines( | 978 this->MatchCookieLines( |
| 982 "A=C; B=A", | 979 "A=C; B=A", |
| 983 this->GetCookiesWithOptions(cs, this->http_www_google_.url(), options)); | 980 this->GetCookiesWithOptions(cs, this->http_www_foo_.url(), options)); |
| 984 this->MatchCookieLines("A=C", | 981 this->MatchCookieLines("A=C", |
| 985 this->GetCookies(cs, this->http_www_google_.url())); | 982 this->GetCookies(cs, this->http_www_foo_.url())); |
| 986 } | 983 } |
| 987 | 984 |
| 988 TYPED_TEST_P(CookieStoreTest, TestCookieDeletion) { | 985 TYPED_TEST_P(CookieStoreTest, TestCookieDeletion) { |
| 989 CookieStore* cs = this->GetCookieStore(); | 986 CookieStore* cs = this->GetCookieStore(); |
| 990 | 987 |
| 991 // Create a session cookie. | 988 // Create a session cookie. |
| 992 EXPECT_TRUE( | 989 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), kValidCookieLine)); |
| 993 this->SetCookie(cs, this->http_www_google_.url(), kValidCookieLine)); | |
| 994 this->MatchCookieLines("A=B", | 990 this->MatchCookieLines("A=B", |
| 995 this->GetCookies(cs, this->http_www_google_.url())); | 991 this->GetCookies(cs, this->http_www_foo_.url())); |
| 996 // Delete it via Max-Age. | 992 // Delete it via Max-Age. |
| 997 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 993 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 998 std::string(kValidCookieLine) + "; max-age=0")); | 994 std::string(kValidCookieLine) + "; max-age=0")); |
| 999 this->MatchCookieLineWithTimeout(cs, this->http_www_google_.url(), | 995 this->MatchCookieLineWithTimeout(cs, this->http_www_foo_.url(), |
| 1000 std::string()); | 996 std::string()); |
| 1001 | 997 |
| 1002 // Create a session cookie. | 998 // Create a session cookie. |
| 1003 EXPECT_TRUE( | 999 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), kValidCookieLine)); |
| 1004 this->SetCookie(cs, this->http_www_google_.url(), kValidCookieLine)); | |
| 1005 this->MatchCookieLines("A=B", | 1000 this->MatchCookieLines("A=B", |
| 1006 this->GetCookies(cs, this->http_www_google_.url())); | 1001 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1007 // Delete it via Expires. | 1002 // Delete it via Expires. |
| 1008 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 1003 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 1009 std::string(kValidCookieLine) + | 1004 std::string(kValidCookieLine) + |
| 1010 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); | 1005 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); |
| 1011 this->MatchCookieLines(std::string(), | 1006 this->MatchCookieLines(std::string(), |
| 1012 this->GetCookies(cs, this->http_www_google_.url())); | 1007 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1013 | 1008 |
| 1014 // Create a persistent cookie. | 1009 // Create a persistent cookie. |
| 1015 EXPECT_TRUE(this->SetCookie( | 1010 EXPECT_TRUE(this->SetCookie( |
| 1016 cs, this->http_www_google_.url(), | 1011 cs, this->http_www_foo_.url(), |
| 1017 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1012 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
| 1018 | 1013 |
| 1019 this->MatchCookieLines("A=B", | 1014 this->MatchCookieLines("A=B", |
| 1020 this->GetCookies(cs, this->http_www_google_.url())); | 1015 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1021 // Delete it via Max-Age. | 1016 // Delete it via Max-Age. |
| 1022 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 1017 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 1023 std::string(kValidCookieLine) + "; max-age=0")); | 1018 std::string(kValidCookieLine) + "; max-age=0")); |
| 1024 this->MatchCookieLineWithTimeout(cs, this->http_www_google_.url(), | 1019 this->MatchCookieLineWithTimeout(cs, this->http_www_foo_.url(), |
| 1025 std::string()); | 1020 std::string()); |
| 1026 | 1021 |
| 1027 // Create a persistent cookie. | 1022 // Create a persistent cookie. |
| 1028 EXPECT_TRUE(this->SetCookie( | 1023 EXPECT_TRUE(this->SetCookie( |
| 1029 cs, this->http_www_google_.url(), | 1024 cs, this->http_www_foo_.url(), |
| 1030 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1025 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
| 1031 this->MatchCookieLines("A=B", | 1026 this->MatchCookieLines("A=B", |
| 1032 this->GetCookies(cs, this->http_www_google_.url())); | 1027 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1033 // Delete it via Expires. | 1028 // Delete it via Expires. |
| 1034 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 1029 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 1035 std::string(kValidCookieLine) + | 1030 std::string(kValidCookieLine) + |
| 1036 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); | 1031 "; expires=Mon, 18-Apr-1977 22:50:13 GMT")); |
| 1037 this->MatchCookieLines(std::string(), | 1032 this->MatchCookieLines(std::string(), |
| 1038 this->GetCookies(cs, this->http_www_google_.url())); | 1033 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1039 | 1034 |
| 1040 // Create a persistent cookie. | 1035 // Create a persistent cookie. |
| 1041 EXPECT_TRUE(this->SetCookie( | 1036 EXPECT_TRUE(this->SetCookie( |
| 1042 cs, this->http_www_google_.url(), | 1037 cs, this->http_www_foo_.url(), |
| 1043 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1038 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
| 1044 this->MatchCookieLines("A=B", | 1039 this->MatchCookieLines("A=B", |
| 1045 this->GetCookies(cs, this->http_www_google_.url())); | 1040 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1046 // Check that it is not deleted with significant enough clock skew. | 1041 // Check that it is not deleted with significant enough clock skew. |
| 1047 base::Time server_time; | 1042 base::Time server_time; |
| 1048 EXPECT_TRUE(base::Time::FromString("Sun, 17-Apr-1977 22:50:13 GMT", | 1043 EXPECT_TRUE(base::Time::FromString("Sun, 17-Apr-1977 22:50:13 GMT", |
| 1049 &server_time)); | 1044 &server_time)); |
| 1050 EXPECT_TRUE(this->SetCookieWithServerTime( | 1045 EXPECT_TRUE(this->SetCookieWithServerTime( |
| 1051 cs, this->http_www_google_.url(), | 1046 cs, this->http_www_foo_.url(), |
| 1052 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-1977 22:50:13 GMT", | 1047 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-1977 22:50:13 GMT", |
| 1053 server_time)); | 1048 server_time)); |
| 1054 this->MatchCookieLines("A=B", | 1049 this->MatchCookieLines("A=B", |
| 1055 this->GetCookies(cs, this->http_www_google_.url())); | 1050 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1056 | 1051 |
| 1057 // Create a persistent cookie. | 1052 // Create a persistent cookie. |
| 1058 EXPECT_TRUE(this->SetCookie( | 1053 EXPECT_TRUE(this->SetCookie( |
| 1059 cs, this->http_www_google_.url(), | 1054 cs, this->http_www_foo_.url(), |
| 1060 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1055 std::string(kValidCookieLine) + "; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
| 1061 this->MatchCookieLines("A=B", | 1056 this->MatchCookieLines("A=B", |
| 1062 this->GetCookies(cs, this->http_www_google_.url())); | 1057 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1063 // Delete it via Expires, with a unix epoch of 0. | 1058 // Delete it via Expires, with a unix epoch of 0. |
| 1064 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 1059 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 1065 std::string(kValidCookieLine) + | 1060 std::string(kValidCookieLine) + |
| 1066 "; expires=Thu, 1-Jan-1970 00:00:00 GMT")); | 1061 "; expires=Thu, 1-Jan-1970 00:00:00 GMT")); |
| 1067 this->MatchCookieLines(std::string(), | 1062 this->MatchCookieLines(std::string(), |
| 1068 this->GetCookies(cs, this->http_www_google_.url())); | 1063 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1069 } | 1064 } |
| 1070 | 1065 |
| 1071 TYPED_TEST_P(CookieStoreTest, TestDeleteAll) { | 1066 TYPED_TEST_P(CookieStoreTest, TestDeleteAll) { |
| 1072 CookieStore* cs = this->GetCookieStore(); | 1067 CookieStore* cs = this->GetCookieStore(); |
| 1073 | 1068 |
| 1074 // Set a session cookie. | 1069 // Set a session cookie. |
| 1075 EXPECT_TRUE( | 1070 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), kValidCookieLine)); |
| 1076 this->SetCookie(cs, this->http_www_google_.url(), kValidCookieLine)); | 1071 EXPECT_EQ("A=B", this->GetCookies(cs, this->http_www_foo_.url())); |
| 1077 EXPECT_EQ("A=B", this->GetCookies(cs, this->http_www_google_.url())); | |
| 1078 | 1072 |
| 1079 // Set a persistent cookie. | 1073 // Set a persistent cookie. |
| 1080 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 1074 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 1081 "C=D; expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1075 "C=D; expires=Mon, 18-Apr-22 22:50:13 GMT")); |
| 1082 | 1076 |
| 1083 EXPECT_EQ(2u, this->GetAllCookies(cs).size()); | 1077 EXPECT_EQ(2u, this->GetAllCookies(cs).size()); |
| 1084 | 1078 |
| 1085 // Delete both, and make sure it works | 1079 // Delete both, and make sure it works |
| 1086 EXPECT_EQ(2, this->DeleteAll(cs)); | 1080 EXPECT_EQ(2, this->DeleteAll(cs)); |
| 1087 EXPECT_EQ(0u, this->GetAllCookies(cs).size()); | 1081 EXPECT_EQ(0u, this->GetAllCookies(cs).size()); |
| 1088 } | 1082 } |
| 1089 | 1083 |
| 1090 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetween) { | 1084 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetween) { |
| 1091 CookieStore* cs = this->GetCookieStore(); | 1085 CookieStore* cs = this->GetCookieStore(); |
| 1092 const base::Time last_month = base::Time::Now() - | 1086 const base::Time last_month = base::Time::Now() - |
| 1093 base::TimeDelta::FromDays(30); | 1087 base::TimeDelta::FromDays(30); |
| 1094 const base::Time last_minute = base::Time::Now() - | 1088 const base::Time last_minute = base::Time::Now() - |
| 1095 base::TimeDelta::FromMinutes(1); | 1089 base::TimeDelta::FromMinutes(1); |
| 1096 const base::Time next_minute = base::Time::Now() + | 1090 const base::Time next_minute = base::Time::Now() + |
| 1097 base::TimeDelta::FromMinutes(1); | 1091 base::TimeDelta::FromMinutes(1); |
| 1098 const base::Time next_month = base::Time::Now() + | 1092 const base::Time next_month = base::Time::Now() + |
| 1099 base::TimeDelta::FromDays(30); | 1093 base::TimeDelta::FromDays(30); |
| 1100 | 1094 |
| 1101 // Add a cookie. | 1095 // Add a cookie. |
| 1102 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "A=B")); | 1096 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); |
| 1103 // Check that the cookie is in the store. | 1097 // Check that the cookie is in the store. |
| 1104 this->MatchCookieLines("A=B", | 1098 this->MatchCookieLines("A=B", |
| 1105 this->GetCookies(cs, this->http_www_google_.url())); | 1099 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1106 | 1100 |
| 1107 // Remove cookies in empty intervals. | 1101 // Remove cookies in empty intervals. |
| 1108 EXPECT_EQ(0, this->DeleteCreatedBetween(cs, last_month, last_minute)); | 1102 EXPECT_EQ(0, this->DeleteCreatedBetween(cs, last_month, last_minute)); |
| 1109 EXPECT_EQ(0, this->DeleteCreatedBetween(cs, next_minute, next_month)); | 1103 EXPECT_EQ(0, this->DeleteCreatedBetween(cs, next_minute, next_month)); |
| 1110 // Check that the cookie is still there. | 1104 // Check that the cookie is still there. |
| 1111 this->MatchCookieLines("A=B", | 1105 this->MatchCookieLines("A=B", |
| 1112 this->GetCookies(cs, this->http_www_google_.url())); | 1106 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1113 | 1107 |
| 1114 // Remove the cookie with an interval defined by two dates. | 1108 // Remove the cookie with an interval defined by two dates. |
| 1115 EXPECT_EQ(1, this->DeleteCreatedBetween(cs, last_minute, next_minute)); | 1109 EXPECT_EQ(1, this->DeleteCreatedBetween(cs, last_minute, next_minute)); |
| 1116 // Check that the cookie disappeared. | 1110 // Check that the cookie disappeared. |
| 1117 this->MatchCookieLines(std::string(), | 1111 this->MatchCookieLines(std::string(), |
| 1118 this->GetCookies(cs, this->http_www_google_.url())); | 1112 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1119 | 1113 |
| 1120 // Add another cookie. | 1114 // Add another cookie. |
| 1121 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "C=D")); | 1115 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "C=D")); |
| 1122 // Check that the cookie is in the store. | 1116 // Check that the cookie is in the store. |
| 1123 this->MatchCookieLines("C=D", | 1117 this->MatchCookieLines("C=D", |
| 1124 this->GetCookies(cs, this->http_www_google_.url())); | 1118 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1125 | 1119 |
| 1126 // Remove the cookie with a null ending time. | 1120 // Remove the cookie with a null ending time. |
| 1127 EXPECT_EQ(1, this->DeleteCreatedBetween(cs, last_minute, base::Time())); | 1121 EXPECT_EQ(1, this->DeleteCreatedBetween(cs, last_minute, base::Time())); |
| 1128 // Check that the cookie disappeared. | 1122 // Check that the cookie disappeared. |
| 1129 this->MatchCookieLines(std::string(), | 1123 this->MatchCookieLines(std::string(), |
| 1130 this->GetCookies(cs, this->http_www_google_.url())); | 1124 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1131 } | 1125 } |
| 1132 | 1126 |
| 1133 namespace { | 1127 namespace { |
| 1134 static bool CookieHasValue(const std::string& value, | 1128 static bool CookieHasValue(const std::string& value, |
| 1135 const CanonicalCookie& cookie) { | 1129 const CanonicalCookie& cookie) { |
| 1136 return cookie.Value() == value; | 1130 return cookie.Value() == value; |
| 1137 } | 1131 } |
| 1138 } | 1132 } |
| 1139 | 1133 |
| 1140 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetweenWithPredicate) { | 1134 TYPED_TEST_P(CookieStoreTest, TestDeleteAllCreatedBetweenWithPredicate) { |
| 1141 CookieStore* cs = this->GetCookieStore(); | 1135 CookieStore* cs = this->GetCookieStore(); |
| 1142 base::Time now = base::Time::Now(); | 1136 base::Time now = base::Time::Now(); |
| 1143 base::Time last_month = base::Time::Now() - base::TimeDelta::FromDays(30); | 1137 base::Time last_month = base::Time::Now() - base::TimeDelta::FromDays(30); |
| 1144 base::Time last_minute = base::Time::Now() - base::TimeDelta::FromMinutes(1); | 1138 base::Time last_minute = base::Time::Now() - base::TimeDelta::FromMinutes(1); |
| 1145 std::string desired_value("B"); | 1139 std::string desired_value("B"); |
| 1146 | 1140 |
| 1147 // These 3 cookies match the time range and host. | 1141 // These 3 cookies match the time range and host. |
| 1148 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "A=B")); | 1142 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); |
| 1149 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "C=D")); | 1143 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "C=D")); |
| 1150 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "Y=Z")); | 1144 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "Y=Z")); |
| 1151 EXPECT_TRUE(this->SetCookie(cs, this->https_www_google_.url(), "E=B")); | 1145 EXPECT_TRUE(this->SetCookie(cs, this->https_www_foo_.url(), "E=B")); |
| 1152 | 1146 |
| 1153 // Delete cookies. | 1147 // Delete cookies. |
| 1154 EXPECT_EQ(2, // Deletes A=B, E=B | 1148 EXPECT_EQ(2, // Deletes A=B, E=B |
| 1155 this->DeleteAllCreatedBetweenWithPredicate( | 1149 this->DeleteAllCreatedBetweenWithPredicate( |
| 1156 cs, now, base::Time::Max(), | 1150 cs, now, base::Time::Max(), |
| 1157 base::Bind(&CookieHasValue, desired_value))); | 1151 base::Bind(&CookieHasValue, desired_value))); |
| 1158 | 1152 |
| 1159 // Check that we deleted the right ones. | 1153 // Check that we deleted the right ones. |
| 1160 this->MatchCookieLines("C=D;Y=Z", | 1154 this->MatchCookieLines("C=D;Y=Z", |
| 1161 this->GetCookies(cs, this->https_www_google_.url())); | 1155 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1162 | 1156 |
| 1163 // Now check that using a null predicate will do nothing. | 1157 // Now check that using a null predicate will do nothing. |
| 1164 EXPECT_EQ(0, this->DeleteAllCreatedBetweenWithPredicate( | 1158 EXPECT_EQ(0, this->DeleteAllCreatedBetweenWithPredicate( |
| 1165 cs, now, base::Time::Max(), CookieStore::CookiePredicate())); | 1159 cs, now, base::Time::Max(), CookieStore::CookiePredicate())); |
| 1166 | 1160 |
| 1167 // Finally, check that we don't delete cookies when our time range is off. | 1161 // Finally, check that we don't delete cookies when our time range is off. |
| 1168 desired_value = "D"; | 1162 desired_value = "D"; |
| 1169 EXPECT_EQ(0, this->DeleteAllCreatedBetweenWithPredicate( | 1163 EXPECT_EQ(0, this->DeleteAllCreatedBetweenWithPredicate( |
| 1170 cs, last_month, last_minute, | 1164 cs, last_month, last_minute, |
| 1171 base::Bind(&CookieHasValue, desired_value))); | 1165 base::Bind(&CookieHasValue, desired_value))); |
| 1172 this->MatchCookieLines("C=D;Y=Z", | 1166 this->MatchCookieLines("C=D;Y=Z", |
| 1173 this->GetCookies(cs, this->https_www_google_.url())); | 1167 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1174 // Same thing, but with a good time range. | 1168 // Same thing, but with a good time range. |
| 1175 EXPECT_EQ(1, this->DeleteAllCreatedBetweenWithPredicate( | 1169 EXPECT_EQ(1, this->DeleteAllCreatedBetweenWithPredicate( |
| 1176 cs, now, base::Time::Max(), | 1170 cs, now, base::Time::Max(), |
| 1177 base::Bind(&CookieHasValue, desired_value))); | 1171 base::Bind(&CookieHasValue, desired_value))); |
| 1178 this->MatchCookieLines("Y=Z", | 1172 this->MatchCookieLines("Y=Z", |
| 1179 this->GetCookies(cs, this->https_www_google_.url())); | 1173 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1180 } | 1174 } |
| 1181 | 1175 |
| 1182 TYPED_TEST_P(CookieStoreTest, TestSecure) { | 1176 TYPED_TEST_P(CookieStoreTest, TestSecure) { |
| 1183 CookieStore* cs = this->GetCookieStore(); | 1177 CookieStore* cs = this->GetCookieStore(); |
| 1184 | 1178 |
| 1185 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), "A=B")); | 1179 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B")); |
| 1186 this->MatchCookieLines("A=B", | 1180 this->MatchCookieLines("A=B", |
| 1187 this->GetCookies(cs, this->http_www_google_.url())); | 1181 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1188 this->MatchCookieLines("A=B", | 1182 this->MatchCookieLines("A=B", |
| 1189 this->GetCookies(cs, this->https_www_google_.url())); | 1183 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1190 | 1184 |
| 1191 EXPECT_TRUE( | 1185 EXPECT_TRUE(this->SetCookie(cs, this->https_www_foo_.url(), "A=B; secure")); |
| 1192 this->SetCookie(cs, this->https_www_google_.url(), "A=B; secure")); | |
| 1193 // The secure should overwrite the non-secure. | 1186 // The secure should overwrite the non-secure. |
| 1194 this->MatchCookieLines(std::string(), | 1187 this->MatchCookieLines(std::string(), |
| 1195 this->GetCookies(cs, this->http_www_google_.url())); | 1188 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1196 this->MatchCookieLines("A=B", | 1189 this->MatchCookieLines("A=B", |
| 1197 this->GetCookies(cs, this->https_www_google_.url())); | 1190 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1198 | 1191 |
| 1199 EXPECT_TRUE( | 1192 EXPECT_TRUE(this->SetCookie(cs, this->https_www_foo_.url(), "D=E; secure")); |
| 1200 this->SetCookie(cs, this->https_www_google_.url(), "D=E; secure")); | |
| 1201 this->MatchCookieLines(std::string(), | 1193 this->MatchCookieLines(std::string(), |
| 1202 this->GetCookies(cs, this->http_www_google_.url())); | 1194 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1203 this->MatchCookieLines("A=B; D=E", | 1195 this->MatchCookieLines("A=B; D=E", |
| 1204 this->GetCookies(cs, this->https_www_google_.url())); | 1196 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1205 | 1197 |
| 1206 EXPECT_TRUE(this->SetCookie(cs, this->https_www_google_.url(), "A=B")); | 1198 EXPECT_TRUE(this->SetCookie(cs, this->https_www_foo_.url(), "A=B")); |
| 1207 // The non-secure should overwrite the secure. | 1199 // The non-secure should overwrite the secure. |
| 1208 this->MatchCookieLines("A=B", | 1200 this->MatchCookieLines("A=B", |
| 1209 this->GetCookies(cs, this->http_www_google_.url())); | 1201 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1210 this->MatchCookieLines("D=E; A=B", | 1202 this->MatchCookieLines("D=E; A=B", |
| 1211 this->GetCookies(cs, this->https_www_google_.url())); | 1203 this->GetCookies(cs, this->https_www_foo_.url())); |
| 1212 } | 1204 } |
| 1213 | 1205 |
| 1214 // Formerly NetUtilTest.CookieTest back when we used wininet's cookie handling. | 1206 // Formerly NetUtilTest.CookieTest back when we used wininet's cookie handling. |
| 1215 TYPED_TEST_P(CookieStoreTest, NetUtilCookieTest) { | 1207 TYPED_TEST_P(CookieStoreTest, NetUtilCookieTest) { |
| 1216 const GURL test_url("http://mojo.jojo.google.izzle/"); | 1208 const GURL test_url("http://mojo.jojo.foo.com/"); |
| 1217 | 1209 |
| 1218 CookieStore* cs = this->GetCookieStore(); | 1210 CookieStore* cs = this->GetCookieStore(); |
| 1219 | 1211 |
| 1220 EXPECT_TRUE(this->SetCookie(cs, test_url, "foo=bar")); | 1212 EXPECT_TRUE(this->SetCookie(cs, test_url, "foo=bar")); |
| 1221 std::string value = this->GetCookies(cs, test_url); | 1213 std::string value = this->GetCookies(cs, test_url); |
| 1222 this->MatchCookieLines("foo=bar", value); | 1214 this->MatchCookieLines("foo=bar", value); |
| 1223 | 1215 |
| 1224 // test that we can retrieve all cookies: | 1216 // test that we can retrieve all cookies: |
| 1225 EXPECT_TRUE(this->SetCookie(cs, test_url, "x=1")); | 1217 EXPECT_TRUE(this->SetCookie(cs, test_url, "x=1")); |
| 1226 EXPECT_TRUE(this->SetCookie(cs, test_url, "y=2")); | 1218 EXPECT_TRUE(this->SetCookie(cs, test_url, "y=2")); |
| 1227 | 1219 |
| 1228 std::string result = this->GetCookies(cs, test_url); | 1220 std::string result = this->GetCookies(cs, test_url); |
| 1229 EXPECT_FALSE(result.empty()); | 1221 EXPECT_FALSE(result.empty()); |
| 1230 EXPECT_NE(result.find("x=1"), std::string::npos) << result; | 1222 EXPECT_NE(result.find("x=1"), std::string::npos) << result; |
| 1231 EXPECT_NE(result.find("y=2"), std::string::npos) << result; | 1223 EXPECT_NE(result.find("y=2"), std::string::npos) << result; |
| 1232 } | 1224 } |
| 1233 | 1225 |
| 1234 TYPED_TEST_P(CookieStoreTest, OverwritePersistentCookie) { | 1226 TYPED_TEST_P(CookieStoreTest, OverwritePersistentCookie) { |
| 1235 GURL url_google("http://www.google.com/"); | 1227 GURL url_foo("http://www.foo.com/"); |
| 1236 GURL url_chromium("http://chromium.org"); | 1228 GURL url_chromium("http://chromium.org"); |
| 1237 CookieStore* cs = this->GetCookieStore(); | 1229 CookieStore* cs = this->GetCookieStore(); |
| 1238 | 1230 |
| 1239 // Insert a cookie "a" for path "/path1" | 1231 // Insert a cookie "a" for path "/path1" |
| 1240 EXPECT_TRUE(this->SetCookie(cs, url_google, | 1232 EXPECT_TRUE(this->SetCookie(cs, url_foo, |
| 1241 "a=val1; path=/path1; " | 1233 "a=val1; path=/path1; " |
| 1242 "expires=Mon, 18-Apr-22 22:50:13 GMT")); | 1234 "expires=Mon, 18-Apr-22 22:50:13 GMT")); |
| 1243 | 1235 |
| 1244 // Insert a cookie "b" for path "/path1" | 1236 // Insert a cookie "b" for path "/path1" |
| 1245 EXPECT_TRUE(this->SetCookie(cs, url_google, | 1237 EXPECT_TRUE(this->SetCookie(cs, url_foo, |
| 1246 "b=val1; path=/path1; " | 1238 "b=val1; path=/path1; " |
| 1247 "expires=Mon, 18-Apr-22 22:50:14 GMT")); | 1239 "expires=Mon, 18-Apr-22 22:50:14 GMT")); |
| 1248 | 1240 |
| 1249 // Insert a cookie "b" for path "/path1", that is httponly. This should | 1241 // Insert a cookie "b" for path "/path1", that is httponly. This should |
| 1250 // overwrite the non-http-only version. | 1242 // overwrite the non-http-only version. |
| 1251 CookieOptions allow_httponly; | 1243 CookieOptions allow_httponly; |
| 1252 allow_httponly.set_include_httponly(); | 1244 allow_httponly.set_include_httponly(); |
| 1253 EXPECT_TRUE(this->SetCookieWithOptions(cs, url_google, | 1245 EXPECT_TRUE(this->SetCookieWithOptions(cs, url_foo, |
| 1254 "b=val2; path=/path1; httponly; " | 1246 "b=val2; path=/path1; httponly; " |
| 1255 "expires=Mon, 18-Apr-22 22:50:14 GMT", | 1247 "expires=Mon, 18-Apr-22 22:50:14 GMT", |
| 1256 allow_httponly)); | 1248 allow_httponly)); |
| 1257 | 1249 |
| 1258 // Insert a cookie "a" for path "/path1". This should overwrite. | 1250 // Insert a cookie "a" for path "/path1". This should overwrite. |
| 1259 EXPECT_TRUE(this->SetCookie(cs, url_google, | 1251 EXPECT_TRUE(this->SetCookie(cs, url_foo, |
| 1260 "a=val33; path=/path1; " | 1252 "a=val33; path=/path1; " |
| 1261 "expires=Mon, 18-Apr-22 22:50:14 GMT")); | 1253 "expires=Mon, 18-Apr-22 22:50:14 GMT")); |
| 1262 | 1254 |
| 1263 // Insert a cookie "a" for path "/path2". This should NOT overwrite | 1255 // Insert a cookie "a" for path "/path2". This should NOT overwrite |
| 1264 // cookie "a", since the path is different. | 1256 // cookie "a", since the path is different. |
| 1265 EXPECT_TRUE(this->SetCookie(cs, url_google, | 1257 EXPECT_TRUE(this->SetCookie(cs, url_foo, |
| 1266 "a=val9; path=/path2; " | 1258 "a=val9; path=/path2; " |
| 1267 "expires=Mon, 18-Apr-22 22:50:14 GMT")); | 1259 "expires=Mon, 18-Apr-22 22:50:14 GMT")); |
| 1268 | 1260 |
| 1269 // Insert a cookie "a" for path "/path1", but this time for "chromium.org". | 1261 // Insert a cookie "a" for path "/path1", but this time for "chromium.org". |
| 1270 // Although the name and path match, the hostnames do not, so shouldn't | 1262 // Although the name and path match, the hostnames do not, so shouldn't |
| 1271 // overwrite. | 1263 // overwrite. |
| 1272 EXPECT_TRUE(this->SetCookie(cs, url_chromium, | 1264 EXPECT_TRUE(this->SetCookie(cs, url_chromium, |
| 1273 "a=val99; path=/path1; " | 1265 "a=val99; path=/path1; " |
| 1274 "expires=Mon, 18-Apr-22 22:50:14 GMT")); | 1266 "expires=Mon, 18-Apr-22 22:50:14 GMT")); |
| 1275 | 1267 |
| 1276 if (TypeParam::supports_http_only) { | 1268 if (TypeParam::supports_http_only) { |
| 1277 this->MatchCookieLines( | 1269 this->MatchCookieLines( |
| 1278 "a=val33", this->GetCookies(cs, GURL("http://www.google.com/path1"))); | 1270 "a=val33", this->GetCookies(cs, GURL("http://www.foo.com/path1"))); |
| 1279 } else { | 1271 } else { |
| 1280 this->MatchCookieLines( | 1272 this->MatchCookieLines( |
| 1281 "a=val33; b=val2", | 1273 "a=val33; b=val2", |
| 1282 this->GetCookies(cs, GURL("http://www.google.com/path1"))); | 1274 this->GetCookies(cs, GURL("http://www.foo.com/path1"))); |
| 1283 } | 1275 } |
| 1284 this->MatchCookieLines( | 1276 this->MatchCookieLines( |
| 1285 "a=val9", this->GetCookies(cs, GURL("http://www.google.com/path2"))); | 1277 "a=val9", this->GetCookies(cs, GURL("http://www.foo.com/path2"))); |
| 1286 this->MatchCookieLines( | 1278 this->MatchCookieLines( |
| 1287 "a=val99", this->GetCookies(cs, GURL("http://chromium.org/path1"))); | 1279 "a=val99", this->GetCookies(cs, GURL("http://chromium.org/path1"))); |
| 1288 } | 1280 } |
| 1289 | 1281 |
| 1290 TYPED_TEST_P(CookieStoreTest, CookieOrdering) { | 1282 TYPED_TEST_P(CookieStoreTest, CookieOrdering) { |
| 1291 // Put a random set of cookies into a store and make sure they're returned in | 1283 // Put a random set of cookies into a store and make sure they're returned in |
| 1292 // the right order. | 1284 // the right order. |
| 1293 // Cookies should be sorted by path length and creation time, as per RFC6265. | 1285 // Cookies should be sorted by path length and creation time, as per RFC6265. |
| 1294 CookieStore* cs = this->GetCookieStore(); | 1286 CookieStore* cs = this->GetCookieStore(); |
| 1295 EXPECT_TRUE( | 1287 EXPECT_TRUE( |
| 1296 this->SetCookie(cs, GURL("http://d.c.b.a.google.com/aa/x.html"), "c=1")); | 1288 this->SetCookie(cs, GURL("http://d.c.b.a.foo.com/aa/x.html"), "c=1")); |
| 1297 EXPECT_TRUE(this->SetCookie(cs, GURL("http://b.a.google.com/aa/bb/cc/x.html"), | 1289 EXPECT_TRUE(this->SetCookie(cs, GURL("http://b.a.foo.com/aa/bb/cc/x.html"), |
| 1298 "d=1; domain=b.a.google.com")); | 1290 "d=1; domain=b.a.foo.com")); |
| 1299 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds( | 1291 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds( |
| 1300 TypeParam::creation_time_granularity_in_ms)); | 1292 TypeParam::creation_time_granularity_in_ms)); |
| 1301 EXPECT_TRUE(this->SetCookie(cs, GURL("http://b.a.google.com/aa/bb/cc/x.html"), | 1293 EXPECT_TRUE(this->SetCookie(cs, GURL("http://b.a.foo.com/aa/bb/cc/x.html"), |
| 1302 "a=4; domain=b.a.google.com")); | 1294 "a=4; domain=b.a.foo.com")); |
| 1303 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds( | 1295 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds( |
| 1304 TypeParam::creation_time_granularity_in_ms)); | 1296 TypeParam::creation_time_granularity_in_ms)); |
| 1305 EXPECT_TRUE(this->SetCookie(cs, | 1297 EXPECT_TRUE(this->SetCookie(cs, GURL("http://c.b.a.foo.com/aa/bb/cc/x.html"), |
| 1306 GURL("http://c.b.a.google.com/aa/bb/cc/x.html"), | 1298 "e=1; domain=c.b.a.foo.com")); |
| 1307 "e=1; domain=c.b.a.google.com")); | 1299 EXPECT_TRUE( |
| 1308 EXPECT_TRUE(this->SetCookie( | 1300 this->SetCookie(cs, GURL("http://d.c.b.a.foo.com/aa/bb/x.html"), "b=1")); |
| 1309 cs, GURL("http://d.c.b.a.google.com/aa/bb/x.html"), "b=1")); | |
| 1310 EXPECT_TRUE(this->SetCookie(cs, GURL("http://news.bbc.co.uk/midpath/x.html"), | 1301 EXPECT_TRUE(this->SetCookie(cs, GURL("http://news.bbc.co.uk/midpath/x.html"), |
| 1311 "g=10")); | 1302 "g=10")); |
| 1312 EXPECT_EQ( | 1303 EXPECT_EQ("d=1; a=4; e=1; b=1; c=1", |
| 1313 "d=1; a=4; e=1; b=1; c=1", | 1304 this->GetCookies(cs, GURL("http://d.c.b.a.foo.com/aa/bb/cc/dd"))); |
| 1314 this->GetCookies(cs, GURL("http://d.c.b.a.google.com/aa/bb/cc/dd"))); | |
| 1315 | 1305 |
| 1316 CookieOptions options; | 1306 CookieOptions options; |
| 1317 CookieList cookies = this->GetCookieListWithOptions( | 1307 CookieList cookies = this->GetCookieListWithOptions( |
| 1318 cs, GURL("http://d.c.b.a.google.com/aa/bb/cc/dd"), options); | 1308 cs, GURL("http://d.c.b.a.foo.com/aa/bb/cc/dd"), options); |
| 1319 CookieList::const_iterator it = cookies.begin(); | 1309 CookieList::const_iterator it = cookies.begin(); |
| 1320 | 1310 |
| 1321 ASSERT_TRUE(it != cookies.end()); | 1311 ASSERT_TRUE(it != cookies.end()); |
| 1322 EXPECT_EQ("d", it->Name()); | 1312 EXPECT_EQ("d", it->Name()); |
| 1323 | 1313 |
| 1324 ASSERT_TRUE(++it != cookies.end()); | 1314 ASSERT_TRUE(++it != cookies.end()); |
| 1325 EXPECT_EQ("a", it->Name()); | 1315 EXPECT_EQ("a", it->Name()); |
| 1326 | 1316 |
| 1327 ASSERT_TRUE(++it != cookies.end()); | 1317 ASSERT_TRUE(++it != cookies.end()); |
| 1328 EXPECT_EQ("e", it->Name()); | 1318 EXPECT_EQ("e", it->Name()); |
| 1329 | 1319 |
| 1330 ASSERT_TRUE(++it != cookies.end()); | 1320 ASSERT_TRUE(++it != cookies.end()); |
| 1331 EXPECT_EQ("b", it->Name()); | 1321 EXPECT_EQ("b", it->Name()); |
| 1332 | 1322 |
| 1333 ASSERT_TRUE(++it != cookies.end()); | 1323 ASSERT_TRUE(++it != cookies.end()); |
| 1334 EXPECT_EQ("c", it->Name()); | 1324 EXPECT_EQ("c", it->Name()); |
| 1335 | 1325 |
| 1336 EXPECT_TRUE(++it == cookies.end()); | 1326 EXPECT_TRUE(++it == cookies.end()); |
| 1337 } | 1327 } |
| 1338 | 1328 |
| 1339 // Check that GetAllCookiesAsync returns cookies from multiple domains, in the | 1329 // Check that GetAllCookiesAsync returns cookies from multiple domains, in the |
| 1340 // correct order. | 1330 // correct order. |
| 1341 TYPED_TEST_P(CookieStoreTest, GetAllCookiesAsync) { | 1331 TYPED_TEST_P(CookieStoreTest, GetAllCookiesAsync) { |
| 1342 CookieStore* cs = this->GetCookieStore(); | 1332 CookieStore* cs = this->GetCookieStore(); |
| 1343 | 1333 |
| 1344 EXPECT_TRUE( | 1334 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B; path=/a")); |
| 1345 this->SetCookie(cs, this->http_www_google_.url(), "A=B; path=/a")); | 1335 EXPECT_TRUE(this->SetCookie(cs, this->http_baz_com_.url(), "C=D;/")); |
| 1346 EXPECT_TRUE(this->SetCookie(cs, this->http_foo_com_.url(), "C=D;/")); | |
| 1347 EXPECT_TRUE(this->SetCookie(cs, this->http_bar_com_.url(), "E=F; path=/bar")); | 1336 EXPECT_TRUE(this->SetCookie(cs, this->http_bar_com_.url(), "E=F; path=/bar")); |
| 1348 | 1337 |
| 1349 // Check cookies for url. | 1338 // Check cookies for url. |
| 1350 CookieList cookies = this->GetAllCookies(cs); | 1339 CookieList cookies = this->GetAllCookies(cs); |
| 1351 CookieList::const_iterator it = cookies.begin(); | 1340 CookieList::const_iterator it = cookies.begin(); |
| 1352 | 1341 |
| 1353 ASSERT_TRUE(it != cookies.end()); | 1342 ASSERT_TRUE(it != cookies.end()); |
| 1354 EXPECT_EQ(this->http_bar_com_.host(), it->Domain()); | 1343 EXPECT_EQ(this->http_bar_com_.host(), it->Domain()); |
| 1355 EXPECT_EQ("/bar", it->Path()); | 1344 EXPECT_EQ("/bar", it->Path()); |
| 1356 EXPECT_EQ("E", it->Name()); | 1345 EXPECT_EQ("E", it->Name()); |
| 1357 EXPECT_EQ("F", it->Value()); | 1346 EXPECT_EQ("F", it->Value()); |
| 1358 | 1347 |
| 1359 ASSERT_TRUE(++it != cookies.end()); | 1348 ASSERT_TRUE(++it != cookies.end()); |
| 1360 EXPECT_EQ(this->http_www_google_.host(), it->Domain()); | 1349 EXPECT_EQ(this->http_www_foo_.host(), it->Domain()); |
| 1361 EXPECT_EQ("/a", it->Path()); | 1350 EXPECT_EQ("/a", it->Path()); |
| 1362 EXPECT_EQ("A", it->Name()); | 1351 EXPECT_EQ("A", it->Name()); |
| 1363 EXPECT_EQ("B", it->Value()); | 1352 EXPECT_EQ("B", it->Value()); |
| 1364 | 1353 |
| 1365 ASSERT_TRUE(++it != cookies.end()); | 1354 ASSERT_TRUE(++it != cookies.end()); |
| 1366 EXPECT_EQ(this->http_foo_com_.host(), it->Domain()); | 1355 EXPECT_EQ(this->http_baz_com_.host(), it->Domain()); |
| 1367 EXPECT_EQ("/", it->Path()); | 1356 EXPECT_EQ("/", it->Path()); |
| 1368 EXPECT_EQ("C", it->Name()); | 1357 EXPECT_EQ("C", it->Name()); |
| 1369 EXPECT_EQ("D", it->Value()); | 1358 EXPECT_EQ("D", it->Value()); |
| 1370 | 1359 |
| 1371 ASSERT_TRUE(++it == cookies.end()); | 1360 ASSERT_TRUE(++it == cookies.end()); |
| 1372 } | 1361 } |
| 1373 | 1362 |
| 1374 TYPED_TEST_P(CookieStoreTest, DeleteCookieAsync) { | 1363 TYPED_TEST_P(CookieStoreTest, DeleteCookieAsync) { |
| 1375 CookieStore* cs = this->GetCookieStore(); | 1364 CookieStore* cs = this->GetCookieStore(); |
| 1376 | 1365 |
| 1366 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=A1; path=/")); |
| 1377 EXPECT_TRUE( | 1367 EXPECT_TRUE( |
| 1378 this->SetCookie(cs, this->http_www_google_.url(), "A=A1; path=/")); | 1368 this->SetCookie(cs, this->http_www_foo_.url(), "A=A2; path=/foo")); |
| 1379 EXPECT_TRUE( | 1369 EXPECT_TRUE( |
| 1380 this->SetCookie(cs, this->http_www_google_.url(), "A=A2; path=/foo")); | 1370 this->SetCookie(cs, this->http_www_foo_.url(), "A=A3; path=/bar")); |
| 1371 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "B=B1; path=/")); |
| 1381 EXPECT_TRUE( | 1372 EXPECT_TRUE( |
| 1382 this->SetCookie(cs, this->http_www_google_.url(), "A=A3; path=/bar")); | 1373 this->SetCookie(cs, this->http_www_foo_.url(), "B=B2; path=/foo")); |
| 1383 EXPECT_TRUE( | 1374 EXPECT_TRUE( |
| 1384 this->SetCookie(cs, this->http_www_google_.url(), "B=B1; path=/")); | 1375 this->SetCookie(cs, this->http_www_foo_.url(), "B=B3; path=/bar")); |
| 1385 EXPECT_TRUE( | |
| 1386 this->SetCookie(cs, this->http_www_google_.url(), "B=B2; path=/foo")); | |
| 1387 EXPECT_TRUE( | |
| 1388 this->SetCookie(cs, this->http_www_google_.url(), "B=B3; path=/bar")); | |
| 1389 | 1376 |
| 1390 this->DeleteCookie(cs, this->http_www_google_.AppendPath("foo/bar"), "A"); | 1377 this->DeleteCookie(cs, this->http_www_foo_.AppendPath("foo/bar"), "A"); |
| 1391 | 1378 |
| 1392 CookieList cookies = this->GetAllCookies(cs); | 1379 CookieList cookies = this->GetAllCookies(cs); |
| 1393 size_t expected_size = 4; | 1380 size_t expected_size = 4; |
| 1394 EXPECT_EQ(expected_size, cookies.size()); | 1381 EXPECT_EQ(expected_size, cookies.size()); |
| 1395 for (const auto& cookie : cookies) { | 1382 for (const auto& cookie : cookies) { |
| 1396 EXPECT_NE("A1", cookie.Value()); | 1383 EXPECT_NE("A1", cookie.Value()); |
| 1397 EXPECT_NE("A2", cookie.Value()); | 1384 EXPECT_NE("A2", cookie.Value()); |
| 1398 } | 1385 } |
| 1399 } | 1386 } |
| 1400 | 1387 |
| 1401 TYPED_TEST_P(CookieStoreTest, DeleteCanonicalCookieAsync) { | 1388 TYPED_TEST_P(CookieStoreTest, DeleteCanonicalCookieAsync) { |
| 1402 CookieStore* cs = this->GetCookieStore(); | 1389 CookieStore* cs = this->GetCookieStore(); |
| 1403 | 1390 |
| 1404 // Set two cookies with the same name, and make sure both are set. | 1391 // Set two cookies with the same name, and make sure both are set. |
| 1405 EXPECT_TRUE( | 1392 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=B;Path=/foo")); |
| 1406 this->SetCookie(cs, this->http_www_google_.url(), "A=B;Path=/foo")); | 1393 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=C;Path=/bar")); |
| 1407 EXPECT_TRUE( | |
| 1408 this->SetCookie(cs, this->http_www_google_.url(), "A=C;Path=/bar")); | |
| 1409 EXPECT_EQ(2u, this->GetAllCookies(cs).size()); | 1394 EXPECT_EQ(2u, this->GetAllCookies(cs).size()); |
| 1410 EXPECT_EQ("A=B", this->GetCookies(cs, this->www_google_foo_.url())); | 1395 EXPECT_EQ("A=B", this->GetCookies(cs, this->www_foo_foo_.url())); |
| 1411 EXPECT_EQ("A=C", this->GetCookies(cs, this->www_google_bar_.url())); | 1396 EXPECT_EQ("A=C", this->GetCookies(cs, this->www_foo_bar_.url())); |
| 1412 | 1397 |
| 1413 // Delete the "/foo" cookie, and make sure only it was deleted. | 1398 // Delete the "/foo" cookie, and make sure only it was deleted. |
| 1414 CookieList cookies = this->GetCookieListWithOptions( | 1399 CookieList cookies = this->GetCookieListWithOptions( |
| 1415 cs, this->www_google_foo_.url(), CookieOptions()); | 1400 cs, this->www_foo_foo_.url(), CookieOptions()); |
| 1416 ASSERT_EQ(1u, cookies.size()); | 1401 ASSERT_EQ(1u, cookies.size()); |
| 1417 EXPECT_EQ(1, this->DeleteCanonicalCookie(cs, cookies[0])); | 1402 EXPECT_EQ(1, this->DeleteCanonicalCookie(cs, cookies[0])); |
| 1418 EXPECT_EQ(1u, this->GetAllCookies(cs).size()); | 1403 EXPECT_EQ(1u, this->GetAllCookies(cs).size()); |
| 1419 EXPECT_EQ("", this->GetCookies(cs, this->www_google_foo_.url())); | 1404 EXPECT_EQ("", this->GetCookies(cs, this->www_foo_foo_.url())); |
| 1420 EXPECT_EQ("A=C", this->GetCookies(cs, this->www_google_bar_.url())); | 1405 EXPECT_EQ("A=C", this->GetCookies(cs, this->www_foo_bar_.url())); |
| 1421 | 1406 |
| 1422 // Deleting the "/foo" cookie again should fail. | 1407 // Deleting the "/foo" cookie again should fail. |
| 1423 EXPECT_EQ(0, this->DeleteCanonicalCookie(cs, cookies[0])); | 1408 EXPECT_EQ(0, this->DeleteCanonicalCookie(cs, cookies[0])); |
| 1424 | 1409 |
| 1425 // Try to delete the "/bar" cookie after overwriting it with a new cookie. | 1410 // Try to delete the "/bar" cookie after overwriting it with a new cookie. |
| 1426 cookies = this->GetCookieListWithOptions(cs, this->www_google_bar_.url(), | 1411 cookies = this->GetCookieListWithOptions(cs, this->www_foo_bar_.url(), |
| 1427 CookieOptions()); | 1412 CookieOptions()); |
| 1428 ASSERT_EQ(1u, cookies.size()); | 1413 ASSERT_EQ(1u, cookies.size()); |
| 1429 EXPECT_TRUE( | 1414 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), "A=D;Path=/bar")); |
| 1430 this->SetCookie(cs, this->http_www_google_.url(), "A=D;Path=/bar")); | |
| 1431 EXPECT_EQ(0, this->DeleteCanonicalCookie(cs, cookies[0])); | 1415 EXPECT_EQ(0, this->DeleteCanonicalCookie(cs, cookies[0])); |
| 1432 EXPECT_EQ(1u, this->GetAllCookies(cs).size()); | 1416 EXPECT_EQ(1u, this->GetAllCookies(cs).size()); |
| 1433 EXPECT_EQ("A=D", this->GetCookies(cs, this->www_google_bar_.url())); | 1417 EXPECT_EQ("A=D", this->GetCookies(cs, this->www_foo_bar_.url())); |
| 1434 | 1418 |
| 1435 // Delete the new "/bar" cookie. | 1419 // Delete the new "/bar" cookie. |
| 1436 cookies = this->GetCookieListWithOptions(cs, this->www_google_bar_.url(), | 1420 cookies = this->GetCookieListWithOptions(cs, this->www_foo_bar_.url(), |
| 1437 CookieOptions()); | 1421 CookieOptions()); |
| 1438 ASSERT_EQ(1u, cookies.size()); | 1422 ASSERT_EQ(1u, cookies.size()); |
| 1439 EXPECT_EQ(1, this->DeleteCanonicalCookie(cs, cookies[0])); | 1423 EXPECT_EQ(1, this->DeleteCanonicalCookie(cs, cookies[0])); |
| 1440 EXPECT_EQ(0u, this->GetAllCookies(cs).size()); | 1424 EXPECT_EQ(0u, this->GetAllCookies(cs).size()); |
| 1441 EXPECT_EQ("", this->GetCookies(cs, this->www_google_bar_.url())); | 1425 EXPECT_EQ("", this->GetCookies(cs, this->www_foo_bar_.url())); |
| 1442 } | 1426 } |
| 1443 | 1427 |
| 1444 TYPED_TEST_P(CookieStoreTest, DeleteSessionCookie) { | 1428 TYPED_TEST_P(CookieStoreTest, DeleteSessionCookie) { |
| 1445 CookieStore* cs = this->GetCookieStore(); | 1429 CookieStore* cs = this->GetCookieStore(); |
| 1446 // Create a session cookie and a persistent cookie. | 1430 // Create a session cookie and a persistent cookie. |
| 1447 EXPECT_TRUE(this->SetCookie(cs, this->http_www_google_.url(), | 1431 EXPECT_TRUE(this->SetCookie(cs, this->http_www_foo_.url(), |
| 1448 std::string(kValidCookieLine))); | 1432 std::string(kValidCookieLine))); |
| 1449 EXPECT_TRUE(this->SetCookie( | 1433 EXPECT_TRUE(this->SetCookie( |
| 1450 cs, this->http_www_google_.url(), | 1434 cs, this->http_www_foo_.url(), |
| 1451 this->http_www_google_.Format("C=D; path=/; domain=%D;" | 1435 this->http_www_foo_.Format("C=D; path=/; domain=%D;" |
| 1452 "expires=Mon, 18-Apr-22 22:50:13 GMT"))); | 1436 "expires=Mon, 18-Apr-22 22:50:13 GMT"))); |
| 1453 this->MatchCookieLines("A=B; C=D", | 1437 this->MatchCookieLines("A=B; C=D", |
| 1454 this->GetCookies(cs, this->http_www_google_.url())); | 1438 this->GetCookies(cs, this->http_www_foo_.url())); |
| 1455 // Delete the session cookie. | 1439 // Delete the session cookie. |
| 1456 this->DeleteSessionCookies(cs); | 1440 this->DeleteSessionCookies(cs); |
| 1457 // Check that the session cookie has been deleted but not the persistent one. | 1441 // Check that the session cookie has been deleted but not the persistent one. |
| 1458 EXPECT_EQ("C=D", this->GetCookies(cs, this->http_www_google_.url())); | 1442 EXPECT_EQ("C=D", this->GetCookies(cs, this->http_www_foo_.url())); |
| 1459 } | 1443 } |
| 1460 | 1444 |
| 1461 REGISTER_TYPED_TEST_CASE_P(CookieStoreTest, | 1445 REGISTER_TYPED_TEST_CASE_P(CookieStoreTest, |
| 1462 SetCookieWithDetailsAsync, | 1446 SetCookieWithDetailsAsync, |
| 1463 SetCookieWithDetailsSecureEnforcement, | 1447 SetCookieWithDetailsSecureEnforcement, |
| 1464 EmptyKeyTest, | 1448 EmptyKeyTest, |
| 1465 DomainTest, | 1449 DomainTest, |
| 1466 DomainWithTrailingDotTest, | 1450 DomainWithTrailingDotTest, |
| 1467 ValidSubdomainTest, | 1451 ValidSubdomainTest, |
| 1468 InvalidDomainTest, | 1452 InvalidDomainTest, |
| (...skipping 25 matching lines...) Expand all Loading... |
| 1494 OverwritePersistentCookie, | 1478 OverwritePersistentCookie, |
| 1495 CookieOrdering, | 1479 CookieOrdering, |
| 1496 GetAllCookiesAsync, | 1480 GetAllCookiesAsync, |
| 1497 DeleteCookieAsync, | 1481 DeleteCookieAsync, |
| 1498 DeleteCanonicalCookieAsync, | 1482 DeleteCanonicalCookieAsync, |
| 1499 DeleteSessionCookie); | 1483 DeleteSessionCookie); |
| 1500 | 1484 |
| 1501 } // namespace net | 1485 } // namespace net |
| 1502 | 1486 |
| 1503 #endif // NET_COOKIES_COOKIE_STORE_UNITTEST_H_ | 1487 #endif // NET_COOKIES_COOKIE_STORE_UNITTEST_H_ |
| OLD | NEW |