| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/browser/net/sqlite_persistent_cookie_store.h" | 5 #include "content/browser/net/sqlite_persistent_cookie_store.h" |
| 6 | 6 |
| 7 #include <map> | 7 #include <map> |
| 8 #include <set> | 8 #include <set> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 152 void WaitOnDBEvent() { | 152 void WaitOnDBEvent() { |
| 153 db_thread_event_.Wait(); | 153 db_thread_event_.Wait(); |
| 154 } | 154 } |
| 155 | 155 |
| 156 // Adds a persistent cookie to store_. | 156 // Adds a persistent cookie to store_. |
| 157 void AddCookie(const std::string& name, | 157 void AddCookie(const std::string& name, |
| 158 const std::string& value, | 158 const std::string& value, |
| 159 const std::string& domain, | 159 const std::string& domain, |
| 160 const std::string& path, | 160 const std::string& path, |
| 161 const base::Time& creation) { | 161 const base::Time& creation) { |
| 162 store_->AddCookie( | 162 store_->AddCookie(net::CanonicalCookie( |
| 163 net::CanonicalCookie(GURL(), name, value, domain, path, creation, | 163 GURL(), name, value, domain, path, creation, creation, creation, false, |
| 164 creation, creation, false, false, | 164 false, false, net::COOKIE_PRIORITY_DEFAULT)); |
| 165 net::COOKIE_PRIORITY_DEFAULT)); | |
| 166 } | 165 } |
| 167 | 166 |
| 168 std::string ReadRawDBContents() { | 167 std::string ReadRawDBContents() { |
| 169 std::string contents; | 168 std::string contents; |
| 170 if (!base::ReadFileToString(temp_dir_.path().Append(kCookieFilename), | 169 if (!base::ReadFileToString(temp_dir_.path().Append(kCookieFilename), |
| 171 &contents)) | 170 &contents)) |
| 172 return std::string(); | 171 return std::string(); |
| 173 return contents; | 172 return contents; |
| 174 } | 173 } |
| 175 | 174 |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 // We forced a write, so now the file will be bigger. | 353 // We forced a write, so now the file will be bigger. |
| 355 ASSERT_TRUE(base::GetFileInfo(path, &info)); | 354 ASSERT_TRUE(base::GetFileInfo(path, &info)); |
| 356 ASSERT_GT(info.size, base_size); | 355 ASSERT_GT(info.size, base_size); |
| 357 } | 356 } |
| 358 | 357 |
| 359 // Test loading old session cookies from the disk. | 358 // Test loading old session cookies from the disk. |
| 360 TEST_F(SQLitePersistentCookieStoreTest, TestLoadOldSessionCookies) { | 359 TEST_F(SQLitePersistentCookieStoreTest, TestLoadOldSessionCookies) { |
| 361 InitializeStore(false, true); | 360 InitializeStore(false, true); |
| 362 | 361 |
| 363 // Add a session cookie. | 362 // Add a session cookie. |
| 364 store_->AddCookie( | 363 store_->AddCookie(net::CanonicalCookie(GURL(), "C", "D", "sessioncookie.com", |
| 365 net::CanonicalCookie( | 364 "/", base::Time::Now(), base::Time(), |
| 366 GURL(), "C", "D", "sessioncookie.com", "/", base::Time::Now(), | 365 base::Time::Now(), false, false, false, |
| 367 base::Time(), base::Time::Now(), false, false, | 366 net::COOKIE_PRIORITY_DEFAULT)); |
| 368 net::COOKIE_PRIORITY_DEFAULT)); | |
| 369 | 367 |
| 370 // Force the store to write its data to the disk. | 368 // Force the store to write its data to the disk. |
| 371 DestroyStore(); | 369 DestroyStore(); |
| 372 | 370 |
| 373 // Create a store that loads session cookies and test that the session cookie | 371 // Create a store that loads session cookies and test that the session cookie |
| 374 // was loaded. | 372 // was loaded. |
| 375 CanonicalCookieVector cookies; | 373 CanonicalCookieVector cookies; |
| 376 CreateAndLoad(false, true, &cookies); | 374 CreateAndLoad(false, true, &cookies); |
| 377 | 375 |
| 378 ASSERT_EQ(1U, cookies.size()); | 376 ASSERT_EQ(1U, cookies.size()); |
| 379 ASSERT_STREQ("sessioncookie.com", cookies[0]->Domain().c_str()); | 377 ASSERT_STREQ("sessioncookie.com", cookies[0]->Domain().c_str()); |
| 380 ASSERT_STREQ("C", cookies[0]->Name().c_str()); | 378 ASSERT_STREQ("C", cookies[0]->Name().c_str()); |
| 381 ASSERT_STREQ("D", cookies[0]->Value().c_str()); | 379 ASSERT_STREQ("D", cookies[0]->Value().c_str()); |
| 382 ASSERT_EQ(net::COOKIE_PRIORITY_DEFAULT, cookies[0]->Priority()); | 380 ASSERT_EQ(net::COOKIE_PRIORITY_DEFAULT, cookies[0]->Priority()); |
| 383 | 381 |
| 384 STLDeleteElements(&cookies); | 382 STLDeleteElements(&cookies); |
| 385 } | 383 } |
| 386 | 384 |
| 387 // Test loading old session cookies from the disk. | 385 // Test loading old session cookies from the disk. |
| 388 TEST_F(SQLitePersistentCookieStoreTest, TestDontLoadOldSessionCookies) { | 386 TEST_F(SQLitePersistentCookieStoreTest, TestDontLoadOldSessionCookies) { |
| 389 InitializeStore(false, true); | 387 InitializeStore(false, true); |
| 390 | 388 |
| 391 // Add a session cookie. | 389 // Add a session cookie. |
| 392 store_->AddCookie( | 390 store_->AddCookie(net::CanonicalCookie(GURL(), "C", "D", "sessioncookie.com", |
| 393 net::CanonicalCookie( | 391 "/", base::Time::Now(), base::Time(), |
| 394 GURL(), "C", "D", "sessioncookie.com", "/", base::Time::Now(), | 392 base::Time::Now(), false, false, false, |
| 395 base::Time(), base::Time::Now(), false, false, | 393 net::COOKIE_PRIORITY_DEFAULT)); |
| 396 net::COOKIE_PRIORITY_DEFAULT)); | |
| 397 | 394 |
| 398 // Force the store to write its data to the disk. | 395 // Force the store to write its data to the disk. |
| 399 DestroyStore(); | 396 DestroyStore(); |
| 400 | 397 |
| 401 // Create a store that doesn't load old session cookies and test that the | 398 // Create a store that doesn't load old session cookies and test that the |
| 402 // session cookie was not loaded. | 399 // session cookie was not loaded. |
| 403 CanonicalCookieVector cookies; | 400 CanonicalCookieVector cookies; |
| 404 CreateAndLoad(false, false, &cookies); | 401 CreateAndLoad(false, false, &cookies); |
| 405 ASSERT_EQ(0U, cookies.size()); | 402 ASSERT_EQ(0U, cookies.size()); |
| 406 | 403 |
| 407 // The store should also delete the session cookie. Wait until that has been | 404 // The store should also delete the session cookie. Wait until that has been |
| 408 // done. | 405 // done. |
| 409 DestroyStore(); | 406 DestroyStore(); |
| 410 | 407 |
| 411 // Create a store that loads old session cookies and test that the session | 408 // Create a store that loads old session cookies and test that the session |
| 412 // cookie is gone. | 409 // cookie is gone. |
| 413 CreateAndLoad(false, true, &cookies); | 410 CreateAndLoad(false, true, &cookies); |
| 414 ASSERT_EQ(0U, cookies.size()); | 411 ASSERT_EQ(0U, cookies.size()); |
| 415 } | 412 } |
| 416 | 413 |
| 417 TEST_F(SQLitePersistentCookieStoreTest, PersistIsPersistent) { | 414 TEST_F(SQLitePersistentCookieStoreTest, PersistIsPersistent) { |
| 418 InitializeStore(false, true); | 415 InitializeStore(false, true); |
| 419 static const char kSessionName[] = "session"; | 416 static const char kSessionName[] = "session"; |
| 420 static const char kPersistentName[] = "persistent"; | 417 static const char kPersistentName[] = "persistent"; |
| 421 | 418 |
| 422 // Add a session cookie. | 419 // Add a session cookie. |
| 423 store_->AddCookie( | 420 store_->AddCookie(net::CanonicalCookie( |
| 424 net::CanonicalCookie( | 421 GURL(), kSessionName, "val", "sessioncookie.com", "/", base::Time::Now(), |
| 425 GURL(), kSessionName, "val", "sessioncookie.com", "/", | 422 base::Time(), base::Time::Now(), false, false, false, |
| 426 base::Time::Now(), base::Time(), base::Time::Now(), false, false, | 423 net::COOKIE_PRIORITY_DEFAULT)); |
| 427 net::COOKIE_PRIORITY_DEFAULT)); | |
| 428 // Add a persistent cookie. | 424 // Add a persistent cookie. |
| 429 store_->AddCookie( | 425 store_->AddCookie(net::CanonicalCookie( |
| 430 net::CanonicalCookie( | 426 GURL(), kPersistentName, "val", "sessioncookie.com", "/", |
| 431 GURL(), kPersistentName, "val", "sessioncookie.com", "/", | 427 base::Time::Now() - base::TimeDelta::FromDays(1), |
| 432 base::Time::Now() - base::TimeDelta::FromDays(1), | 428 base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), |
| 433 base::Time::Now() + base::TimeDelta::FromDays(1), | 429 false, false, false, net::COOKIE_PRIORITY_DEFAULT)); |
| 434 base::Time::Now(), false, false, | |
| 435 net::COOKIE_PRIORITY_DEFAULT)); | |
| 436 | 430 |
| 437 // Force the store to write its data to the disk. | 431 // Force the store to write its data to the disk. |
| 438 DestroyStore(); | 432 DestroyStore(); |
| 439 | 433 |
| 440 // Create a store that loads session cookie and test that the IsPersistent | 434 // Create a store that loads session cookie and test that the IsPersistent |
| 441 // attribute is restored. | 435 // attribute is restored. |
| 442 CanonicalCookieVector cookies; | 436 CanonicalCookieVector cookies; |
| 443 CreateAndLoad(false, true, &cookies); | 437 CreateAndLoad(false, true, &cookies); |
| 444 ASSERT_EQ(2U, cookies.size()); | 438 ASSERT_EQ(2U, cookies.size()); |
| 445 | 439 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 466 static const char kLowName[] = "low"; | 460 static const char kLowName[] = "low"; |
| 467 static const char kMediumName[] = "medium"; | 461 static const char kMediumName[] = "medium"; |
| 468 static const char kHighName[] = "high"; | 462 static const char kHighName[] = "high"; |
| 469 static const char kCookieDomain[] = "sessioncookie.com"; | 463 static const char kCookieDomain[] = "sessioncookie.com"; |
| 470 static const char kCookieValue[] = "value"; | 464 static const char kCookieValue[] = "value"; |
| 471 static const char kCookiePath[] = "/"; | 465 static const char kCookiePath[] = "/"; |
| 472 | 466 |
| 473 InitializeStore(false, true); | 467 InitializeStore(false, true); |
| 474 | 468 |
| 475 // Add a low-priority persistent cookie. | 469 // Add a low-priority persistent cookie. |
| 476 store_->AddCookie( | 470 store_->AddCookie(net::CanonicalCookie( |
| 477 net::CanonicalCookie( | 471 GURL(), kLowName, kCookieValue, kCookieDomain, kCookiePath, |
| 478 GURL(), kLowName, kCookieValue, kCookieDomain, kCookiePath, | 472 base::Time::Now() - base::TimeDelta::FromMinutes(1), |
| 479 base::Time::Now() - base::TimeDelta::FromMinutes(1), | 473 base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), |
| 480 base::Time::Now() + base::TimeDelta::FromDays(1), | 474 false, false, false, net::COOKIE_PRIORITY_LOW)); |
| 481 base::Time::Now(), false, false, | |
| 482 net::COOKIE_PRIORITY_LOW)); | |
| 483 | 475 |
| 484 // Add a medium-priority persistent cookie. | 476 // Add a medium-priority persistent cookie. |
| 485 store_->AddCookie( | 477 store_->AddCookie(net::CanonicalCookie( |
| 486 net::CanonicalCookie( | 478 GURL(), kMediumName, kCookieValue, kCookieDomain, kCookiePath, |
| 487 GURL(), kMediumName, kCookieValue, kCookieDomain, kCookiePath, | 479 base::Time::Now() - base::TimeDelta::FromMinutes(2), |
| 488 base::Time::Now() - base::TimeDelta::FromMinutes(2), | 480 base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), |
| 489 base::Time::Now() + base::TimeDelta::FromDays(1), | 481 false, false, false, net::COOKIE_PRIORITY_MEDIUM)); |
| 490 base::Time::Now(), false, false, | |
| 491 net::COOKIE_PRIORITY_MEDIUM)); | |
| 492 | 482 |
| 493 // Add a high-priority peristent cookie. | 483 // Add a high-priority peristent cookie. |
| 494 store_->AddCookie( | 484 store_->AddCookie(net::CanonicalCookie( |
| 495 net::CanonicalCookie( | 485 GURL(), kHighName, kCookieValue, kCookieDomain, kCookiePath, |
| 496 GURL(), kHighName, kCookieValue, kCookieDomain, kCookiePath, | 486 base::Time::Now() - base::TimeDelta::FromMinutes(3), |
| 497 base::Time::Now() - base::TimeDelta::FromMinutes(3), | 487 base::Time::Now() + base::TimeDelta::FromDays(1), base::Time::Now(), |
| 498 base::Time::Now() + base::TimeDelta::FromDays(1), | 488 false, false, false, net::COOKIE_PRIORITY_HIGH)); |
| 499 base::Time::Now(), false, false, | |
| 500 net::COOKIE_PRIORITY_HIGH)); | |
| 501 | 489 |
| 502 // Force the store to write its data to the disk. | 490 // Force the store to write its data to the disk. |
| 503 DestroyStore(); | 491 DestroyStore(); |
| 504 | 492 |
| 505 // Create a store that loads session cookie and test that the priority | 493 // Create a store that loads session cookie and test that the priority |
| 506 // attribute values are restored. | 494 // attribute values are restored. |
| 507 CanonicalCookieVector cookies; | 495 CanonicalCookieVector cookies; |
| 508 CreateAndLoad(false, true, &cookies); | 496 CreateAndLoad(false, true, &cookies); |
| 509 ASSERT_EQ(3U, cookies.size()); | 497 ASSERT_EQ(3U, cookies.size()); |
| 510 | 498 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 597 EXPECT_EQ(2, resultcount); | 585 EXPECT_EQ(2, resultcount); |
| 598 | 586 |
| 599 // Verify that "encrypted_value" is NOT visible in the file. | 587 // Verify that "encrypted_value" is NOT visible in the file. |
| 600 contents = ReadRawDBContents(); | 588 contents = ReadRawDBContents(); |
| 601 EXPECT_NE(0U, contents.length()); | 589 EXPECT_NE(0U, contents.length()); |
| 602 EXPECT_EQ(contents.find("encrypted_value123XYZ"), std::string::npos); | 590 EXPECT_EQ(contents.find("encrypted_value123XYZ"), std::string::npos); |
| 603 EXPECT_EQ(contents.find("something456ABC"), std::string::npos); | 591 EXPECT_EQ(contents.find("something456ABC"), std::string::npos); |
| 604 } | 592 } |
| 605 | 593 |
| 606 } // namespace content | 594 } // namespace content |
| OLD | NEW |