| OLD | NEW | 
|---|
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h" | 5 #include "components/ntp_snippets/remote/remote_suggestions_scheduler_impl.h" | 
| 6 | 6 | 
| 7 #include <memory> | 7 #include <memory> | 
| 8 #include <set> | 8 #include <set> | 
| 9 #include <string> | 9 #include <string> | 
| 10 #include <utility> | 10 #include <utility> | 
| (...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 625                         "1.5"); | 625                         "1.5"); | 
| 626 | 626 | 
| 627   // Schedule() should get called for the second time after params have changed. | 627   // Schedule() should get called for the second time after params have changed. | 
| 628   ActivateProvider(); | 628   ActivateProvider(); | 
| 629 } | 629 } | 
| 630 | 630 | 
| 631 TEST_F(RemoteSuggestionsSchedulerImplTest, FetchIntervalForSoftTriggerOnWifi) { | 631 TEST_F(RemoteSuggestionsSchedulerImplTest, FetchIntervalForSoftTriggerOnWifi) { | 
| 632   // Pretend we are on WiFi (already done in ctor, we make it explicit here). | 632   // Pretend we are on WiFi (already done in ctor, we make it explicit here). | 
| 633   EXPECT_CALL(*persistent_scheduler(), IsOnUnmeteredConnection()) | 633   EXPECT_CALL(*persistent_scheduler(), IsOnUnmeteredConnection()) | 
| 634       .WillRepeatedly(Return(true)); | 634       .WillRepeatedly(Return(true)); | 
| 635   // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time | 635   // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 3h time | 
| 636   // interval by default for soft background fetches on WiFi. | 636   // interval by default for soft background fetches on WiFi. | 
| 637 | 637 | 
| 638   // Initial scheduling after being enabled. | 638   // Initial scheduling after being enabled. | 
| 639   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 639   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 
| 640   ActivateProvider(); | 640   ActivateProvider(); | 
| 641 | 641 | 
| 642   // The first call to NTPOpened results in a fetch. | 642   // The first call to NTPOpened results in a fetch. | 
| 643   RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; | 643   RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; | 
| 644   EXPECT_CALL(*provider(), RefetchInTheBackground(_)) | 644   EXPECT_CALL(*provider(), RefetchInTheBackground(_)) | 
| 645       .WillOnce(SaveArg<0>(&signal_fetch_done)); | 645       .WillOnce(SaveArg<0>(&signal_fetch_done)); | 
| 646   scheduler()->OnNTPOpened(); | 646   scheduler()->OnNTPOpened(); | 
| 647   // Rescheduling after a succesful fetch. | 647   // Rescheduling after a succesful fetch. | 
| 648   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 648   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 
| 649   signal_fetch_done.Run(Status::Success()); | 649   signal_fetch_done.Run(Status::Success()); | 
| 650 | 650 | 
| 651   // Open NTP again after too short delay. This time no fetch is executed. | 651   // Open NTP again after too short delay. This time no fetch is executed. | 
| 652   test_clock()->Advance(base::TimeDelta::FromMinutes(20)); | 652   test_clock()->Advance(base::TimeDelta::FromMinutes(30)); | 
| 653   scheduler()->OnNTPOpened(); | 653   scheduler()->OnNTPOpened(); | 
| 654 | 654 | 
| 655   // Open NTP after another delay, now together long enough to issue a fetch. | 655   // Open NTP after another delay, now together long enough to issue a fetch. | 
| 656   test_clock()->Advance(base::TimeDelta::FromMinutes(100)); | 656   test_clock()->Advance(base::TimeDelta::FromMinutes(150)); | 
| 657   EXPECT_CALL(*provider(), RefetchInTheBackground(_)); | 657   EXPECT_CALL(*provider(), RefetchInTheBackground(_)); | 
| 658   scheduler()->OnNTPOpened(); | 658   scheduler()->OnNTPOpened(); | 
| 659 } | 659 } | 
| 660 | 660 | 
| 661 TEST_F(RemoteSuggestionsSchedulerImplTest, | 661 TEST_F(RemoteSuggestionsSchedulerImplTest, | 
| 662        OverrideFetchIntervalForSoftTriggerOnWifi) { | 662        OverrideFetchIntervalForSoftTriggerOnWifi) { | 
| 663   // Pretend we are on WiFi (already done in ctor, we make it explicit here). | 663   // Pretend we are on WiFi (already done in ctor, we make it explicit here). | 
| 664   EXPECT_CALL(*persistent_scheduler(), IsOnUnmeteredConnection()) | 664   EXPECT_CALL(*persistent_scheduler(), IsOnUnmeteredConnection()) | 
| 665       .WillRepeatedly(Return(true)); | 665       .WillRepeatedly(Return(true)); | 
| 666   // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is | 666   // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 689   test_clock()->Advance(base::TimeDelta::FromMinutes(10)); | 689   test_clock()->Advance(base::TimeDelta::FromMinutes(10)); | 
| 690   EXPECT_CALL(*provider(), RefetchInTheBackground(_)); | 690   EXPECT_CALL(*provider(), RefetchInTheBackground(_)); | 
| 691   scheduler()->OnNTPOpened(); | 691   scheduler()->OnNTPOpened(); | 
| 692 } | 692 } | 
| 693 | 693 | 
| 694 TEST_F(RemoteSuggestionsSchedulerImplTest, | 694 TEST_F(RemoteSuggestionsSchedulerImplTest, | 
| 695        FetchIntervalForSoftTriggerOnFallback) { | 695        FetchIntervalForSoftTriggerOnFallback) { | 
| 696   // Pretend we are not on wifi -> fallback connection. | 696   // Pretend we are not on wifi -> fallback connection. | 
| 697   EXPECT_CALL(*persistent_scheduler(), IsOnUnmeteredConnection()) | 697   EXPECT_CALL(*persistent_scheduler(), IsOnUnmeteredConnection()) | 
| 698       .WillRepeatedly(Return(false)); | 698       .WillRepeatedly(Return(false)); | 
| 699   // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 4h time | 699   // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 6h time | 
| 700   // interval by default for soft background fetches not on WiFi. | 700   // interval by default for soft background fetches not on WiFi. | 
| 701 | 701 | 
| 702   // Initial scheduling after being enabled. | 702   // Initial scheduling after being enabled. | 
| 703   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 703   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 
| 704   ActivateProvider(); | 704   ActivateProvider(); | 
| 705 | 705 | 
| 706   // The first call to NTPOpened results in a fetch. | 706   // The first call to NTPOpened results in a fetch. | 
| 707   RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; | 707   RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; | 
| 708   EXPECT_CALL(*provider(), RefetchInTheBackground(_)) | 708   EXPECT_CALL(*provider(), RefetchInTheBackground(_)) | 
| 709       .WillOnce(SaveArg<0>(&signal_fetch_done)); | 709       .WillOnce(SaveArg<0>(&signal_fetch_done)); | 
| 710   scheduler()->OnNTPOpened(); | 710   scheduler()->OnNTPOpened(); | 
| 711   // Rescheduling after a succesful fetch. | 711   // Rescheduling after a succesful fetch. | 
| 712   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 712   EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); | 
| 713   signal_fetch_done.Run(Status::Success()); | 713   signal_fetch_done.Run(Status::Success()); | 
| 714 | 714 | 
| 715   // Open NTP again after too short delay. This time no fetch is executed. | 715   // Open NTP again after too short delay. This time no fetch is executed. | 
| 716   test_clock()->Advance(base::TimeDelta::FromMinutes(180)); | 716   test_clock()->Advance(base::TimeDelta::FromMinutes(300)); | 
| 717   scheduler()->OnNTPOpened(); | 717   scheduler()->OnNTPOpened(); | 
| 718 | 718 | 
| 719   // Open NTP after another delay, now together long enough to issue a fetch. | 719   // Open NTP after another delay, now together long enough to issue a fetch. | 
| 720   test_clock()->Advance(base::TimeDelta::FromMinutes(60)); | 720   test_clock()->Advance(base::TimeDelta::FromMinutes(60)); | 
| 721   EXPECT_CALL(*provider(), RefetchInTheBackground(_)); | 721   EXPECT_CALL(*provider(), RefetchInTheBackground(_)); | 
| 722   scheduler()->OnNTPOpened(); | 722   scheduler()->OnNTPOpened(); | 
| 723 } | 723 } | 
| 724 | 724 | 
| 725 TEST_F(RemoteSuggestionsSchedulerImplTest, | 725 TEST_F(RemoteSuggestionsSchedulerImplTest, | 
| 726        OverrideFetchIntervalForSoftTriggerOnFallback) { | 726        OverrideFetchIntervalForSoftTriggerOnFallback) { | 
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 831   for (int x = 0; x < 5; ++x) { | 831   for (int x = 0; x < 5; ++x) { | 
| 832     scheduler()->OnPersistentSchedulerWakeUp(); | 832     scheduler()->OnPersistentSchedulerWakeUp(); | 
| 833     signal_fetch_done.Run(Status::Success()); | 833     signal_fetch_done.Run(Status::Success()); | 
| 834   } | 834   } | 
| 835 | 835 | 
| 836   // For the 6th time, it is blocked by the scheduling provider. | 836   // For the 6th time, it is blocked by the scheduling provider. | 
| 837   scheduler()->OnPersistentSchedulerWakeUp(); | 837   scheduler()->OnPersistentSchedulerWakeUp(); | 
| 838 } | 838 } | 
| 839 | 839 | 
| 840 }  // namespace ntp_snippets | 840 }  // namespace ntp_snippets | 
| OLD | NEW | 
|---|