Chromium Code Reviews| Index: components/previews/core/previews_black_list_unittest.cc |
| diff --git a/components/previews/core/previews_black_list_unittest.cc b/components/previews/core/previews_black_list_unittest.cc |
| index 2c8a1fc3b80a1dddb25925352f5cf68159fa796b..09e5bdc8213d2398f30fcd90ed3da1b36ab1c4cc 100644 |
| --- a/components/previews/core/previews_black_list_unittest.cc |
| +++ b/components/previews/core/previews_black_list_unittest.cc |
| @@ -603,4 +603,59 @@ TEST_F(PreviewsBlackListTest, AddPreviewUMA) { |
| 1); |
| } |
| +TEST_F(PreviewsBlackListTest, ClearingBlackListClearsRecentNavigation) { |
| + const GURL url("http://www.url.com"); |
| + |
| + const size_t host_indifferent_history = 1; |
| + const int host_indifferent_threshold = host_indifferent_history + 1; |
| + const int duration_in_days = 365; |
| + // Disable single opt out by setting duration to 0. |
| + const int single_opt_out_duration = 5; |
| + base::FieldTrialList field_trial_list(nullptr); |
| + std::map<std::string, std::string> params; |
|
bengr
2017/05/15 21:15:14
#include <map>
RyanSturm
2017/05/15 21:58:58
Done.
|
| + params["per_host_black_list_duration_in_days"] = |
| + base::IntToString(duration_in_days); |
| + params["host_indifferent_max_stored_history_length"] = |
| + base::SizeTToString(host_indifferent_history); |
| + params["host_indifferent_opt_out_threshold"] = |
| + base::IntToString(host_indifferent_threshold); |
| + params["single_opt_out_duration_in_seconds"] = |
| + base::IntToString(single_opt_out_duration); |
| + ASSERT_TRUE( |
| + variations::AssociateVariationParams("ClientSidePreviews", "Enabled", |
| + params) && |
| + base::FieldTrialList::CreateFieldTrial("ClientSidePreviews", "Enabled")); |
| + |
| + struct { |
| + bool short_history_clear; |
| + } tests[] = {{true}, {false}}; |
|
bengr
2017/05/15 21:15:14
This is an anti-pattern. Write this as two separat
RyanSturm
2017/05/15 21:58:59
Done.
|
| + |
| + base::MessageLoop loop; |
| + for (auto test : tests) { |
| + base::SimpleTestClock* test_clock = new base::SimpleTestClock(); |
| + base::Time start = test_clock->Now(); |
| + if (!test.short_history_clear) { |
| + test_clock->Advance( |
| + base::TimeDelta::FromSeconds(single_opt_out_duration)); |
| + } |
| + |
| + TestPreviewsOptOutStore* opt_out_store = new TestPreviewsOptOutStore(); |
| + |
| + std::unique_ptr<PreviewsBlackList> black_list(new PreviewsBlackList( |
| + base::WrapUnique(opt_out_store), base::WrapUnique(test_clock))); |
| + |
| + black_list->AddPreviewNavigation(url, true /* opt_out */, |
| + PreviewsType::OFFLINE); |
| + test_clock->Advance(base::TimeDelta::FromSeconds(1)); |
| + black_list->ClearBlackList(start, test_clock->Now()); |
| + base::RunLoop().RunUntilIdle(); |
| + |
| + EXPECT_EQ(test.short_history_clear |
| + ? PreviewsEligibilityReason::USER_RECENTLY_OPTED_OUT |
| + : PreviewsEligibilityReason::ALLOWED, |
| + black_list->IsLoadedAndAllowed(url, PreviewsType::OFFLINE)); |
| + } |
| + variations::testing::ClearAllVariationParams(); |
| +} |
| + |
| } // namespace previews |