OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "chrome/browser/banners/app_banner_metrics.h" | 8 #include "chrome/browser/banners/app_banner_metrics.h" |
9 #include "chrome/browser/banners/app_banner_settings_helper.h" | 9 #include "chrome/browser/banners/app_banner_settings_helper.h" |
10 #include "chrome/browser/engagement/site_engagement_service.h" | 10 #include "chrome/browser/engagement/site_engagement_service.h" |
| 11 #include "chrome/browser/installable/installable_logging.h" |
11 #include "chrome/common/chrome_switches.h" | 12 #include "chrome/common/chrome_switches.h" |
12 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 13 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
13 #include "chrome/test/base/testing_profile.h" | 14 #include "chrome/test/base/testing_profile.h" |
14 #include "ui/base/page_transition_types.h" | 15 #include "ui/base/page_transition_types.h" |
15 | 16 |
16 namespace { | 17 namespace { |
17 | 18 |
18 const char kTestURL[] = "https://www.google.com"; | 19 const char kTestURL[] = "https://www.google.com"; |
19 const char kSameOriginTestURL[] = "https://www.google.com/foo.html"; | 20 const char kSameOriginTestURL[] = "https://www.google.com/foo.html"; |
20 const char kDifferentOriginTestURL[] = "https://www.example.com"; | 21 const char kDifferentOriginTestURL[] = "https://www.example.com"; |
(...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
506 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); | 507 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); |
507 GURL url(kTestURL); | 508 GURL url(kTestURL); |
508 NavigateAndCommit(url); | 509 NavigateAndCommit(url); |
509 | 510 |
510 base::Time reference_time = GetReferenceTime(); | 511 base::Time reference_time = GetReferenceTime(); |
511 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); | 512 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); |
512 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); | 513 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); |
513 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); | 514 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); |
514 | 515 |
515 // By default the banner should not be shown. | 516 // By default the banner should not be shown. |
516 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 517 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
517 web_contents(), url, kTestPackageName, reference_time)); | 518 AppBannerSettingsHelper::ShouldShowBanner( |
| 519 web_contents(), url, kTestPackageName, reference_time)); |
518 | 520 |
519 // It should take four indirect visits with a weight of 0.5 to trigger the | 521 // It should take four indirect visits with a weight of 0.5 to trigger the |
520 // banner. | 522 // banner. |
521 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 523 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
522 web_contents(), url, kTestPackageName, reference_time, | 524 web_contents(), url, kTestPackageName, reference_time, |
523 ui::PAGE_TRANSITION_LINK); | 525 ui::PAGE_TRANSITION_LINK); |
524 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 526 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
525 web_contents(), url, kTestPackageName, reference_time)); | 527 AppBannerSettingsHelper::ShouldShowBanner( |
| 528 web_contents(), url, kTestPackageName, reference_time)); |
526 | 529 |
527 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 530 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
528 web_contents(), url, kTestPackageName, second_day, | 531 web_contents(), url, kTestPackageName, second_day, |
529 ui::PAGE_TRANSITION_LINK); | 532 ui::PAGE_TRANSITION_LINK); |
530 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 533 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
531 web_contents(), url, kTestPackageName, second_day)); | 534 AppBannerSettingsHelper::ShouldShowBanner( |
| 535 web_contents(), url, kTestPackageName, second_day)); |
532 | 536 |
533 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 537 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
534 web_contents(), url, kTestPackageName, third_day, | 538 web_contents(), url, kTestPackageName, third_day, |
535 ui::PAGE_TRANSITION_FORM_SUBMIT); | 539 ui::PAGE_TRANSITION_FORM_SUBMIT); |
536 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 540 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
537 web_contents(), url, kTestPackageName, third_day)); | 541 AppBannerSettingsHelper::ShouldShowBanner( |
| 542 web_contents(), url, kTestPackageName, third_day)); |
538 | 543 |
539 // Visit the site again; now it should be shown. | 544 // Visit the site again; now it should be shown. |
540 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 545 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
541 web_contents(), url, kTestPackageName, fourth_day, | 546 web_contents(), url, kTestPackageName, fourth_day, |
542 ui::PAGE_TRANSITION_MANUAL_SUBFRAME); | 547 ui::PAGE_TRANSITION_MANUAL_SUBFRAME); |
543 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 548 EXPECT_EQ(NO_ERROR_DETECTED, |
544 web_contents(), url, kTestPackageName, fourth_day)); | 549 AppBannerSettingsHelper::ShouldShowBanner( |
| 550 web_contents(), url, kTestPackageName, fourth_day)); |
545 } | 551 } |
546 | 552 |
547 TEST_F(AppBannerSettingsHelperTest, DirectEngagementWithHigherWeight) { | 553 TEST_F(AppBannerSettingsHelperTest, DirectEngagementWithHigherWeight) { |
548 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); | 554 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); |
549 GURL url(kTestURL); | 555 GURL url(kTestURL); |
550 NavigateAndCommit(url); | 556 NavigateAndCommit(url); |
551 | 557 |
552 base::Time reference_time = GetReferenceTime(); | 558 base::Time reference_time = GetReferenceTime(); |
553 | 559 |
554 // By default the banner should not be shown. | 560 // By default the banner should not be shown. |
555 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 561 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
556 web_contents(), url, kTestPackageName, reference_time)); | 562 AppBannerSettingsHelper::ShouldShowBanner( |
| 563 web_contents(), url, kTestPackageName, reference_time)); |
557 | 564 |
558 // It should take one direct visit with a weight of 2 to trigger the banner. | 565 // It should take one direct visit with a weight of 2 to trigger the banner. |
559 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 566 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
560 web_contents(), url, kTestPackageName, reference_time, | 567 web_contents(), url, kTestPackageName, reference_time, |
561 ui::PAGE_TRANSITION_TYPED); | 568 ui::PAGE_TRANSITION_TYPED); |
562 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 569 EXPECT_EQ(NO_ERROR_DETECTED, |
563 web_contents(), url, kTestPackageName, reference_time)); | 570 AppBannerSettingsHelper::ShouldShowBanner( |
| 571 web_contents(), url, kTestPackageName, reference_time)); |
564 } | 572 } |
565 | 573 |
566 TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) { | 574 TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) { |
567 GURL url(kTestURL); | 575 GURL url(kTestURL); |
568 NavigateAndCommit(url); | 576 NavigateAndCommit(url); |
569 | 577 |
570 base::Time reference_time = GetReferenceTime(); | 578 base::Time reference_time = GetReferenceTime(); |
571 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 579 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
572 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 580 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
573 | 581 |
574 // By default the banner should not be shown. | 582 // By default the banner should not be shown. |
575 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 583 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
576 web_contents(), url, kTestPackageName, reference_time)); | 584 AppBannerSettingsHelper::ShouldShowBanner( |
| 585 web_contents(), url, kTestPackageName, reference_time)); |
577 | 586 |
578 // Visit the site once, it still should not be shown. | 587 // Visit the site once, it still should not be shown. |
579 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 588 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
580 web_contents(), url, kTestPackageName, one_year_ago, | 589 web_contents(), url, kTestPackageName, one_year_ago, |
581 ui::PAGE_TRANSITION_TYPED); | 590 ui::PAGE_TRANSITION_TYPED); |
582 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 591 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
583 web_contents(), url, kTestPackageName, reference_time)); | 592 AppBannerSettingsHelper::ShouldShowBanner( |
| 593 web_contents(), url, kTestPackageName, reference_time)); |
584 | 594 |
585 // Visit the site again after a long delay, it still should not be shown. | 595 // Visit the site again after a long delay, it still should not be shown. |
586 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 596 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
587 web_contents(), url, kTestPackageName, one_day_ago, | 597 web_contents(), url, kTestPackageName, one_day_ago, |
588 ui::PAGE_TRANSITION_TYPED); | 598 ui::PAGE_TRANSITION_TYPED); |
589 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 599 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
590 web_contents(), url, kTestPackageName, reference_time)); | 600 AppBannerSettingsHelper::ShouldShowBanner( |
| 601 web_contents(), url, kTestPackageName, reference_time)); |
591 | 602 |
592 // Visit the site again; now it should be shown. | 603 // Visit the site again; now it should be shown. |
593 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 604 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
594 web_contents(), url, kTestPackageName, reference_time, | 605 web_contents(), url, kTestPackageName, reference_time, |
595 ui::PAGE_TRANSITION_TYPED); | 606 ui::PAGE_TRANSITION_TYPED); |
596 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 607 EXPECT_EQ(NO_ERROR_DETECTED, |
597 web_contents(), url, kTestPackageName, reference_time)); | 608 AppBannerSettingsHelper::ShouldShowBanner( |
| 609 web_contents(), url, kTestPackageName, reference_time)); |
598 } | 610 } |
599 | 611 |
600 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterBlocking) { | 612 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterBlocking) { |
601 GURL url(kTestURL); | 613 GURL url(kTestURL); |
602 NavigateAndCommit(url); | 614 NavigateAndCommit(url); |
603 | 615 |
604 base::Time reference_time = GetReferenceTime(); | 616 base::Time reference_time = GetReferenceTime(); |
605 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 617 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
606 base::Time two_months_ago = reference_time - base::TimeDelta::FromDays(60); | 618 base::Time two_months_ago = reference_time - base::TimeDelta::FromDays(60); |
607 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 619 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
608 | 620 |
609 // By default the banner should not be shown. | 621 // By default the banner should not be shown. |
610 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 622 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
611 web_contents(), url, kTestPackageName, reference_time)); | 623 AppBannerSettingsHelper::ShouldShowBanner( |
| 624 web_contents(), url, kTestPackageName, reference_time)); |
612 | 625 |
613 // Record events such that the banner should show. | 626 // Record events such that the banner should show. |
614 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 627 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
615 web_contents(), url, kTestPackageName, one_day_ago, | 628 web_contents(), url, kTestPackageName, one_day_ago, |
616 ui::PAGE_TRANSITION_TYPED); | 629 ui::PAGE_TRANSITION_TYPED); |
617 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 630 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
618 web_contents(), url, kTestPackageName, reference_time, | 631 web_contents(), url, kTestPackageName, reference_time, |
619 ui::PAGE_TRANSITION_TYPED); | 632 ui::PAGE_TRANSITION_TYPED); |
620 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 633 EXPECT_EQ(NO_ERROR_DETECTED, |
621 web_contents(), url, kTestPackageName, reference_time)); | 634 AppBannerSettingsHelper::ShouldShowBanner( |
| 635 web_contents(), url, kTestPackageName, reference_time)); |
622 | 636 |
623 // Block the site a long time ago. It should still be shown. | 637 // Block the site a long time ago. It should still be shown. |
624 AppBannerSettingsHelper::RecordBannerEvent( | 638 AppBannerSettingsHelper::RecordBannerEvent( |
625 web_contents(), url, kTestPackageName, | 639 web_contents(), url, kTestPackageName, |
626 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, one_year_ago); | 640 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, one_year_ago); |
627 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 641 EXPECT_EQ(NO_ERROR_DETECTED, |
628 web_contents(), url, kTestPackageName, reference_time)); | 642 AppBannerSettingsHelper::ShouldShowBanner( |
| 643 web_contents(), url, kTestPackageName, reference_time)); |
629 | 644 |
630 // Block the site more recently. Now it should not be shown. | 645 // Block the site more recently. Now it should not be shown. |
631 AppBannerSettingsHelper::RecordBannerEvent( | 646 AppBannerSettingsHelper::RecordBannerEvent( |
632 web_contents(), url, kTestPackageName, | 647 web_contents(), url, kTestPackageName, |
633 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, two_months_ago); | 648 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, two_months_ago); |
634 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 649 EXPECT_EQ(PREVIOUSLY_BLOCKED, |
635 web_contents(), url, kTestPackageName, reference_time)); | 650 AppBannerSettingsHelper::ShouldShowBanner( |
| 651 web_contents(), url, kTestPackageName, reference_time)); |
636 } | 652 } |
637 | 653 |
638 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) { | 654 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) { |
639 GURL url(kTestURL); | 655 GURL url(kTestURL); |
640 NavigateAndCommit(url); | 656 NavigateAndCommit(url); |
641 | 657 |
642 base::Time reference_time = GetReferenceTime(); | 658 base::Time reference_time = GetReferenceTime(); |
643 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 659 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
644 base::Time three_weeks_ago = reference_time - base::TimeDelta::FromDays(21); | 660 base::Time three_weeks_ago = reference_time - base::TimeDelta::FromDays(21); |
645 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 661 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
646 | 662 |
647 // By default the banner should not be shown. | 663 // By default the banner should not be shown. |
648 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 664 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
649 web_contents(), url, kTestPackageName, reference_time)); | 665 AppBannerSettingsHelper::ShouldShowBanner( |
| 666 web_contents(), url, kTestPackageName, reference_time)); |
650 | 667 |
651 // Record events such that the banner should show. | 668 // Record events such that the banner should show. |
652 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 669 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
653 web_contents(), url, kTestPackageName, one_day_ago, | 670 web_contents(), url, kTestPackageName, one_day_ago, |
654 ui::PAGE_TRANSITION_TYPED); | 671 ui::PAGE_TRANSITION_TYPED); |
655 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 672 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
656 web_contents(), url, kTestPackageName, reference_time, | 673 web_contents(), url, kTestPackageName, reference_time, |
657 ui::PAGE_TRANSITION_TYPED); | 674 ui::PAGE_TRANSITION_TYPED); |
658 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 675 EXPECT_EQ(NO_ERROR_DETECTED, |
659 web_contents(), url, kTestPackageName, reference_time)); | 676 AppBannerSettingsHelper::ShouldShowBanner( |
| 677 web_contents(), url, kTestPackageName, reference_time)); |
660 | 678 |
661 // Show the banner a long time ago. It should still be shown. | 679 // Show the banner a long time ago. It should still be shown. |
662 AppBannerSettingsHelper::RecordBannerEvent( | 680 AppBannerSettingsHelper::RecordBannerEvent( |
663 web_contents(), url, kTestPackageName, | 681 web_contents(), url, kTestPackageName, |
664 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, one_year_ago); | 682 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, one_year_ago); |
665 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 683 EXPECT_EQ(NO_ERROR_DETECTED, |
666 web_contents(), url, kTestPackageName, reference_time)); | 684 AppBannerSettingsHelper::ShouldShowBanner( |
| 685 web_contents(), url, kTestPackageName, reference_time)); |
667 | 686 |
668 // Show the site more recently. Now it should not be shown. | 687 // Show the site more recently. Now it should not be shown. |
669 AppBannerSettingsHelper::RecordBannerEvent( | 688 AppBannerSettingsHelper::RecordBannerEvent( |
670 web_contents(), url, kTestPackageName, | 689 web_contents(), url, kTestPackageName, |
671 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, three_weeks_ago); | 690 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, three_weeks_ago); |
672 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 691 EXPECT_EQ(PREVIOUSLY_IGNORED, |
673 web_contents(), url, kTestPackageName, reference_time)); | 692 AppBannerSettingsHelper::ShouldShowBanner( |
| 693 web_contents(), url, kTestPackageName, reference_time)); |
674 } | 694 } |
675 | 695 |
676 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) { | 696 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) { |
677 GURL url(kTestURL); | 697 GURL url(kTestURL); |
678 NavigateAndCommit(url); | 698 NavigateAndCommit(url); |
679 | 699 |
680 base::Time reference_time = GetReferenceTime(); | 700 base::Time reference_time = GetReferenceTime(); |
681 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 701 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
682 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 702 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
683 | 703 |
684 // By default the banner should not be shown. | 704 // By default the banner should not be shown. |
685 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 705 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
686 web_contents(), url, kTestPackageName, reference_time)); | 706 AppBannerSettingsHelper::ShouldShowBanner( |
| 707 web_contents(), url, kTestPackageName, reference_time)); |
687 | 708 |
688 // Record events such that the banner should show. | 709 // Record events such that the banner should show. |
689 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 710 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
690 web_contents(), url, kTestPackageName, one_day_ago, | 711 web_contents(), url, kTestPackageName, one_day_ago, |
691 ui::PAGE_TRANSITION_TYPED); | 712 ui::PAGE_TRANSITION_TYPED); |
692 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 713 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
693 web_contents(), url, kTestPackageName, reference_time, | 714 web_contents(), url, kTestPackageName, reference_time, |
694 ui::PAGE_TRANSITION_TYPED); | 715 ui::PAGE_TRANSITION_TYPED); |
695 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 716 EXPECT_EQ(NO_ERROR_DETECTED, |
696 web_contents(), url, kTestPackageName, reference_time)); | 717 AppBannerSettingsHelper::ShouldShowBanner( |
| 718 web_contents(), url, kTestPackageName, reference_time)); |
697 | 719 |
698 // Add the site a long time ago. It should not be shown. | 720 // Add the site a long time ago. It should not be shown. |
699 AppBannerSettingsHelper::RecordBannerEvent( | 721 AppBannerSettingsHelper::RecordBannerEvent( |
700 web_contents(), url, kTestPackageName, | 722 web_contents(), url, kTestPackageName, |
701 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN, | 723 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_ADD_TO_HOMESCREEN, |
702 one_year_ago); | 724 one_year_ago); |
703 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 725 EXPECT_EQ(ALREADY_INSTALLED, |
704 web_contents(), url, kTestPackageName, reference_time)); | 726 AppBannerSettingsHelper::ShouldShowBanner( |
| 727 web_contents(), url, kTestPackageName, reference_time)); |
705 } | 728 } |
706 | 729 |
707 TEST_F(AppBannerSettingsHelperTest, OperatesOnOrigins) { | 730 TEST_F(AppBannerSettingsHelperTest, OperatesOnOrigins) { |
708 GURL url(kTestURL); | 731 GURL url(kTestURL); |
709 NavigateAndCommit(url); | 732 NavigateAndCommit(url); |
710 | 733 |
711 base::Time reference_time = GetReferenceTime(); | 734 base::Time reference_time = GetReferenceTime(); |
712 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 735 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
713 | 736 |
714 // By default the banner should not be shown. | 737 // By default the banner should not be shown. |
715 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 738 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
716 web_contents(), url, kTestPackageName, reference_time)); | 739 AppBannerSettingsHelper::ShouldShowBanner( |
| 740 web_contents(), url, kTestPackageName, reference_time)); |
717 | 741 |
718 // Record events such that the banner should show. | 742 // Record events such that the banner should show. |
719 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 743 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
720 web_contents(), url, kTestPackageName, one_day_ago, | 744 web_contents(), url, kTestPackageName, one_day_ago, |
721 ui::PAGE_TRANSITION_TYPED); | 745 ui::PAGE_TRANSITION_TYPED); |
722 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 746 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
723 web_contents(), url, kTestPackageName, reference_time, | 747 web_contents(), url, kTestPackageName, reference_time, |
724 ui::PAGE_TRANSITION_TYPED); | 748 ui::PAGE_TRANSITION_TYPED); |
725 | 749 |
726 // Navigate to another page on the same origin. | 750 // Navigate to another page on the same origin. |
727 url = GURL(kSameOriginTestURL); | 751 url = GURL(kSameOriginTestURL); |
728 NavigateAndCommit(url); | 752 NavigateAndCommit(url); |
729 | 753 |
730 // The banner should show as settings are per-origin. | 754 // The banner should show as settings are per-origin. |
731 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 755 EXPECT_EQ(NO_ERROR_DETECTED, |
732 web_contents(), url, kTestPackageName, reference_time)); | 756 AppBannerSettingsHelper::ShouldShowBanner( |
| 757 web_contents(), url, kTestPackageName, reference_time)); |
733 } | 758 } |
734 | 759 |
735 TEST_F(AppBannerSettingsHelperTest, ShouldShowWithHigherTotal) { | 760 TEST_F(AppBannerSettingsHelperTest, ShouldShowWithHigherTotal) { |
736 AppBannerSettingsHelper::SetTotalEngagementToTrigger(5); | 761 AppBannerSettingsHelper::SetTotalEngagementToTrigger(5); |
737 GURL url(kTestURL); | 762 GURL url(kTestURL); |
738 NavigateAndCommit(url); | 763 NavigateAndCommit(url); |
739 | 764 |
740 base::Time reference_time = GetReferenceTime(); | 765 base::Time reference_time = GetReferenceTime(); |
741 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); | 766 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); |
742 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); | 767 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); |
743 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); | 768 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); |
744 base::Time fifth_day = reference_time + base::TimeDelta::FromDays(4); | 769 base::Time fifth_day = reference_time + base::TimeDelta::FromDays(4); |
745 | 770 |
746 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 771 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
747 web_contents(), url, kTestPackageName, reference_time)); | 772 AppBannerSettingsHelper::ShouldShowBanner( |
| 773 web_contents(), url, kTestPackageName, reference_time)); |
748 | 774 |
749 // It should take five visits to trigger the banner. | 775 // It should take five visits to trigger the banner. |
750 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 776 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
751 web_contents(), url, kTestPackageName, reference_time, | 777 web_contents(), url, kTestPackageName, reference_time, |
752 ui::PAGE_TRANSITION_LINK); | 778 ui::PAGE_TRANSITION_LINK); |
753 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 779 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
754 web_contents(), url, kTestPackageName, reference_time)); | 780 AppBannerSettingsHelper::ShouldShowBanner( |
| 781 web_contents(), url, kTestPackageName, reference_time)); |
755 | 782 |
756 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 783 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
757 web_contents(), url, kTestPackageName, second_day, | 784 web_contents(), url, kTestPackageName, second_day, |
758 ui::PAGE_TRANSITION_TYPED); | 785 ui::PAGE_TRANSITION_TYPED); |
759 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 786 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
760 web_contents(), url, kTestPackageName, second_day)); | 787 AppBannerSettingsHelper::ShouldShowBanner( |
| 788 web_contents(), url, kTestPackageName, reference_time)); |
761 | 789 |
762 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 790 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
763 web_contents(), url, kTestPackageName, third_day, | 791 web_contents(), url, kTestPackageName, third_day, |
764 ui::PAGE_TRANSITION_GENERATED); | 792 ui::PAGE_TRANSITION_GENERATED); |
765 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 793 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
766 web_contents(), url, kTestPackageName, third_day)); | 794 AppBannerSettingsHelper::ShouldShowBanner( |
| 795 web_contents(), url, kTestPackageName, reference_time)); |
767 | 796 |
768 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 797 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
769 web_contents(), url, kTestPackageName, fourth_day, | 798 web_contents(), url, kTestPackageName, fourth_day, |
770 ui::PAGE_TRANSITION_LINK); | 799 ui::PAGE_TRANSITION_LINK); |
771 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 800 EXPECT_EQ(INSUFFICIENT_ENGAGEMENT, |
772 web_contents(), url, kTestPackageName, fourth_day)); | 801 AppBannerSettingsHelper::ShouldShowBanner( |
| 802 web_contents(), url, kTestPackageName, reference_time)); |
773 | 803 |
774 // Visit the site again; now it should be shown. | 804 // Visit the site again; now it should be shown. |
775 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 805 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
776 web_contents(), url, kTestPackageName, fifth_day, | 806 web_contents(), url, kTestPackageName, fifth_day, |
777 ui::PAGE_TRANSITION_TYPED); | 807 ui::PAGE_TRANSITION_TYPED); |
778 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 808 EXPECT_EQ(NO_ERROR_DETECTED, |
779 web_contents(), url, kTestPackageName, fifth_day)); | 809 AppBannerSettingsHelper::ShouldShowBanner( |
| 810 web_contents(), url, kTestPackageName, reference_time)); |
780 } | 811 } |
781 | 812 |
782 TEST_F(AppBannerSettingsHelperTest, WasLaunchedRecently) { | 813 TEST_F(AppBannerSettingsHelperTest, WasLaunchedRecently) { |
783 GURL url(kTestURL); | 814 GURL url(kTestURL); |
784 GURL url_same_origin(kSameOriginTestURL); | 815 GURL url_same_origin(kSameOriginTestURL); |
785 GURL url2(kDifferentOriginTestURL); | 816 GURL url2(kDifferentOriginTestURL); |
786 NavigateAndCommit(url); | 817 NavigateAndCommit(url); |
787 | 818 |
788 base::Time reference_time = GetReferenceTime(); | 819 base::Time reference_time = GetReferenceTime(); |
789 base::Time first_day = reference_time + base::TimeDelta::FromDays(1); | 820 base::Time first_day = reference_time + base::TimeDelta::FromDays(1); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
841 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, | 872 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, |
842 first_day)); | 873 first_day)); |
843 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, | 874 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, |
844 ninth_day)); | 875 ninth_day)); |
845 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, | 876 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, |
846 tenth_day)); | 877 tenth_day)); |
847 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, | 878 EXPECT_TRUE(AppBannerSettingsHelper::WasLaunchedRecently(web_contents(), url, |
848 eleventh_day)); | 879 eleventh_day)); |
849 | 880 |
850 } | 881 } |
OLD | NEW |