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

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

Issue 2794313002: [Remote suggestions] Prioritize wifi for soft fetches. (Closed)
Patch Set: Minor polish Created 3 years, 8 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/remote_suggestions_scheduler_impl_unittest.cc
diff --git a/components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc
index 3ad44555729eee6d6dc9d63a0d5a28beaf16de76..f7bbf899c048f95f37748a7321d0418aff9665a2 100644
--- a/components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc
@@ -32,6 +32,7 @@
#include "components/prefs/testing_pref_service.h"
#include "components/variations/variations_params_manager.h"
#include "components/web_resource/web_resource_pref_names.h"
+#include "net/base/network_change_notifier.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -97,6 +98,20 @@ class MockRemoteSuggestionsProvider : public RemoteSuggestionsProvider {
MOCK_METHOD0(OnSignInStateChanged, void());
};
+class FakeNetworkChangeNotifierWIFI : public net::NetworkChangeNotifier {
Marc Treib 2017/04/04 13:28:16 s/WIFI/Wifi/ ? optional: Merge the two classes an
jkrcal 2017/04/05 17:32:56 Not relevant any more.
+ public:
+ ConnectionType GetCurrentConnectionType() const override {
+ return NetworkChangeNotifier::CONNECTION_WIFI;
+ }
+};
+
+class FakeNetworkChangeNotifier2G : public net::NetworkChangeNotifier {
+ public:
+ ConnectionType GetCurrentConnectionType() const override {
+ return NetworkChangeNotifier::CONNECTION_2G;
+ }
+};
+
} // namespace
class RemoteSuggestionsSchedulerImplTest : public ::testing::Test {
@@ -473,7 +488,7 @@ TEST_F(RemoteSuggestionsSchedulerImplTest,
.WillOnce(SaveArg<0>(&signal_fetch_done));
// Rescheduling after a succesful fetch.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- // The second call to NTPOpened 2hrs later again results in a fetch.
+ // The second call to NTPOpened 4hrs later again results in a fetch.
EXPECT_CALL(*provider(), RefetchInTheBackground(_));
}
@@ -482,8 +497,8 @@ TEST_F(RemoteSuggestionsSchedulerImplTest,
// Make the first soft fetch successful.
scheduler()->OnBrowserForegrounded();
signal_fetch_done.Run(Status::Success());
- // Open NTP again after 2hrs.
- test_clock()->Advance(base::TimeDelta::FromHours(2));
+ // Open NTP again after 4hrs.
+ test_clock()->Advance(base::TimeDelta::FromHours(4));
scheduler()->OnBrowserForegrounded();
}
@@ -568,7 +583,8 @@ TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldUnscheduleOnlyOnce) {
DeactivateProvider();
}
-TEST_F(RemoteSuggestionsSchedulerImplTest, ReschedulesWhenWifiParamChanges) {
+TEST_F(RemoteSuggestionsSchedulerImplTest,
+ ReschedulesWhenPersistentWifiParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
ActivateProvider();
@@ -581,7 +597,7 @@ TEST_F(RemoteSuggestionsSchedulerImplTest, ReschedulesWhenWifiParamChanges) {
}
TEST_F(RemoteSuggestionsSchedulerImplTest,
- ReschedulesWhenFallbackParamChanges) {
+ ReschedulesWhenPersistentFallbackParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
ActivateProvider();
@@ -595,13 +611,13 @@ TEST_F(RemoteSuggestionsSchedulerImplTest,
}
TEST_F(RemoteSuggestionsSchedulerImplTest,
- ReschedulesWhenOnUsageEventParamChanges) {
+ ReschedulesWhenSoftWifiParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
ActivateProvider();
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the on usage interval for this class.
- SetVariationParameter("soft_fetching_interval_hours-active-active_ntp_user",
+ SetVariationParameter("soft_fetching_interval_hours-wifi-active_ntp_user",
"1.5");
// Schedule() should get called for the second time after params have changed.
@@ -609,85 +625,139 @@ TEST_F(RemoteSuggestionsSchedulerImplTest,
}
TEST_F(RemoteSuggestionsSchedulerImplTest,
- ReschedulesWhenOnNtpOpenedParamChanges) {
+ ReschedulesWhenSoftFallbackParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
ActivateProvider();
// 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",
+ SetVariationParameter("soft_fetching_interval_hours-fallback-active_ntp_user",
"1.5");
// Schedule() should get called for the second time after params have changed.
ActivateProvider();
}
-TEST_F(RemoteSuggestionsSchedulerImplTest, 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(*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(*provider(), RefetchInTheBackground(_));
- }
+TEST_F(RemoteSuggestionsSchedulerImplTest, FetchIntervalForSoftTriggerOnWifi) {
+ // Pretend we are on WiFi.
+ FakeNetworkChangeNotifierWIFI fake_network_notifier;
+ // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time
+ // interval by default for soft background fetches on WiFi.
+ // Initial scheduling after being enabled.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
ActivateProvider();
+ // The first call to NTPOpened results in a fetch.
+ RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
+ .WillOnce(SaveArg<0>(&signal_fetch_done));
scheduler()->OnNTPOpened();
+ // Rescheduling after a succesful fetch.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
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.
+ // Open NTP again after too short delay. This time no fetch is executed.
test_clock()->Advance(base::TimeDelta::FromMinutes(20));
scheduler()->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));
+ // Open NTP after another delay, now together long enough to issue a fetch.
+ test_clock()->Advance(base::TimeDelta::FromMinutes(100));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
scheduler()->OnNTPOpened();
}
TEST_F(RemoteSuggestionsSchedulerImplTest,
- OverrideFetchIntervalForNtpOpenedTrigger) {
+ OverrideFetchIntervalForSoftTriggerOnWifi) {
+ // Pretend we are on WiFi.
+ FakeNetworkChangeNotifierWIFI fake_network_notifier;
// 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",
+ SetVariationParameter("soft_fetching_interval_hours-wifi-active_ntp_user",
"0.5");
+ // Initial scheduling after being enabled.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
+ ActivateProvider();
+
+ // The first call to NTPOpened results in a fetch.
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(*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(*provider(), RefetchInTheBackground(_));
- }
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
+ .WillOnce(SaveArg<0>(&signal_fetch_done));
+ scheduler()->OnNTPOpened();
+ // Rescheduling after a succesful fetch.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
+ signal_fetch_done.Run(Status::Success());
+
+ // Open NTP again after too short delay. This time no fetch is executed.
+ test_clock()->Advance(base::TimeDelta::FromMinutes(20));
+ scheduler()->OnNTPOpened();
+
+ // Open NTP after another delay, now together long enough to issue a fetch.
+ test_clock()->Advance(base::TimeDelta::FromMinutes(10));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnNTPOpened();
+}
+
+TEST_F(RemoteSuggestionsSchedulerImplTest,
+ FetchIntervalForSoftTriggerOnFallback) {
+ // Pretend we are on 2G -> fallback connection.
+ FakeNetworkChangeNotifier2G fake_network_notifier;
+ // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 4h time
+ // interval by default for soft background fetches not on WiFi.
+
+ // Initial scheduling after being enabled.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
+ ActivateProvider();
+
+ // The first call to NTPOpened results in a fetch.
+ RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
+ .WillOnce(SaveArg<0>(&signal_fetch_done));
+ scheduler()->OnNTPOpened();
+ // Rescheduling after a succesful fetch.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
+ signal_fetch_done.Run(Status::Success());
+
+ // Open NTP again after too short delay. This time no fetch is executed.
+ test_clock()->Advance(base::TimeDelta::FromMinutes(60));
+ scheduler()->OnNTPOpened();
+ // Open NTP after another delay, now together long enough to issue a fetch.
+ test_clock()->Advance(base::TimeDelta::FromMinutes(180));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnNTPOpened();
+}
+
+TEST_F(RemoteSuggestionsSchedulerImplTest,
+ OverrideFetchIntervalForSoftTriggerOnFallback) {
+ // Pretend we are on 2G -> fallback connection.
+ FakeNetworkChangeNotifier2G fake_network_notifier;
+ // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
+ // null. Change the on usage interval for this class from 4h to 30min.
+ SetVariationParameter("soft_fetching_interval_hours-fallback-active_ntp_user",
+ "0.5");
+
+ // Initial scheduling after being enabled.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
ActivateProvider();
+ // The first call to NTPOpened results in a fetch.
+ RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
+ .WillOnce(SaveArg<0>(&signal_fetch_done));
scheduler()->OnNTPOpened();
+ // Rescheduling after a succesful fetch.
+ EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
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.
+ // Open NTP again after too short delay. This time no fetch is executed.
test_clock()->Advance(base::TimeDelta::FromMinutes(20));
scheduler()->OnNTPOpened();
- // Open NTP again after 15min (35min since first opened)
- test_clock()->Advance(base::TimeDelta::FromMinutes(15));
+ // Open NTP after another delay, now together long enough to issue a fetch.
+ test_clock()->Advance(base::TimeDelta::FromMinutes(10));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
scheduler()->OnNTPOpened();
}

Powered by Google App Engine
This is Rietveld 408576698