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

Unified Diff: chrome/browser/engagement/site_engagement_service_unittest.cc

Issue 1338603002: Implement a site engagement score based on time-on-site. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove flaky input simulation tests and combine callback and timer testing Created 5 years, 3 months 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
« no previous file with comments | « chrome/browser/engagement/site_engagement_service_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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());
}
« no previous file with comments | « chrome/browser/engagement/site_engagement_service_browsertest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698