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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "chrome/browser/banners/app_banner_settings_helper.h" | 7 #include "chrome/browser/banners/app_banner_settings_helper.h" |
8 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 8 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
9 #include "ui/base/page_transition_types.h" | 9 #include "ui/base/page_transition_types.h" |
10 | 10 |
(...skipping 24 matching lines...) Expand all Loading... | |
35 | 35 |
36 bool IsWithinHour(base::Time time1, base::Time time2) { | 36 bool IsWithinHour(base::Time time1, base::Time time2) { |
37 return time1 - time2 < base::TimeDelta::FromHours(1) || | 37 return time1 - time2 < base::TimeDelta::FromHours(1) || |
38 time2 - time1 < base::TimeDelta::FromHours(1); | 38 time2 - time1 < base::TimeDelta::FromHours(1); |
39 } | 39 } |
40 | 40 |
41 class AppBannerSettingsHelperTest : public ChromeRenderViewHostTestHarness {}; | 41 class AppBannerSettingsHelperTest : public ChromeRenderViewHostTestHarness {}; |
42 | 42 |
43 } // namespace | 43 } // namespace |
44 | 44 |
45 TEST_F(AppBannerSettingsHelperTest, BucketTimeToResolutionInvalid) { | |
46 base::Time reference_time = GetReferenceTime(); | |
47 | |
48 // Test null, 1 day, and greater than 1 day cases. | |
49 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, | |
50 base::TimeDelta::FromDays(0)), | |
51 reference_time.LocalMidnight()); | |
52 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
53 reference_time, base::TimeDelta::FromMinutes(1440)), | |
54 reference_time.LocalMidnight()); | |
55 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, | |
56 base::TimeDelta::FromDays(2)), | |
57 reference_time.LocalMidnight()); | |
58 | |
59 // Test number of minutes in 1 day + 1. | |
60 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
61 reference_time, base::TimeDelta::FromMinutes(1441)), | |
62 reference_time.LocalMidnight()); | |
63 | |
64 // Test minutes which are not divisible by 1440 (minutes in a day). | |
65 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
66 reference_time, base::TimeDelta::FromMinutes(7)), | |
67 reference_time.LocalMidnight()); | |
68 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
69 reference_time, base::TimeDelta::FromMinutes(13)), | |
70 reference_time.LocalMidnight()); | |
71 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
72 reference_time, base::TimeDelta::FromMinutes(21)), | |
73 reference_time.LocalMidnight()); | |
74 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
75 reference_time, base::TimeDelta::FromMinutes(35)), | |
76 reference_time.LocalMidnight()); | |
77 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
78 reference_time, base::TimeDelta::FromMinutes(42)), | |
79 reference_time.LocalMidnight()); | |
80 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
81 reference_time, base::TimeDelta::FromMinutes(50)), | |
82 reference_time.LocalMidnight()); | |
83 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
84 reference_time, base::TimeDelta::FromMinutes(59)), | |
85 reference_time.LocalMidnight()); | |
86 } | |
87 | |
88 TEST_F(AppBannerSettingsHelperTest, BucketTimeToResolutionValid) { | |
89 // 11:00 | |
90 base::Time reference_time = GetReferenceTime(); | |
91 // 13:44 | |
92 base::Time same_day_later = | |
93 reference_time + base::TimeDelta::FromMinutes(164); | |
94 // 10:18 | |
95 base::Time same_day_earlier = | |
96 reference_time - base::TimeDelta::FromMinutes(42); | |
97 base::Time midnight = reference_time.LocalMidnight(); | |
98 base::Time bucketed_hour = midnight + base::TimeDelta::FromHours(11); | |
99 base::Time bucketed_hour_later = midnight + base::TimeDelta::FromHours(13); | |
100 base::Time bucketed_hour_earlier = midnight + base::TimeDelta::FromHours(10); | |
101 | |
102 // Resolution of 1 minute: 11:00, 13:44, 10:18. | |
103 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
104 reference_time, base::TimeDelta::FromMinutes(1)), | |
105 bucketed_hour); | |
106 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
107 same_day_later, base::TimeDelta::FromMinutes(1)), | |
108 bucketed_hour_later + base::TimeDelta::FromMinutes(44)); | |
109 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
110 same_day_earlier, base::TimeDelta::FromMinutes(1)), | |
111 bucketed_hour_earlier + base::TimeDelta::FromMinutes(18)); | |
112 | |
113 // Resolution of 3 minutes: 11:00, 13:43, 10:18. | |
114 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
115 reference_time, base::TimeDelta::FromMinutes(3)), | |
116 bucketed_hour); | |
117 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
118 same_day_later, base::TimeDelta::FromMinutes(3)), | |
119 bucketed_hour_later + base::TimeDelta::FromMinutes(42)); | |
120 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
121 same_day_earlier, base::TimeDelta::FromMinutes(3)), | |
122 bucketed_hour_earlier + base::TimeDelta::FromMinutes(18)); | |
123 | |
124 // Resolution of 10 minutes: 11:00, 13:40, 10:10. | |
125 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
126 reference_time, base::TimeDelta::FromMinutes(10)), | |
127 bucketed_hour); | |
128 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
129 same_day_later, base::TimeDelta::FromMinutes(10)), | |
130 bucketed_hour_later + base::TimeDelta::FromMinutes(40)); | |
131 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
132 same_day_earlier, base::TimeDelta::FromMinutes(10)), | |
133 bucketed_hour_earlier + base::TimeDelta::FromMinutes(10)); | |
134 | |
135 // Resolution of 20 minutes: 11:00, 13:40, 10:00. | |
136 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
137 reference_time, base::TimeDelta::FromMinutes(20)), | |
138 bucketed_hour); | |
139 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
140 same_day_later, base::TimeDelta::FromMinutes(20)), | |
141 bucketed_hour_later + base::TimeDelta::FromMinutes(40)); | |
142 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
143 same_day_earlier, base::TimeDelta::FromMinutes(20)), | |
144 bucketed_hour_earlier); | |
145 | |
146 // Resolution of 60 minutes: 11:00, 13:00, 10:00. | |
147 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
148 reference_time, base::TimeDelta::FromMinutes(60)), | |
149 bucketed_hour); | |
150 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
151 same_day_later, base::TimeDelta::FromMinutes(60)), | |
152 bucketed_hour_later); | |
153 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
154 same_day_earlier, base::TimeDelta::FromMinutes(60)), | |
155 bucketed_hour_earlier); | |
156 | |
157 // Resolution of 120 minutes: 10:00, 12:00, 10:00. | |
158 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
159 reference_time, base::TimeDelta::FromMinutes(120)), | |
160 bucketed_hour_earlier); | |
161 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
162 same_day_later, base::TimeDelta::FromMinutes(120)), | |
163 bucketed_hour_later - base::TimeDelta::FromHours(1)); | |
164 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
165 same_day_earlier, base::TimeDelta::FromMinutes(120)), | |
166 bucketed_hour_earlier); | |
167 | |
168 // Resolution of 180 minutes: 9:00, 12:00, 9:00. | |
169 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
170 reference_time, base::TimeDelta::FromMinutes(180)), | |
171 bucketed_hour_earlier - base::TimeDelta::FromHours(1)); | |
172 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
173 same_day_later, base::TimeDelta::FromMinutes(180)), | |
174 bucketed_hour_later - base::TimeDelta::FromHours(1)); | |
175 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
176 same_day_earlier, base::TimeDelta::FromMinutes(180)), | |
177 bucketed_hour_earlier - base::TimeDelta::FromHours(1)); | |
178 | |
179 // Resolution of 240 minutes: 8:00, 12:00, 8:00. | |
180 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
181 reference_time, base::TimeDelta::FromMinutes(240)), | |
182 midnight + base::TimeDelta::FromHours(8)); | |
183 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
184 same_day_later, base::TimeDelta::FromMinutes(240)), | |
185 midnight + base::TimeDelta::FromHours(12)); | |
186 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
187 same_day_earlier, base::TimeDelta::FromMinutes(240)), | |
188 midnight + base::TimeDelta::FromHours(8)); | |
189 | |
190 // Resolution of 360 minutes: 6:00, 12:00, 6:00 | |
191 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
192 reference_time, base::TimeDelta::FromMinutes(360)), | |
193 midnight + base::TimeDelta::FromHours(6)); | |
194 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
195 same_day_later, base::TimeDelta::FromMinutes(360)), | |
196 midnight + base::TimeDelta::FromHours(12)); | |
197 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
198 same_day_earlier, base::TimeDelta::FromMinutes(360)), | |
199 midnight + base::TimeDelta::FromHours(6)); | |
200 | |
201 // Resolution of 720 minutes: 0:00, 12:00, 0:00 | |
202 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
203 reference_time, base::TimeDelta::FromMinutes(720)), | |
204 midnight); | |
205 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
206 same_day_later, base::TimeDelta::FromMinutes(720)), | |
207 midnight + base::TimeDelta::FromHours(12)); | |
208 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
209 same_day_earlier, base::TimeDelta::FromMinutes(720)), | |
210 midnight); | |
211 | |
212 // Resolution of 1440 minutes: 0:00, 0:00, 0:00 | |
213 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
214 reference_time, base::TimeDelta::FromMinutes(1440)), | |
215 midnight); | |
216 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
217 same_day_later, base::TimeDelta::FromMinutes(1440)), | |
218 midnight); | |
219 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution( | |
220 same_day_earlier, base::TimeDelta::FromMinutes(1440)), | |
221 midnight); | |
222 } | |
223 | |
45 TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) { | 224 TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) { |
46 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 225 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
226 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); | |
47 GURL url(kTestURL); | 227 GURL url(kTestURL); |
48 NavigateAndCommit(url); | 228 NavigateAndCommit(url); |
49 | 229 |
50 // Check that by default, there are no events recorded. | 230 // Check that by default, there are no events recorded. |
51 std::vector<AppBannerSettingsHelper::BannerEvent> events = | 231 std::vector<AppBannerSettingsHelper::BannerEvent> events = |
52 AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url, | 232 AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url, |
53 kTestPackageName); | 233 kTestPackageName); |
54 EXPECT_TRUE(events.empty()); | 234 EXPECT_TRUE(events.empty()); |
55 | 235 |
56 base::Time reference_time = GetReferenceTime(); | 236 base::Time reference_time = GetReferenceTime(); |
(...skipping 12 matching lines...) Expand all Loading... | |
69 web_contents(), url, kTestPackageName); | 249 web_contents(), url, kTestPackageName); |
70 EXPECT_EQ(1u, events.size()); | 250 EXPECT_EQ(1u, events.size()); |
71 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); | 251 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); |
72 EXPECT_EQ(events[0].engagement, 1); | 252 EXPECT_EQ(events[0].engagement, 1); |
73 | 253 |
74 // Now add the next date. | 254 // Now add the next date. |
75 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 255 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
76 web_contents(), url, kTestPackageName, three_days_prior, | 256 web_contents(), url, kTestPackageName, three_days_prior, |
77 ui::PAGE_TRANSITION_GENERATED); | 257 ui::PAGE_TRANSITION_GENERATED); |
78 | 258 |
79 // Now there should be two days. | 259 // Now there should be two events. |
80 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | 260 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
81 web_contents(), url, kTestPackageName); | 261 web_contents(), url, kTestPackageName); |
82 EXPECT_EQ(2u, events.size()); | 262 EXPECT_EQ(2u, events.size()); |
83 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); | 263 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); |
84 EXPECT_TRUE(IsWithinDay(events[1].time, three_days_prior)); | 264 EXPECT_TRUE(IsWithinDay(events[1].time, three_days_prior)); |
85 EXPECT_EQ(events[0].engagement, 1); | 265 EXPECT_EQ(events[0].engagement, 1); |
86 EXPECT_EQ(events[1].engagement, 1); | 266 EXPECT_EQ(events[1].engagement, 1); |
87 | 267 |
88 // Now add the reference date. | 268 // Now add the reference date. |
89 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 269 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
90 web_contents(), url, kTestPackageName, reference_time, | 270 web_contents(), url, kTestPackageName, reference_time, |
91 ui::PAGE_TRANSITION_LINK); | 271 ui::PAGE_TRANSITION_LINK); |
92 | 272 |
93 // Now there should still be two days, but the first date should have been | 273 // Now there should still be two events, but the first date should have been |
94 // removed. | 274 // removed. |
95 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | 275 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
96 web_contents(), url, kTestPackageName); | 276 web_contents(), url, kTestPackageName); |
97 EXPECT_EQ(2u, events.size()); | 277 EXPECT_EQ(2u, events.size()); |
98 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); | 278 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); |
99 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); | 279 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); |
100 EXPECT_EQ(events[0].engagement, 1); | 280 EXPECT_EQ(events[0].engagement, 1); |
101 EXPECT_EQ(events[1].engagement, 1); | 281 EXPECT_EQ(events[1].engagement, 1); |
102 | 282 |
103 // Now add the the other day on the reference date. | 283 // Now add the the other date on the reference day. |
104 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 284 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
105 web_contents(), url, kTestPackageName, same_day, | 285 web_contents(), url, kTestPackageName, same_day, |
106 ui::PAGE_TRANSITION_RELOAD); | 286 ui::PAGE_TRANSITION_RELOAD); |
107 | 287 |
108 // Now there should still be the same two days. | 288 // Now there should still be the same two dates. |
109 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | 289 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
110 web_contents(), url, kTestPackageName); | 290 web_contents(), url, kTestPackageName); |
111 EXPECT_EQ(2u, events.size()); | 291 EXPECT_EQ(2u, events.size()); |
112 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); | 292 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); |
113 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); | 293 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); |
114 EXPECT_EQ(events[0].engagement, 1); | 294 EXPECT_EQ(events[0].engagement, 1); |
115 EXPECT_EQ(events[1].engagement, 1); | 295 EXPECT_EQ(events[1].engagement, 1); |
116 } | 296 } |
117 | 297 |
298 TEST_F(AppBannerSettingsHelperTest, CouldShowEventsDifferentResolution) { | |
299 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | |
300 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(20); | |
301 GURL url(kTestURL); | |
302 NavigateAndCommit(url); | |
303 | |
304 // Check that by default, there are no events recorded. | |
305 std::vector<AppBannerSettingsHelper::BannerEvent> events = | |
306 AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url, | |
307 kTestPackageName); | |
308 EXPECT_TRUE(events.empty()); | |
309 | |
310 base::Time reference_time = GetReferenceTime(); | |
311 base::Time same_day_ignored_i = | |
312 reference_time + base::TimeDelta::FromMinutes(10); | |
313 base::Time same_day_counted_i = | |
314 reference_time + base::TimeDelta::FromMinutes(20); | |
315 base::Time same_day_counted_ii = | |
316 reference_time + base::TimeDelta::FromMinutes(45); | |
317 base::Time same_day_ignored_ii = | |
318 reference_time + base::TimeDelta::FromMinutes(59); | |
319 | |
320 // Add the reference date. | |
321 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | |
322 web_contents(), url, kTestPackageName, reference_time, | |
323 ui::PAGE_TRANSITION_LINK); | |
324 | |
325 // There should be one event recorded | |
326 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | |
327 web_contents(), url, kTestPackageName); | |
328 EXPECT_EQ(1u, events.size()); | |
329 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); | |
330 EXPECT_EQ(events[0].engagement, 1); | |
331 | |
332 // Now add the the ignored date on the reference day. | |
333 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | |
334 web_contents(), url, kTestPackageName, same_day_ignored_i, | |
335 ui::PAGE_TRANSITION_RELOAD); | |
336 | |
337 // Now there should still one event. | |
338 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | |
339 web_contents(), url, kTestPackageName); | |
340 EXPECT_EQ(1u, events.size()); | |
341 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); | |
342 EXPECT_EQ(events[0].engagement, 1); | |
343 | |
344 // Now add the the first counted date on the reference day. | |
345 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | |
346 web_contents(), url, kTestPackageName, same_day_counted_i, | |
347 ui::PAGE_TRANSITION_TYPED); | |
348 | |
349 // Now there should be two events. | |
350 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | |
351 web_contents(), url, kTestPackageName); | |
352 EXPECT_EQ(2u, events.size()); | |
353 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); | |
354 EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i)); | |
355 EXPECT_EQ(events[0].engagement, 1); | |
356 EXPECT_EQ(events[1].engagement, 1); | |
357 | |
358 // Now add the the second counted date on the reference day. | |
359 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | |
360 web_contents(), url, kTestPackageName, same_day_counted_ii, | |
361 ui::PAGE_TRANSITION_GENERATED); | |
362 | |
363 // Now there should be three events. | |
364 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | |
365 web_contents(), url, kTestPackageName); | |
366 EXPECT_EQ(3u, events.size()); | |
367 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); | |
368 EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i)); | |
369 EXPECT_TRUE(IsWithinDay(events[2].time, same_day_counted_ii)); | |
370 EXPECT_EQ(events[0].engagement, 1); | |
371 EXPECT_EQ(events[1].engagement, 1); | |
372 EXPECT_EQ(events[2].engagement, 1); | |
373 | |
374 // Now add the the second ignored date on the reference day. | |
375 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | |
376 web_contents(), url, kTestPackageName, same_day_ignored_ii, | |
377 ui::PAGE_TRANSITION_LINK); | |
378 | |
379 // Now there should still be three events. | |
380 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | |
381 web_contents(), url, kTestPackageName); | |
382 EXPECT_EQ(3u, events.size()); | |
383 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); | |
384 EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i)); | |
385 EXPECT_TRUE(IsWithinDay(events[2].time, same_day_counted_ii)); | |
386 EXPECT_EQ(events[0].engagement, 1); | |
387 EXPECT_EQ(events[1].engagement, 1); | |
388 EXPECT_EQ(events[2].engagement, 1); | |
389 } | |
390 | |
118 TEST_F(AppBannerSettingsHelperTest, SingleEvents) { | 391 TEST_F(AppBannerSettingsHelperTest, SingleEvents) { |
119 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 392 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
393 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); | |
120 GURL url(kTestURL); | 394 GURL url(kTestURL); |
121 NavigateAndCommit(url); | 395 NavigateAndCommit(url); |
122 | 396 |
123 base::Time reference_time = GetReferenceTime(); | 397 base::Time reference_time = GetReferenceTime(); |
124 base::Time other_time = reference_time - base::TimeDelta::FromDays(3); | 398 base::Time other_time = reference_time - base::TimeDelta::FromDays(3); |
125 for (int event = AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW; | 399 for (int event = AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW; |
126 event < AppBannerSettingsHelper::APP_BANNER_EVENT_NUM_EVENTS; ++event) { | 400 event < AppBannerSettingsHelper::APP_BANNER_EVENT_NUM_EVENTS; ++event) { |
127 // Check that by default, there is no event. | 401 // Check that by default, there is no event. |
128 base::Time event_time = AppBannerSettingsHelper::GetSingleBannerEvent( | 402 base::Time event_time = AppBannerSettingsHelper::GetSingleBannerEvent( |
129 web_contents(), url, kTestPackageName, | 403 web_contents(), url, kTestPackageName, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
232 | 506 |
233 EXPECT_EQ(2u, events.size()); | 507 EXPECT_EQ(2u, events.size()); |
234 EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day)); | 508 EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day)); |
235 EXPECT_EQ(4, events[0].engagement); | 509 EXPECT_EQ(4, events[0].engagement); |
236 EXPECT_TRUE(IsWithinHour(events[1].time, later_next_day)); | 510 EXPECT_TRUE(IsWithinHour(events[1].time, later_next_day)); |
237 EXPECT_EQ(4, events[1].engagement); | 511 EXPECT_EQ(4, events[1].engagement); |
238 } | 512 } |
239 | 513 |
240 TEST_F(AppBannerSettingsHelperTest, IndirectEngagementWithLowerWeight) { | 514 TEST_F(AppBannerSettingsHelperTest, IndirectEngagementWithLowerWeight) { |
241 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); | 515 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); |
516 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); | |
242 GURL url(kTestURL); | 517 GURL url(kTestURL); |
243 NavigateAndCommit(url); | 518 NavigateAndCommit(url); |
244 | 519 |
245 base::Time reference_time = GetReferenceTime(); | 520 base::Time reference_time = GetReferenceTime(); |
246 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); | 521 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); |
247 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); | 522 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); |
248 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); | 523 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); |
249 | 524 |
250 // By default the banner should not be shown. | 525 // By default the banner should not be shown. |
251 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 526 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
293 // It should take one direct visit with a weight of 2 to trigger the banner. | 568 // It should take one direct visit with a weight of 2 to trigger the banner. |
294 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 569 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
295 web_contents(), url, kTestPackageName, reference_time, | 570 web_contents(), url, kTestPackageName, reference_time, |
296 ui::PAGE_TRANSITION_TYPED); | 571 ui::PAGE_TRANSITION_TYPED); |
297 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 572 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( |
298 web_contents(), url, kTestPackageName, reference_time)); | 573 web_contents(), url, kTestPackageName, reference_time)); |
299 } | 574 } |
300 | 575 |
301 TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) { | 576 TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) { |
302 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 577 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
578 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); | |
303 GURL url(kTestURL); | 579 GURL url(kTestURL); |
304 NavigateAndCommit(url); | 580 NavigateAndCommit(url); |
305 | 581 |
306 base::Time reference_time = GetReferenceTime(); | 582 base::Time reference_time = GetReferenceTime(); |
307 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 583 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
308 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 584 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
309 | 585 |
310 // By default the banner should not be shown. | 586 // By default the banner should not be shown. |
311 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 587 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
312 web_contents(), url, kTestPackageName, reference_time)); | 588 web_contents(), url, kTestPackageName, reference_time)); |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
367 // Block the site more recently. Now it should not be shown. | 643 // Block the site more recently. Now it should not be shown. |
368 AppBannerSettingsHelper::RecordBannerEvent( | 644 AppBannerSettingsHelper::RecordBannerEvent( |
369 web_contents(), url, kTestPackageName, | 645 web_contents(), url, kTestPackageName, |
370 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, two_months_ago); | 646 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, two_months_ago); |
371 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 647 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
372 web_contents(), url, kTestPackageName, reference_time)); | 648 web_contents(), url, kTestPackageName, reference_time)); |
373 } | 649 } |
374 | 650 |
375 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) { | 651 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) { |
376 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 652 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
653 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); | |
377 GURL url(kTestURL); | 654 GURL url(kTestURL); |
378 NavigateAndCommit(url); | 655 NavigateAndCommit(url); |
379 | 656 |
380 base::Time reference_time = GetReferenceTime(); | 657 base::Time reference_time = GetReferenceTime(); |
381 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 658 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
382 base::Time three_weeks_ago = reference_time - base::TimeDelta::FromDays(21); | 659 base::Time three_weeks_ago = reference_time - base::TimeDelta::FromDays(21); |
383 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 660 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
384 | 661 |
385 // By default the banner should not be shown. | 662 // By default the banner should not be shown. |
386 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 663 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
(...skipping 19 matching lines...) Expand all Loading... | |
406 // Show the site more recently. Now it should not be shown. | 683 // Show the site more recently. Now it should not be shown. |
407 AppBannerSettingsHelper::RecordBannerEvent( | 684 AppBannerSettingsHelper::RecordBannerEvent( |
408 web_contents(), url, kTestPackageName, | 685 web_contents(), url, kTestPackageName, |
409 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, three_weeks_ago); | 686 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, three_weeks_ago); |
410 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 687 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
411 web_contents(), url, kTestPackageName, reference_time)); | 688 web_contents(), url, kTestPackageName, reference_time)); |
412 } | 689 } |
413 | 690 |
414 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) { | 691 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) { |
415 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 692 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
693 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); | |
benwells
2015/08/24 06:55:52
At some point you might want to put all this boile
dominickn
2015/08/24 07:43:16
Will investigate for a separate CL.
| |
416 GURL url(kTestURL); | 694 GURL url(kTestURL); |
417 NavigateAndCommit(url); | 695 NavigateAndCommit(url); |
418 | 696 |
419 base::Time reference_time = GetReferenceTime(); | 697 base::Time reference_time = GetReferenceTime(); |
420 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 698 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
421 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 699 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
422 | 700 |
423 // By default the banner should not be shown. | 701 // By default the banner should not be shown. |
424 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 702 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
425 web_contents(), url, kTestPackageName, reference_time)); | 703 web_contents(), url, kTestPackageName, reference_time)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
464 ui::PAGE_TRANSITION_TYPED); | 742 ui::PAGE_TRANSITION_TYPED); |
465 | 743 |
466 // Navigate to another page on the same origin. | 744 // Navigate to another page on the same origin. |
467 url = GURL(kSameOriginTestURL); | 745 url = GURL(kSameOriginTestURL); |
468 NavigateAndCommit(url); | 746 NavigateAndCommit(url); |
469 | 747 |
470 // The banner should show as settings are per-origin. | 748 // The banner should show as settings are per-origin. |
471 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 749 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( |
472 web_contents(), url, kTestPackageName, reference_time)); | 750 web_contents(), url, kTestPackageName, reference_time)); |
473 } | 751 } |
OLD | NEW |