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

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

Issue 2774663002: [Remote suggestions] Refactor the scheduler (Closed)
Patch Set: Marc's nits #2 Created 3 years, 9 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/scheduling_remote_suggestions_provider_unittest.cc b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc
similarity index 65%
rename from components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
rename to components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc
index cd5500d24926c402d5bc7e7a18b155c41e1e8047..b3774f5d6b43495eafaf2a32c1c82cf092c893a1 100644
--- a/components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc
+++ b/components/ntp_snippets/remote/remote_suggestions_scheduler_impl_unittest.cc
@@ -2,7 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "components/ntp_snippets/remote/scheduling_remote_suggestions_provider.h"
+#include "components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h"
#include <memory>
#include <set>
@@ -72,10 +72,6 @@ class MockRemoteSuggestionsProvider : public RemoteSuggestionsProvider {
public:
MockRemoteSuggestionsProvider(Observer* observer)
: RemoteSuggestionsProvider(observer) {}
-
- MOCK_METHOD1(SetRemoteSuggestionsScheduler,
- void(RemoteSuggestionsScheduler*));
-
// Move-only params are not supported by GMock. We want to mock out
// RefetchInTheBackground() which takes a unique_ptr<>. Instead, we add a new
// mock function which takes a copy of the callback and override the
@@ -115,9 +111,9 @@ class MockRemoteSuggestionsProvider : public RemoteSuggestionsProvider {
} // namespace
-class SchedulingRemoteSuggestionsProviderTest : public ::testing::Test {
+class RemoteSuggestionsSchedulerImplTest : public ::testing::Test {
public:
- SchedulingRemoteSuggestionsProviderTest()
+ RemoteSuggestionsSchedulerImplTest()
: // For the test we enabled all trigger types.
default_variation_params_{{"scheduler_trigger_types",
"persistent_scheduler_wake_up,ntp_opened,"
@@ -127,7 +123,7 @@ class SchedulingRemoteSuggestionsProviderTest : public ::testing::Test {
{kArticleSuggestionsFeature.name}),
user_classifier_(/*pref_service=*/nullptr,
base::MakeUnique<base::DefaultClock>()) {
- SchedulingRemoteSuggestionsProvider::RegisterProfilePrefs(
+ RemoteSuggestionsSchedulerImpl::RegisterProfilePrefs(
utils_.pref_service()->registry());
RequestThrottler::RegisterProfilePrefs(utils_.pref_service()->registry());
// TODO(jkrcal) Create a static function in EulaAcceptedNotifier that
@@ -138,20 +134,17 @@ class SchedulingRemoteSuggestionsProviderTest : public ::testing::Test {
}
void ResetProvider() {
- auto underlying_provider =
- base::MakeUnique<StrictMock<MockRemoteSuggestionsProvider>>(
- /*observer=*/nullptr);
- underlying_provider_ = underlying_provider.get();
+ provider_ = base::MakeUnique<StrictMock<MockRemoteSuggestionsProvider>>(
+ /*observer=*/nullptr);
auto test_clock = base::MakeUnique<base::SimpleTestClock>();
test_clock_ = test_clock.get();
test_clock_->SetNow(base::Time::Now());
- scheduling_provider_ =
- base::MakeUnique<SchedulingRemoteSuggestionsProvider>(
- /*observer=*/nullptr, std::move(underlying_provider),
- &persistent_scheduler_, &user_classifier_, utils_.pref_service(),
- &local_state_, std::move(test_clock));
+ scheduler_ = base::MakeUnique<RemoteSuggestionsSchedulerImpl>(
+ &persistent_scheduler_, &user_classifier_, utils_.pref_service(),
+ &local_state_, std::move(test_clock));
+ scheduler_->SetProvider(provider_.get());
}
void SetVariationParameter(const std::string& param_name,
@@ -189,25 +182,19 @@ class SchedulingRemoteSuggestionsProviderTest : public ::testing::Test {
std::map<std::string, std::string> default_variation_params_;
variations::testing::VariationParamsManager params_manager_;
- void ActivateUnderlyingProvider() {
+ void ActivateProvider() {
SetEulaAcceptedPref();
- scheduling_provider()->OnProviderActivated();
+ scheduler_->OnProviderActivated();
}
- void InactivateUnderlyingProvider() {
- scheduling_provider()->OnProviderDeactivated();
- }
+ void DeactivateProvider() { scheduler_->OnProviderDeactivated(); }
MockPersistentScheduler* persistent_scheduler() {
return &persistent_scheduler_;
}
base::SimpleTestClock* test_clock() { return test_clock_; }
- MockRemoteSuggestionsProvider* underlying_provider() {
- return underlying_provider_;
- }
- SchedulingRemoteSuggestionsProvider* scheduling_provider() {
- return scheduling_provider_.get();
- }
+ MockRemoteSuggestionsProvider* provider() { return provider_.get(); }
+ RemoteSuggestionsSchedulerImpl* scheduler() { return scheduler_.get(); }
private:
test::RemoteSuggestionsTestUtils utils_;
@@ -215,21 +202,20 @@ class SchedulingRemoteSuggestionsProviderTest : public ::testing::Test {
TestingPrefServiceSimple local_state_;
StrictMock<MockPersistentScheduler> persistent_scheduler_;
base::SimpleTestClock* test_clock_;
- StrictMock<MockRemoteSuggestionsProvider>* underlying_provider_;
- std::unique_ptr<SchedulingRemoteSuggestionsProvider> scheduling_provider_;
+ std::unique_ptr<MockRemoteSuggestionsProvider> provider_;
+ std::unique_ptr<RemoteSuggestionsSchedulerImpl> scheduler_;
- DISALLOW_COPY_AND_ASSIGN(SchedulingRemoteSuggestionsProviderTest);
+ DISALLOW_COPY_AND_ASSIGN(RemoteSuggestionsSchedulerImplTest);
};
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
- ShouldIgnoreSignalsWhenNotEnabled) {
- scheduling_provider()->OnPersistentSchedulerWakeUp();
- scheduling_provider()->OnNTPOpened();
- scheduling_provider()->OnBrowserForegrounded();
- scheduling_provider()->OnBrowserColdStart();
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldIgnoreSignalsWhenNotEnabled) {
+ scheduler()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnNTPOpened();
+ scheduler()->OnBrowserForegrounded();
+ scheduler()->OnBrowserColdStart();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldIgnoreEulaStateOnPlatformsWhereNotAvaiable) {
// Only run this tests on platforms that don't support Eula.
if (IsEulaNotifierAvailable()) {
@@ -238,14 +224,14 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Activating the provider should schedule the persistent background fetches.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- scheduling_provider()->OnProviderActivated();
+ scheduler()->OnProviderActivated();
// Verify fetches get triggered.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnPersistentSchedulerWakeUp();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldIgnoreSignalsWhenEulaNotAccepted) {
// Only run this tests on platforms supporting Eula.
if (!IsEulaNotifierAvailable()) {
@@ -253,34 +239,33 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
}
// Activating the provider should schedule the persistent background fetches.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- scheduling_provider()->OnProviderActivated();
+ scheduler()->OnProviderActivated();
// All signals are ignored because of Eula not being accepted.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
- scheduling_provider()->OnNTPOpened();
- scheduling_provider()->OnBrowserForegrounded();
- scheduling_provider()->OnBrowserColdStart();
+ scheduler()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnNTPOpened();
+ scheduler()->OnBrowserForegrounded();
+ scheduler()->OnBrowserColdStart();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
- ShouldFetchWhenEulaGetsAccepted) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldFetchWhenEulaGetsAccepted) {
// Only run this tests on platforms supporting Eula.
if (!IsEulaNotifierAvailable()) {
return;
}
// Activating the provider should schedule the persistent background fetches.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- scheduling_provider()->OnProviderActivated();
+ scheduler()->OnProviderActivated();
// Make one (ignored) call to make sure we are interested in eula state.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
// Accepting Eula afterwards results in a background fetch.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
SetEulaAcceptedPref();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldIgnoreSignalsWhenDisabledByParam) {
// First set an empty list of allowed trigger types.
SetVariationParameter("scheduler_trigger_types", "-");
@@ -288,15 +273,15 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
- scheduling_provider()->OnPersistentSchedulerWakeUp();
- scheduling_provider()->OnNTPOpened();
- scheduling_provider()->OnBrowserForegrounded();
- scheduling_provider()->OnBrowserColdStart();
+ scheduler()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnNTPOpened();
+ scheduler()->OnBrowserForegrounded();
+ scheduler()->OnBrowserColdStart();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldHandleEmptyParamForTriggerTypes) {
// First set an empty param for allowed trigger types -> should result in the
// default list.
@@ -305,14 +290,14 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// For instance, persistent scheduler wake up should be enabled by default.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnPersistentSchedulerWakeUp();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldHandleIncorrentParamForTriggerTypes) {
// First set an invalid list of allowed trigger types.
SetVariationParameter("scheduler_trigger_types", "ntp_opened,foo;");
@@ -320,65 +305,65 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// For instance, persistent scheduler wake up should be enabled by default.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnPersistentSchedulerWakeUp();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldFetchOnPersistentSchedulerWakeUp) {
// First set only this type to be allowed.
SetVariationParameter("scheduler_trigger_types",
- "*persistent_scheduler()wake_up");
+ "persistent_scheduler_wake_up");
ResetProvider();
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnPersistentSchedulerWakeUp();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldFetchOnPersistentSchedulerWakeUpRepeated) {
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
{
InSequence s;
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
}
// First enable the scheduler -- calling Schedule() for the first time.
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first persistent fetch successful -- calling Schedule() again.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
signal_fetch_done.Run(Status::Success());
// Make the second fetch.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldNotTriggerBackgroundFetchIfAlreadyInProgess) {
{
InSequence s;
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
// RefetchInTheBackground is not called after the second trigger.
}
// First enable the scheduler -- calling Schedule() for the first time.
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first persistent fetch never finish.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
// Make the second fetch.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldFetchOnNTPOpenedForTheFirstTime) {
// First set only this type to be allowed.
SetVariationParameter("scheduler_trigger_types", "ntp_opened");
@@ -386,13 +371,13 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnNTPOpened();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldFetchOnBrowserForegroundedForTheFirstTime) {
// First set only this type to be allowed.
SetVariationParameter("scheduler_trigger_types", "browser_foregrounded");
@@ -400,13 +385,13 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnBrowserForegrounded();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnBrowserForegrounded();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldFetchOnBrowserColdStartForTheFirstTime) {
// First set only this type to be allowed.
SetVariationParameter("scheduler_trigger_types", "browser_cold_start");
@@ -414,81 +399,81 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Then enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
- scheduling_provider()->OnBrowserColdStart();
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
+ scheduler()->OnBrowserColdStart();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldNotFetchOnNTPOpenedAfterSuccessfulSoftFetch) {
// First enable the scheduler; the second Schedule is called after the
// successful fetch.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first soft fetch successful.
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
signal_fetch_done.Run(Status::Success());
// The second call is ignored if it happens right after the first one.
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldNotFetchOnNTPOpenedAfterSuccessfulPersistentFetch) {
// First enable the scheduler; the second Schedule is called after the
// successful fetch.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first persistent fetch successful.
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
signal_fetch_done.Run(Status::Success());
// The second call is ignored if it happens right after the first one.
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldNotFetchOnNTPOpenedAfterFailedSoftFetch) {
// First enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first soft fetch failed.
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
signal_fetch_done.Run(Status(StatusCode::PERMANENT_ERROR, ""));
// The second call is ignored if it happens right after the first one.
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldNotFetchOnNTPOpenedAfterFailedPersistentFetch) {
// First enable the scheduler.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first persistent fetch failed.
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
signal_fetch_done.Run(Status(StatusCode::PERMANENT_ERROR, ""));
// The second call is ignored if it happens right after the first one.
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldFetchAgainOnBrowserForgroundLaterAgain) {
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
{
@@ -496,123 +481,121 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Initial scheduling after being enabled.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
// The first call to NTPOpened results in a fetch.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.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.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
}
// First enable the scheduler.
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Make the first soft fetch successful.
- scheduling_provider()->OnBrowserForegrounded();
+ scheduler()->OnBrowserForegrounded();
signal_fetch_done.Run(Status::Success());
// Open NTP again after 2hrs.
test_clock()->Advance(base::TimeDelta::FromHours(2));
- scheduling_provider()->OnBrowserForegrounded();
+ scheduler()->OnBrowserForegrounded();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldRescheduleOnRescheduleFetching) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- scheduling_provider()->RescheduleFetching();
+ scheduler()->RescheduleFetching();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest, ShouldScheduleOnActivation) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldScheduleOnActivation) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldUnscheduleOnLaterInactivation) {
{
InSequence s;
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
EXPECT_CALL(*persistent_scheduler(), Unschedule());
}
- ActivateUnderlyingProvider();
- InactivateUnderlyingProvider();
+ ActivateProvider();
+ DeactivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
- ShouldScheduleOnLaterActivation) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldScheduleOnLaterActivation) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
// There is no schedule yet, so inactivation does not trigger unschedule.
- InactivateUnderlyingProvider();
- ActivateUnderlyingProvider();
+ DeactivateProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldRescheduleAfterSuccessfulFetch) {
// First reschedule on becoming active.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
// Trigger a fetch.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
// Second reschedule after a successful fetch.
signal_fetch_done.Run(Status::Success());
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldNotRescheduleAfterFailedFetch) {
// Only reschedule on becoming active.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
// Trigger a fetch.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
// No furter reschedule after a failure.
signal_fetch_done.Run(Status(StatusCode::PERMANENT_ERROR, ""));
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest, ShouldScheduleOnlyOnce) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldScheduleOnlyOnce) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// No further call to Schedule on a second status callback.
- ActivateUnderlyingProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest, ShouldUnscheduleOnlyOnce) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldUnscheduleOnlyOnce) {
{
InSequence s;
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
EXPECT_CALL(*persistent_scheduler(), Unschedule());
}
// First schedule so that later we really unschedule.
- ActivateUnderlyingProvider();
- InactivateUnderlyingProvider();
+ ActivateProvider();
+ DeactivateProvider();
// No further call to Unschedule on second status callback.
- InactivateUnderlyingProvider();
+ DeactivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
- ReschedulesWhenWifiParamChanges) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ReschedulesWhenWifiParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the wifi interval for this class.
SetVariationParameter("fetching_interval_hours-wifi-active_ntp_user", "1.5");
// Schedule() should get called for the second time after params have changed.
- ActivateUnderlyingProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ReschedulesWhenFallbackParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the fallback interval for this class.
@@ -620,13 +603,13 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
"1.5");
// Schedule() should get called for the second time after params have changed.
- ActivateUnderlyingProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ReschedulesWhenOnUsageEventParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the on usage interval for this class.
@@ -634,13 +617,13 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
"1.5");
// Schedule() should get called for the second time after params have changed.
- ActivateUnderlyingProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ReschedulesWhenOnNtpOpenedParamChanges) {
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
- ActivateUnderlyingProvider();
+ ActivateProvider();
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the fallback interval for this class.
@@ -648,28 +631,27 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
"1.5");
// Schedule() should get called for the second time after params have changed.
- ActivateUnderlyingProvider();
+ ActivateProvider();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
- FetchIntervalForNtpOpenedTrigger) {
+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(*underlying_provider(), RefetchInTheBackground(_))
+ 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(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
}
- ActivateUnderlyingProvider();
+ ActivateProvider();
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
signal_fetch_done.Run(Status::Success());
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time
@@ -677,15 +659,15 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Open NTP again after 20min. This time no fetch is executed.
test_clock()->Advance(base::TimeDelta::FromMinutes(20));
- scheduling_provider()->OnNTPOpened();
+ 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));
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
OverrideFetchIntervalForNtpOpenedTrigger) {
// UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
// null. Change the on usage interval for this class from 2h to 30min.
@@ -698,125 +680,85 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
// Initial scheduling after being enabled.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
// The first call to NTPOpened results in a fetch.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ 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(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
}
- ActivateUnderlyingProvider();
+ ActivateProvider();
- scheduling_provider()->OnNTPOpened();
+ scheduler()->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();
+ scheduler()->OnNTPOpened();
// Open NTP again after 15min (35min since first opened)
test_clock()->Advance(base::TimeDelta::FromMinutes(15));
- scheduling_provider()->OnNTPOpened();
+ scheduler()->OnNTPOpened();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldBlockFetchingForSomeTimeAfterHistoryCleared) {
// First enable the scheduler -- this will trigger the persistent scheduling.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// Clear the history.
- scheduling_provider()->OnHistoryCleared();
+ scheduler()->OnHistoryCleared();
// A trigger after 15 minutes is ignored.
test_clock()->Advance(base::TimeDelta::FromMinutes(15));
- scheduling_provider()->OnBrowserForegrounded();
+ scheduler()->OnBrowserForegrounded();
// A trigger after another 16 minutes is performed (more than 30m after
// clearing the history).
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_));
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_));
test_clock()->Advance(base::TimeDelta::FromMinutes(16));
- scheduling_provider()->OnBrowserForegrounded();
+ scheduler()->OnBrowserForegrounded();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldImmediatelyFetchAfterSuggestionsCleared) {
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
// First enable the scheduler -- this will trigger the persistent scheduling.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
- ActivateUnderlyingProvider();
+ ActivateProvider();
// The first trigger results in a fetch.
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.WillOnce(SaveArg<0>(&signal_fetch_done));
- scheduling_provider()->OnBrowserForegrounded();
+ scheduler()->OnBrowserForegrounded();
// Make the fetch successful -- this results in rescheduling.
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
signal_fetch_done.Run(Status::Success());
// Clear the suggestions - results in an immediate fetch.
- EXPECT_CALL(*underlying_provider(), ReloadSuggestions());
- scheduling_provider()->OnSuggestionsCleared();
+ EXPECT_CALL(*provider(), ReloadSuggestions());
+ scheduler()->OnSuggestionsCleared();
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
- ShouldThrottleInteractiveRequests) {
+TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldThrottleInteractiveRequests) {
// Change the quota for interactive requests ("active NTP user" is the default
// class in tests).
SetVariationParameter("interactive_quota_SuggestionFetcherActiveNTPUser",
"10");
ResetProvider();
- Category category = Category::FromKnownCategory(KnownCategories::ARTICLES);
- std::set<std::string> known_suggestions;
-
- // Both Fetch(..) and ReloadSuggestions() consume the same quota. As long as
- // the quota suffices, the call gets through.
- EXPECT_CALL(*underlying_provider(), ReloadSuggestions()).Times(5);
- for (int x = 0; x < 5; ++x) {
- scheduling_provider()->ReloadSuggestions();
- }
-
- // Expect underlying provider being called and store the callback to inform
- // scheduling provider.
- FetchDoneCallback signal_fetch_done_from_underlying_provider;
- EXPECT_CALL(*underlying_provider(), Fetch(_, _, _))
- .Times(5)
- .WillRepeatedly(SaveArg<2>(&signal_fetch_done_from_underlying_provider));
- // Expect scheduling provider to pass the information through.
- MockFunction<void(Status status_code,
- const std::vector<ContentSuggestion>& suggestions)>
- fetch_done_from_scheduling_provider;
- EXPECT_CALL(fetch_done_from_scheduling_provider,
- Call(Field(&Status::code, StatusCode::SUCCESS), _))
- .Times(5);
- // Scheduling is not activated, each successful fetch results in Unschedule().
- EXPECT_CALL(*persistent_scheduler(), Unschedule()).Times(5);
- for (int x = 0; x < 5; ++x) {
- scheduling_provider()->Fetch(
- category, known_suggestions,
- base::Bind(&SchedulingRemoteSuggestionsProviderTest::FetchDoneWrapper,
- base::Unretained(this),
- &fetch_done_from_scheduling_provider));
- // Inform scheduling provider the fetc is successful (with no suggestions).
- signal_fetch_done_from_underlying_provider.Run(
- Status::Success(), std::vector<ContentSuggestion>{});
+ for (int x = 0; x < 10; ++x) {
+ EXPECT_THAT(scheduler()->AcquireQuotaForInteractiveFetch(), Eq(true));
}
- // When the quota expires, it is blocked by the scheduling provider, directly
- // calling the callback.
- EXPECT_CALL(fetch_done_from_scheduling_provider,
- Call(Field(&Status::code, StatusCode::TEMPORARY_ERROR), _));
- scheduling_provider()->ReloadSuggestions();
- scheduling_provider()->Fetch(
- category, known_suggestions,
- base::Bind(&SchedulingRemoteSuggestionsProviderTest::FetchDoneWrapper,
- base::Unretained(this), &fetch_done_from_scheduling_provider));
+ // Now the quota is over.
+ EXPECT_THAT(scheduler()->AcquireQuotaForInteractiveFetch(), Eq(false));
}
-TEST_F(SchedulingRemoteSuggestionsProviderTest,
+TEST_F(RemoteSuggestionsSchedulerImplTest,
ShouldThrottleNonInteractiveRequests) {
// Change the quota for interactive requests ("active NTP user" is the default
// class in tests).
@@ -827,20 +769,20 @@ TEST_F(SchedulingRemoteSuggestionsProviderTest,
EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(6);
// First enable the scheduler -- this will trigger the persistent scheduling.
- ActivateUnderlyingProvider();
+ ActivateProvider();
// As long as the quota suffices, the call gets through.
RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
- EXPECT_CALL(*underlying_provider(), RefetchInTheBackground(_))
+ EXPECT_CALL(*provider(), RefetchInTheBackground(_))
.Times(5)
.WillRepeatedly(SaveArg<0>(&signal_fetch_done));
for (int x = 0; x < 5; ++x) {
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
signal_fetch_done.Run(Status::Success());
}
// For the 6th time, it is blocked by the scheduling provider.
- scheduling_provider()->OnPersistentSchedulerWakeUp();
+ scheduler()->OnPersistentSchedulerWakeUp();
}
} // namespace ntp_snippets

Powered by Google App Engine
This is Rietveld 408576698