| 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
 | 
| 
 |