| 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 "chrome/browser/browsing_data_remover.h" | 5 #include "chrome/browser/browsing_data_remover.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 22 matching lines...) Expand all Loading... |
| 33 #include "webkit/fileapi/file_system_operation_context.h" | 33 #include "webkit/fileapi/file_system_operation_context.h" |
| 34 #include "webkit/fileapi/sandbox_mount_point_provider.h" | 34 #include "webkit/fileapi/sandbox_mount_point_provider.h" |
| 35 #include "webkit/quota/mock_quota_manager.h" | 35 #include "webkit/quota/mock_quota_manager.h" |
| 36 #include "webkit/quota/quota_manager.h" | 36 #include "webkit/quota/quota_manager.h" |
| 37 #include "webkit/quota/quota_types.h" | 37 #include "webkit/quota/quota_types.h" |
| 38 | 38 |
| 39 using content::BrowserThread; | 39 using content::BrowserThread; |
| 40 | 40 |
| 41 namespace { | 41 namespace { |
| 42 | 42 |
| 43 const char kTestkOrigin1[] = "http://host1:1/"; | 43 const char kTestOrigin1[] = "http://host1:1/"; |
| 44 const char kTestkOrigin2[] = "http://host2:1/"; | 44 const char kTestOrigin2[] = "http://host2:1/"; |
| 45 const char kTestkOrigin3[] = "http://host3:1/"; | 45 const char kTestOrigin3[] = "http://host3:1/"; |
| 46 const char kTestOriginExt[] = "chrome-extension://abcdefghijklmnopqrstuvwxyz/"; |
| 47 const char kTestOriginDevTools[] = "chrome-devtools://abcdefghijklmnopqrstuvw/"; |
| 46 | 48 |
| 47 const GURL kOrigin1(kTestkOrigin1); | 49 const GURL kOrigin1(kTestOrigin1); |
| 48 const GURL kOrigin2(kTestkOrigin2); | 50 const GURL kOrigin2(kTestOrigin2); |
| 49 const GURL kOrigin3(kTestkOrigin3); | 51 const GURL kOrigin3(kTestOrigin3); |
| 52 const GURL kOriginExt(kTestOriginExt); |
| 53 const GURL kOriginDevTools(kTestOriginDevTools); |
| 50 | 54 |
| 51 const quota::StorageType kTemporary = quota::kStorageTypeTemporary; | 55 const quota::StorageType kTemporary = quota::kStorageTypeTemporary; |
| 52 const quota::StorageType kPersistent = quota::kStorageTypePersistent; | 56 const quota::StorageType kPersistent = quota::kStorageTypePersistent; |
| 53 | 57 |
| 54 const quota::QuotaClient::ID kClientFile = quota::QuotaClient::kFileSystem; | 58 const quota::QuotaClient::ID kClientFile = quota::QuotaClient::kFileSystem; |
| 55 const quota::QuotaClient::ID kClientDB = quota::QuotaClient::kIndexedDatabase; | 59 const quota::QuotaClient::ID kClientDB = quota::QuotaClient::kIndexedDatabase; |
| 56 | 60 |
| 57 } // namespace | 61 } // namespace |
| 58 | 62 |
| 59 class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer { | 63 class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer { |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 295 | 299 |
| 296 void PopulateTestQuotaManagedData(quota::MockQuotaManager* manager) { | 300 void PopulateTestQuotaManagedData(quota::MockQuotaManager* manager) { |
| 297 // Set up kOrigin1 with a temporary quota, kOrigin2 with a persistent | 301 // Set up kOrigin1 with a temporary quota, kOrigin2 with a persistent |
| 298 // quota, and kOrigin3 with both. kOrigin1 is modified now, kOrigin2 | 302 // quota, and kOrigin3 with both. kOrigin1 is modified now, kOrigin2 |
| 299 // is modified at the beginning of time, and kOrigin3 is modified one day | 303 // is modified at the beginning of time, and kOrigin3 is modified one day |
| 300 // ago. | 304 // ago. |
| 301 PopulateTestQuotaManagedPersistentData(manager); | 305 PopulateTestQuotaManagedPersistentData(manager); |
| 302 PopulateTestQuotaManagedTemporaryData(manager); | 306 PopulateTestQuotaManagedTemporaryData(manager); |
| 303 } | 307 } |
| 304 | 308 |
| 309 void PopulateTestQuotaManagedNonBrowsingData( |
| 310 quota::MockQuotaManager* manager) { |
| 311 manager->AddOrigin(kOriginDevTools, kTemporary, kClientFile, base::Time()); |
| 312 manager->AddOrigin(kOriginDevTools, kPersistent, kClientFile, base::Time()); |
| 313 manager->AddOrigin(kOriginExt, kTemporary, kClientFile, base::Time()); |
| 314 manager->AddOrigin(kOriginExt, kPersistent, kClientFile, base::Time()); |
| 315 } |
| 316 |
| 305 void PopulateTestQuotaManagedPersistentData( | 317 void PopulateTestQuotaManagedPersistentData( |
| 306 quota::MockQuotaManager* manager) { | 318 quota::MockQuotaManager* manager) { |
| 307 manager->AddOrigin(kOrigin2, kPersistent, kClientFile, base::Time()); | 319 manager->AddOrigin(kOrigin2, kPersistent, kClientFile, base::Time()); |
| 308 manager->AddOrigin(kOrigin3, kPersistent, kClientFile, | 320 manager->AddOrigin(kOrigin3, kPersistent, kClientFile, |
| 309 base::Time::Now() - base::TimeDelta::FromDays(1)); | 321 base::Time::Now() - base::TimeDelta::FromDays(1)); |
| 310 | 322 |
| 311 EXPECT_FALSE(manager->OriginHasData(kOrigin1, kPersistent, kClientFile)); | 323 EXPECT_FALSE(manager->OriginHasData(kOrigin1, kPersistent, kClientFile)); |
| 312 EXPECT_TRUE(manager->OriginHasData(kOrigin2, kPersistent, kClientFile)); | 324 EXPECT_TRUE(manager->OriginHasData(kOrigin2, kPersistent, kClientFile)); |
| 313 EXPECT_TRUE(manager->OriginHasData(kOrigin3, kPersistent, kClientFile)); | 325 EXPECT_TRUE(manager->OriginHasData(kOrigin3, kPersistent, kClientFile)); |
| 314 } | 326 } |
| (...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 508 // Removing with time period other than EVERYTHING should not clear safe | 520 // Removing with time period other than EVERYTHING should not clear safe |
| 509 // browsing cookies. | 521 // browsing cookies. |
| 510 EXPECT_TRUE(tester->ContainsCookie()); | 522 EXPECT_TRUE(tester->ContainsCookie()); |
| 511 } | 523 } |
| 512 #endif | 524 #endif |
| 513 | 525 |
| 514 TEST_F(BrowsingDataRemoverTest, RemoveServerBoundCertForever) { | 526 TEST_F(BrowsingDataRemoverTest, RemoveServerBoundCertForever) { |
| 515 scoped_ptr<RemoveServerBoundCertTester> tester( | 527 scoped_ptr<RemoveServerBoundCertTester> tester( |
| 516 new RemoveServerBoundCertTester(GetProfile())); | 528 new RemoveServerBoundCertTester(GetProfile())); |
| 517 | 529 |
| 518 tester->AddServerBoundCert(kTestkOrigin1); | 530 tester->AddServerBoundCert(kTestOrigin1); |
| 519 EXPECT_EQ(1, tester->ServerBoundCertCount()); | 531 EXPECT_EQ(1, tester->ServerBoundCertCount()); |
| 520 | 532 |
| 521 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, | 533 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, |
| 522 BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, tester.get()); | 534 BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, tester.get()); |
| 523 | 535 |
| 524 EXPECT_EQ(BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, GetRemovalMask()); | 536 EXPECT_EQ(BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, GetRemovalMask()); |
| 525 EXPECT_EQ(0, tester->ServerBoundCertCount()); | 537 EXPECT_EQ(0, tester->ServerBoundCertCount()); |
| 526 } | 538 } |
| 527 | 539 |
| 528 TEST_F(BrowsingDataRemoverTest, RemoveServerBoundCertLastHour) { | 540 TEST_F(BrowsingDataRemoverTest, RemoveServerBoundCertLastHour) { |
| 529 scoped_ptr<RemoveServerBoundCertTester> tester( | 541 scoped_ptr<RemoveServerBoundCertTester> tester( |
| 530 new RemoveServerBoundCertTester(GetProfile())); | 542 new RemoveServerBoundCertTester(GetProfile())); |
| 531 | 543 |
| 532 base::Time now = base::Time::Now(); | 544 base::Time now = base::Time::Now(); |
| 533 tester->AddServerBoundCert(kTestkOrigin1); | 545 tester->AddServerBoundCert(kTestOrigin1); |
| 534 tester->AddServerBoundCertWithTimes(kTestkOrigin2, | 546 tester->AddServerBoundCertWithTimes(kTestOrigin2, |
| 535 now - base::TimeDelta::FromHours(2), | 547 now - base::TimeDelta::FromHours(2), |
| 536 now); | 548 now); |
| 537 EXPECT_EQ(2, tester->ServerBoundCertCount()); | 549 EXPECT_EQ(2, tester->ServerBoundCertCount()); |
| 538 | 550 |
| 539 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, | 551 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, |
| 540 BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, tester.get()); | 552 BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, tester.get()); |
| 541 | 553 |
| 542 EXPECT_EQ(BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, GetRemovalMask()); | 554 EXPECT_EQ(BrowsingDataRemover::REMOVE_SERVER_BOUND_CERTS, GetRemovalMask()); |
| 543 EXPECT_EQ(1, tester->ServerBoundCertCount()); | 555 EXPECT_EQ(1, tester->ServerBoundCertCount()); |
| 544 std::vector<net::ServerBoundCertStore::ServerBoundCert> certs; | 556 std::vector<net::ServerBoundCertStore::ServerBoundCert> certs; |
| 545 tester->GetCertStore()->GetAllServerBoundCerts(&certs); | 557 tester->GetCertStore()->GetAllServerBoundCerts(&certs); |
| 546 EXPECT_EQ(kTestkOrigin2, certs[0].server_identifier()); | 558 EXPECT_EQ(kTestOrigin2, certs[0].server_identifier()); |
| 547 } | 559 } |
| 548 | 560 |
| 549 TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) { | 561 TEST_F(BrowsingDataRemoverTest, RemoveHistoryForever) { |
| 550 scoped_ptr<RemoveHistoryTester> tester( | 562 scoped_ptr<RemoveHistoryTester> tester( |
| 551 new RemoveHistoryTester(GetProfile())); | 563 new RemoveHistoryTester(GetProfile())); |
| 552 | 564 |
| 553 tester->AddHistory(kOrigin1, base::Time::Now()); | 565 tester->AddHistory(kOrigin1, base::Time::Now()); |
| 554 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 566 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 555 | 567 |
| 556 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, | 568 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, | 855 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, |
| 844 kClientFile)); | 856 kClientFile)); |
| 845 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, | 857 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, |
| 846 kClientFile)); | 858 kClientFile)); |
| 847 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, | 859 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, |
| 848 kClientFile)); | 860 kClientFile)); |
| 849 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, | 861 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, |
| 850 kClientFile)); | 862 kClientFile)); |
| 851 } | 863 } |
| 852 | 864 |
| 865 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedIgnoreExtensionsAndDevTools) { |
| 866 scoped_ptr<RemoveQuotaManagedDataTester> tester( |
| 867 new RemoveQuotaManagedDataTester()); |
| 868 tester->PopulateTestQuotaManagedNonBrowsingData(GetMockManager()); |
| 869 |
| 870 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::EVERYTHING, |
| 871 BrowsingDataRemover::REMOVE_APPCACHE | |
| 872 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | |
| 873 BrowsingDataRemover::REMOVE_INDEXEDDB | |
| 874 BrowsingDataRemover::REMOVE_WEBSQL, tester.get()); |
| 875 |
| 876 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | |
| 877 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | |
| 878 BrowsingDataRemover::REMOVE_INDEXEDDB | |
| 879 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); |
| 880 |
| 881 // Check that extension and devtools data isn't removed. |
| 882 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginExt, kTemporary, |
| 883 kClientFile)); |
| 884 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginExt, kPersistent, |
| 885 kClientFile)); |
| 886 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginDevTools, kTemporary, |
| 887 kClientFile)); |
| 888 EXPECT_TRUE(GetMockManager()->OriginHasData(kOriginDevTools, kPersistent, |
| 889 kClientFile)); |
| 890 } |
| 891 |
| 853 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { | 892 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { |
| 854 scoped_ptr<RemoveHistoryTester> tester( | 893 scoped_ptr<RemoveHistoryTester> tester( |
| 855 new RemoveHistoryTester(GetProfile())); | 894 new RemoveHistoryTester(GetProfile())); |
| 856 | 895 |
| 857 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); | 896 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); |
| 858 | 897 |
| 859 tester->AddHistory(kOrigin1, base::Time::Now()); | 898 tester->AddHistory(kOrigin1, base::Time::Now()); |
| 860 tester->AddHistory(kOrigin2, two_hours_ago); | 899 tester->AddHistory(kOrigin2, two_hours_ago); |
| 861 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 900 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 862 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); | 901 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
| (...skipping 17 matching lines...) Expand all Loading... |
| 880 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 919 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 881 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); | 920 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
| 882 | 921 |
| 883 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, | 922 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, |
| 884 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); | 923 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); |
| 885 | 924 |
| 886 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); | 925 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); |
| 887 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 926 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 888 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2)); | 927 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
| 889 } | 928 } |
| OLD | NEW |