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 |