| 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..0acb45cd640d47245145ae045a1a632d4fd392ad 100644
|
| --- a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
|
| +++ b/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
|
| @@ -419,7 +419,7 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| }
|
|
|
| TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| - ShouldFetchAgainOnNTPOpenedLaterAgain) {
|
| + ShouldFetchAgainOnBrowserForgroundLaterAgain) {
|
| RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
|
| {
|
| InSequence s;
|
| @@ -438,11 +438,11 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| ChangeStatusOfUnderlyingProvider(
|
| RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
|
| // Make the first soft fetch successful.
|
| - scheduling_provider_->OnNTPOpened();
|
| + scheduling_provider_->OnBrowserForegrounded();
|
| signal_fetch_done.Run(Status::Success());
|
| // Open NTP again after 2hrs.
|
| test_clock_->Advance(base::TimeDelta::FromHours(2));
|
| - scheduling_provider_->OnNTPOpened();
|
| + scheduling_provider_->OnBrowserForegrounded();
|
| }
|
|
|
| TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| @@ -586,4 +586,92 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
|
| }
|
|
|
| +TEST_F(SchedulingRemoteSuggestionsProviderTest,
|
| + ReschedulesWhenOnNtpOpenedParamChanges) {
|
| + EXPECT_CALL(persistent_scheduler_, Schedule(_, _)).Times(2);
|
| + ChangeStatusOfUnderlyingProvider(
|
| + RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
|
| +
|
| + // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
|
| + // null. Change the fallback interval for this class.
|
| + SetVariationParameter("soft_on_ntp_opened_interval_hours-active_ntp_user",
|
| + "1.5");
|
| +
|
| + // Schedule() should get called for the second time after params have changed.
|
| + ChangeStatusOfUnderlyingProvider(
|
| + 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
|
|
|