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

Unified Diff: chrome/browser/banners/app_banner_settings_helper_unittest.cc

Issue 2553013004: Remove the app banner navigation heuristic. (Closed)
Patch Set: Rebase Created 4 years 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 side-by-side diff with in-line comments
Download patch
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 d7abe63fab64004687cbaf166246690ace847433..a4035e9653ac5d8d8ee8f5434f7a07ea00dd4c4c 100644
--- a/chrome/browser/banners/app_banner_settings_helper_unittest.cc
+++ b/chrome/browser/banners/app_banner_settings_helper_unittest.cc
@@ -2,17 +2,12 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <vector>
-
-#include "base/command_line.h"
#include "chrome/browser/banners/app_banner_metrics.h"
#include "chrome/browser/banners/app_banner_settings_helper.h"
#include "chrome/browser/engagement/site_engagement_service.h"
#include "chrome/browser/installable/installable_logging.h"
-#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_profile.h"
-#include "ui/base/page_transition_types.h"
namespace {
@@ -38,16 +33,6 @@ base::Time GetReferenceTime() {
return out_time;
}
-bool IsWithinDay(base::Time time1, base::Time time2) {
- return time1 - time2 < base::TimeDelta::FromDays(1) ||
- time2 - time1 < base::TimeDelta::FromDays(1);
-}
-
-bool IsWithinHour(base::Time time1, base::Time time2) {
- return time1 - time2 < base::TimeDelta::FromHours(1) ||
- time2 - time1 < base::TimeDelta::FromHours(1);
-}
-
class AppBannerSettingsHelperTest : public ChromeRenderViewHostTestHarness {
void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp();
@@ -57,338 +42,13 @@ 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) {
- 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 = reference_time + base::TimeDelta::FromHours(2);
- base::Time three_days_prior = reference_time - base::TimeDelta::FromDays(3);
- base::Time previous_fortnight =
- reference_time - base::TimeDelta::FromDays(14);
-
- // Test adding the first date.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, previous_fortnight,
- ui::PAGE_TRANSITION_TYPED);
-
- // It should be the only date recorded.
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
- EXPECT_EQ(1u, events.size());
- EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight));
- EXPECT_EQ(events[0].engagement, 1);
-
- // Now add the next date.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, three_days_prior,
- ui::PAGE_TRANSITION_GENERATED);
-
- // Now there should be two events.
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
- EXPECT_EQ(2u, events.size());
- EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight));
- EXPECT_TRUE(IsWithinDay(events[1].time, three_days_prior));
- EXPECT_EQ(events[0].engagement, 1);
- EXPECT_EQ(events[1].engagement, 1);
-
- // Now add the reference date.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_LINK);
-
- // Now there should still be two events, but the first date should have been
- // removed.
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
- EXPECT_EQ(2u, events.size());
- EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior));
- EXPECT_TRUE(IsWithinDay(events[1].time, reference_time));
- EXPECT_EQ(events[0].engagement, 1);
- EXPECT_EQ(events[1].engagement, 1);
-
- // 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 dates.
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
- EXPECT_EQ(2u, events.size());
- EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior));
- EXPECT_TRUE(IsWithinDay(events[1].time, reference_time));
- EXPECT_EQ(events[0].engagement, 1);
- EXPECT_EQ(events[1].engagement, 1);
-}
-
-TEST_F(AppBannerSettingsHelperTest, CouldShowEventsDifferentResolution) {
- 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) {
GURL url(kTestURL);
NavigateAndCommit(url);
base::Time reference_time = GetReferenceTime();
base::Time other_time = reference_time - base::TimeDelta::FromDays(3);
- for (int event = AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW;
+ for (int event = AppBannerSettingsHelper::APP_BANNER_EVENT_COULD_SHOW;
event < AppBannerSettingsHelper::APP_BANNER_EVENT_NUM_EVENTS; ++event) {
// Check that by default, there is no event.
base::Time event_time = AppBannerSettingsHelper::GetSingleBannerEvent(
@@ -414,222 +74,51 @@ TEST_F(AppBannerSettingsHelperTest, SingleEvents) {
event_time = AppBannerSettingsHelper::GetSingleBannerEvent(
web_contents(), url, kTestPackageName,
AppBannerSettingsHelper::AppBannerEvent(event));
- EXPECT_EQ(other_time, event_time);
- }
-}
-
-TEST_F(AppBannerSettingsHelperTest, CouldShowEventReplacedWithHigherWeight) {
- // Set direct engagement to be worth 4 and indirect to be worth 2.
- AppBannerSettingsHelper::SetEngagementWeights(4, 2);
- GURL url(kTestURL);
- NavigateAndCommit(url);
-
- base::Time reference_time = GetReferenceTime();
- base::Time later_same_day = reference_time + base::TimeDelta::FromHours(2);
- base::Time later_again_same_day =
- reference_time + base::TimeDelta::FromHours(6);
- base::Time next_day = reference_time + base::TimeDelta::FromDays(1);
- base::Time later_next_day = next_day + base::TimeDelta::FromHours(3);
-
- // Ensure there are no events recorded by default.
- std::vector<AppBannerSettingsHelper::BannerEvent> events =
- AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url,
- kTestPackageName);
- EXPECT_TRUE(events.empty());
-
- // Record an indirect engagement type.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_LINK);
-
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
-
- EXPECT_EQ(1u, events.size());
- EXPECT_TRUE(IsWithinHour(events[0].time, reference_time));
- EXPECT_EQ(2, events[0].engagement);
-
- // Record a direct engagement type. This should override the previous value.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, later_same_day,
- ui::PAGE_TRANSITION_TYPED);
-
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
-
- EXPECT_EQ(1u, events.size());
- EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day));
- EXPECT_EQ(4, events[0].engagement);
-
- // Record an indirect engagement type. This should be ignored.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, later_again_same_day,
- ui::PAGE_TRANSITION_RELOAD);
-
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
-
- EXPECT_EQ(1u, events.size());
- EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day));
- EXPECT_EQ(4, events[0].engagement);
-
- // Record an indirect engagement type one day later. This should appear.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, next_day,
- ui::PAGE_TRANSITION_AUTO_BOOKMARK);
-
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
-
- EXPECT_EQ(2u, events.size());
- EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day));
- EXPECT_EQ(4, events[0].engagement);
- EXPECT_TRUE(IsWithinHour(events[1].time, next_day));
- EXPECT_EQ(2, events[1].engagement);
-
- // Record a direct engagement type later on the next day. This should override
- // the previous value.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, later_next_day,
- ui::PAGE_TRANSITION_GENERATED);
-
- events = AppBannerSettingsHelper::GetCouldShowBannerEvents(
- web_contents(), url, kTestPackageName);
-
- EXPECT_EQ(2u, events.size());
- EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day));
- EXPECT_EQ(4, events[0].engagement);
- EXPECT_TRUE(IsWithinHour(events[1].time, later_next_day));
- EXPECT_EQ(4, events[1].engagement);
-}
-
-TEST_F(AppBannerSettingsHelperTest, IndirectEngagementWithLowerWeight) {
- AppBannerSettingsHelper::SetEngagementWeights(2, 0.5);
- GURL url(kTestURL);
- NavigateAndCommit(url);
-
- base::Time reference_time = GetReferenceTime();
- base::Time second_day = reference_time + base::TimeDelta::FromDays(1);
- base::Time third_day = reference_time + base::TimeDelta::FromDays(2);
- base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3);
-
- // By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
-
- // It should take four indirect visits with a weight of 0.5 to trigger the
- // banner.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_LINK);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
-
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, second_day,
- ui::PAGE_TRANSITION_LINK);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, second_day));
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, third_day,
- ui::PAGE_TRANSITION_FORM_SUBMIT);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, third_day));
-
- // Visit the site again; now it should be shown.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, fourth_day,
- ui::PAGE_TRANSITION_MANUAL_SUBFRAME);
- EXPECT_EQ(NO_ERROR_DETECTED,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, fourth_day));
-}
-
-TEST_F(AppBannerSettingsHelperTest, DirectEngagementWithHigherWeight) {
- AppBannerSettingsHelper::SetEngagementWeights(2, 0.5);
- GURL url(kTestURL);
- NavigateAndCommit(url);
-
- base::Time reference_time = GetReferenceTime();
-
- // By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
-
- // It should take one direct visit with a weight of 2 to trigger the banner.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_TYPED);
- EXPECT_EQ(NO_ERROR_DETECTED,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ // COULD_SHOW events are not overwritten, but other events are.
+ if (event == AppBannerSettingsHelper::APP_BANNER_EVENT_COULD_SHOW)
+ EXPECT_EQ(reference_time, event_time);
+ else
+ EXPECT_EQ(other_time, event_time);
+ }
}
TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) {
GURL url(kTestURL);
- NavigateAndCommit(url);
-
- base::Time reference_time = GetReferenceTime();
- base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1);
- base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366);
+ SiteEngagementService* service = SiteEngagementService::Get(profile());
// By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
-
- // Visit the site once, it still should not be shown.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, one_year_ago,
- ui::PAGE_TRANSITION_TYPED);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Visit the site again after a long delay, it still should not be shown.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, one_day_ago,
- ui::PAGE_TRANSITION_TYPED);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ // Add 1 engagement, it still should not be shown.
+ service->ResetScoreForURL(url, 1);
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Visit the site again; now it should be shown.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_TYPED);
- EXPECT_EQ(NO_ERROR_DETECTED,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ // Add 1 more engagement; now it should be shown.
+ service->ResetScoreForURL(url, 2);
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
}
TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterBlocking) {
GURL url(kTestURL);
NavigateAndCommit(url);
+ SiteEngagementService* service = SiteEngagementService::Get(profile());
base::Time reference_time = GetReferenceTime();
- base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1);
base::Time two_months_ago = reference_time - base::TimeDelta::FromDays(60);
base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366);
// By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Record events such that the banner should show.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, one_day_ago,
- ui::PAGE_TRANSITION_TYPED);
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_TYPED);
+ // Add engagement such that the banner should show.
+ service->ResetScoreForURL(url, 4);
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
EXPECT_EQ(NO_ERROR_DETECTED,
AppBannerSettingsHelper::ShouldShowBanner(
web_contents(), url, kTestPackageName, reference_time));
@@ -661,24 +150,20 @@ TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterBlocking) {
TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) {
GURL url(kTestURL);
NavigateAndCommit(url);
+ SiteEngagementService* service = SiteEngagementService::Get(profile());
base::Time reference_time = GetReferenceTime();
- base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1);
base::Time one_week_ago = reference_time - base::TimeDelta::FromDays(7);
base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366);
// By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Record events such that the banner should show.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, one_day_ago,
- ui::PAGE_TRANSITION_TYPED);
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_TYPED);
+ // Add engagement such that the banner should show.
+ service->ResetScoreForURL(url, 4);
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
EXPECT_EQ(NO_ERROR_DETECTED,
AppBannerSettingsHelper::ShouldShowBanner(
web_contents(), url, kTestPackageName, reference_time));
@@ -709,24 +194,19 @@ TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) {
TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) {
GURL url(kTestURL);
- NavigateAndCommit(url);
+ SiteEngagementService* service = SiteEngagementService::Get(profile());
base::Time reference_time = GetReferenceTime();
- base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1);
base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366);
// By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Record events such that the banner should show.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, one_day_ago,
- ui::PAGE_TRANSITION_TYPED);
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_TYPED);
+ // Add engagement such that the banner should show.
+ service->ResetScoreForURL(url, 4);
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
EXPECT_EQ(NO_ERROR_DETECTED,
AppBannerSettingsHelper::ShouldShowBanner(
web_contents(), url, kTestPackageName, reference_time));
@@ -743,85 +223,61 @@ TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) {
TEST_F(AppBannerSettingsHelperTest, OperatesOnOrigins) {
GURL url(kTestURL);
- NavigateAndCommit(url);
-
- base::Time reference_time = GetReferenceTime();
- base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1);
+ SiteEngagementService* service = SiteEngagementService::Get(profile());
// By default the banner should not be shown.
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Record events such that the banner should show.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, one_day_ago,
- ui::PAGE_TRANSITION_TYPED);
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_TYPED);
+ // Add engagement such that the banner should show.
+ service->ResetScoreForURL(url, 4);
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Navigate to another page on the same origin.
+ // Try another page on the same origin.
url = GURL(kSameOriginTestURL);
- NavigateAndCommit(url);
// The banner should show as settings are per-origin.
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
EXPECT_EQ(NO_ERROR_DETECTED,
AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ web_contents(), url, kTestPackageName, GetReferenceTime()));
}
TEST_F(AppBannerSettingsHelperTest, ShouldShowWithHigherTotal) {
- AppBannerSettingsHelper::SetTotalEngagementToTrigger(5);
+ AppBannerSettingsHelper::SetTotalEngagementToTrigger(10);
GURL url(kTestURL);
- NavigateAndCommit(url);
+ SiteEngagementService* service = SiteEngagementService::Get(profile());
- base::Time reference_time = GetReferenceTime();
- base::Time second_day = reference_time + base::TimeDelta::FromDays(1);
- base::Time third_day = reference_time + base::TimeDelta::FromDays(2);
- base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3);
- base::Time fifth_day = reference_time + base::TimeDelta::FromDays(4);
+ // By default the banner should not be shown.
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ // Add engagement such that the banner should show.
+ service->ResetScoreForURL(url, 2);
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // It should take five visits to trigger the banner.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, reference_time,
- ui::PAGE_TRANSITION_LINK);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ service->ResetScoreForURL(url, 4);
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, second_day,
- ui::PAGE_TRANSITION_TYPED);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ service->ResetScoreForURL(url, 6);
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, third_day,
- ui::PAGE_TRANSITION_GENERATED);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ service->ResetScoreForURL(url, 8);
+ EXPECT_FALSE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, fourth_day,
- ui::PAGE_TRANSITION_LINK);
- EXPECT_EQ(INSUFFICIENT_ENGAGEMENT,
- AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ service->ResetScoreForURL(url, 10);
+ EXPECT_TRUE(
+ AppBannerSettingsHelper::HasSufficientEngagement(service->GetScore(url)));
- // Visit the site again; now it should be shown.
- AppBannerSettingsHelper::RecordBannerCouldShowEvent(
- web_contents(), url, kTestPackageName, fifth_day,
- ui::PAGE_TRANSITION_TYPED);
EXPECT_EQ(NO_ERROR_DETECTED,
AppBannerSettingsHelper::ShouldShowBanner(
- web_contents(), url, kTestPackageName, reference_time));
+ web_contents(), url, kTestPackageName, GetReferenceTime()));
}
TEST_F(AppBannerSettingsHelperTest, WasLaunchedRecently) {

Powered by Google App Engine
This is Rietveld 408576698