| Index: chrome/browser/banners/app_banner_settings_helper_unittest.cc
|
| diff --git a/chrome/browser/banners/app_banner_settings_helper_unittest.cc b/chrome/browser/banners/app_banner_settings_helper_unittest.cc
|
| index 73853d7ca7b1b9bf803477d24c0c7bb8e1bb566b..82550f15b6700a5acae9ad0e4de4880c14904c90 100644
|
| --- a/chrome/browser/banners/app_banner_settings_helper_unittest.cc
|
| +++ b/chrome/browser/banners/app_banner_settings_helper_unittest.cc
|
| @@ -42,8 +42,170 @@ class AppBannerSettingsHelperTest : public ChromeRenderViewHostTestHarness {};
|
|
|
| } // namespace
|
|
|
| +TEST_F(AppBannerSettingsHelperTest, BucketTimeToResolutionInvalid) {
|
| + base::Time reference_time = GetReferenceTime();
|
| +
|
| + // Test null, 1 day, and greater than 1 day cases.
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 0),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1440),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 2880),
|
| + reference_time.LocalMidnight());
|
| +
|
| + // Test number of minutes in 1 day + 1.
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1441),
|
| + reference_time.LocalMidnight());
|
| +
|
| + // Test minutes which are not divisible by 1440 (minutes in a day).
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 7),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 13),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 21),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 35),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 42),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 50),
|
| + reference_time.LocalMidnight());
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 59),
|
| + reference_time.LocalMidnight());
|
| +}
|
| +
|
| +TEST_F(AppBannerSettingsHelperTest, BucketTimeToResolutionValid) {
|
| + // 11:00
|
| + base::Time reference_time = GetReferenceTime();
|
| + // 13:44
|
| + base::Time same_day_later =
|
| + reference_time + base::TimeDelta::FromMinutes(164);
|
| + // 10:18
|
| + base::Time same_day_earlier =
|
| + reference_time - base::TimeDelta::FromMinutes(42);
|
| + base::Time midnight = reference_time.LocalMidnight();
|
| + base::Time bucketed_hour = midnight + base::TimeDelta::FromHours(11);
|
| + base::Time bucketed_hour_later = midnight + base::TimeDelta::FromHours(13);
|
| + base::Time bucketed_hour_earlier = midnight + base::TimeDelta::FromHours(10);
|
| +
|
| + // Resolution of 1 minute: 11:00, 13:44, 10:18.
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1),
|
| + bucketed_hour);
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 1),
|
| + bucketed_hour_later + base::TimeDelta::FromMinutes(44));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 1),
|
| + bucketed_hour_earlier + base::TimeDelta::FromMinutes(18));
|
| +
|
| + // Resolution of 3 minutes: 11:00, 13:43, 10:18.
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 3),
|
| + bucketed_hour);
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 3),
|
| + bucketed_hour_later + base::TimeDelta::FromMinutes(42));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 3),
|
| + bucketed_hour_earlier + base::TimeDelta::FromMinutes(18));
|
| +
|
| + // Resolution of 10 minutes: 11:00, 13:40, 10:10.
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 10),
|
| + bucketed_hour);
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 10),
|
| + bucketed_hour_later + base::TimeDelta::FromMinutes(40));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 10),
|
| + bucketed_hour_earlier + base::TimeDelta::FromMinutes(10));
|
| +
|
| + // Resolution of 20 minutes: 11:00, 13:40, 10:00.
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 20),
|
| + bucketed_hour);
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 20),
|
| + bucketed_hour_later + base::TimeDelta::FromMinutes(40));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 20),
|
| + bucketed_hour_earlier);
|
| +
|
| + // Resolution of 60 minutes: 11:00, 13:00, 10:00.
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 60),
|
| + bucketed_hour);
|
| + EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 60),
|
| + bucketed_hour_later);
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 60),
|
| + bucketed_hour_earlier);
|
| +
|
| + // Resolution of 120 minutes: 10:00, 12:00, 10:00.
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 120),
|
| + bucketed_hour_earlier);
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 120),
|
| + bucketed_hour_later - base::TimeDelta::FromHours(1));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 120),
|
| + bucketed_hour_earlier);
|
| +
|
| + // Resolution of 180 minutes: 9:00, 12:00, 9:00.
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 180),
|
| + bucketed_hour_earlier - base::TimeDelta::FromHours(1));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 180),
|
| + bucketed_hour_later - base::TimeDelta::FromHours(1));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 180),
|
| + bucketed_hour_earlier - base::TimeDelta::FromHours(1));
|
| +
|
| + // Resolution of 240 minutes: 8:00, 12:00, 8:00.
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 240),
|
| + midnight + base::TimeDelta::FromHours(8));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 240),
|
| + midnight + base::TimeDelta::FromHours(12));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 240),
|
| + midnight + base::TimeDelta::FromHours(8));
|
| +
|
| + // Resolution of 360 minutes: 6:00, 12:00, 6:00
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 360),
|
| + midnight + base::TimeDelta::FromHours(6));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 360),
|
| + midnight + base::TimeDelta::FromHours(12));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 360),
|
| + midnight + base::TimeDelta::FromHours(6));
|
| +
|
| + // Resolution of 720 minutes: 0:00, 12:00, 0:00
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 720),
|
| + midnight);
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 720),
|
| + midnight + base::TimeDelta::FromHours(12));
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 720),
|
| + midnight);
|
| +
|
| + // Resolution of 1440 minutes: 0:00, 0:00, 0:00
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1440),
|
| + midnight);
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 1440),
|
| + midnight);
|
| + EXPECT_EQ(
|
| + AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 1440),
|
| + midnight);
|
| +}
|
| +
|
| TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) {
|
| AppBannerSettingsHelper::SetEngagementWeights(1, 1);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440);
|
| GURL url(kTestURL);
|
| NavigateAndCommit(url);
|
|
|
| @@ -76,7 +238,7 @@ TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) {
|
| web_contents(), url, kTestPackageName, three_days_prior,
|
| ui::PAGE_TRANSITION_GENERATED);
|
|
|
| - // Now there should be two days.
|
| + // Now there should be two events.
|
| events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| web_contents(), url, kTestPackageName);
|
| EXPECT_EQ(2u, events.size());
|
| @@ -90,7 +252,7 @@ TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) {
|
| web_contents(), url, kTestPackageName, reference_time,
|
| ui::PAGE_TRANSITION_LINK);
|
|
|
| - // Now there should still be two days, but the first date should have been
|
| + // Now there should still be two events, but the first date should have been
|
| // removed.
|
| events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| web_contents(), url, kTestPackageName);
|
| @@ -100,12 +262,12 @@ TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) {
|
| EXPECT_EQ(events[0].engagement, 1);
|
| EXPECT_EQ(events[1].engagement, 1);
|
|
|
| - // Now add the the other day on the reference date.
|
| + // Now add the the other date on the reference day.
|
| AppBannerSettingsHelper::RecordBannerCouldShowEvent(
|
| web_contents(), url, kTestPackageName, same_day,
|
| ui::PAGE_TRANSITION_RELOAD);
|
|
|
| - // Now there should still be the same two days.
|
| + // Now there should still be the same two dates.
|
| events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| web_contents(), url, kTestPackageName);
|
| EXPECT_EQ(2u, events.size());
|
| @@ -115,8 +277,102 @@ TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) {
|
| EXPECT_EQ(events[1].engagement, 1);
|
| }
|
|
|
| +TEST_F(AppBannerSettingsHelperTest, CouldShowEventsDifferentResolution) {
|
| + AppBannerSettingsHelper::SetEngagementWeights(1, 1);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(20);
|
| + GURL url(kTestURL);
|
| + NavigateAndCommit(url);
|
| +
|
| + // Check that by default, there are no events recorded.
|
| + std::vector<AppBannerSettingsHelper::BannerEvent> events =
|
| + AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url,
|
| + kTestPackageName);
|
| + EXPECT_TRUE(events.empty());
|
| +
|
| + base::Time reference_time = GetReferenceTime();
|
| + base::Time same_day_ignored_i =
|
| + reference_time + base::TimeDelta::FromMinutes(10);
|
| + base::Time same_day_counted_i =
|
| + reference_time + base::TimeDelta::FromMinutes(20);
|
| + base::Time same_day_counted_ii =
|
| + reference_time + base::TimeDelta::FromMinutes(45);
|
| + base::Time same_day_ignored_ii =
|
| + reference_time + base::TimeDelta::FromMinutes(59);
|
| +
|
| + // Add the reference date.
|
| + AppBannerSettingsHelper::RecordBannerCouldShowEvent(
|
| + web_contents(), url, kTestPackageName, reference_time,
|
| + ui::PAGE_TRANSITION_LINK);
|
| +
|
| + // There should be one event recorded
|
| + events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| + web_contents(), url, kTestPackageName);
|
| + EXPECT_EQ(1u, events.size());
|
| + EXPECT_TRUE(IsWithinDay(events[0].time, reference_time));
|
| + EXPECT_EQ(events[0].engagement, 1);
|
| +
|
| + // Now add the the ignored date on the reference day.
|
| + AppBannerSettingsHelper::RecordBannerCouldShowEvent(
|
| + web_contents(), url, kTestPackageName, same_day_ignored_i,
|
| + ui::PAGE_TRANSITION_RELOAD);
|
| +
|
| + // Now there should still one event.
|
| + events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| + web_contents(), url, kTestPackageName);
|
| + EXPECT_EQ(1u, events.size());
|
| + EXPECT_TRUE(IsWithinDay(events[0].time, reference_time));
|
| + EXPECT_EQ(events[0].engagement, 1);
|
| +
|
| + // Now add the the first counted date on the reference day.
|
| + AppBannerSettingsHelper::RecordBannerCouldShowEvent(
|
| + web_contents(), url, kTestPackageName, same_day_counted_i,
|
| + ui::PAGE_TRANSITION_TYPED);
|
| +
|
| + // Now there should be two events.
|
| + events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| + web_contents(), url, kTestPackageName);
|
| + EXPECT_EQ(2u, events.size());
|
| + EXPECT_TRUE(IsWithinDay(events[0].time, reference_time));
|
| + EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i));
|
| + EXPECT_EQ(events[0].engagement, 1);
|
| + EXPECT_EQ(events[1].engagement, 1);
|
| +
|
| + // Now add the the second counted date on the reference day.
|
| + AppBannerSettingsHelper::RecordBannerCouldShowEvent(
|
| + web_contents(), url, kTestPackageName, same_day_counted_ii,
|
| + ui::PAGE_TRANSITION_GENERATED);
|
| +
|
| + // Now there should be three events.
|
| + events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| + web_contents(), url, kTestPackageName);
|
| + EXPECT_EQ(3u, events.size());
|
| + EXPECT_TRUE(IsWithinDay(events[0].time, reference_time));
|
| + EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i));
|
| + EXPECT_TRUE(IsWithinDay(events[2].time, same_day_counted_ii));
|
| + EXPECT_EQ(events[0].engagement, 1);
|
| + EXPECT_EQ(events[1].engagement, 1);
|
| + EXPECT_EQ(events[2].engagement, 1);
|
| +
|
| + // Now add the the second ignored date on the reference day.
|
| + AppBannerSettingsHelper::RecordBannerCouldShowEvent(
|
| + web_contents(), url, kTestPackageName, same_day_ignored_ii,
|
| + ui::PAGE_TRANSITION_LINK);
|
| +
|
| + // Now there should still be three events.
|
| + events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
|
| + web_contents(), url, kTestPackageName);
|
| + EXPECT_EQ(3u, events.size());
|
| + EXPECT_TRUE(IsWithinDay(events[0].time, reference_time));
|
| + EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i));
|
| + EXPECT_TRUE(IsWithinDay(events[2].time, same_day_counted_ii));
|
| + EXPECT_EQ(events[0].engagement, 1);
|
| + EXPECT_EQ(events[1].engagement, 1);
|
| + EXPECT_EQ(events[2].engagement, 1);
|
| +}
|
| +
|
| TEST_F(AppBannerSettingsHelperTest, SingleEvents) {
|
| AppBannerSettingsHelper::SetEngagementWeights(1, 1);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440);
|
| GURL url(kTestURL);
|
| NavigateAndCommit(url);
|
|
|
| @@ -239,6 +495,7 @@ TEST_F(AppBannerSettingsHelperTest, CouldShowEventReplacedWithHigherWeight) {
|
|
|
| TEST_F(AppBannerSettingsHelperTest, IndirectEngagementWithLowerWeight) {
|
| AppBannerSettingsHelper::SetEngagementWeights(2, 0.5);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440);
|
| GURL url(kTestURL);
|
| NavigateAndCommit(url);
|
|
|
| @@ -300,6 +557,7 @@ TEST_F(AppBannerSettingsHelperTest, DirectEngagementWithHigherWeight) {
|
|
|
| TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) {
|
| AppBannerSettingsHelper::SetEngagementWeights(1, 1);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440);
|
| GURL url(kTestURL);
|
| NavigateAndCommit(url);
|
|
|
| @@ -374,6 +632,7 @@ TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterBlocking) {
|
|
|
| TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) {
|
| AppBannerSettingsHelper::SetEngagementWeights(1, 1);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440);
|
| GURL url(kTestURL);
|
| NavigateAndCommit(url);
|
|
|
| @@ -413,6 +672,7 @@ TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) {
|
|
|
| TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) {
|
| AppBannerSettingsHelper::SetEngagementWeights(1, 1);
|
| + AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440);
|
| GURL url(kTestURL);
|
| NavigateAndCommit(url);
|
|
|
|
|