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

Side by Side 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 unified diff | Download patch
OLDNEW
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 14 matching lines...) Expand all
25 #include "components/ntp_snippets/pref_names.h" 25 #include "components/ntp_snippets/pref_names.h"
26 #include "components/ntp_snippets/remote/persistent_scheduler.h" 26 #include "components/ntp_snippets/remote/persistent_scheduler.h"
27 #include "components/ntp_snippets/remote/remote_suggestions_provider.h" 27 #include "components/ntp_snippets/remote/remote_suggestions_provider.h"
28 #include "components/ntp_snippets/remote/test_utils.h" 28 #include "components/ntp_snippets/remote/test_utils.h"
29 #include "components/ntp_snippets/status.h" 29 #include "components/ntp_snippets/status.h"
30 #include "components/ntp_snippets/user_classifier.h" 30 #include "components/ntp_snippets/user_classifier.h"
31 #include "components/prefs/pref_registry_simple.h" 31 #include "components/prefs/pref_registry_simple.h"
32 #include "components/prefs/testing_pref_service.h" 32 #include "components/prefs/testing_pref_service.h"
33 #include "components/variations/variations_params_manager.h" 33 #include "components/variations/variations_params_manager.h"
34 #include "components/web_resource/web_resource_pref_names.h" 34 #include "components/web_resource/web_resource_pref_names.h"
35 #include "net/base/network_change_notifier.h"
35 #include "testing/gmock/include/gmock/gmock.h" 36 #include "testing/gmock/include/gmock/gmock.h"
36 #include "testing/gtest/include/gtest/gtest.h" 37 #include "testing/gtest/include/gtest/gtest.h"
37 38
38 using testing::ElementsAre; 39 using testing::ElementsAre;
39 using testing::Eq; 40 using testing::Eq;
40 using testing::Field; 41 using testing::Field;
41 using testing::InSequence; 42 using testing::InSequence;
42 using testing::Invoke; 43 using testing::Invoke;
43 using testing::IsEmpty; 44 using testing::IsEmpty;
44 using testing::Mock; 45 using testing::Mock;
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 MOCK_METHOD1(ClearCachedSuggestions, void(Category)); 91 MOCK_METHOD1(ClearCachedSuggestions, void(Category));
91 MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category)); 92 MOCK_METHOD1(ClearDismissedSuggestionsForDebugging, void(Category));
92 MOCK_METHOD1(DismissSuggestion, void(const ContentSuggestion::ID&)); 93 MOCK_METHOD1(DismissSuggestion, void(const ContentSuggestion::ID&));
93 MOCK_METHOD2(FetchSuggestionImage, 94 MOCK_METHOD2(FetchSuggestionImage,
94 void(const ContentSuggestion::ID&, const ImageFetchedCallback&)); 95 void(const ContentSuggestion::ID&, const ImageFetchedCallback&));
95 MOCK_METHOD2(GetDismissedSuggestionsForDebugging, 96 MOCK_METHOD2(GetDismissedSuggestionsForDebugging,
96 void(Category, const DismissedSuggestionsCallback&)); 97 void(Category, const DismissedSuggestionsCallback&));
97 MOCK_METHOD0(OnSignInStateChanged, void()); 98 MOCK_METHOD0(OnSignInStateChanged, void());
98 }; 99 };
99 100
101 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.
102 public:
103 ConnectionType GetCurrentConnectionType() const override {
104 return NetworkChangeNotifier::CONNECTION_WIFI;
105 }
106 };
107
108 class FakeNetworkChangeNotifier2G : public net::NetworkChangeNotifier {
109 public:
110 ConnectionType GetCurrentConnectionType() const override {
111 return NetworkChangeNotifier::CONNECTION_2G;
112 }
113 };
114
100 } // namespace 115 } // namespace
101 116
102 class RemoteSuggestionsSchedulerImplTest : public ::testing::Test { 117 class RemoteSuggestionsSchedulerImplTest : public ::testing::Test {
103 public: 118 public:
104 RemoteSuggestionsSchedulerImplTest() 119 RemoteSuggestionsSchedulerImplTest()
105 : // For the test we enabled all trigger types. 120 : // For the test we enabled all trigger types.
106 default_variation_params_{{"scheduler_trigger_types", 121 default_variation_params_{{"scheduler_trigger_types",
107 "persistent_scheduler_wake_up,ntp_opened," 122 "persistent_scheduler_wake_up,ntp_opened,"
108 "browser_foregrounded,browser_cold_start"}}, 123 "browser_foregrounded,browser_cold_start"}},
109 params_manager_(ntp_snippets::kArticleSuggestionsFeature.name, 124 params_manager_(ntp_snippets::kArticleSuggestionsFeature.name,
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
466 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; 481 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
467 { 482 {
468 InSequence s; 483 InSequence s;
469 // Initial scheduling after being enabled. 484 // Initial scheduling after being enabled.
470 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); 485 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
471 // The first call to NTPOpened results in a fetch. 486 // The first call to NTPOpened results in a fetch.
472 EXPECT_CALL(*provider(), RefetchInTheBackground(_)) 487 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
473 .WillOnce(SaveArg<0>(&signal_fetch_done)); 488 .WillOnce(SaveArg<0>(&signal_fetch_done));
474 // Rescheduling after a succesful fetch. 489 // Rescheduling after a succesful fetch.
475 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); 490 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
476 // The second call to NTPOpened 2hrs later again results in a fetch. 491 // The second call to NTPOpened 4hrs later again results in a fetch.
477 EXPECT_CALL(*provider(), RefetchInTheBackground(_)); 492 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
478 } 493 }
479 494
480 // First enable the scheduler. 495 // First enable the scheduler.
481 ActivateProvider(); 496 ActivateProvider();
482 // Make the first soft fetch successful. 497 // Make the first soft fetch successful.
483 scheduler()->OnBrowserForegrounded(); 498 scheduler()->OnBrowserForegrounded();
484 signal_fetch_done.Run(Status::Success()); 499 signal_fetch_done.Run(Status::Success());
485 // Open NTP again after 2hrs. 500 // Open NTP again after 4hrs.
486 test_clock()->Advance(base::TimeDelta::FromHours(2)); 501 test_clock()->Advance(base::TimeDelta::FromHours(4));
487 scheduler()->OnBrowserForegrounded(); 502 scheduler()->OnBrowserForegrounded();
488 } 503 }
489 504
490 TEST_F(RemoteSuggestionsSchedulerImplTest, 505 TEST_F(RemoteSuggestionsSchedulerImplTest,
491 ShouldRescheduleOnRescheduleFetching) { 506 ShouldRescheduleOnRescheduleFetching) {
492 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); 507 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
493 scheduler()->RescheduleFetching(); 508 scheduler()->RescheduleFetching();
494 } 509 }
495 510
496 TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldScheduleOnActivation) { 511 TEST_F(RemoteSuggestionsSchedulerImplTest, ShouldScheduleOnActivation) {
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); 576 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
562 EXPECT_CALL(*persistent_scheduler(), Unschedule()); 577 EXPECT_CALL(*persistent_scheduler(), Unschedule());
563 } 578 }
564 // First schedule so that later we really unschedule. 579 // First schedule so that later we really unschedule.
565 ActivateProvider(); 580 ActivateProvider();
566 DeactivateProvider(); 581 DeactivateProvider();
567 // No further call to Unschedule on second status callback. 582 // No further call to Unschedule on second status callback.
568 DeactivateProvider(); 583 DeactivateProvider();
569 } 584 }
570 585
571 TEST_F(RemoteSuggestionsSchedulerImplTest, ReschedulesWhenWifiParamChanges) { 586 TEST_F(RemoteSuggestionsSchedulerImplTest,
587 ReschedulesWhenPersistentWifiParamChanges) {
572 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2); 588 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
573 ActivateProvider(); 589 ActivateProvider();
574 590
575 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is 591 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
576 // null. Change the wifi interval for this class. 592 // null. Change the wifi interval for this class.
577 SetVariationParameter("fetching_interval_hours-wifi-active_ntp_user", "1.5"); 593 SetVariationParameter("fetching_interval_hours-wifi-active_ntp_user", "1.5");
578 594
579 // Schedule() should get called for the second time after params have changed. 595 // Schedule() should get called for the second time after params have changed.
580 ActivateProvider(); 596 ActivateProvider();
581 } 597 }
582 598
583 TEST_F(RemoteSuggestionsSchedulerImplTest, 599 TEST_F(RemoteSuggestionsSchedulerImplTest,
584 ReschedulesWhenFallbackParamChanges) { 600 ReschedulesWhenPersistentFallbackParamChanges) {
585 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2); 601 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
586 ActivateProvider(); 602 ActivateProvider();
587 603
588 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is 604 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
589 // null. Change the fallback interval for this class. 605 // null. Change the fallback interval for this class.
590 SetVariationParameter("fetching_interval_hours-fallback-active_ntp_user", 606 SetVariationParameter("fetching_interval_hours-fallback-active_ntp_user",
591 "1.5"); 607 "1.5");
592 608
593 // Schedule() should get called for the second time after params have changed. 609 // Schedule() should get called for the second time after params have changed.
594 ActivateProvider(); 610 ActivateProvider();
595 } 611 }
596 612
597 TEST_F(RemoteSuggestionsSchedulerImplTest, 613 TEST_F(RemoteSuggestionsSchedulerImplTest,
598 ReschedulesWhenOnUsageEventParamChanges) { 614 ReschedulesWhenSoftWifiParamChanges) {
599 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2); 615 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
600 ActivateProvider(); 616 ActivateProvider();
601 617
602 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is 618 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
603 // null. Change the on usage interval for this class. 619 // null. Change the on usage interval for this class.
604 SetVariationParameter("soft_fetching_interval_hours-active-active_ntp_user", 620 SetVariationParameter("soft_fetching_interval_hours-wifi-active_ntp_user",
605 "1.5"); 621 "1.5");
606 622
607 // Schedule() should get called for the second time after params have changed. 623 // Schedule() should get called for the second time after params have changed.
608 ActivateProvider(); 624 ActivateProvider();
609 } 625 }
610 626
611 TEST_F(RemoteSuggestionsSchedulerImplTest, 627 TEST_F(RemoteSuggestionsSchedulerImplTest,
612 ReschedulesWhenOnNtpOpenedParamChanges) { 628 ReschedulesWhenSoftFallbackParamChanges) {
613 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2); 629 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)).Times(2);
614 ActivateProvider(); 630 ActivateProvider();
615 631
616 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is 632 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
617 // null. Change the fallback interval for this class. 633 // null. Change the fallback interval for this class.
618 SetVariationParameter("soft_on_ntp_opened_interval_hours-active_ntp_user", 634 SetVariationParameter("soft_fetching_interval_hours-fallback-active_ntp_user",
619 "1.5"); 635 "1.5");
620 636
621 // Schedule() should get called for the second time after params have changed. 637 // Schedule() should get called for the second time after params have changed.
622 ActivateProvider(); 638 ActivateProvider();
623 } 639 }
624 640
625 TEST_F(RemoteSuggestionsSchedulerImplTest, FetchIntervalForNtpOpenedTrigger) { 641 TEST_F(RemoteSuggestionsSchedulerImplTest, FetchIntervalForSoftTriggerOnWifi) {
626 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; 642 // Pretend we are on WiFi.
627 { 643 FakeNetworkChangeNotifierWIFI fake_network_notifier;
628 InSequence s; 644 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time
629 // Initial scheduling after being enabled. 645 // interval by default for soft background fetches on WiFi.
630 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
631 // The first call to NTPOpened results in a fetch.
632 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
633 .WillOnce(SaveArg<0>(&signal_fetch_done));
634 // Rescheduling after a succesful fetch.
635 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
636 // The third call to NTPOpened 35min later again results in a fetch.
637 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
638 }
639 646
647 // Initial scheduling after being enabled.
648 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
640 ActivateProvider(); 649 ActivateProvider();
641 650
651 // The first call to NTPOpened results in a fetch.
652 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
653 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
654 .WillOnce(SaveArg<0>(&signal_fetch_done));
642 scheduler()->OnNTPOpened(); 655 scheduler()->OnNTPOpened();
656 // Rescheduling after a succesful fetch.
657 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
643 signal_fetch_done.Run(Status::Success()); 658 signal_fetch_done.Run(Status::Success());
644 659
645 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time 660 // Open NTP again after too short delay. This time no fetch is executed.
646 // interval by default for soft backgroudn fetches on ntp open events.
647
648 // Open NTP again after 20min. This time no fetch is executed.
649 test_clock()->Advance(base::TimeDelta::FromMinutes(20)); 661 test_clock()->Advance(base::TimeDelta::FromMinutes(20));
650 scheduler()->OnNTPOpened(); 662 scheduler()->OnNTPOpened();
651 663
652 // Open NTP again after 101min (121min since first opened). Since the default 664 // Open NTP after another delay, now together long enough to issue a fetch.
653 // time interval has passed refetch again. 665 test_clock()->Advance(base::TimeDelta::FromMinutes(100));
654 test_clock()->Advance(base::TimeDelta::FromMinutes(101)); 666 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
655 scheduler()->OnNTPOpened(); 667 scheduler()->OnNTPOpened();
656 } 668 }
657 669
658 TEST_F(RemoteSuggestionsSchedulerImplTest, 670 TEST_F(RemoteSuggestionsSchedulerImplTest,
659 OverrideFetchIntervalForNtpOpenedTrigger) { 671 OverrideFetchIntervalForSoftTriggerOnWifi) {
672 // Pretend we are on WiFi.
673 FakeNetworkChangeNotifierWIFI fake_network_notifier;
660 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is 674 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
661 // null. Change the on usage interval for this class from 2h to 30min. 675 // null. Change the on usage interval for this class from 2h to 30min.
662 SetVariationParameter("soft_on_ntp_opened_interval_hours-active_ntp_user", 676 SetVariationParameter("soft_fetching_interval_hours-wifi-active_ntp_user",
663 "0.5"); 677 "0.5");
664 678
665 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; 679 // Initial scheduling after being enabled.
666 { 680 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
667 InSequence s;
668 // Initial scheduling after being enabled.
669 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
670 // The first call to NTPOpened results in a fetch.
671 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
672 .WillOnce(SaveArg<0>(&signal_fetch_done));
673 // Rescheduling after a succesful fetch.
674 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
675 // The third call to NTPOpened 35min later again results in a fetch.
676 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
677 }
678
679 ActivateProvider(); 681 ActivateProvider();
680 682
683 // The first call to NTPOpened results in a fetch.
684 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
685 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
686 .WillOnce(SaveArg<0>(&signal_fetch_done));
681 scheduler()->OnNTPOpened(); 687 scheduler()->OnNTPOpened();
688 // Rescheduling after a succesful fetch.
689 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
682 signal_fetch_done.Run(Status::Success()); 690 signal_fetch_done.Run(Status::Success());
683 691
684 // Open NTP again after 20min. No fetch request is issues since the 30 min 692 // Open NTP again after too short delay. This time no fetch is executed.
685 // time interval has not passed yet.
686 test_clock()->Advance(base::TimeDelta::FromMinutes(20)); 693 test_clock()->Advance(base::TimeDelta::FromMinutes(20));
687 scheduler()->OnNTPOpened(); 694 scheduler()->OnNTPOpened();
688 695
689 // Open NTP again after 15min (35min since first opened) 696 // Open NTP after another delay, now together long enough to issue a fetch.
690 test_clock()->Advance(base::TimeDelta::FromMinutes(15)); 697 test_clock()->Advance(base::TimeDelta::FromMinutes(10));
698 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
691 scheduler()->OnNTPOpened(); 699 scheduler()->OnNTPOpened();
692 } 700 }
693 701
702 TEST_F(RemoteSuggestionsSchedulerImplTest,
703 FetchIntervalForSoftTriggerOnFallback) {
704 // Pretend we are on 2G -> fallback connection.
705 FakeNetworkChangeNotifier2G fake_network_notifier;
706 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 4h time
707 // interval by default for soft background fetches not on WiFi.
708
709 // Initial scheduling after being enabled.
710 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
711 ActivateProvider();
712
713 // The first call to NTPOpened results in a fetch.
714 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
715 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
716 .WillOnce(SaveArg<0>(&signal_fetch_done));
717 scheduler()->OnNTPOpened();
718 // Rescheduling after a succesful fetch.
719 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
720 signal_fetch_done.Run(Status::Success());
721
722 // Open NTP again after too short delay. This time no fetch is executed.
723 test_clock()->Advance(base::TimeDelta::FromMinutes(60));
724 scheduler()->OnNTPOpened();
725
726 // Open NTP after another delay, now together long enough to issue a fetch.
727 test_clock()->Advance(base::TimeDelta::FromMinutes(180));
728 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
729 scheduler()->OnNTPOpened();
730 }
731
732 TEST_F(RemoteSuggestionsSchedulerImplTest,
733 OverrideFetchIntervalForSoftTriggerOnFallback) {
734 // Pretend we are on 2G -> fallback connection.
735 FakeNetworkChangeNotifier2G fake_network_notifier;
736 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
737 // null. Change the on usage interval for this class from 4h to 30min.
738 SetVariationParameter("soft_fetching_interval_hours-fallback-active_ntp_user",
739 "0.5");
740
741 // Initial scheduling after being enabled.
742 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
743 ActivateProvider();
744
745 // The first call to NTPOpened results in a fetch.
746 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
747 EXPECT_CALL(*provider(), RefetchInTheBackground(_))
748 .WillOnce(SaveArg<0>(&signal_fetch_done));
749 scheduler()->OnNTPOpened();
750 // Rescheduling after a succesful fetch.
751 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
752 signal_fetch_done.Run(Status::Success());
753
754 // Open NTP again after too short delay. This time no fetch is executed.
755 test_clock()->Advance(base::TimeDelta::FromMinutes(20));
756 scheduler()->OnNTPOpened();
757
758 // Open NTP after another delay, now together long enough to issue a fetch.
759 test_clock()->Advance(base::TimeDelta::FromMinutes(10));
760 EXPECT_CALL(*provider(), RefetchInTheBackground(_));
761 scheduler()->OnNTPOpened();
762 }
763
694 TEST_F(RemoteSuggestionsSchedulerImplTest, 764 TEST_F(RemoteSuggestionsSchedulerImplTest,
695 ShouldBlockFetchingForSomeTimeAfterHistoryCleared) { 765 ShouldBlockFetchingForSomeTimeAfterHistoryCleared) {
696 // First enable the scheduler -- this will trigger the persistent scheduling. 766 // First enable the scheduler -- this will trigger the persistent scheduling.
697 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _)); 767 EXPECT_CALL(*persistent_scheduler(), Schedule(_, _));
698 ActivateProvider(); 768 ActivateProvider();
699 // Clear the history. 769 // Clear the history.
700 scheduler()->OnHistoryCleared(); 770 scheduler()->OnHistoryCleared();
701 771
702 // A trigger after 15 minutes is ignored. 772 // A trigger after 15 minutes is ignored.
703 test_clock()->Advance(base::TimeDelta::FromMinutes(15)); 773 test_clock()->Advance(base::TimeDelta::FromMinutes(15));
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
767 for (int x = 0; x < 5; ++x) { 837 for (int x = 0; x < 5; ++x) {
768 scheduler()->OnPersistentSchedulerWakeUp(); 838 scheduler()->OnPersistentSchedulerWakeUp();
769 signal_fetch_done.Run(Status::Success()); 839 signal_fetch_done.Run(Status::Success());
770 } 840 }
771 841
772 // For the 6th time, it is blocked by the scheduling provider. 842 // For the 6th time, it is blocked by the scheduling provider.
773 scheduler()->OnPersistentSchedulerWakeUp(); 843 scheduler()->OnPersistentSchedulerWakeUp();
774 } 844 }
775 845
776 } // namespace ntp_snippets 846 } // namespace ntp_snippets
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698