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 adff26216ee58491a3dc25391c426685b88f9148..936e2e1aa675d54b611e4b6dc5c4d2a00aec18a1 100644 |
--- a/chrome/browser/engagement/site_engagement_service_unittest.cc |
+++ b/chrome/browser/engagement/site_engagement_service_unittest.cc |
@@ -14,9 +14,9 @@ |
namespace { |
-const int kLessNavigationsThanNeededToMaxDailyEngagement = 2; |
-const int kMoreNavigationsThanNeededToMaxDailyEngagement = 20; |
-const int kMoreNavigationsThanNeededToMaxTotalEngagement = 200; |
+const int kLessAccumulationsThanNeededToMaxDailyEngagement = 2; |
+const int kMoreAccumulationsThanNeededToMaxDailyEngagement = 40; |
+const int kMoreAccumulationsThanNeededToMaxTotalEngagement = 200; |
const int kLessDaysThanNeededToMaxTotalEngagement = 4; |
const int kMoreDaysThanNeededToMaxTotalEngagement = 40; |
const int kLessPeriodsThanNeededToDecayMaxScore = 2; |
@@ -88,13 +88,13 @@ class SiteEngagementScoreTest : public testing::Test { |
SiteEngagementScore score_; |
}; |
-// Navigate many times on the same day. Ensure each time the score goes up by |
-// kNavigationPoints, but not more than kMaxPointsPerDay. |
-TEST_F(SiteEngagementScoreTest, NavigateOnSameDay) { |
+// Accumulate score many times on the same day. Ensure each time the score goes |
+// up by kNavigationPoints, but not more than kMaxPointsPerDay. |
+TEST_F(SiteEngagementScoreTest, AccumulateOnSameDay) { |
base::Time reference_time = GetReferenceTime(); |
test_clock_.SetNow(reference_time); |
- for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) { |
+ for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) { |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
EXPECT_EQ(std::min(SiteEngagementScore::kMaxPointsPerDay, |
(i + 1) * SiteEngagementScore::kNavigationPoints), |
@@ -104,20 +104,20 @@ TEST_F(SiteEngagementScoreTest, NavigateOnSameDay) { |
EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score()); |
} |
-// Navigate on the first day to max that day's engagement, then navigate on a |
-// different day. |
-TEST_F(SiteEngagementScoreTest, NavigateOnTwoDays) { |
+// Accumulate on the first day to max that day's engagement, then accumulate on |
+// a different day. |
+TEST_F(SiteEngagementScoreTest, AccumulateOnTwoDays) { |
base::Time reference_time = GetReferenceTime(); |
base::Time later_date = reference_time + base::TimeDelta::FromDays(2); |
test_clock_.SetNow(reference_time); |
- for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) |
+ for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score()); |
test_clock_.SetNow(later_date); |
- for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) { |
+ for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) { |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
double day_score = |
std::min(SiteEngagementScore::kMaxPointsPerDay, |
@@ -129,15 +129,15 @@ TEST_F(SiteEngagementScoreTest, NavigateOnTwoDays) { |
EXPECT_EQ(2 * SiteEngagementScore::kMaxPointsPerDay, score_.Score()); |
} |
-// Navigate a lot on many consecutive days and ensure the score doesn't exceed |
+// Accumulate score on many consecutive days and ensure the score doesn't exceed |
// the maximum allowed. |
-TEST_F(SiteEngagementScoreTest, NavigateALotOnManyDays) { |
+TEST_F(SiteEngagementScoreTest, AccumulateALotOnManyDays) { |
base::Time current_day = GetReferenceTime(); |
for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) { |
current_day += base::TimeDelta::FromDays(1); |
test_clock_.SetNow(current_day); |
- for (int j = 0; j < kMoreNavigationsThanNeededToMaxDailyEngagement; ++j) |
+ for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j) |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
EXPECT_EQ(std::min(SiteEngagementScore::kMaxPoints, |
@@ -148,21 +148,21 @@ TEST_F(SiteEngagementScoreTest, NavigateALotOnManyDays) { |
EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score()); |
} |
-// Navigate a little on many consecutive days and ensure the score doesn't |
+// Accumulate a little on many consecutive days and ensure the score doesn't |
// exceed the maximum allowed. |
-TEST_F(SiteEngagementScoreTest, NavigateALittleOnManyDays) { |
+TEST_F(SiteEngagementScoreTest, AccumulateALittleOnManyDays) { |
base::Time current_day = GetReferenceTime(); |
- for (int i = 0; i < kMoreNavigationsThanNeededToMaxTotalEngagement; ++i) { |
+ for (int i = 0; i < kMoreAccumulationsThanNeededToMaxTotalEngagement; ++i) { |
current_day += base::TimeDelta::FromDays(1); |
test_clock_.SetNow(current_day); |
- for (int j = 0; j < kLessNavigationsThanNeededToMaxDailyEngagement; ++j) |
+ for (int j = 0; j < kLessAccumulationsThanNeededToMaxDailyEngagement; ++j) |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
EXPECT_EQ( |
std::min(SiteEngagementScore::kMaxPoints, |
- (i + 1) * kLessNavigationsThanNeededToMaxDailyEngagement * |
+ (i + 1) * kLessAccumulationsThanNeededToMaxDailyEngagement * |
SiteEngagementScore::kNavigationPoints), |
score_.Score()); |
} |
@@ -170,7 +170,7 @@ TEST_F(SiteEngagementScoreTest, NavigateALittleOnManyDays) { |
EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score()); |
} |
-// Navigate a bit, then check the score decays properly for a range of times. |
+// Accumulate a bit, then check the score decays properly for a range of times. |
TEST_F(SiteEngagementScoreTest, ScoresDecayOverTime) { |
base::Time current_day = GetReferenceTime(); |
@@ -179,7 +179,7 @@ TEST_F(SiteEngagementScoreTest, ScoresDecayOverTime) { |
current_day += base::TimeDelta::FromDays(1); |
test_clock_.SetNow(current_day); |
- for (int j = 0; j < kMoreNavigationsThanNeededToMaxDailyEngagement; ++j) |
+ for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j) |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
} |
@@ -228,7 +228,7 @@ TEST_F(SiteEngagementScoreTest, DecaysAppliedBeforeAdd) { |
current_day += base::TimeDelta::FromDays(1); |
test_clock_.SetNow(current_day); |
- for (int j = 0; j < kMoreNavigationsThanNeededToMaxDailyEngagement; ++j) |
+ for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j) |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
} |
@@ -258,7 +258,7 @@ TEST_F(SiteEngagementScoreTest, GoBackInTime) { |
base::Time current_day = GetReferenceTime(); |
test_clock_.SetNow(current_day); |
- for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) |
+ for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score()); |
@@ -268,7 +268,7 @@ TEST_F(SiteEngagementScoreTest, GoBackInTime) { |
test_clock_.SetNow(current_day - base::TimeDelta::FromDays( |
kMorePeriodsThanNeededToDecayMaxScore * |
SiteEngagementScore::kDecayPoints)); |
- for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) { |
+ for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) { |
score_.AddPoints(SiteEngagementScore::kNavigationPoints); |
double day_score = |
std::min(SiteEngagementScore::kMaxPointsPerDay, |
@@ -320,7 +320,6 @@ class SiteEngagementServiceTest : public BrowserWithTestWindowTest { |
} |
}; |
- |
// Tests that the Site Engagement service is hooked up properly to navigations |
// by performing two navigations and checking the engagement score increases |
// both times. |
@@ -333,7 +332,7 @@ TEST_F(SiteEngagementServiceTest, ScoreIncrementsOnPageRequest) { |
AddTab(browser(), GURL("about:blank")); |
EXPECT_EQ(0, service->GetScore(url)); |
- int prev_score = service->GetScore(url); |
+ double prev_score = service->GetScore(url); |
NavigateAndCommitActiveTab(url); |
EXPECT_LT(prev_score, service->GetScore(url)); |
@@ -345,7 +344,7 @@ TEST_F(SiteEngagementServiceTest, ScoreIncrementsOnPageRequest) { |
// Expect that site engagement scores for several sites are correctly aggregated |
// by GetTotalEngagementPoints(). |
-TEST_F(SiteEngagementServiceTest, GetTotalEngagementPoints) { |
+TEST_F(SiteEngagementServiceTest, GetTotalNavigationPoints) { |
SiteEngagementService* service = |
SiteEngagementServiceFactory::GetForProfile(profile()); |
DCHECK(service); |
@@ -359,21 +358,54 @@ TEST_F(SiteEngagementServiceTest, GetTotalEngagementPoints) { |
EXPECT_EQ(0, service->GetScore(url2)); |
EXPECT_EQ(0, service->GetScore(url3)); |
- service->HandleNavigation(url1); |
- EXPECT_EQ(1, service->GetScore(url1)); |
- EXPECT_EQ(1, service->GetTotalEngagementPoints()); |
+ service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); |
+ EXPECT_EQ(0.5, service->GetScore(url1)); |
+ EXPECT_EQ(0.5, service->GetTotalEngagementPoints()); |
+ |
+ service->HandleNavigation(url2, ui::PAGE_TRANSITION_GENERATED); |
+ service->HandleNavigation(url2, ui::PAGE_TRANSITION_AUTO_TOPLEVEL); |
+ EXPECT_EQ(1, service->GetScore(url2)); |
+ EXPECT_EQ(1.5, service->GetTotalEngagementPoints()); |
+ |
+ service->HandleNavigation(url3, ui::PAGE_TRANSITION_TYPED); |
+ EXPECT_EQ(0.5, service->GetScore(url3)); |
+ EXPECT_EQ(2, service->GetTotalEngagementPoints()); |
- service->HandleNavigation(url2); |
- service->HandleNavigation(url2); |
- EXPECT_EQ(2, service->GetScore(url2)); |
+ service->HandleNavigation(url1, ui::PAGE_TRANSITION_GENERATED); |
+ service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); |
+ EXPECT_EQ(1.5, service->GetScore(url1)); |
EXPECT_EQ(3, service->GetTotalEngagementPoints()); |
+} |
+ |
+TEST_F(SiteEngagementServiceTest, GetTotalUserInputPoints) { |
+ SiteEngagementService* service = |
+ SiteEngagementServiceFactory::GetForProfile(profile()); |
+ DCHECK(service); |
+ |
+ // The https and http versions of www.google.com should be separate. |
+ GURL url1("https://www.google.com/"); |
+ GURL url2("http://www.google.com/"); |
+ GURL url3("http://drive.google.com/"); |
+ |
+ EXPECT_EQ(0, service->GetScore(url1)); |
+ EXPECT_EQ(0, service->GetScore(url2)); |
+ EXPECT_EQ(0, service->GetScore(url3)); |
+ |
+ service->HandleUserInput(url1); |
+ EXPECT_DOUBLE_EQ(0.05, service->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(0.05, service->GetTotalEngagementPoints()); |
+ |
+ service->HandleUserInput(url2); |
+ service->HandleUserInput(url2); |
+ EXPECT_DOUBLE_EQ(0.1, service->GetScore(url2)); |
+ EXPECT_DOUBLE_EQ(0.15, service->GetTotalEngagementPoints()); |
- service->HandleNavigation(url3); |
- EXPECT_EQ(1, service->GetScore(url3)); |
- EXPECT_EQ(4, service->GetTotalEngagementPoints()); |
+ service->HandleUserInput(url3); |
+ EXPECT_DOUBLE_EQ(0.05, service->GetScore(url3)); |
+ EXPECT_DOUBLE_EQ(0.2, service->GetTotalEngagementPoints()); |
- service->HandleNavigation(url1); |
- service->HandleNavigation(url1); |
- EXPECT_EQ(3, service->GetScore(url1)); |
- EXPECT_EQ(6, service->GetTotalEngagementPoints()); |
+ service->HandleUserInput(url1); |
+ service->HandleUserInput(url1); |
+ EXPECT_DOUBLE_EQ(0.15, service->GetScore(url1)); |
+ EXPECT_DOUBLE_EQ(0.3, service->GetTotalEngagementPoints()); |
} |