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

Side by Side Diff: components/ntp_snippets/remote/scheduling_remote_suggestions_provider_unittest.cc

Issue 2699613002: [remote suggestions] Add separte fetch interval for NTP open trigger (Closed)
Patch Set: Address comments Created 3 years, 10 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
« no previous file with comments | « components/ntp_snippets/remote/scheduling_remote_suggestions_provider.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/scheduling_remote_suggestions_provider. h" 5 #include "components/ntp_snippets/remote/scheduling_remote_suggestions_provider. 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 401 matching lines...) Expand 10 before | Expand all | Expand 10 after
412 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_)) 412 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_))
413 .WillOnce(SaveArg<0>(&signal_fetch_done)); 413 .WillOnce(SaveArg<0>(&signal_fetch_done));
414 scheduling_provider_->OnPersistentSchedulerWakeUp(); 414 scheduling_provider_->OnPersistentSchedulerWakeUp();
415 signal_fetch_done.Run(Status(StatusCode::PERMANENT_ERROR, "")); 415 signal_fetch_done.Run(Status(StatusCode::PERMANENT_ERROR, ""));
416 416
417 // The second call is ignored if it happens right after the first one. 417 // The second call is ignored if it happens right after the first one.
418 scheduling_provider_->OnNTPOpened(); 418 scheduling_provider_->OnNTPOpened();
419 } 419 }
420 420
421 TEST_F(SchedulingRemoteSuggestionsProviderTest, 421 TEST_F(SchedulingRemoteSuggestionsProviderTest,
422 ShouldFetchAgainOnNTPOpenedLaterAgain) { 422 ShouldFetchAgainOnNTPOpenedLaterAgain) {
jkrcal 2017/02/16 14:02:16 nit: Can you please: - either merge this test wit
markusheintz_ 2017/02/17 12:58:04 Done.
423 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done; 423 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
424 { 424 {
425 InSequence s; 425 InSequence s;
426 // Initial scheduling after being enabled. 426 // Initial scheduling after being enabled.
427 EXPECT_CALL(persistent_scheduler_, Schedule(_, _)); 427 EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
428 // The first call to NTPOpened results in a fetch. 428 // The first call to NTPOpened results in a fetch.
429 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_)) 429 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_))
430 .WillOnce(SaveArg<0>(&signal_fetch_done)); 430 .WillOnce(SaveArg<0>(&signal_fetch_done));
431 // Rescheduling after a succesful fetch. 431 // Rescheduling after a succesful fetch.
432 EXPECT_CALL(persistent_scheduler_, Schedule(_, _)); 432 EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 // null. Change the fallback interval for this class. 564 // null. Change the fallback interval for this class.
565 SetVariationParameter("fetching_interval_hours-fallback-active_ntp_user", 565 SetVariationParameter("fetching_interval_hours-fallback-active_ntp_user",
566 "1.5"); 566 "1.5");
567 567
568 // Schedule() should get called for the second time after params have changed. 568 // Schedule() should get called for the second time after params have changed.
569 ChangeStatusOfUnderlyingProvider( 569 ChangeStatusOfUnderlyingProvider(
570 RemoteSuggestionsProvider::ProviderStatus::ACTIVE); 570 RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
571 } 571 }
572 572
573 TEST_F(SchedulingRemoteSuggestionsProviderTest, 573 TEST_F(SchedulingRemoteSuggestionsProviderTest,
574 ReschedulesWhenOnUsageEventParamChanges) { 574 ReschedulesWhenOnUsageEventParamChanges) {
jkrcal 2017/02/16 14:02:16 nit: Can you please also create an analogous fourt
markusheintz_ 2017/02/17 12:58:04 Done.
575 EXPECT_CALL(persistent_scheduler_, Schedule(_, _)).Times(2); 575 EXPECT_CALL(persistent_scheduler_, Schedule(_, _)).Times(2);
576 ChangeStatusOfUnderlyingProvider( 576 ChangeStatusOfUnderlyingProvider(
577 RemoteSuggestionsProvider::ProviderStatus::ACTIVE); 577 RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
578 578
579 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is 579 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
580 // null. Change the on usage interval for this class. 580 // null. Change the on usage interval for this class.
581 SetVariationParameter("soft_fetching_interval_hours-active-active_ntp_user", 581 SetVariationParameter("soft_fetching_interval_hours-active-active_ntp_user",
582 "1.5"); 582 "1.5");
583 583
584 // Schedule() should get called for the second time after params have changed. 584 // Schedule() should get called for the second time after params have changed.
585 ChangeStatusOfUnderlyingProvider( 585 ChangeStatusOfUnderlyingProvider(
586 RemoteSuggestionsProvider::ProviderStatus::ACTIVE); 586 RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
587 } 587 }
588 588
589 TEST_F(SchedulingRemoteSuggestionsProviderTest,
590 FetchIntervalForNtpOpenedTrigger) {
591 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
592 {
593 InSequence s;
594 // Initial scheduling after being enabled.
595 EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
596 // The first call to NTPOpened results in a fetch.
597 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_))
598 .WillOnce(SaveArg<0>(&signal_fetch_done));
599 // Rescheduling after a succesful fetch.
600 EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
601 // The third call to NTPOpened 35min later again results in a fetch.
602 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
603 }
604
605 ChangeStatusOfUnderlyingProvider(
606 RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
607
608 scheduling_provider_->OnNTPOpened();
609 signal_fetch_done.Run(Status::Success());
610
611 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER which uses a 2h time
612 // interval by default for soft backgroudn fetches on ntp open events.
613
614 // Open NTP again after 20min. This time no fetch is executed.
615 test_clock_->Advance(base::TimeDelta::FromMinutes(20));
616 scheduling_provider_->OnNTPOpened();
617
618 // Open NTP again after 101min (121min since first opened). Since the default
619 // time interval has passed refetch again.
620 test_clock_->Advance(base::TimeDelta::FromMinutes(101));
621 scheduling_provider_->OnNTPOpened();
622 }
623
624 TEST_F(SchedulingRemoteSuggestionsProviderTest,
625 OverrideFetchIntervalForNtpOpenedTrigger) {
626 // UserClassifier defaults to UserClass::ACTIVE_NTP_USER if PrefService is
627 // null. Change the on usage interval for this class from 2h to 30min.
628 SetVariationParameter("soft_on_ntp_opened_interval_hours-active_ntp_user",
629 "0.5");
630
631 RemoteSuggestionsProvider::FetchStatusCallback signal_fetch_done;
632 {
633 InSequence s;
634 // Initial scheduling after being enabled.
635 EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
636 // The first call to NTPOpened results in a fetch.
637 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_))
638 .WillOnce(SaveArg<0>(&signal_fetch_done));
639 // Rescheduling after a succesful fetch.
640 EXPECT_CALL(persistent_scheduler_, Schedule(_, _));
641 // The third call to NTPOpened 35min later again results in a fetch.
642 EXPECT_CALL(*underlying_provider_, RefetchInTheBackground(_));
643 }
644
645 ChangeStatusOfUnderlyingProvider(
646 RemoteSuggestionsProvider::ProviderStatus::ACTIVE);
647
648 scheduling_provider_->OnNTPOpened();
649 signal_fetch_done.Run(Status::Success());
650
651 // Open NTP again after 20min. No fetch request is issues since the 30 min
652 // time interval has not passed yet.
653 test_clock_->Advance(base::TimeDelta::FromMinutes(20));
654 scheduling_provider_->OnNTPOpened();
655
656 // Open NTP again after 15min (35min since first opened)
657 test_clock_->Advance(base::TimeDelta::FromMinutes(15));
658 scheduling_provider_->OnNTPOpened();
659 }
660
589 } // namespace ntp_snippets 661 } // namespace ntp_snippets
OLDNEW
« no previous file with comments | « components/ntp_snippets/remote/scheduling_remote_suggestions_provider.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698