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

Side by Side 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, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/test/simple_test_clock.h" 6 #include "base/test/simple_test_clock.h"
7 #include "base/values.h" 7 #include "base/values.h"
8 #include "chrome/browser/engagement/site_engagement_helper.h" 8 #include "chrome/browser/engagement/site_engagement_helper.h"
9 #include "chrome/browser/engagement/site_engagement_service.h" 9 #include "chrome/browser/engagement/site_engagement_service.h"
10 #include "chrome/browser/engagement/site_engagement_service_factory.h" 10 #include "chrome/browser/engagement/site_engagement_service_factory.h"
11 #include "chrome/common/chrome_switches.h" 11 #include "chrome/common/chrome_switches.h"
12 #include "chrome/test/base/browser_with_test_window_test.h" 12 #include "chrome/test/base/browser_with_test_window_test.h"
13 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
14 14
15 namespace { 15 namespace {
16 16
17 const int kLessNavigationsThanNeededToMaxDailyEngagement = 2; 17 const int kLessAccumulationsThanNeededToMaxDailyEngagement = 2;
18 const int kMoreNavigationsThanNeededToMaxDailyEngagement = 20; 18 const int kMoreAccumulationsThanNeededToMaxDailyEngagement = 40;
19 const int kMoreNavigationsThanNeededToMaxTotalEngagement = 200; 19 const int kMoreAccumulationsThanNeededToMaxTotalEngagement = 200;
20 const int kLessDaysThanNeededToMaxTotalEngagement = 4; 20 const int kLessDaysThanNeededToMaxTotalEngagement = 4;
21 const int kMoreDaysThanNeededToMaxTotalEngagement = 40; 21 const int kMoreDaysThanNeededToMaxTotalEngagement = 40;
22 const int kLessPeriodsThanNeededToDecayMaxScore = 2; 22 const int kLessPeriodsThanNeededToDecayMaxScore = 2;
23 const int kMorePeriodsThanNeededToDecayMaxScore = 40; 23 const int kMorePeriodsThanNeededToDecayMaxScore = 40;
24 24
25 base::Time GetReferenceTime() { 25 base::Time GetReferenceTime() {
26 base::Time::Exploded exploded_reference_time; 26 base::Time::Exploded exploded_reference_time;
27 exploded_reference_time.year = 2015; 27 exploded_reference_time.year = 2015;
28 exploded_reference_time.month = 1; 28 exploded_reference_time.month = 1;
29 exploded_reference_time.day_of_month = 30; 29 exploded_reference_time.day_of_month = 30;
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 UpdateScore(&initial_score, 5, 10, different_day); 81 UpdateScore(&initial_score, 5, 10, different_day);
82 EXPECT_TRUE(initial_score.UpdateScoreDict(score_dict)); 82 EXPECT_TRUE(initial_score.UpdateScoreDict(score_dict));
83 SiteEngagementScore updated_score(&test_clock_, *score_dict); 83 SiteEngagementScore updated_score(&test_clock_, *score_dict);
84 VerifyScore(updated_score, 5, 10, different_day); 84 VerifyScore(updated_score, 5, 10, different_day);
85 } 85 }
86 86
87 base::SimpleTestClock test_clock_; 87 base::SimpleTestClock test_clock_;
88 SiteEngagementScore score_; 88 SiteEngagementScore score_;
89 }; 89 };
90 90
91 // Navigate many times on the same day. Ensure each time the score goes up by 91 // Accumulate score many times on the same day. Ensure each time the score goes
92 // kNavigationPoints, but not more than kMaxPointsPerDay. 92 // up by kNavigationPoints, but not more than kMaxPointsPerDay.
93 TEST_F(SiteEngagementScoreTest, NavigateOnSameDay) { 93 TEST_F(SiteEngagementScoreTest, AccumulateOnSameDay) {
94 base::Time reference_time = GetReferenceTime(); 94 base::Time reference_time = GetReferenceTime();
95 95
96 test_clock_.SetNow(reference_time); 96 test_clock_.SetNow(reference_time);
97 for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) { 97 for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) {
98 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 98 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
99 EXPECT_EQ(std::min(SiteEngagementScore::kMaxPointsPerDay, 99 EXPECT_EQ(std::min(SiteEngagementScore::kMaxPointsPerDay,
100 (i + 1) * SiteEngagementScore::kNavigationPoints), 100 (i + 1) * SiteEngagementScore::kNavigationPoints),
101 score_.Score()); 101 score_.Score());
102 } 102 }
103 103
104 EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score()); 104 EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score());
105 } 105 }
106 106
107 // Navigate on the first day to max that day's engagement, then navigate on a 107 // Accumulate on the first day to max that day's engagement, then accumulate on
108 // different day. 108 // a different day.
109 TEST_F(SiteEngagementScoreTest, NavigateOnTwoDays) { 109 TEST_F(SiteEngagementScoreTest, AccumulateOnTwoDays) {
110 base::Time reference_time = GetReferenceTime(); 110 base::Time reference_time = GetReferenceTime();
111 base::Time later_date = reference_time + base::TimeDelta::FromDays(2); 111 base::Time later_date = reference_time + base::TimeDelta::FromDays(2);
112 112
113 test_clock_.SetNow(reference_time); 113 test_clock_.SetNow(reference_time);
114 for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) 114 for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i)
115 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 115 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
116 116
117 EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score()); 117 EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score());
118 118
119 test_clock_.SetNow(later_date); 119 test_clock_.SetNow(later_date);
120 for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) { 120 for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) {
121 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 121 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
122 double day_score = 122 double day_score =
123 std::min(SiteEngagementScore::kMaxPointsPerDay, 123 std::min(SiteEngagementScore::kMaxPointsPerDay,
124 (i + 1) * SiteEngagementScore::kNavigationPoints); 124 (i + 1) * SiteEngagementScore::kNavigationPoints);
125 EXPECT_EQ(day_score + SiteEngagementScore::kMaxPointsPerDay, 125 EXPECT_EQ(day_score + SiteEngagementScore::kMaxPointsPerDay,
126 score_.Score()); 126 score_.Score());
127 } 127 }
128 128
129 EXPECT_EQ(2 * SiteEngagementScore::kMaxPointsPerDay, score_.Score()); 129 EXPECT_EQ(2 * SiteEngagementScore::kMaxPointsPerDay, score_.Score());
130 } 130 }
131 131
132 // Navigate a lot on many consecutive days and ensure the score doesn't exceed 132 // Accumulate score on many consecutive days and ensure the score doesn't exceed
133 // the maximum allowed. 133 // the maximum allowed.
134 TEST_F(SiteEngagementScoreTest, NavigateALotOnManyDays) { 134 TEST_F(SiteEngagementScoreTest, AccumulateALotOnManyDays) {
135 base::Time current_day = GetReferenceTime(); 135 base::Time current_day = GetReferenceTime();
136 136
137 for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) { 137 for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) {
138 current_day += base::TimeDelta::FromDays(1); 138 current_day += base::TimeDelta::FromDays(1);
139 test_clock_.SetNow(current_day); 139 test_clock_.SetNow(current_day);
140 for (int j = 0; j < kMoreNavigationsThanNeededToMaxDailyEngagement; ++j) 140 for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j)
141 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 141 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
142 142
143 EXPECT_EQ(std::min(SiteEngagementScore::kMaxPoints, 143 EXPECT_EQ(std::min(SiteEngagementScore::kMaxPoints,
144 (i + 1) * SiteEngagementScore::kMaxPointsPerDay), 144 (i + 1) * SiteEngagementScore::kMaxPointsPerDay),
145 score_.Score()); 145 score_.Score());
146 } 146 }
147 147
148 EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score()); 148 EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score());
149 } 149 }
150 150
151 // Navigate a little on many consecutive days and ensure the score doesn't 151 // Accumulate a little on many consecutive days and ensure the score doesn't
152 // exceed the maximum allowed. 152 // exceed the maximum allowed.
153 TEST_F(SiteEngagementScoreTest, NavigateALittleOnManyDays) { 153 TEST_F(SiteEngagementScoreTest, AccumulateALittleOnManyDays) {
154 base::Time current_day = GetReferenceTime(); 154 base::Time current_day = GetReferenceTime();
155 155
156 for (int i = 0; i < kMoreNavigationsThanNeededToMaxTotalEngagement; ++i) { 156 for (int i = 0; i < kMoreAccumulationsThanNeededToMaxTotalEngagement; ++i) {
157 current_day += base::TimeDelta::FromDays(1); 157 current_day += base::TimeDelta::FromDays(1);
158 test_clock_.SetNow(current_day); 158 test_clock_.SetNow(current_day);
159 159
160 for (int j = 0; j < kLessNavigationsThanNeededToMaxDailyEngagement; ++j) 160 for (int j = 0; j < kLessAccumulationsThanNeededToMaxDailyEngagement; ++j)
161 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 161 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
162 162
163 EXPECT_EQ( 163 EXPECT_EQ(
164 std::min(SiteEngagementScore::kMaxPoints, 164 std::min(SiteEngagementScore::kMaxPoints,
165 (i + 1) * kLessNavigationsThanNeededToMaxDailyEngagement * 165 (i + 1) * kLessAccumulationsThanNeededToMaxDailyEngagement *
166 SiteEngagementScore::kNavigationPoints), 166 SiteEngagementScore::kNavigationPoints),
167 score_.Score()); 167 score_.Score());
168 } 168 }
169 169
170 EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score()); 170 EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score());
171 } 171 }
172 172
173 // Navigate a bit, then check the score decays properly for a range of times. 173 // Accumulate a bit, then check the score decays properly for a range of times.
174 TEST_F(SiteEngagementScoreTest, ScoresDecayOverTime) { 174 TEST_F(SiteEngagementScoreTest, ScoresDecayOverTime) {
175 base::Time current_day = GetReferenceTime(); 175 base::Time current_day = GetReferenceTime();
176 176
177 // First max the score. 177 // First max the score.
178 for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) { 178 for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) {
179 current_day += base::TimeDelta::FromDays(1); 179 current_day += base::TimeDelta::FromDays(1);
180 test_clock_.SetNow(current_day); 180 test_clock_.SetNow(current_day);
181 181
182 for (int j = 0; j < kMoreNavigationsThanNeededToMaxDailyEngagement; ++j) 182 for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j)
183 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 183 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
184 } 184 }
185 185
186 EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score()); 186 EXPECT_EQ(SiteEngagementScore::kMaxPoints, score_.Score());
187 187
188 // The score should not have decayed before the first decay period has 188 // The score should not have decayed before the first decay period has
189 // elapsed. 189 // elapsed.
190 test_clock_.SetNow( 190 test_clock_.SetNow(
191 current_day + 191 current_day +
192 base::TimeDelta::FromDays(SiteEngagementScore::kDecayPeriodInDays - 1)); 192 base::TimeDelta::FromDays(SiteEngagementScore::kDecayPeriodInDays - 1));
(...skipping 28 matching lines...) Expand all
221 221
222 // Test that any expected decays are applied before adding points. 222 // Test that any expected decays are applied before adding points.
223 TEST_F(SiteEngagementScoreTest, DecaysAppliedBeforeAdd) { 223 TEST_F(SiteEngagementScoreTest, DecaysAppliedBeforeAdd) {
224 base::Time current_day = GetReferenceTime(); 224 base::Time current_day = GetReferenceTime();
225 225
226 // Get the score up to something that can handle a bit of decay before 226 // Get the score up to something that can handle a bit of decay before
227 for (int i = 0; i < kLessDaysThanNeededToMaxTotalEngagement; ++i) { 227 for (int i = 0; i < kLessDaysThanNeededToMaxTotalEngagement; ++i) {
228 current_day += base::TimeDelta::FromDays(1); 228 current_day += base::TimeDelta::FromDays(1);
229 test_clock_.SetNow(current_day); 229 test_clock_.SetNow(current_day);
230 230
231 for (int j = 0; j < kMoreNavigationsThanNeededToMaxDailyEngagement; ++j) 231 for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j)
232 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 232 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
233 } 233 }
234 234
235 double initial_score = kLessDaysThanNeededToMaxTotalEngagement * 235 double initial_score = kLessDaysThanNeededToMaxTotalEngagement *
236 SiteEngagementScore::kMaxPointsPerDay; 236 SiteEngagementScore::kMaxPointsPerDay;
237 EXPECT_EQ(initial_score, score_.Score()); 237 EXPECT_EQ(initial_score, score_.Score());
238 238
239 // Go forward a few decay periods. 239 // Go forward a few decay periods.
240 test_clock_.SetNow( 240 test_clock_.SetNow(
241 current_day + 241 current_day +
242 base::TimeDelta::FromDays(kLessPeriodsThanNeededToDecayMaxScore * 242 base::TimeDelta::FromDays(kLessPeriodsThanNeededToDecayMaxScore *
243 SiteEngagementScore::kDecayPeriodInDays)); 243 SiteEngagementScore::kDecayPeriodInDays));
244 244
245 double decayed_score = 245 double decayed_score =
246 initial_score - 246 initial_score -
247 kLessPeriodsThanNeededToDecayMaxScore * SiteEngagementScore::kDecayPoints; 247 kLessPeriodsThanNeededToDecayMaxScore * SiteEngagementScore::kDecayPoints;
248 EXPECT_EQ(decayed_score, score_.Score()); 248 EXPECT_EQ(decayed_score, score_.Score());
249 249
250 // Now add some points. 250 // Now add some points.
251 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 251 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
252 EXPECT_EQ(decayed_score + SiteEngagementScore::kNavigationPoints, 252 EXPECT_EQ(decayed_score + SiteEngagementScore::kNavigationPoints,
253 score_.Score()); 253 score_.Score());
254 } 254 }
255 255
256 // Test that going back in time is handled properly. 256 // Test that going back in time is handled properly.
257 TEST_F(SiteEngagementScoreTest, GoBackInTime) { 257 TEST_F(SiteEngagementScoreTest, GoBackInTime) {
258 base::Time current_day = GetReferenceTime(); 258 base::Time current_day = GetReferenceTime();
259 259
260 test_clock_.SetNow(current_day); 260 test_clock_.SetNow(current_day);
261 for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) 261 for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i)
262 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 262 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
263 263
264 EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score()); 264 EXPECT_EQ(SiteEngagementScore::kMaxPointsPerDay, score_.Score());
265 265
266 // Adding to the score on an earlier date should be treated like another day, 266 // Adding to the score on an earlier date should be treated like another day,
267 // and should not cause any decay. 267 // and should not cause any decay.
268 test_clock_.SetNow(current_day - base::TimeDelta::FromDays( 268 test_clock_.SetNow(current_day - base::TimeDelta::FromDays(
269 kMorePeriodsThanNeededToDecayMaxScore * 269 kMorePeriodsThanNeededToDecayMaxScore *
270 SiteEngagementScore::kDecayPoints)); 270 SiteEngagementScore::kDecayPoints));
271 for (int i = 0; i < kMoreNavigationsThanNeededToMaxDailyEngagement; ++i) { 271 for (int i = 0; i < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++i) {
272 score_.AddPoints(SiteEngagementScore::kNavigationPoints); 272 score_.AddPoints(SiteEngagementScore::kNavigationPoints);
273 double day_score = 273 double day_score =
274 std::min(SiteEngagementScore::kMaxPointsPerDay, 274 std::min(SiteEngagementScore::kMaxPointsPerDay,
275 (i + 1) * SiteEngagementScore::kNavigationPoints); 275 (i + 1) * SiteEngagementScore::kNavigationPoints);
276 EXPECT_EQ(day_score + SiteEngagementScore::kMaxPointsPerDay, 276 EXPECT_EQ(day_score + SiteEngagementScore::kMaxPointsPerDay,
277 score_.Score()); 277 score_.Score());
278 } 278 }
279 279
280 EXPECT_EQ(2 * SiteEngagementScore::kMaxPointsPerDay, score_.Score()); 280 EXPECT_EQ(2 * SiteEngagementScore::kMaxPointsPerDay, score_.Score());
281 } 281 }
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 public: 313 public:
314 SiteEngagementServiceTest() {} 314 SiteEngagementServiceTest() {}
315 315
316 void SetUp() override { 316 void SetUp() override {
317 BrowserWithTestWindowTest::SetUp(); 317 BrowserWithTestWindowTest::SetUp();
318 base::CommandLine::ForCurrentProcess()->AppendSwitch( 318 base::CommandLine::ForCurrentProcess()->AppendSwitch(
319 switches::kEnableSiteEngagementService); 319 switches::kEnableSiteEngagementService);
320 } 320 }
321 }; 321 };
322 322
323
324 // Tests that the Site Engagement service is hooked up properly to navigations 323 // Tests that the Site Engagement service is hooked up properly to navigations
325 // by performing two navigations and checking the engagement score increases 324 // by performing two navigations and checking the engagement score increases
326 // both times. 325 // both times.
327 TEST_F(SiteEngagementServiceTest, ScoreIncrementsOnPageRequest) { 326 TEST_F(SiteEngagementServiceTest, ScoreIncrementsOnPageRequest) {
328 SiteEngagementService* service = 327 SiteEngagementService* service =
329 SiteEngagementServiceFactory::GetForProfile(profile()); 328 SiteEngagementServiceFactory::GetForProfile(profile());
330 DCHECK(service); 329 DCHECK(service);
331 330
332 GURL url("http://www.google.com/"); 331 GURL url("http://www.google.com/");
333 332
334 AddTab(browser(), GURL("about:blank")); 333 AddTab(browser(), GURL("about:blank"));
335 EXPECT_EQ(0, service->GetScore(url)); 334 EXPECT_EQ(0, service->GetScore(url));
336 int prev_score = service->GetScore(url); 335 double prev_score = service->GetScore(url);
337 336
338 NavigateAndCommitActiveTab(url); 337 NavigateAndCommitActiveTab(url);
339 EXPECT_LT(prev_score, service->GetScore(url)); 338 EXPECT_LT(prev_score, service->GetScore(url));
340 prev_score = service->GetScore(url); 339 prev_score = service->GetScore(url);
341 340
342 NavigateAndCommitActiveTab(url); 341 NavigateAndCommitActiveTab(url);
343 EXPECT_LT(prev_score, service->GetScore(url)); 342 EXPECT_LT(prev_score, service->GetScore(url));
344 } 343 }
345 344
346 // Expect that site engagement scores for several sites are correctly aggregated 345 // Expect that site engagement scores for several sites are correctly aggregated
347 // by GetTotalEngagementPoints(). 346 // by GetTotalEngagementPoints().
348 TEST_F(SiteEngagementServiceTest, GetTotalEngagementPoints) { 347 TEST_F(SiteEngagementServiceTest, GetTotalNavigationPoints) {
349 SiteEngagementService* service = 348 SiteEngagementService* service =
350 SiteEngagementServiceFactory::GetForProfile(profile()); 349 SiteEngagementServiceFactory::GetForProfile(profile());
351 DCHECK(service); 350 DCHECK(service);
352 351
353 // The https and http versions of www.google.com should be separate. 352 // The https and http versions of www.google.com should be separate.
354 GURL url1("https://www.google.com/"); 353 GURL url1("https://www.google.com/");
355 GURL url2("http://www.google.com/"); 354 GURL url2("http://www.google.com/");
356 GURL url3("http://drive.google.com/"); 355 GURL url3("http://drive.google.com/");
357 356
358 EXPECT_EQ(0, service->GetScore(url1)); 357 EXPECT_EQ(0, service->GetScore(url1));
359 EXPECT_EQ(0, service->GetScore(url2)); 358 EXPECT_EQ(0, service->GetScore(url2));
360 EXPECT_EQ(0, service->GetScore(url3)); 359 EXPECT_EQ(0, service->GetScore(url3));
361 360
362 service->HandleNavigation(url1); 361 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED);
363 EXPECT_EQ(1, service->GetScore(url1)); 362 EXPECT_EQ(0.5, service->GetScore(url1));
364 EXPECT_EQ(1, service->GetTotalEngagementPoints()); 363 EXPECT_EQ(0.5, service->GetTotalEngagementPoints());
365 364
366 service->HandleNavigation(url2); 365 service->HandleNavigation(url2, ui::PAGE_TRANSITION_GENERATED);
367 service->HandleNavigation(url2); 366 service->HandleNavigation(url2, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
368 EXPECT_EQ(2, service->GetScore(url2)); 367 EXPECT_EQ(1, service->GetScore(url2));
368 EXPECT_EQ(1.5, service->GetTotalEngagementPoints());
369
370 service->HandleNavigation(url3, ui::PAGE_TRANSITION_TYPED);
371 EXPECT_EQ(0.5, service->GetScore(url3));
372 EXPECT_EQ(2, service->GetTotalEngagementPoints());
373
374 service->HandleNavigation(url1, ui::PAGE_TRANSITION_GENERATED);
375 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED);
376 EXPECT_EQ(1.5, service->GetScore(url1));
369 EXPECT_EQ(3, service->GetTotalEngagementPoints()); 377 EXPECT_EQ(3, service->GetTotalEngagementPoints());
378 }
370 379
371 service->HandleNavigation(url3); 380 TEST_F(SiteEngagementServiceTest, GetTotalUserInputPoints) {
372 EXPECT_EQ(1, service->GetScore(url3)); 381 SiteEngagementService* service =
373 EXPECT_EQ(4, service->GetTotalEngagementPoints()); 382 SiteEngagementServiceFactory::GetForProfile(profile());
383 DCHECK(service);
374 384
375 service->HandleNavigation(url1); 385 // The https and http versions of www.google.com should be separate.
376 service->HandleNavigation(url1); 386 GURL url1("https://www.google.com/");
377 EXPECT_EQ(3, service->GetScore(url1)); 387 GURL url2("http://www.google.com/");
378 EXPECT_EQ(6, service->GetTotalEngagementPoints()); 388 GURL url3("http://drive.google.com/");
389
390 EXPECT_EQ(0, service->GetScore(url1));
391 EXPECT_EQ(0, service->GetScore(url2));
392 EXPECT_EQ(0, service->GetScore(url3));
393
394 service->HandleUserInput(url1);
395 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url1));
396 EXPECT_DOUBLE_EQ(0.05, service->GetTotalEngagementPoints());
397
398 service->HandleUserInput(url2);
399 service->HandleUserInput(url2);
400 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url2));
401 EXPECT_DOUBLE_EQ(0.15, service->GetTotalEngagementPoints());
402
403 service->HandleUserInput(url3);
404 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url3));
405 EXPECT_DOUBLE_EQ(0.2, service->GetTotalEngagementPoints());
406
407 service->HandleUserInput(url1);
408 service->HandleUserInput(url1);
409 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url1));
410 EXPECT_DOUBLE_EQ(0.3, service->GetTotalEngagementPoints());
379 } 411 }
OLDNEW
« 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