| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 const GURL kOrigin1(kTestkOrigin1); | 45 const GURL kOrigin1(kTestkOrigin1); |
| 46 const GURL kOrigin2(kTestkOrigin2); | 46 const GURL kOrigin2(kTestkOrigin2); |
| 47 const GURL kOrigin3(kTestkOrigin3); | 47 const GURL kOrigin3(kTestkOrigin3); |
| 48 | 48 |
| 49 const quota::StorageType kTemporary = quota::kStorageTypeTemporary; | 49 const quota::StorageType kTemporary = quota::kStorageTypeTemporary; |
| 50 const quota::StorageType kPersistent = quota::kStorageTypePersistent; | 50 const quota::StorageType kPersistent = quota::kStorageTypePersistent; |
| 51 | 51 |
| 52 const quota::QuotaClient::ID kClientFile = quota::QuotaClient::kFileSystem; | 52 const quota::QuotaClient::ID kClientFile = quota::QuotaClient::kFileSystem; |
| 53 const quota::QuotaClient::ID kClientDB = quota::QuotaClient::kIndexedDatabase; | 53 const quota::QuotaClient::ID kClientDB = quota::QuotaClient::kIndexedDatabase; |
| 54 | 54 |
| 55 } // namespace |
| 56 |
| 55 class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer { | 57 class BrowsingDataRemoverTester : public BrowsingDataRemover::Observer { |
| 56 public: | 58 public: |
| 57 BrowsingDataRemoverTester() | 59 BrowsingDataRemoverTester() |
| 58 : start_(false), | 60 : start_(false), |
| 59 already_quit_(false) {} | 61 already_quit_(false) {} |
| 60 virtual ~BrowsingDataRemoverTester() {} | 62 virtual ~BrowsingDataRemoverTester() {} |
| 61 | 63 |
| 62 void BlockUntilNotified() { | 64 void BlockUntilNotified() { |
| 63 if (!already_quit_) { | 65 if (!already_quit_) { |
| 64 DCHECK(!start_); | 66 DCHECK(!start_); |
| (...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 317 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); | 319 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); |
| 318 remover->AddObserver(tester); | 320 remover->AddObserver(tester); |
| 319 | 321 |
| 320 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); | 322 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); |
| 321 | 323 |
| 322 // BrowsingDataRemover deletes itself when it completes. | 324 // BrowsingDataRemover deletes itself when it completes. |
| 323 remover->Remove(remove_mask); | 325 remover->Remove(remove_mask); |
| 324 tester->BlockUntilNotified(); | 326 tester->BlockUntilNotified(); |
| 325 } | 327 } |
| 326 | 328 |
| 329 void BlockUntilOriginDataRemoved(BrowsingDataRemover::TimePeriod period, |
| 330 int remove_mask, |
| 331 const GURL& remove_origin, |
| 332 BrowsingDataRemoverTester* tester) { |
| 333 BrowsingDataRemover* remover = new BrowsingDataRemover( |
| 334 profile_.get(), period, |
| 335 base::Time::Now() + base::TimeDelta::FromMilliseconds(10)); |
| 336 remover->AddObserver(tester); |
| 337 |
| 338 called_with_details_.reset(new BrowsingDataRemover::NotificationDetails()); |
| 339 |
| 340 // BrowsingDataRemover deletes itself when it completes. |
| 341 remover->RemoveImpl(remove_mask, remove_origin, false); |
| 342 tester->BlockUntilNotified(); |
| 343 } |
| 344 |
| 327 TestingProfile* GetProfile() { | 345 TestingProfile* GetProfile() { |
| 328 return profile_.get(); | 346 return profile_.get(); |
| 329 } | 347 } |
| 330 | 348 |
| 331 base::Time GetBeginTime() { | 349 base::Time GetBeginTime() { |
| 332 return called_with_details_->removal_begin; | 350 return called_with_details_->removal_begin; |
| 333 } | 351 } |
| 334 | 352 |
| 335 int GetRemovalMask() { | 353 int GetRemovalMask() { |
| 336 return called_with_details_->removal_mask; | 354 return called_with_details_->removal_mask; |
| (...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, | 680 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kTemporary, |
| 663 kClientFile)); | 681 kClientFile)); |
| 664 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, | 682 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin1, kPersistent, |
| 665 kClientFile)); | 683 kClientFile)); |
| 666 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, | 684 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin2, kPersistent, |
| 667 kClientFile)); | 685 kClientFile)); |
| 668 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, | 686 EXPECT_FALSE(GetMockManager()->OriginHasData(kOrigin3, kPersistent, |
| 669 kClientFile)); | 687 kClientFile)); |
| 670 } | 688 } |
| 671 | 689 |
| 672 } // namespace | 690 TEST_F(BrowsingDataRemoverTest, OriginBasedHistoryRemoval) { |
| 691 scoped_ptr<RemoveHistoryTester> tester( |
| 692 new RemoveHistoryTester(GetProfile())); |
| 693 |
| 694 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); |
| 695 |
| 696 tester->AddHistory(kOrigin1, base::Time::Now()); |
| 697 tester->AddHistory(kOrigin2, two_hours_ago); |
| 698 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 699 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
| 700 |
| 701 BlockUntilOriginDataRemoved(BrowsingDataRemover::EVERYTHING, |
| 702 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); |
| 703 |
| 704 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); |
| 705 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 706 EXPECT_FALSE(tester->HistoryContainsURL(kOrigin2)); |
| 707 } |
| 708 |
| 709 TEST_F(BrowsingDataRemoverTest, OriginAndTimeBasedHistoryRemoval) { |
| 710 scoped_ptr<RemoveHistoryTester> tester( |
| 711 new RemoveHistoryTester(GetProfile())); |
| 712 |
| 713 base::Time two_hours_ago = base::Time::Now() - base::TimeDelta::FromHours(2); |
| 714 |
| 715 tester->AddHistory(kOrigin1, base::Time::Now()); |
| 716 tester->AddHistory(kOrigin2, two_hours_ago); |
| 717 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 718 ASSERT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
| 719 |
| 720 BlockUntilOriginDataRemoved(BrowsingDataRemover::LAST_HOUR, |
| 721 BrowsingDataRemover::REMOVE_HISTORY, kOrigin2, tester.get()); |
| 722 |
| 723 EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask()); |
| 724 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin1)); |
| 725 EXPECT_TRUE(tester->HistoryContainsURL(kOrigin2)); |
| 726 } |
| OLD | NEW |