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

Side by Side Diff: chrome/browser/banners/app_banner_settings_helper_unittest.cc

Issue 1306693005: Allow the minimum time between banner trigger visits to be varied via field trials. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 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 <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
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
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
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
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
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698