| Index: chrome/browser/browsing_data/browsing_data_remover_unittest.cc
|
| diff --git a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
|
| index 0c30c8a974dae84f624d87f38de0bb202cbc58ab..a7e4b8d1b749283af328492b21c1cb867435587e 100644
|
| --- a/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
|
| +++ b/chrome/browser/browsing_data/browsing_data_remover_unittest.cc
|
| @@ -1025,15 +1025,11 @@ class BrowsingDataRemoverTest : public testing::Test {
|
| BrowsingDataRemoverTest()
|
| : profile_(new TestingProfile()),
|
| clear_domain_reliability_tester_(GetProfile()) {
|
| - callback_subscription_ =
|
| - BrowsingDataRemover::RegisterOnBrowsingDataRemovedCallback(
|
| - base::Bind(&BrowsingDataRemoverTest::NotifyWithDetails,
|
| - base::Unretained(this)));
|
| + remover_ =
|
| + BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get());
|
|
|
| #if BUILDFLAG(ANDROID_JAVA_UI)
|
| - BrowsingDataRemover* remover =
|
| - BrowsingDataRemoverFactory::GetForBrowserContext(profile_.get());
|
| - remover->OverrideWebappRegistryForTesting(
|
| + remover_->OverrideWebappRegistryForTesting(
|
| std::unique_ptr<WebappRegistry>(new TestWebappRegistry()));
|
| #endif
|
| }
|
| @@ -1065,8 +1061,6 @@ class BrowsingDataRemoverTest : public testing::Test {
|
| TestStoragePartition storage_partition;
|
| remover->OverrideStoragePartitionForTesting(&storage_partition);
|
|
|
| - called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
|
| -
|
| int origin_type_mask = BrowsingDataHelper::UNPROTECTED_WEB;
|
| if (include_protected_origins)
|
| origin_type_mask |= BrowsingDataHelper::PROTECTED_WEB;
|
| @@ -1090,8 +1084,6 @@ class BrowsingDataRemoverTest : public testing::Test {
|
| TestStoragePartition storage_partition;
|
| remover->OverrideStoragePartitionForTesting(&storage_partition);
|
|
|
| - called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
|
| -
|
| BrowsingDataRemoverCompletionObserver completion_observer(remover);
|
| remover->RemoveImpl(BrowsingDataRemover::Period(period), remove_mask,
|
| filter_builder, BrowsingDataHelper::UNPROTECTED_WEB);
|
| @@ -1108,33 +1100,22 @@ class BrowsingDataRemoverTest : public testing::Test {
|
|
|
| void DestroyProfile() { profile_.reset(); }
|
|
|
| - base::Time GetBeginTime() {
|
| - return called_with_details_->removal_begin;
|
| + const base::Time& GetBeginTime() {
|
| + return remover_->GetLastUsedBeginTime();
|
| }
|
|
|
| int GetRemovalMask() {
|
| - return called_with_details_->removal_mask;
|
| + return remover_->GetLastUsedRemovalMask();
|
| }
|
|
|
| int GetOriginTypeMask() {
|
| - return called_with_details_->origin_type_mask;
|
| + return remover_->GetLastUsedOriginTypeMask();
|
| }
|
|
|
| StoragePartitionRemovalData GetStoragePartitionRemovalData() {
|
| return storage_partition_removal_data_;
|
| }
|
|
|
| - // Callback for browsing data removal events.
|
| - void NotifyWithDetails(
|
| - const BrowsingDataRemover::NotificationDetails& details) {
|
| - // We're not taking ownership of the details object, but storing a copy of
|
| - // it locally.
|
| - called_with_details_.reset(
|
| - new BrowsingDataRemover::NotificationDetails(details));
|
| -
|
| - callback_subscription_.reset();
|
| - }
|
| -
|
| MockExtensionSpecialStoragePolicy* CreateMockPolicy() {
|
| #if defined(ENABLE_EXTENSIONS)
|
| mock_policy_ = new MockExtensionSpecialStoragePolicy;
|
| @@ -1167,11 +1148,10 @@ class BrowsingDataRemoverTest : public testing::Test {
|
| return clear_domain_reliability_tester_;
|
| }
|
|
|
| - protected:
|
| - std::unique_ptr<BrowsingDataRemover::NotificationDetails>
|
| - called_with_details_;
|
| -
|
| private:
|
| + // Cached pointer to BrowsingDataRemover for access to testing methods.
|
| + BrowsingDataRemover* remover_;
|
| +
|
| content::TestBrowserThreadBundle thread_bundle_;
|
| std::unique_ptr<TestingProfile> profile_;
|
|
|
| @@ -1181,8 +1161,6 @@ class BrowsingDataRemoverTest : public testing::Test {
|
| scoped_refptr<MockExtensionSpecialStoragePolicy> mock_policy_;
|
| #endif
|
|
|
| - BrowsingDataRemover::CallbackSubscription callback_subscription_;
|
| -
|
| // Needed to mock out DomainReliabilityService, even for unrelated tests.
|
| ClearDomainReliabilityTester clear_domain_reliability_tester_;
|
|
|
| @@ -2174,15 +2152,33 @@ TEST_F(BrowsingDataRemoverTest, AutofillOriginsRemovedWithHistory) {
|
| EXPECT_TRUE(tester.HasOrigin(autofill::kSettingsOrigin));
|
| }
|
|
|
| +class InspectableCompletionObserver
|
| + : public BrowsingDataRemoverCompletionObserver {
|
| + public:
|
| + explicit InspectableCompletionObserver(BrowsingDataRemover* remover)
|
| + : BrowsingDataRemoverCompletionObserver(remover) {}
|
| + ~InspectableCompletionObserver() override {}
|
| +
|
| + bool called() { return called_; }
|
| +
|
| + protected:
|
| + void OnBrowsingDataRemoverDone() override {
|
| + BrowsingDataRemoverCompletionObserver::OnBrowsingDataRemoverDone();
|
| + called_ = true;
|
| + }
|
| +
|
| + private:
|
| + bool called_ = false;
|
| +};
|
| +
|
| TEST_F(BrowsingDataRemoverTest, CompletionInhibition) {
|
| // The |completion_inhibitor| on the stack should prevent removal sessions
|
| // from completing until after ContinueToCompletion() is called.
|
| BrowsingDataRemoverCompletionInhibitor completion_inhibitor;
|
|
|
| - called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
|
| -
|
| BrowsingDataRemover* remover =
|
| BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile());
|
| + InspectableCompletionObserver completion_observer(remover);
|
| remover->Remove(BrowsingDataRemover::Unbounded(),
|
| BrowsingDataRemover::REMOVE_HISTORY,
|
| BrowsingDataHelper::UNPROTECTED_WEB);
|
| @@ -2193,26 +2189,24 @@ TEST_F(BrowsingDataRemoverTest, CompletionInhibition) {
|
| completion_inhibitor.BlockUntilNearCompletion();
|
| base::RunLoop().RunUntilIdle();
|
|
|
| - // Verify that the completion notification has not yet been broadcasted.
|
| - EXPECT_EQ(-1, GetRemovalMask());
|
| - EXPECT_EQ(-1, GetOriginTypeMask());
|
| + // Verify that the removal has not yet been completed and the observer has
|
| + // not been called.
|
| + EXPECT_TRUE(remover->is_removing());
|
| + EXPECT_FALSE(completion_observer.called());
|
|
|
| // Now run the removal process until completion, and verify that observers are
|
| // now notified, and the notifications is sent out.
|
| - BrowsingDataRemoverCompletionObserver completion_observer(remover);
|
| completion_inhibitor.ContinueToCompletion();
|
| completion_observer.BlockUntilCompletion();
|
|
|
| - EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask());
|
| - EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
|
| + EXPECT_FALSE(remover->is_removing());
|
| + EXPECT_TRUE(completion_observer.called());
|
| }
|
|
|
| TEST_F(BrowsingDataRemoverTest, EarlyShutdown) {
|
| - called_with_details_.reset(new BrowsingDataRemover::NotificationDetails());
|
| -
|
| BrowsingDataRemover* remover =
|
| BrowsingDataRemoverFactory::GetForBrowserContext(GetProfile());
|
| - BrowsingDataRemoverCompletionObserver completion_observer(remover);
|
| + InspectableCompletionObserver completion_observer(remover);
|
| BrowsingDataRemoverCompletionInhibitor completion_inhibitor;
|
| remover->Remove(BrowsingDataRemover::Unbounded(),
|
| BrowsingDataRemover::REMOVE_HISTORY,
|
| @@ -2220,15 +2214,15 @@ TEST_F(BrowsingDataRemoverTest, EarlyShutdown) {
|
|
|
| completion_inhibitor.BlockUntilNearCompletion();
|
|
|
| - // Verify that the completion notification has not yet been broadcasted.
|
| - EXPECT_EQ(-1, GetRemovalMask());
|
| - EXPECT_EQ(-1, GetOriginTypeMask());
|
| + // Verify that the deletion has not yet been completed and the observer has
|
| + // not been called.
|
| + EXPECT_TRUE(remover->is_removing());
|
| + EXPECT_FALSE(completion_observer.called());
|
|
|
| // Destroying the profile should trigger the notification.
|
| DestroyProfile();
|
|
|
| - EXPECT_EQ(BrowsingDataRemover::REMOVE_HISTORY, GetRemovalMask());
|
| - EXPECT_EQ(BrowsingDataHelper::UNPROTECTED_WEB, GetOriginTypeMask());
|
| + EXPECT_TRUE(completion_observer.called());
|
|
|
| // Finishing after shutdown shouldn't break anything.
|
| completion_inhibitor.ContinueToCompletion();
|
|
|