Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(740)

Unified Diff: components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc

Issue 2626433005: [Background fetching] Configure and report fetching triggers (Closed)
Patch Set: Tim's comments #2 Created 3 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 d5ee169b57c9c6e76a53ce9db5ddf1780e231fd0..a65c61ef2b038fc709bcc66a59af677e5ca881d0 100644
--- a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
+++ b/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
@@ -120,12 +120,22 @@ class SchedulingRemoteSuggestionsProviderTest
: public ::testing::Test {
public:
SchedulingRemoteSuggestionsProviderTest()
- : underlying_provider_(nullptr),
+ : // For the test we enabled all trigger types.
+ default_variation_params_{{"scheduler_trigger_types",
+ "persistent_scheduler_wake_up,ntp_opened,"
+ "browser_foregrounded,browser_cold_start"}},
+ params_manager_(ntp_snippets::kStudyName,
+ default_variation_params_,
+ {kArticleSuggestionsFeature.name}),
+ underlying_provider_(nullptr),
scheduling_provider_(nullptr),
user_classifier_(/*pref_service=*/nullptr) {
SchedulingRemoteSuggestionsProvider::RegisterProfilePrefs(
utils_.pref_service()->registry());
+ ResetProvider();
+ }
+ void ResetProvider() {
auto underlying_provider =
base::MakeUnique<StrictMock<MockRemoteSuggestionsProvider>>(
/*observer=*/nullptr);
@@ -147,7 +157,20 @@ class SchedulingRemoteSuggestionsProviderTest
std::move(test_clock));
}
+ void SetVariationParameter(const std::string& param_name,
+ const std::string& param_value) {
+ std::map<std::string, std::string> params = default_variation_params_;
+ params[param_name] = param_value;
+
+ params_manager_.ClearAllVariationParams();
+ params_manager_.SetVariationParamsWithFeatureAssociations(
+ ntp_snippets::kStudyName, params,
+ {ntp_snippets::kArticleSuggestionsFeature.name});
+ }
+
protected:
+ std::map<std::string, std::string> default_variation_params_;
+ variations::testing::VariationParamsManager params_manager_;
StrictMock<MockPersistentScheduler> persistent_scheduler_;
StrictMock<MockRemoteSuggestionsProvider>* underlying_provider_;
std::unique_ptr<SchedulingRemoteSuggestionsProvider> scheduling_provider_;
@@ -170,11 +193,68 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
ShouldIgnoreSignalsWhenNotEnabled) {
scheduling_provider_->OnPersistentSchedulerWakeUp();
scheduling_provider_->OnNTPOpened();
+ scheduling_provider_->OnBrowserForegrounded();
+ scheduling_provider_->OnBrowserColdStart();
+}
+
+TEST_F(SchedulingRemoteSuggestionsProviderTest,
+ ShouldIgnoreSignalsWhenDisabledByParam) {
+ // First set an empty list of allowed trigger types.
+ SetVariationParameter("scheduler_trigger_types", "-");
+ ResetProvider();
+
+ // Then enable the scheduler.
+ EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
+ ChangeStatusOfUnderlyingProvider(
+ RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
+
+ scheduling_provider_->OnPersistentSchedulerWakeUp();
+ scheduling_provider_->OnNTPOpened();
+ scheduling_provider_->OnBrowserForegrounded();
+ scheduling_provider_->OnBrowserColdStart();
+}
+
+TEST_F(SchedulingRemoteSuggestionsProviderTest,
+ ShouldHandleEmptyParamForTriggerTypes) {
+ // First set an empty param for allowed trigger types -> should result in the
+ // default list.
+ SetVariationParameter("scheduler_trigger_types", "");
+ ResetProvider();
+
+ // Then enable the scheduler.
+ EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
+ ChangeStatusOfUnderlyingProvider(
+ RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
+
+ // For instance, persistent scheduler wake up should be enabled by default.
+ EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
+ scheduling_provider_->OnPersistentSchedulerWakeUp();
+}
+
+TEST_F(SchedulingRemoteSuggestionsProviderTest,
+ ShouldHandleIncorrentParamForTriggerTypes) {
+ // First set an invalid list of allowed trigger types.
+ SetVariationParameter("scheduler_trigger_types", "ntp_opened,foo;");
+ ResetProvider();
+
+ // Then enable the scheduler.
+ EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
+ ChangeStatusOfUnderlyingProvider(
+ RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
+
+ // For instance, persistent scheduler wake up should be enabled by default.
+ EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
+ scheduling_provider_->OnPersistentSchedulerWakeUp();
}
TEST_F(SchedulingRemoteSuggestionsProviderTest,
ShouldFetchOnPersistentSchedulerWakeUp) {
- // First enable the scheduler.
+ // First set only this type to be allowed.
+ SetVariationParameter("scheduler_trigger_types",
+ "persistent_scheduler_wake_up");
+ ResetProvider();
+
+ // Then enable the scheduler.
EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
ChangeStatusOfUnderlyingProvider(
RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
@@ -223,7 +303,11 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
TEST_F(SchedulingRemoteSuggestionsProviderTest,
ShouldFetchOnNTPOpenedForTheFirstTime) {
- // First enable the scheduler.
+ // First set only this type to be allowed.
+ SetVariationParameter("scheduler_trigger_types", "ntp_opened");
+ ResetProvider();
+
+ // Then enable the scheduler.
EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
ChangeStatusOfUnderlyingProvider(
RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
@@ -233,6 +317,36 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
}
TEST_F(SchedulingRemoteSuggestionsProviderTest,
+ ShouldFetchOnBrowserForegroundedForTheFirstTime) {
+ // First set only this type to be allowed.
+ SetVariationParameter("scheduler_trigger_types", "browser_foregrounded");
+ ResetProvider();
+
+ // Then enable the scheduler.
+ EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
+ ChangeStatusOfUnderlyingProvider(
+ RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
+
+ EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
+ scheduling_provider_->OnBrowserForegrounded();
+}
+
+TEST_F(SchedulingRemoteSuggestionsProviderTest,
+ ShouldFetchOnBrowserColdStartForTheFirstTime) {
+ // First set only this type to be allowed.
+ SetVariationParameter("scheduler_trigger_types", "browser_cold_start");
+ ResetProvider();
+
+ // Then enable the scheduler.
+ EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
+ ChangeStatusOfUnderlyingProvider(
+ RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
+
+ EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
+ scheduling_provider_->OnBrowserColdStart();
+}
+
+TEST_F(SchedulingRemoteSuggestionsProviderTest,
ShouldNotFetchOnNTPOpenedAfterSuccessfulSoftFetch) {
// First enable the scheduler; the second Schedule is called after the
// successful fetch.
@@ -433,10 +547,7 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the wifi interval for this class.
- variations::testing::VariationParamsManager params_manager(
- ntp_snippets::kStudyName,
- {{"fetching_interval_hours-wifi-active_ntp_user", "1.5"}},
- {kArticleSuggestionsFeature.name});
+ SetVariationParameter("fetching_interval_hours-wifi-active_ntp_user", "1.5");
// Schedule() should get called for the second time after params have changed.
ChangeStatusOfUnderlyingProvider(
@@ -450,11 +561,9 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
- // null. Change the wifi interval for this class.
- variations::testing::VariationParamsManager params_manager(
- ntp_snippets::kStudyName,
- {{"fetching_interval_hours-fallback-active_ntp_user", "1.5"}},
- {kArticleSuggestionsFeature.name});
+ // null. Change the fallback interval for this class.
+ SetVariationParameter("fetching_interval_hours-fallback-active_ntp_user",
+ "1.5");
// Schedule() should get called for the second time after params have changed.
ChangeStatusOfUnderlyingProvider(
@@ -468,11 +577,9 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
- // null. Change the wifi interval for this class.
- variations::testing::VariationParamsManager params_manager(
- ntp_snippets::kStudyName,
- {{"soft_fetching_interval_hours-active-active_ntp_user", "1.5"}},
- {kArticleSuggestionsFeature.name});
+ // null. Change the on usage interval for this class.
+ SetVariationParameter("soft_fetching_interval_hours-active-active_ntp_user",
+ "1.5");
// Schedule() should get called for the second time after params have changed.
ChangeStatusOfUnderlyingProvider(
« no previous file with comments | « components/ntp_snippets/remote/scheduling_remote_suggestions_provider.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698