Index: chrome/browser/engagement/site_engagement_service_unittest.cc |
diff --git a/chrome/browser/engagement/site_engagement_service_unittest.cc b/chrome/browser/engagement/site_engagement_service_unittest.cc |
index 95c77a3c4986313a91977e8b00e3d7005526ae4e..3be0a1d37ecb8ca4c2441eb227451f316b8ad0b0 100644 |
--- a/chrome/browser/engagement/site_engagement_service_unittest.cc |
+++ b/chrome/browser/engagement/site_engagement_service_unittest.cc |
@@ -154,6 +154,15 @@ class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { |
HistoryServiceFactory::GetInstance()->SetTestingFactory( |
profile(), &BuildTestHistoryService); |
SiteEngagementScore::SetParamValuesForTesting(); |
+ clock_ = new base::SimpleTestClock(); |
+ service_ = base::WrapUnique( |
+ new SiteEngagementService(profile(), base::WrapUnique(clock_))); |
+ } |
+ |
+ void TearDown() override { |
+ service_->Shutdown(); |
+ service_.reset(); |
+ ChromeRenderViewHostTestHarness::TearDown(); |
} |
void NavigateWithTransitionAndExpectHigherScore( |
@@ -205,7 +214,7 @@ class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { |
return score; |
} |
- private: |
+ protected: |
void CheckScoreFromSettings(HostContentSettingsMap* settings_map, |
const GURL& url, |
double *score) { |
@@ -213,6 +222,8 @@ class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { |
} |
base::ScopedTempDir temp_dir_; |
+ std::unique_ptr<SiteEngagementService> service_; |
+ base::SimpleTestClock* clock_ = nullptr; // Owned by the service. |
}; |
TEST_F(SiteEngagementServiceTest, GetMedianEngagement) { |
@@ -421,14 +432,10 @@ TEST_F(SiteEngagementServiceTest, RestrictedToHTTPAndHTTPS) { |
} |
TEST_F(SiteEngagementServiceTest, LastShortcutLaunch) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
base::HistogramTester histograms; |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day - base::TimeDelta::FromDays(5)); |
+ clock_->SetNow(current_day - base::TimeDelta::FromDays(5)); |
// The https and http versions of www.google.com should be separate. But |
// different paths on the same origin should be treated the same. |
@@ -436,21 +443,21 @@ TEST_F(SiteEngagementServiceTest, LastShortcutLaunch) { |
GURL url2("http://www.google.com/"); |
GURL url3("http://www.google.com/maps"); |
- EXPECT_EQ(0, service->GetScore(url1)); |
- EXPECT_EQ(0, service->GetScore(url2)); |
- EXPECT_EQ(0, service->GetScore(url3)); |
+ EXPECT_EQ(0, service_->GetScore(url1)); |
+ EXPECT_EQ(0, service_->GetScore(url2)); |
+ EXPECT_EQ(0, service_->GetScore(url3)); |
- service->SetLastShortcutLaunchTime(url2); |
+ service_->SetLastShortcutLaunchTime(url2); |
histograms.ExpectTotalCount( |
SiteEngagementMetrics::kDaysSinceLastShortcutLaunchHistogram, 0); |
histograms.ExpectUniqueSample( |
SiteEngagementMetrics::kEngagementTypeHistogram, |
SiteEngagementMetrics::ENGAGEMENT_WEBAPP_SHORTCUT_LAUNCH, 1); |
- service->AddPoints(url1, 2.0); |
- service->AddPoints(url2, 2.0); |
- clock->SetNow(current_day); |
- service->SetLastShortcutLaunchTime(url2); |
+ service_->AddPoints(url1, 2.0); |
+ service_->AddPoints(url2, 2.0); |
+ clock_->SetNow(current_day); |
+ service_->SetLastShortcutLaunchTime(url2); |
histograms.ExpectTotalCount( |
SiteEngagementMetrics::kDaysSinceLastShortcutLaunchHistogram, 1); |
@@ -463,40 +470,36 @@ TEST_F(SiteEngagementServiceTest, LastShortcutLaunch) { |
SiteEngagementMetrics::kEngagementTypeHistogram, |
SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2); |
- EXPECT_DOUBLE_EQ(2.0, service->GetScore(url1)); |
- EXPECT_DOUBLE_EQ(7.0, service->GetScore(url2)); |
+ EXPECT_DOUBLE_EQ(2.0, service_->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(7.0, service_->GetScore(url2)); |
- clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(1)); |
- EXPECT_DOUBLE_EQ(2.0, service->GetScore(url1)); |
- EXPECT_DOUBLE_EQ(7.0, service->GetScore(url2)); |
+ clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(1)); |
+ EXPECT_DOUBLE_EQ(2.0, service_->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(7.0, service_->GetScore(url2)); |
- clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(7)); |
- EXPECT_DOUBLE_EQ(0.0, service->GetScore(url1)); |
- EXPECT_DOUBLE_EQ(5.0, service->GetScore(url2)); |
+ clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(7)); |
+ EXPECT_DOUBLE_EQ(0.0, service_->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(5.0, service_->GetScore(url2)); |
- service->AddPoints(url1, 1.0); |
- clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(10)); |
- EXPECT_DOUBLE_EQ(1.0, service->GetScore(url1)); |
- EXPECT_DOUBLE_EQ(5.0, service->GetScore(url2)); |
+ service_->AddPoints(url1, 1.0); |
+ clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(10)); |
+ EXPECT_DOUBLE_EQ(1.0, service_->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(5.0, service_->GetScore(url2)); |
- clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(11)); |
- EXPECT_DOUBLE_EQ(1.0, service->GetScore(url1)); |
- EXPECT_DOUBLE_EQ(0.0, service->GetScore(url2)); |
+ clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(11)); |
+ EXPECT_DOUBLE_EQ(1.0, service_->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(0.0, service_->GetScore(url2)); |
} |
TEST_F(SiteEngagementServiceTest, NotificationPermission) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
GURL url1("https://www.google.com/"); |
GURL url2("http://www.google.com/"); |
GURL url3("https://drive.google.com/"); |
- clock->SetNow(GetReferenceTime()); |
+ clock_->SetNow(GetReferenceTime()); |
- EXPECT_EQ(0, service->GetScore(url1)); |
- EXPECT_EQ(0, service->GetScore(url2)); |
- EXPECT_EQ(0, service->GetScore(url3)); |
+ EXPECT_EQ(0, service_->GetScore(url1)); |
+ EXPECT_EQ(0, service_->GetScore(url2)); |
+ EXPECT_EQ(0, service_->GetScore(url3)); |
HostContentSettingsMap* settings_map = |
HostContentSettingsMapFactory::GetForProfile(profile()); |
@@ -513,31 +516,27 @@ TEST_F(SiteEngagementServiceTest, NotificationPermission) { |
url3, url3, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), |
CONTENT_SETTING_ASK); |
- EXPECT_EQ(5, service->GetScore(url1)); |
- EXPECT_EQ(0, service->GetScore(url2)); |
- EXPECT_EQ(0, service->GetScore(url3)); |
+ EXPECT_EQ(5, service_->GetScore(url1)); |
+ EXPECT_EQ(0, service_->GetScore(url2)); |
+ EXPECT_EQ(0, service_->GetScore(url3)); |
- service->AddPoints(url1, 1.0); |
- service->AddPoints(url2, 3.0); |
- EXPECT_EQ(6, service->GetScore(url1)); |
- EXPECT_EQ(3, service->GetScore(url2)); |
+ service_->AddPoints(url1, 1.0); |
+ service_->AddPoints(url2, 3.0); |
+ EXPECT_EQ(6, service_->GetScore(url1)); |
+ EXPECT_EQ(3, service_->GetScore(url2)); |
settings_map->SetContentSettingDefaultScope( |
url1, url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), |
CONTENT_SETTING_BLOCK); |
- EXPECT_EQ(1, service->GetScore(url1)); |
+ EXPECT_EQ(1, service_->GetScore(url1)); |
} |
TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
base::HistogramTester histograms; |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
// Histograms should start empty as the testing SiteEngagementService |
// constructor does not record metrics. |
@@ -564,7 +563,7 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
0); |
// Record metrics for an empty engagement system. |
- service->RecordMetrics(); |
+ service_->RecordMetrics(); |
histograms.ExpectUniqueSample( |
SiteEngagementMetrics::kTotalEngagementHistogram, 0, 1); |
@@ -595,7 +594,7 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
for (const std::string& histogram_name : engagement_bucket_histogram_names) |
histograms.ExpectTotalCount(histogram_name, 0); |
- clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(60)); |
+ clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(60)); |
// The https and http versions of www.google.com should be separate. |
GURL url1("https://www.google.com/"); |
@@ -603,13 +602,13 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
GURL url3("http://drive.google.com/"); |
NavigateAndCommit(url1); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
- service->HandleUserInput(web_contents(), |
- SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
- service->HandleUserInput(web_contents(), |
- SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
+ service_->HandleUserInput(web_contents(), |
+ SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
+ service_->HandleUserInput(web_contents(), |
+ SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
NavigateAndCommit(url2); |
- service->HandleMediaPlaying(web_contents(), true); |
+ service_->HandleMediaPlaying(web_contents(), true); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, |
2); |
@@ -653,11 +652,11 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2); |
// Navigations are still logged within the 1 hour refresh period |
- clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(59)); |
+ clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(59)); |
NavigateAndCommit(url2); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_AUTO_BOOKMARK); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_AUTO_BOOKMARK); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
8); |
@@ -675,14 +674,14 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2); |
// Update the hourly histograms again. |
- clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(1)); |
+ clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(1)); |
NavigateAndCommit(url3); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
- service->HandleMediaPlaying(web_contents(), false); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
+ service_->HandleMediaPlaying(web_contents(), false); |
NavigateAndCommit(url2); |
- service->HandleUserInput(web_contents(), |
- SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE); |
+ service_->HandleUserInput(web_contents(), |
+ SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, |
3); |
@@ -733,17 +732,17 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 3); |
NavigateAndCommit(url1); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
NavigateAndCommit(url2); |
- service->HandleUserInput(web_contents(), |
- SiteEngagementMetrics::ENGAGEMENT_SCROLL); |
+ service_->HandleUserInput(web_contents(), |
+ SiteEngagementMetrics::ENGAGEMENT_SCROLL); |
NavigateAndCommit(url1); |
- service->HandleUserInput(web_contents(), |
- SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
+ service_->HandleUserInput(web_contents(), |
+ SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
NavigateAndCommit(url3); |
- service->HandleUserInput(web_contents(), |
- SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
+ service_->HandleUserInput(web_contents(), |
+ SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
17); |
@@ -766,10 +765,10 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
// the last increment before max. Expect the histogram to be updated. |
NavigateAndCommit(url1); |
for (int i = 0; i < 6; ++i) |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
- clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(60)); |
- service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
+ clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(60)); |
+ service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, |
4); |
@@ -822,10 +821,6 @@ TEST_F(SiteEngagementServiceTest, CheckHistograms) { |
// engagement times to be reset if too much time has passed since the last |
// engagement. |
TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
// Set the base time to be 3 weeks past the stale period in the past. |
// Use a 1 second offset to make sure scores don't yet decay. |
base::TimeDelta one_second = base::TimeDelta::FromSeconds(1); |
@@ -834,10 +829,11 @@ TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) { |
base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours()); |
base::TimeDelta shorter_than_decay_period = decay_period - one_second; |
- base::Time max_decay_time = GetReferenceTime() - service->GetMaxDecayPeriod(); |
- base::Time stale_time = GetReferenceTime() - service->GetStalePeriod(); |
+ base::Time max_decay_time = |
+ GetReferenceTime() - service_->GetMaxDecayPeriod(); |
+ base::Time stale_time = GetReferenceTime() - service_->GetStalePeriod(); |
base::Time base_time = stale_time - shorter_than_decay_period * 4; |
- clock->SetNow(base_time); |
+ clock_->SetNow(base_time); |
// The https and http versions of www.google.com should be separate. |
GURL url1("https://www.google.com/"); |
@@ -845,195 +841,195 @@ TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) { |
GURL url3("http://maps.google.com/"); |
GURL url4("http://drive.google.com/"); |
- EXPECT_EQ(0, service->GetScore(url1)); |
- EXPECT_EQ(0, service->GetScore(url2)); |
- EXPECT_EQ(0, service->GetScore(url3)); |
- EXPECT_EQ(0, service->GetScore(url4)); |
+ EXPECT_EQ(0, service_->GetScore(url1)); |
+ EXPECT_EQ(0, service_->GetScore(url2)); |
+ EXPECT_EQ(0, service_->GetScore(url3)); |
+ EXPECT_EQ(0, service_->GetScore(url4)); |
// Add some points |
- service->AddPoints(url1, 1.0); |
- service->AddPoints(url2, 5.0); |
- EXPECT_EQ(1.0, service->GetScore(url1)); |
- EXPECT_EQ(5.0, service->GetScore(url2)); |
+ service_->AddPoints(url1, 1.0); |
+ service_->AddPoints(url2, 5.0); |
+ EXPECT_EQ(1.0, service_->GetScore(url1)); |
+ EXPECT_EQ(5.0, service_->GetScore(url2)); |
// Add more to url2 over the next few days. Leave it completely alone after |
// this. |
- clock->SetNow(base_time + one_day); |
- service->AddPoints(url2, 5.0); |
- EXPECT_EQ(10.0, service->GetScore(url2)); |
+ clock_->SetNow(base_time + one_day); |
+ service_->AddPoints(url2, 5.0); |
+ EXPECT_EQ(10.0, service_->GetScore(url2)); |
- clock->SetNow(base_time + 2 * one_day); |
- service->AddPoints(url2, 5.0); |
- EXPECT_EQ(15.0, service->GetScore(url2)); |
+ clock_->SetNow(base_time + 2 * one_day); |
+ service_->AddPoints(url2, 5.0); |
+ EXPECT_EQ(15.0, service_->GetScore(url2)); |
- clock->SetNow(base_time + 3 * one_day); |
- service->AddPoints(url2, 2.0); |
- EXPECT_EQ(17.0, service->GetScore(url2)); |
- base::Time url2_last_modified = clock->Now(); |
+ clock_->SetNow(base_time + 3 * one_day); |
+ service_->AddPoints(url2, 2.0); |
+ EXPECT_EQ(17.0, service_->GetScore(url2)); |
+ base::Time url2_last_modified = clock_->Now(); |
// Move to (3 * shorter_than_decay_period) before the stale period. |
base_time += shorter_than_decay_period; |
- clock->SetNow(base_time); |
- service->AddPoints(url1, 1.0); |
- service->AddPoints(url3, 5.0); |
- EXPECT_EQ(2.0, service->GetScore(url1)); |
- EXPECT_EQ(5.0, service->GetScore(url3)); |
+ clock_->SetNow(base_time); |
+ service_->AddPoints(url1, 1.0); |
+ service_->AddPoints(url3, 5.0); |
+ EXPECT_EQ(2.0, service_->GetScore(url1)); |
+ EXPECT_EQ(5.0, service_->GetScore(url3)); |
// Add more to url3, and then leave it alone. |
- clock->SetNow(base_time + one_day); |
- service->AddPoints(url1, 5.0); |
- service->AddPoints(url3, 5.0); |
- EXPECT_EQ(7.0, service->GetScore(url1)); |
- EXPECT_EQ(10.0, service->GetScore(url3)); |
+ clock_->SetNow(base_time + one_day); |
+ service_->AddPoints(url1, 5.0); |
+ service_->AddPoints(url3, 5.0); |
+ EXPECT_EQ(7.0, service_->GetScore(url1)); |
+ EXPECT_EQ(10.0, service_->GetScore(url3)); |
// Move to (2 * shorter_than_decay_period) before the stale period. |
base_time += shorter_than_decay_period; |
- clock->SetNow(base_time); |
- service->AddPoints(url1, 5.0); |
- service->AddPoints(url4, 5.0); |
- EXPECT_EQ(12.0, service->GetScore(url1)); |
- EXPECT_EQ(5.0, service->GetScore(url4)); |
+ clock_->SetNow(base_time); |
+ service_->AddPoints(url1, 5.0); |
+ service_->AddPoints(url4, 5.0); |
+ EXPECT_EQ(12.0, service_->GetScore(url1)); |
+ EXPECT_EQ(5.0, service_->GetScore(url4)); |
// Move to shorter_than_decay_period before the stale period. |
base_time += shorter_than_decay_period; |
- clock->SetNow(base_time); |
- service->AddPoints(url1, 1.5); |
- service->AddPoints(url4, 2.0); |
- EXPECT_EQ(13.5, service->GetScore(url1)); |
- EXPECT_EQ(7.0, service->GetScore(url4)); |
+ clock_->SetNow(base_time); |
+ service_->AddPoints(url1, 1.5); |
+ service_->AddPoints(url4, 2.0); |
+ EXPECT_EQ(13.5, service_->GetScore(url1)); |
+ EXPECT_EQ(7.0, service_->GetScore(url4)); |
// After cleanup, url2 should be last modified offset to max_decay_time by the |
// current offset to now. |
- url2_last_modified = max_decay_time - (clock->Now() - url2_last_modified); |
+ url2_last_modified = max_decay_time - (clock_->Now() - url2_last_modified); |
base_time = GetReferenceTime(); |
{ |
- clock->SetNow(base_time); |
- ASSERT_TRUE(service->IsLastEngagementStale()); |
+ clock_->SetNow(base_time); |
+ ASSERT_TRUE(service_->IsLastEngagementStale()); |
// Run a cleanup. Last engagement times will be reset relative to |
// max_decay_time. After the reset, url2 will go through 3 decays, url3 |
// will go through 2 decays, and url1/url4 will go through 1 decay. This |
// decay is uncommitted! |
- service->CleanupEngagementScores(true); |
- ASSERT_FALSE(service->IsLastEngagementStale()); |
+ service_->CleanupEngagementScores(true); |
+ ASSERT_FALSE(service_->IsLastEngagementStale()); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(3u, score_map.size()); |
EXPECT_EQ(8.5, score_map[url1]); |
EXPECT_EQ(2.0, score_map[url2]); |
EXPECT_EQ(2.0, score_map[url4]); |
- EXPECT_EQ(0, service->GetScore(url3)); |
+ EXPECT_EQ(0, service_->GetScore(url3)); |
EXPECT_EQ(max_decay_time, |
- service->CreateEngagementScore(url1).last_engagement_time()); |
+ service_->CreateEngagementScore(url1).last_engagement_time()); |
EXPECT_EQ(url2_last_modified, |
- service->CreateEngagementScore(url2).last_engagement_time()); |
+ service_->CreateEngagementScore(url2).last_engagement_time()); |
EXPECT_EQ(max_decay_time, |
- service->CreateEngagementScore(url4).last_engagement_time()); |
- EXPECT_EQ(max_decay_time, service->GetLastEngagementTime()); |
+ service_->CreateEngagementScore(url4).last_engagement_time()); |
+ EXPECT_EQ(max_decay_time, service_->GetLastEngagementTime()); |
} |
{ |
// Advance time by the stale period. Nothing should happen in the cleanup. |
// Last engagement times are now relative to max_decay_time + stale period |
- base_time += service->GetStalePeriod(); |
- clock->SetNow(base_time); |
- ASSERT_TRUE(service->IsLastEngagementStale()); |
+ base_time += service_->GetStalePeriod(); |
+ clock_->SetNow(base_time); |
+ ASSERT_TRUE(service_->IsLastEngagementStale()); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(3u, score_map.size()); |
EXPECT_EQ(8.5, score_map[url1]); |
EXPECT_EQ(2.0, score_map[url2]); |
EXPECT_EQ(2.0, score_map[url4]); |
- EXPECT_EQ(max_decay_time + service->GetStalePeriod(), |
- service->CreateEngagementScore(url1).last_engagement_time()); |
- EXPECT_EQ(url2_last_modified + service->GetStalePeriod(), |
- service->CreateEngagementScore(url2).last_engagement_time()); |
- EXPECT_EQ(max_decay_time + service->GetStalePeriod(), |
- service->CreateEngagementScore(url4).last_engagement_time()); |
- EXPECT_EQ(max_decay_time + service->GetStalePeriod(), |
- service->GetLastEngagementTime()); |
+ EXPECT_EQ(max_decay_time + service_->GetStalePeriod(), |
+ service_->CreateEngagementScore(url1).last_engagement_time()); |
+ EXPECT_EQ(url2_last_modified + service_->GetStalePeriod(), |
+ service_->CreateEngagementScore(url2).last_engagement_time()); |
+ EXPECT_EQ(max_decay_time + service_->GetStalePeriod(), |
+ service_->CreateEngagementScore(url4).last_engagement_time()); |
+ EXPECT_EQ(max_decay_time + service_->GetStalePeriod(), |
+ service_->GetLastEngagementTime()); |
} |
{ |
// Add points to commit the decay. |
- service->AddPoints(url1, 0.5); |
- service->AddPoints(url2, 0.5); |
- service->AddPoints(url4, 1); |
+ service_->AddPoints(url1, 0.5); |
+ service_->AddPoints(url2, 0.5); |
+ service_->AddPoints(url4, 1); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(3u, score_map.size()); |
EXPECT_EQ(9.0, score_map[url1]); |
EXPECT_EQ(2.5, score_map[url2]); |
EXPECT_EQ(3.0, score_map[url4]); |
- EXPECT_EQ(clock->Now(), |
- service->CreateEngagementScore(url1).last_engagement_time()); |
- EXPECT_EQ(clock->Now(), |
- service->CreateEngagementScore(url2).last_engagement_time()); |
- EXPECT_EQ(clock->Now(), |
- service->CreateEngagementScore(url4).last_engagement_time()); |
- EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); |
+ EXPECT_EQ(clock_->Now(), |
+ service_->CreateEngagementScore(url1).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now(), |
+ service_->CreateEngagementScore(url2).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now(), |
+ service_->CreateEngagementScore(url4).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime()); |
} |
{ |
// Advance time by a decay period after the current last engagement time. |
// Expect url2/url4 to be decayed to zero and url1 to decay once. |
- base_time = clock->Now() + decay_period; |
- clock->SetNow(base_time); |
- ASSERT_FALSE(service->IsLastEngagementStale()); |
+ base_time = clock_->Now() + decay_period; |
+ clock_->SetNow(base_time); |
+ ASSERT_FALSE(service_->IsLastEngagementStale()); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(3u, score_map.size()); |
EXPECT_EQ(4, score_map[url1]); |
EXPECT_EQ(0, score_map[url2]); |
EXPECT_EQ(0, score_map[url4]); |
- service->CleanupEngagementScores(false); |
- ASSERT_FALSE(service->IsLastEngagementStale()); |
+ service_->CleanupEngagementScores(false); |
+ ASSERT_FALSE(service_->IsLastEngagementStale()); |
- score_map = service->GetScoreMap(); |
+ score_map = service_->GetScoreMap(); |
EXPECT_EQ(1u, score_map.size()); |
EXPECT_EQ(4, score_map[url1]); |
- EXPECT_EQ(0, service->GetScore(url2)); |
- EXPECT_EQ(0, service->GetScore(url4)); |
- EXPECT_EQ(clock->Now() - decay_period, |
- service->CreateEngagementScore(url1).last_engagement_time()); |
- EXPECT_EQ(clock->Now() - decay_period, service->GetLastEngagementTime()); |
+ EXPECT_EQ(0, service_->GetScore(url2)); |
+ EXPECT_EQ(0, service_->GetScore(url4)); |
+ EXPECT_EQ(clock_->Now() - decay_period, |
+ service_->CreateEngagementScore(url1).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now() - decay_period, service_->GetLastEngagementTime()); |
} |
{ |
// Add points to commit the decay. |
- service->AddPoints(url1, 0.5); |
+ service_->AddPoints(url1, 0.5); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(1u, score_map.size()); |
EXPECT_EQ(4.5, score_map[url1]); |
- EXPECT_EQ(clock->Now(), |
- service->CreateEngagementScore(url1).last_engagement_time()); |
- EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); |
+ EXPECT_EQ(clock_->Now(), |
+ service_->CreateEngagementScore(url1).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime()); |
} |
{ |
// Another decay period will decay url1 to zero. |
- clock->SetNow(clock->Now() + decay_period); |
- ASSERT_FALSE(service->IsLastEngagementStale()); |
+ clock_->SetNow(clock_->Now() + decay_period); |
+ ASSERT_FALSE(service_->IsLastEngagementStale()); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(1u, score_map.size()); |
EXPECT_EQ(0, score_map[url1]); |
- EXPECT_EQ(clock->Now() - decay_period, |
- service->CreateEngagementScore(url1).last_engagement_time()); |
- EXPECT_EQ(clock->Now() - decay_period, service->GetLastEngagementTime()); |
+ EXPECT_EQ(clock_->Now() - decay_period, |
+ service_->CreateEngagementScore(url1).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now() - decay_period, service_->GetLastEngagementTime()); |
- service->CleanupEngagementScores(false); |
- ASSERT_FALSE(service->IsLastEngagementStale()); |
+ service_->CleanupEngagementScores(false); |
+ ASSERT_FALSE(service_->IsLastEngagementStale()); |
- score_map = service->GetScoreMap(); |
+ score_map = service_->GetScoreMap(); |
EXPECT_EQ(0u, score_map.size()); |
- EXPECT_EQ(0, service->GetScore(url1)); |
- EXPECT_EQ(clock->Now() - decay_period, service->GetLastEngagementTime()); |
+ EXPECT_EQ(0, service_->GetScore(url1)); |
+ EXPECT_EQ(clock_->Now() - decay_period, service_->GetLastEngagementTime()); |
} |
} |
@@ -1042,31 +1038,27 @@ TEST_F(SiteEngagementServiceTest, CleanupEngagementScoresProportional) { |
SetParamValue(SiteEngagementScore::DECAY_POINTS, 0); |
SetParamValue(SiteEngagementScore::SCORE_CLEANUP_THRESHOLD, 0.5); |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
GURL url1("https://www.google.com/"); |
GURL url2("https://www.somewhereelse.com/"); |
- service->AddPoints(url1, 1.0); |
- service->AddPoints(url2, 1.2); |
+ service_->AddPoints(url1, 1.0); |
+ service_->AddPoints(url2, 1.2); |
current_day += base::TimeDelta::FromDays(7); |
- clock->SetNow(current_day); |
- std::map<GURL, double> score_map = service->GetScoreMap(); |
+ clock_->SetNow(current_day); |
+ std::map<GURL, double> score_map = service_->GetScoreMap(); |
EXPECT_EQ(2u, score_map.size()); |
- AssertInRange(0.5, service->GetScore(url1)); |
- AssertInRange(0.6, service->GetScore(url2)); |
+ AssertInRange(0.5, service_->GetScore(url1)); |
+ AssertInRange(0.6, service_->GetScore(url2)); |
- service->CleanupEngagementScores(false); |
- score_map = service->GetScoreMap(); |
+ service_->CleanupEngagementScores(false); |
+ score_map = service_->GetScoreMap(); |
EXPECT_EQ(1u, score_map.size()); |
- EXPECT_EQ(0, service->GetScore(url1)); |
- AssertInRange(0.6, service->GetScore(url2)); |
+ EXPECT_EQ(0, service_->GetScore(url1)); |
+ AssertInRange(0.6, service_->GetScore(url2)); |
} |
TEST_F(SiteEngagementServiceTest, NavigationAccumulation) { |
@@ -1100,26 +1092,22 @@ TEST_F(SiteEngagementServiceTest, NavigationAccumulation) { |
} |
TEST_F(SiteEngagementServiceTest, IsBootstrapped) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
GURL url1("https://www.google.com/"); |
GURL url2("https://www.somewhereelse.com/"); |
- EXPECT_FALSE(service->IsBootstrapped()); |
+ EXPECT_FALSE(service_->IsBootstrapped()); |
- service->AddPoints(url1, 5.0); |
- EXPECT_FALSE(service->IsBootstrapped()); |
+ service_->AddPoints(url1, 5.0); |
+ EXPECT_FALSE(service_->IsBootstrapped()); |
- service->AddPoints(url2, 5.0); |
- EXPECT_TRUE(service->IsBootstrapped()); |
+ service_->AddPoints(url2, 5.0); |
+ EXPECT_TRUE(service_->IsBootstrapped()); |
- clock->SetNow(current_day + base::TimeDelta::FromDays(8)); |
- EXPECT_FALSE(service->IsBootstrapped()); |
+ clock_->SetNow(current_day + base::TimeDelta::FromDays(8)); |
+ EXPECT_FALSE(service_->IsBootstrapped()); |
} |
TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
@@ -1127,11 +1115,6 @@ TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
// balance out history deletion also accounts for the proportional decay. |
SetParamValue(SiteEngagementScore::DECAY_PROPORTION, 0.5); |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> engagement( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- ASSERT_TRUE(engagement.get()); |
- |
GURL origin1("http://www.google.com/"); |
GURL origin1a("http://www.google.com/search?q=asdf"); |
GURL origin1b("http://www.google.com/maps/search?q=asdf"); |
@@ -1147,7 +1130,7 @@ TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
base::TimeDelta::FromDays(1) + |
base::TimeDelta::FromHours(4); |
base::Time yesterday_week = GetReferenceTime() - base::TimeDelta::FromDays(8); |
- clock->SetNow(today); |
+ clock_->SetNow(today); |
history::HistoryService* history = HistoryServiceFactory::GetForProfile( |
profile(), ServiceAccessType::IMPLICIT_ACCESS); |
@@ -1155,23 +1138,23 @@ TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
history->AddPage(origin1, yesterday_afternoon, history::SOURCE_BROWSED); |
history->AddPage(origin1a, yesterday_week, history::SOURCE_BROWSED); |
history->AddPage(origin1b, today, history::SOURCE_BROWSED); |
- engagement->AddPoints(origin1, 3.0); |
+ service_->AddPoints(origin1, 3.0); |
history->AddPage(origin2, yesterday_afternoon, history::SOURCE_BROWSED); |
history->AddPage(origin2a, yesterday_afternoon, history::SOURCE_BROWSED); |
- engagement->AddPoints(origin2, 5.0); |
+ service_->AddPoints(origin2, 5.0); |
history->AddPage(origin3, today, history::SOURCE_BROWSED); |
- engagement->AddPoints(origin3, 5.0); |
+ service_->AddPoints(origin3, 5.0); |
history->AddPage(origin4, yesterday_week, history::SOURCE_BROWSED); |
history->AddPage(origin4a, yesterday_afternoon, history::SOURCE_BROWSED); |
- engagement->AddPoints(origin4, 5.0); |
+ service_->AddPoints(origin4, 5.0); |
- AssertInRange(3.0, engagement->GetScore(origin1)); |
- AssertInRange(5.0, engagement->GetScore(origin2)); |
- AssertInRange(5.0, engagement->GetScore(origin3)); |
- AssertInRange(5.0, engagement->GetScore(origin4)); |
+ AssertInRange(3.0, service_->GetScore(origin1)); |
+ AssertInRange(5.0, service_->GetScore(origin2)); |
+ AssertInRange(5.0, service_->GetScore(origin3)); |
+ AssertInRange(5.0, service_->GetScore(origin4)); |
{ |
SiteEngagementChangeWaiter waiter(profile()); |
@@ -1187,11 +1170,11 @@ TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
// cutting origin1's score by 1/3. origin3 is untouched. origin4 has 1 URL |
// deleted and 1 remaining, but its most recent visit is more than 1 week in |
// the past. Ensure that its scored is halved, and not decayed further. |
- AssertInRange(2, engagement->GetScore(origin1)); |
- EXPECT_EQ(0, engagement->GetScore(origin2)); |
- AssertInRange(5.0, engagement->GetScore(origin3)); |
- AssertInRange(2.5, engagement->GetScore(origin4)); |
- AssertInRange(9.5, engagement->GetTotalEngagementPoints()); |
+ AssertInRange(2, service_->GetScore(origin1)); |
+ EXPECT_EQ(0, service_->GetScore(origin2)); |
+ AssertInRange(5.0, service_->GetScore(origin3)); |
+ AssertInRange(2.5, service_->GetScore(origin4)); |
+ AssertInRange(9.5, service_->GetTotalEngagementPoints()); |
} |
{ |
@@ -1211,11 +1194,11 @@ TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
// origin1's score should be halved again. origin3 and origin4 remain |
// untouched. |
- AssertInRange(1, engagement->GetScore(origin1)); |
- EXPECT_EQ(0, engagement->GetScore(origin2)); |
- AssertInRange(5.0, engagement->GetScore(origin3)); |
- AssertInRange(2.5, engagement->GetScore(origin4)); |
- AssertInRange(8.5, engagement->GetTotalEngagementPoints()); |
+ AssertInRange(1, service_->GetScore(origin1)); |
+ EXPECT_EQ(0, service_->GetScore(origin2)); |
+ AssertInRange(5.0, service_->GetScore(origin3)); |
+ AssertInRange(2.5, service_->GetScore(origin4)); |
+ AssertInRange(8.5, service_->GetTotalEngagementPoints()); |
} |
{ |
@@ -1234,11 +1217,11 @@ TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { |
waiter.Wait(); |
// origin1 should be removed. origin3 and origin4 remain untouched. |
- EXPECT_EQ(0, engagement->GetScore(origin1)); |
- EXPECT_EQ(0, engagement->GetScore(origin2)); |
- AssertInRange(5.0, engagement->GetScore(origin3)); |
- AssertInRange(2.5, engagement->GetScore(origin4)); |
- AssertInRange(7.5, engagement->GetTotalEngagementPoints()); |
+ EXPECT_EQ(0, service_->GetScore(origin1)); |
+ EXPECT_EQ(0, service_->GetScore(origin2)); |
+ AssertInRange(5.0, service_->GetScore(origin3)); |
+ AssertInRange(2.5, service_->GetScore(origin4)); |
+ AssertInRange(7.5, service_->GetTotalEngagementPoints()); |
} |
} |
@@ -1256,132 +1239,128 @@ TEST_F(SiteEngagementServiceTest, EngagementLevel) { |
blink::mojom::EngagementLevel::MAX, |
"enum values should not be equal"); |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
GURL url1("https://www.google.com/"); |
GURL url2("http://www.google.com/"); |
EXPECT_EQ(blink::mojom::EngagementLevel::NONE, |
- service->GetEngagementLevel(url1)); |
+ service_->GetEngagementLevel(url1)); |
EXPECT_EQ(blink::mojom::EngagementLevel::NONE, |
- service->GetEngagementLevel(url2)); |
+ service_->GetEngagementLevel(url2)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE)); |
- EXPECT_FALSE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE)); |
+ EXPECT_FALSE(service_->IsEngagementAtLeast( |
url1, blink::mojom::EngagementLevel::MINIMAL)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW)); |
- EXPECT_FALSE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW)); |
+ EXPECT_FALSE(service_->IsEngagementAtLeast( |
url1, blink::mojom::EngagementLevel::MEDIUM)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH)); |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX)); |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX)); |
// Bring url2 to MINIMAL engagement. |
- service->AddPoints(url2, 0.5); |
+ service_->AddPoints(url2, 0.5); |
EXPECT_EQ(blink::mojom::EngagementLevel::NONE, |
- service->GetEngagementLevel(url1)); |
+ service_->GetEngagementLevel(url1)); |
EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL, |
- service->GetEngagementLevel(url2)); |
+ service_->GetEngagementLevel(url2)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MINIMAL)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
- EXPECT_FALSE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
+ EXPECT_FALSE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MEDIUM)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
// Bring url1 to LOW engagement. |
- service->AddPoints(url1, 1.0); |
+ service_->AddPoints(url1, 1.0); |
EXPECT_EQ(blink::mojom::EngagementLevel::LOW, |
- service->GetEngagementLevel(url1)); |
+ service_->GetEngagementLevel(url1)); |
EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL, |
- service->GetEngagementLevel(url2)); |
+ service_->GetEngagementLevel(url2)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url1, blink::mojom::EngagementLevel::MINIMAL)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW)); |
- EXPECT_FALSE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW)); |
+ EXPECT_FALSE(service_->IsEngagementAtLeast( |
url1, blink::mojom::EngagementLevel::MEDIUM)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH)); |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX)); |
+ service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX)); |
// Bring url2 to MEDIUM engagement. |
- service->AddPoints(url2, 4.5); |
+ service_->AddPoints(url2, 4.5); |
EXPECT_EQ(blink::mojom::EngagementLevel::LOW, |
- service->GetEngagementLevel(url1)); |
+ service_->GetEngagementLevel(url1)); |
EXPECT_EQ(blink::mojom::EngagementLevel::MEDIUM, |
- service->GetEngagementLevel(url2)); |
+ service_->GetEngagementLevel(url2)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MINIMAL)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MEDIUM)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
// Bring url2 to HIGH engagement. |
for (int i = 0; i < 9; ++i) { |
current_day += base::TimeDelta::FromDays(1); |
- clock->SetNow(current_day); |
- service->AddPoints(url2, 5.0); |
+ clock_->SetNow(current_day); |
+ service_->AddPoints(url2, 5.0); |
} |
EXPECT_EQ(blink::mojom::EngagementLevel::HIGH, |
- service->GetEngagementLevel(url2)); |
+ service_->GetEngagementLevel(url2)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MINIMAL)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MEDIUM)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
EXPECT_FALSE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
// Bring url2 to MAX engagement. |
for (int i = 0; i < 10; ++i) { |
current_day += base::TimeDelta::FromDays(1); |
- clock->SetNow(current_day); |
- service->AddPoints(url2, 5.0); |
+ clock_->SetNow(current_day); |
+ service_->AddPoints(url2, 5.0); |
} |
EXPECT_EQ(blink::mojom::EngagementLevel::MAX, |
- service->GetEngagementLevel(url2)); |
+ service_->GetEngagementLevel(url2)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MINIMAL)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
- EXPECT_TRUE(service->IsEngagementAtLeast( |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); |
+ EXPECT_TRUE(service_->IsEngagementAtLeast( |
url2, blink::mojom::EngagementLevel::MEDIUM)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); |
EXPECT_TRUE( |
- service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
+ service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); |
} |
TEST_F(SiteEngagementServiceTest, Observers) { |
@@ -1448,12 +1427,8 @@ TEST_F(SiteEngagementServiceTest, Observers) { |
} |
TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
base::HistogramTester histograms; |
GURL origin1("http://www.google.com/"); |
GURL origin2("http://drive.google.com/"); |
@@ -1463,30 +1438,30 @@ TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, |
0); |
- service->AddPoints(origin2, SiteEngagementScore::GetNavigationPoints()); |
+ service_->AddPoints(origin2, SiteEngagementScore::GetNavigationPoints()); |
// Max the score for origin1. |
for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) { |
current_day += base::TimeDelta::FromDays(1); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j) |
- service->AddPoints(origin1, SiteEngagementScore::GetNavigationPoints()); |
+ service_->AddPoints(origin1, SiteEngagementScore::GetNavigationPoints()); |
} |
- EXPECT_EQ(SiteEngagementScore::kMaxPoints, service->GetScore(origin1)); |
+ EXPECT_EQ(SiteEngagementScore::kMaxPoints, service_->GetScore(origin1)); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, |
0); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, |
0); |
// Check histograms after one decay period. |
- clock->SetNow( |
+ clock_->SetNow( |
current_day + |
base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours())); |
// Trigger decay and histogram hit. |
- service->AddPoints(origin1, 0.01); |
+ service_->AddPoints(origin1, 0.01); |
histograms.ExpectUniqueSample( |
SiteEngagementMetrics::kScoreDecayedFromHistogram, |
SiteEngagementScore::kMaxPoints, 1); |
@@ -1496,11 +1471,11 @@ TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
1); |
// Check histograms after another decay period. |
- clock->SetNow(current_day + |
- base::TimeDelta::FromHours( |
- 2 * SiteEngagementScore::GetDecayPeriodInHours())); |
+ clock_->SetNow(current_day + |
+ base::TimeDelta::FromHours( |
+ 2 * SiteEngagementScore::GetDecayPeriodInHours())); |
// Trigger decay and histogram hit. |
- service->AddPoints(origin1, 0.01); |
+ service_->AddPoints(origin1, 0.01); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, |
2); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, |
@@ -1509,11 +1484,11 @@ TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
// Check decay to zero. Start at the 3rd decay period (we have had two |
// already). This will be 40 decays in total. |
for (int i = 3; i <= kMorePeriodsThanNeededToDecayMaxScore; ++i) { |
- clock->SetNow(current_day + |
- base::TimeDelta::FromHours( |
- i * SiteEngagementScore::GetDecayPeriodInHours())); |
+ clock_->SetNow(current_day + |
+ base::TimeDelta::FromHours( |
+ i * SiteEngagementScore::GetDecayPeriodInHours())); |
// Trigger decay and histogram hit. |
- service->AddPoints(origin1, 0.01); |
+ service_->AddPoints(origin1, 0.01); |
} |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, |
kMorePeriodsThanNeededToDecayMaxScore); |
@@ -1527,7 +1502,7 @@ TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
histograms.ExpectBucketCount(SiteEngagementMetrics::kScoreDecayedToHistogram, |
0, 21); |
// Trigger decay and histogram hit for origin2, checking an independent decay. |
- service->AddPoints(origin2, 0.01); |
+ service_->AddPoints(origin2, 0.01); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, |
kMorePeriodsThanNeededToDecayMaxScore + 1); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, |
@@ -1538,8 +1513,8 @@ TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { |
0, 22); |
// Add more points and ensure no more samples are present. |
- service->AddPoints(origin1, 0.01); |
- service->AddPoints(origin2, 0.01); |
+ service_->AddPoints(origin1, 0.01); |
+ service_->AddPoints(origin2, 0.01); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, |
kMorePeriodsThanNeededToDecayMaxScore + 1); |
histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, |
@@ -1552,171 +1527,160 @@ TEST_F(SiteEngagementServiceTest, LastEngagementTime) { |
profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); |
ASSERT_TRUE(last_engagement_time.is_null()); |
- |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
- |
- ASSERT_TRUE(service->GetLastEngagementTime().is_null()); |
+ ASSERT_TRUE(service_->GetLastEngagementTime().is_null()); |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
// Add points should set the last engagement time in the service, and persist |
// it to disk. |
GURL origin("http://www.google.com/"); |
- service->AddPoints(origin, 1); |
+ service_->AddPoints(origin, 1); |
last_engagement_time = base::Time::FromInternalValue( |
profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); |
- EXPECT_EQ(current_day, service->GetLastEngagementTime()); |
+ EXPECT_EQ(current_day, service_->GetLastEngagementTime()); |
EXPECT_EQ(current_day, last_engagement_time); |
// Running a cleanup and updating last engagement times should persist the |
// last engagement time to disk. |
- current_day += service->GetStalePeriod(); |
- base::Time rebased_time = current_day - service->GetMaxDecayPeriod(); |
- clock->SetNow(current_day); |
- service->CleanupEngagementScores(true); |
+ current_day += service_->GetStalePeriod(); |
+ base::Time rebased_time = current_day - service_->GetMaxDecayPeriod(); |
+ clock_->SetNow(current_day); |
+ service_->CleanupEngagementScores(true); |
last_engagement_time = base::Time::FromInternalValue( |
profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); |
EXPECT_EQ(rebased_time, last_engagement_time); |
- EXPECT_EQ(rebased_time, service->GetLastEngagementTime()); |
+ EXPECT_EQ(rebased_time, service_->GetLastEngagementTime()); |
// Adding 0 points shouldn't update the last engagement time. |
base::Time later_in_day = current_day + base::TimeDelta::FromSeconds(30); |
- clock->SetNow(later_in_day); |
- service->AddPoints(origin, 0); |
+ clock_->SetNow(later_in_day); |
+ service_->AddPoints(origin, 0); |
last_engagement_time = base::Time::FromInternalValue( |
profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); |
EXPECT_EQ(rebased_time, last_engagement_time); |
- EXPECT_EQ(rebased_time, service->GetLastEngagementTime()); |
+ EXPECT_EQ(rebased_time, service_->GetLastEngagementTime()); |
// Add some more points and ensure the value is persisted. |
- service->AddPoints(origin, 3); |
+ service_->AddPoints(origin, 3); |
last_engagement_time = base::Time::FromInternalValue( |
profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); |
EXPECT_EQ(later_in_day, last_engagement_time); |
- EXPECT_EQ(later_in_day, service->GetLastEngagementTime()); |
+ EXPECT_EQ(later_in_day, service_->GetLastEngagementTime()); |
} |
TEST_F(SiteEngagementServiceTest, CleanupMovesScoreBackToNow) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
base::Time last_engagement_time; |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
GURL origin("http://www.google.com/"); |
- service->AddPoints(origin, 1); |
- EXPECT_EQ(1, service->GetScore(origin)); |
- EXPECT_EQ(current_day, service->GetLastEngagementTime()); |
+ service_->AddPoints(origin, 1); |
+ EXPECT_EQ(1, service_->GetScore(origin)); |
+ EXPECT_EQ(current_day, service_->GetLastEngagementTime()); |
// Send the clock back in time before the stale period and add engagement for |
// a new origin. Ensure that the original origin has its last engagement time |
// updated to now as a result. |
- base::Time before_stale_period = |
- clock->Now() - service->GetStalePeriod() - service->GetMaxDecayPeriod(); |
- clock->SetNow(before_stale_period); |
+ base::Time before_stale_period = clock_->Now() - service_->GetStalePeriod() - |
+ service_->GetMaxDecayPeriod(); |
+ clock_->SetNow(before_stale_period); |
GURL origin1("http://maps.google.com/"); |
- service->AddPoints(origin1, 1); |
+ service_->AddPoints(origin1, 1); |
EXPECT_EQ(before_stale_period, |
- service->CreateEngagementScore(origin).last_engagement_time()); |
- EXPECT_EQ(before_stale_period, service->GetLastEngagementTime()); |
- EXPECT_EQ(1, service->GetScore(origin)); |
- EXPECT_EQ(1, service->GetScore(origin1)); |
+ service_->CreateEngagementScore(origin).last_engagement_time()); |
+ EXPECT_EQ(before_stale_period, service_->GetLastEngagementTime()); |
+ EXPECT_EQ(1, service_->GetScore(origin)); |
+ EXPECT_EQ(1, service_->GetScore(origin1)); |
// Advance within a decay period and add points. |
base::TimeDelta less_than_decay_period = |
base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours()) - |
base::TimeDelta::FromSeconds(30); |
- base::Time origin1_last_updated = clock->Now() + less_than_decay_period; |
- clock->SetNow(origin1_last_updated); |
- service->AddPoints(origin, 1); |
- service->AddPoints(origin1, 5); |
- EXPECT_EQ(2, service->GetScore(origin)); |
- EXPECT_EQ(6, service->GetScore(origin1)); |
+ base::Time origin1_last_updated = clock_->Now() + less_than_decay_period; |
+ clock_->SetNow(origin1_last_updated); |
+ service_->AddPoints(origin, 1); |
+ service_->AddPoints(origin1, 5); |
+ EXPECT_EQ(2, service_->GetScore(origin)); |
+ EXPECT_EQ(6, service_->GetScore(origin1)); |
- clock->SetNow(clock->Now() + less_than_decay_period); |
- service->AddPoints(origin, 5); |
- EXPECT_EQ(7, service->GetScore(origin)); |
+ clock_->SetNow(clock_->Now() + less_than_decay_period); |
+ service_->AddPoints(origin, 5); |
+ EXPECT_EQ(7, service_->GetScore(origin)); |
// Move forward to the max number of decays per score. This is within the |
// stale period so no cleanup should be run. |
for (int i = 0; i < SiteEngagementScore::GetMaxDecaysPerScore(); ++i) { |
- clock->SetNow(clock->Now() + less_than_decay_period); |
- service->AddPoints(origin, 5); |
- EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); |
+ clock_->SetNow(clock_->Now() + less_than_decay_period); |
+ service_->AddPoints(origin, 5); |
+ EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime()); |
} |
- EXPECT_EQ(12, service->GetScore(origin)); |
- EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); |
+ EXPECT_EQ(12, service_->GetScore(origin)); |
+ EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime()); |
// Move the clock back to precisely 1 decay period after origin1's last |
// updated time. |last_engagement_time| is in the future, so AddPoints |
// triggers a cleanup. Ensure that |last_engagement_time| is moved back |
// appropriately, while origin1 is decayed correctly (once). |
- clock->SetNow(origin1_last_updated + less_than_decay_period + |
- base::TimeDelta::FromSeconds(30)); |
- service->AddPoints(origin1, 1); |
- |
- EXPECT_EQ(clock->Now(), |
- service->CreateEngagementScore(origin).last_engagement_time()); |
- EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); |
- EXPECT_EQ(12, service->GetScore(origin)); |
- EXPECT_EQ(1, service->GetScore(origin1)); |
+ clock_->SetNow(origin1_last_updated + less_than_decay_period + |
+ base::TimeDelta::FromSeconds(30)); |
+ service_->AddPoints(origin1, 1); |
+ |
+ EXPECT_EQ(clock_->Now(), |
+ service_->CreateEngagementScore(origin).last_engagement_time()); |
+ EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime()); |
+ EXPECT_EQ(12, service_->GetScore(origin)); |
+ EXPECT_EQ(1, service_->GetScore(origin1)); |
} |
TEST_F(SiteEngagementServiceTest, CleanupMovesScoreBackToRebase) { |
- base::SimpleTestClock* clock = new base::SimpleTestClock(); |
- std::unique_ptr<SiteEngagementService> service( |
- new SiteEngagementService(profile(), base::WrapUnique(clock))); |
base::Time last_engagement_time; |
base::Time current_day = GetReferenceTime(); |
- clock->SetNow(current_day); |
+ clock_->SetNow(current_day); |
GURL origin("http://www.google.com/"); |
- service->ResetBaseScoreForURL(origin, 5); |
- service->AddPoints(origin, 5); |
- EXPECT_EQ(10, service->GetScore(origin)); |
- EXPECT_EQ(current_day, service->GetLastEngagementTime()); |
+ service_->ResetBaseScoreForURL(origin, 5); |
+ service_->AddPoints(origin, 5); |
+ EXPECT_EQ(10, service_->GetScore(origin)); |
+ EXPECT_EQ(current_day, service_->GetLastEngagementTime()); |
// Send the clock back in time before the stale period and add engagement for |
// a new origin. |
- base::Time before_stale_period = |
- clock->Now() - service->GetStalePeriod() - service->GetMaxDecayPeriod(); |
- clock->SetNow(before_stale_period); |
+ base::Time before_stale_period = clock_->Now() - service_->GetStalePeriod() - |
+ service_->GetMaxDecayPeriod(); |
+ clock_->SetNow(before_stale_period); |
GURL origin1("http://maps.google.com/"); |
- service->AddPoints(origin1, 1); |
+ service_->AddPoints(origin1, 1); |
- EXPECT_EQ(before_stale_period, service->GetLastEngagementTime()); |
+ EXPECT_EQ(before_stale_period, service_->GetLastEngagementTime()); |
// Set the clock such that |origin|'s last engagement time is between |
// last_engagement_time and rebase_time. |
- clock->SetNow(current_day + service->GetStalePeriod() + |
- service->GetMaxDecayPeriod() - |
- base::TimeDelta::FromSeconds((30))); |
- base::Time rebased_time = clock->Now() - service->GetMaxDecayPeriod(); |
- service->CleanupEngagementScores(true); |
+ clock_->SetNow(current_day + service_->GetStalePeriod() + |
+ service_->GetMaxDecayPeriod() - |
+ base::TimeDelta::FromSeconds((30))); |
+ base::Time rebased_time = clock_->Now() - service_->GetMaxDecayPeriod(); |
+ service_->CleanupEngagementScores(true); |
// Ensure that the original origin has its last engagement time updated to |
// rebase_time, and it has decayed when we access the score. |
EXPECT_EQ(rebased_time, |
- service->CreateEngagementScore(origin).last_engagement_time()); |
- EXPECT_EQ(rebased_time, service->GetLastEngagementTime()); |
- EXPECT_EQ(5, service->GetScore(origin)); |
- EXPECT_EQ(0, service->GetScore(origin1)); |
+ service_->CreateEngagementScore(origin).last_engagement_time()); |
+ EXPECT_EQ(rebased_time, service_->GetLastEngagementTime()); |
+ EXPECT_EQ(5, service_->GetScore(origin)); |
+ EXPECT_EQ(0, service_->GetScore(origin1)); |
} |
TEST_F(SiteEngagementServiceTest, IncognitoEngagementService) { |