OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |