| Index: components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
|
| diff --git a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc b/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
|
| index 950923fe11bb7b30f2dc31817b5d759ec4522a14..d3a06aeca5ddf038a49f8cede520889007c57916 100644
|
| --- a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
|
| +++ b/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
|
| @@ -586,4 +586,76 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
|
| }
|
|
|
| +TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| + FetchIntervalForNtpOpenedTrigger) {
|
| + RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
|
| + {
|
| + InSequence s;
|
| + // Initial scheduling after being enabled.
|
| + EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
|
| + // The first call to NTPOpened results in a fetch.
|
| + EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_))
|
| + .WillOnce(SaveArg<0>(&signal_fetch_done));
|
| + // Rescheduling after a succesful fetch.
|
| + EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
|
| + // The third call to NTPOpened 35min later again results in a fetch.
|
| + EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
|
| + }
|
| +
|
| + ChangeStatusOfUnderlyingProvider(
|
| + RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
|
| +
|
| + scheduling_provider_->OnNTPOpened();
|
| + signal_fetch_done.Run(Status::Success());
|
| +
|
| + // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time
|
| + // interval by default for soft backgroudn fetches on ntp open events.
|
| +
|
| + // Open NTP again after 20min. This time no fetch is executed.
|
| + test_clock_->Advance(base::TimeDelta::FromMinutes(20));
|
| + scheduling_provider_->OnNTPOpened();
|
| +
|
| + // Open NTP again after 101min (121min since first opened). Since the default
|
| + // time interval has passed refetch again.
|
| + test_clock_->Advance(base::TimeDelta::FromMinutes(101));
|
| + scheduling_provider_->OnNTPOpened();
|
| +}
|
| +
|
| +TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| + OverrideFetchIntervalForNtpOpenedTrigger) {
|
| + // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
|
| + // null. Change the on usage interval for this class from 2h to 30min.
|
| + SetVariationParameter("soft_on_ntp_opened_interval_hours-active_ntp_user",
|
| + "0.5");
|
| +
|
| + RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
|
| + {
|
| + InSequence s;
|
| + // Initial scheduling after being enabled.
|
| + EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
|
| + // The first call to NTPOpened results in a fetch.
|
| + EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_))
|
| + .WillOnce(SaveArg<0>(&signal_fetch_done));
|
| + // Rescheduling after a succesful fetch.
|
| + EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
|
| + // The third call to NTPOpened 35min later again results in a fetch.
|
| + EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
|
| + }
|
| +
|
| + ChangeStatusOfUnderlyingProvider(
|
| + RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
|
| +
|
| + scheduling_provider_->OnNTPOpened();
|
| + signal_fetch_done.Run(Status::Success());
|
| +
|
| + // Open NTP again after 20min. No fetch request is issues since the 30 min
|
| + // time interval has not passed yet.
|
| + test_clock_->Advance(base::TimeDelta::FromMinutes(20));
|
| + scheduling_provider_->OnNTPOpened();
|
| +
|
| + // Open NTP again after 15min (35min since first opened)
|
| + test_clock_->Advance(base::TimeDelta::FromMinutes(15));
|
| + scheduling_provider_->OnNTPOpened();
|
| +}
|
| +
|
| } // namespace ntp_snippets
|
|
|