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 318 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
329 tester->BlockUntilNotified(); | 329 tester->BlockUntilNotified(); |
330 } | 330 } |
331 | 331 |
332 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, | 332 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, |
333 int remove_mask, | 333 int remove_mask, |
334 const GURL& remove_origin, | 334 const GURL& remove_origin, |
335 BrowsingDataRemoverTester* tester) { | 335 BrowsingDataRemoverTester* tester) { |
336 BrowsingDataRemover* remover = new BrowsingDataRemover( | 336 BrowsingDataRemover* remover = new BrowsingDataRemover( |
337 profile_.get(), period, | 337 profile_.get(), period, |
338 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); | 338 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); |
| 339 remover->OverrideQuotaManagerForTesting(GetMockManager()); |
339 remover->AddObserver(tester); | 340 remover->AddObserver(tester); |
340 | 341 |
341 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); | 342 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); |
342 | 343 |
343 // BrowsingDataRemover deletes itself when it completes. | 344 // BrowsingDataRemover deletes itself when it completes. |
344 remover->RemoveImpl(remove_mask, remove_origin, false); | 345 remover->RemoveImpl(remove_mask, remove_origin, false); |
345 tester->BlockUntilNotified(); | 346 tester->BlockUntilNotified(); |
346 } | 347 } |
347 | 348 |
348 TestingProfile* GetProfile() { | 349 TestingProfile* GetProfile() { |
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, | 605 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, |
605 kClientFile)); | 606 kClientFile)); |
606 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, | 607 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, |
607 kClientFile)); | 608 kClientFile)); |
608 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, | 609 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, |
609 kClientFile)); | 610 kClientFile)); |
610 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, | 611 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, |
611 kClientFile)); | 612 kClientFile)); |
612 } | 613 } |
613 | 614 |
| 615 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForeverSpecificOrigin) { |
| 616 scoped_ptr<RemoveQuotaManagedDataTester> tester( |
| 617 new RemoveQuotaManagedDataTester()); |
| 618 tester->PopulateTestQuotaManagedData(GetMockManager()); |
| 619 |
| 620 // Remove Origin 1. |
| 621 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, |
| 622 BrowsingDataRemover::REMOVE_APPCACHE | |
| 623 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | |
| 624 BrowsingDataRemover::REMOVE_INDEXEDDB | |
| 625 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1, tester.get()); |
| 626 |
| 627 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | |
| 628 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | |
| 629 BrowsingDataRemover::REMOVE_INDEXEDDB | |
| 630 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); |
| 631 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, |
| 632 kClientFile)); |
| 633 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, |
| 634 kClientFile)); |
| 635 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, |
| 636 kClientFile)); |
| 637 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, |
| 638 kClientFile)); |
| 639 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, |
| 640 kClientFile)); |
| 641 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, |
| 642 kClientFile)); |
| 643 } |
| 644 |
614 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) { | 645 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedDataForLastHour) { |
615 scoped_ptr<RemoveQuotaManagedDataTester> tester( | 646 scoped_ptr<RemoveQuotaManagedDataTester> tester( |
616 new RemoveQuotaManagedDataTester()); | 647 new RemoveQuotaManagedDataTester()); |
617 tester->PopulateTestQuotaManagedData(GetMockManager()); | 648 tester->PopulateTestQuotaManagedData(GetMockManager()); |
618 | 649 |
619 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, | 650 BlockUntilBrowsingDataRemoved(BrowsingDataRemover::LAST_HOUR, |
620 BrowsingDataRemover::REMOVE_SITE_DATA & | 651 BrowsingDataRemover::REMOVE_SITE_DATA & |
621 ~BrowsingDataRemover::REMOVE_PLUGIN_DATA, tester.get()); | 652 ~BrowsingDataRemover::REMOVE_PLUGIN_DATA, tester.get()); |
622 | 653 |
623 EXPECT_EQ(BrowsingDataRemover::REMOVE_SITE_DATA & | 654 EXPECT_EQ(BrowsingDataRemover::REMOVE_SITE_DATA & |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
685 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, | 716 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, |
686 kClientFile)); | 717 kClientFile)); |
687 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, | 718 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, |
688 kClientFile)); | 719 kClientFile)); |
689 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, | 720 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, |
690 kClientFile)); | 721 kClientFile)); |
691 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, | 722 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, |
692 kClientFile)); | 723 kClientFile)); |
693 } | 724 } |
694 | 725 |
| 726 TEST_F(BrowsingDataRemoverTest, RemoveQuotaManagedProtectedSpecificOrigin) { |
| 727 // Protect kOrigin1. |
| 728 scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy = |
| 729 new MockExtensionSpecialStoragePolicy; |
| 730 mock_policy->AddProtected(kOrigin1.GetOrigin()); |
| 731 GetProfile()->SetExtensionSpecialStoragePolicy(mock_policy); |
| 732 |
| 733 scoped_ptr<RemoveQuotaManagedDataTester> tester( |
| 734 new RemoveQuotaManagedDataTester()); |
| 735 tester->PopulateTestQuotaManagedData(GetMockManager()); |
| 736 |
| 737 // Try to remove kOrigin1. Expect failure. |
| 738 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, |
| 739 BrowsingDataRemover::REMOVE_APPCACHE | |
| 740 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | |
| 741 BrowsingDataRemover::REMOVE_INDEXEDDB | |
| 742 BrowsingDataRemover::REMOVE_WEBSQL, kOrigin1, tester.get()); |
| 743 |
| 744 EXPECT_EQ(BrowsingDataRemover::REMOVE_APPCACHE | |
| 745 BrowsingDataRemover::REMOVE_FILE_SYSTEMS | |
| 746 BrowsingDataRemover::REMOVE_INDEXEDDB | |
| 747 BrowsingDataRemover::REMOVE_WEBSQL, GetRemovalMask()); |
| 748 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin1, kTemporary, |
| 749 kClientFile)); |
| 750 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kTemporary, |
| 751 kClientFile)); |
| 752 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, |
| 753 kClientFile)); |
| 754 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, |
| 755 kClientFile)); |
| 756 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, |
| 757 kClientFile)); |
| 758 EXPECT_TRUE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, |
| 759 kClientFile)); |
| 760 } |
| 761 |
695 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { | 762 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { |
696 scoped_ptr<RemoveHistoryTester> tester( | 763 scoped_ptr<RemoveHistoryTester> tester( |
697 new RemoveHistoryTester(GetProfile())); | 764 new RemoveHistoryTester(GetProfile())); |
698 | 765 |
699 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); | 766 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); |
700 | 767 |
701 tester->AddHistory(kOrigin1, base::Time::Now()); | 768 tester->AddHistory(kOrigin1, base::Time::Now()); |
702 tester->AddHistory(kOrigin2, two_hours_ago); | 769 tester->AddHistory(kOrigin2, two_hours_ago); |
703 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 770 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
704 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); | 771 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
(...skipping 17 matching lines...) Expand all Loading... |
722 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 789 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
723 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); | 790 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
724 | 791 |
725 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, | 792 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, |
726 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); | 793 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); |
727 | 794 |
728 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); | 795 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); |
729 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); | 796 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
730 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2)); | 797 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
731 } | 798 } |
OLD | NEW |