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, 0), |
| 50 reference_time.LocalMidnight()); |
| 51 EXPECT_EQ( |
| 52 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1440), |
| 53 reference_time.LocalMidnight()); |
| 54 EXPECT_EQ( |
| 55 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 2880), |
| 56 reference_time.LocalMidnight()); |
| 57 |
| 58 // Test number of minutes in 1 day + 1. |
| 59 EXPECT_EQ( |
| 60 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1441), |
| 61 reference_time.LocalMidnight()); |
| 62 |
| 63 // Test minutes which are not divisible by 1440 (minutes in a day). |
| 64 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 7), |
| 65 reference_time.LocalMidnight()); |
| 66 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 13), |
| 67 reference_time.LocalMidnight()); |
| 68 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 21), |
| 69 reference_time.LocalMidnight()); |
| 70 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 35), |
| 71 reference_time.LocalMidnight()); |
| 72 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 42), |
| 73 reference_time.LocalMidnight()); |
| 74 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 50), |
| 75 reference_time.LocalMidnight()); |
| 76 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 59), |
| 77 reference_time.LocalMidnight()); |
| 78 } |
| 79 |
| 80 TEST_F(AppBannerSettingsHelperTest, BucketTimeToResolutionValid) { |
| 81 // 11:00 |
| 82 base::Time reference_time = GetReferenceTime(); |
| 83 // 13:44 |
| 84 base::Time same_day_later = |
| 85 reference_time + base::TimeDelta::FromMinutes(164); |
| 86 // 10:18 |
| 87 base::Time same_day_earlier = |
| 88 reference_time - base::TimeDelta::FromMinutes(42); |
| 89 base::Time midnight = reference_time.LocalMidnight(); |
| 90 base::Time bucketed_hour = midnight + base::TimeDelta::FromHours(11); |
| 91 base::Time bucketed_hour_later = midnight + base::TimeDelta::FromHours(13); |
| 92 base::Time bucketed_hour_earlier = midnight + base::TimeDelta::FromHours(10); |
| 93 |
| 94 // Resolution of 1 minute: 11:00, 13:44, 10:18. |
| 95 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1), |
| 96 bucketed_hour); |
| 97 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 1), |
| 98 bucketed_hour_later + base::TimeDelta::FromMinutes(44)); |
| 99 EXPECT_EQ( |
| 100 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 1), |
| 101 bucketed_hour_earlier + base::TimeDelta::FromMinutes(18)); |
| 102 |
| 103 // Resolution of 3 minutes: 11:00, 13:43, 10:18. |
| 104 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 3), |
| 105 bucketed_hour); |
| 106 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 3), |
| 107 bucketed_hour_later + base::TimeDelta::FromMinutes(42)); |
| 108 EXPECT_EQ( |
| 109 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 3), |
| 110 bucketed_hour_earlier + base::TimeDelta::FromMinutes(18)); |
| 111 |
| 112 // Resolution of 10 minutes: 11:00, 13:40, 10:10. |
| 113 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 10), |
| 114 bucketed_hour); |
| 115 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 10), |
| 116 bucketed_hour_later + base::TimeDelta::FromMinutes(40)); |
| 117 EXPECT_EQ( |
| 118 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 10), |
| 119 bucketed_hour_earlier + base::TimeDelta::FromMinutes(10)); |
| 120 |
| 121 // Resolution of 20 minutes: 11:00, 13:40, 10:00. |
| 122 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 20), |
| 123 bucketed_hour); |
| 124 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 20), |
| 125 bucketed_hour_later + base::TimeDelta::FromMinutes(40)); |
| 126 EXPECT_EQ( |
| 127 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 20), |
| 128 bucketed_hour_earlier); |
| 129 |
| 130 // Resolution of 60 minutes: 11:00, 13:00, 10:00. |
| 131 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 60), |
| 132 bucketed_hour); |
| 133 EXPECT_EQ(AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 60), |
| 134 bucketed_hour_later); |
| 135 EXPECT_EQ( |
| 136 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 60), |
| 137 bucketed_hour_earlier); |
| 138 |
| 139 // Resolution of 120 minutes: 10:00, 12:00, 10:00. |
| 140 EXPECT_EQ( |
| 141 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 120), |
| 142 bucketed_hour_earlier); |
| 143 EXPECT_EQ( |
| 144 AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 120), |
| 145 bucketed_hour_later - base::TimeDelta::FromHours(1)); |
| 146 EXPECT_EQ( |
| 147 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 120), |
| 148 bucketed_hour_earlier); |
| 149 |
| 150 // Resolution of 180 minutes: 9:00, 12:00, 9:00. |
| 151 EXPECT_EQ( |
| 152 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 180), |
| 153 bucketed_hour_earlier - base::TimeDelta::FromHours(1)); |
| 154 EXPECT_EQ( |
| 155 AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 180), |
| 156 bucketed_hour_later - base::TimeDelta::FromHours(1)); |
| 157 EXPECT_EQ( |
| 158 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 180), |
| 159 bucketed_hour_earlier - base::TimeDelta::FromHours(1)); |
| 160 |
| 161 // Resolution of 240 minutes: 8:00, 12:00, 8:00. |
| 162 EXPECT_EQ( |
| 163 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 240), |
| 164 midnight + base::TimeDelta::FromHours(8)); |
| 165 EXPECT_EQ( |
| 166 AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 240), |
| 167 midnight + base::TimeDelta::FromHours(12)); |
| 168 EXPECT_EQ( |
| 169 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 240), |
| 170 midnight + base::TimeDelta::FromHours(8)); |
| 171 |
| 172 // Resolution of 360 minutes: 6:00, 12:00, 6:00 |
| 173 EXPECT_EQ( |
| 174 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 360), |
| 175 midnight + base::TimeDelta::FromHours(6)); |
| 176 EXPECT_EQ( |
| 177 AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 360), |
| 178 midnight + base::TimeDelta::FromHours(12)); |
| 179 EXPECT_EQ( |
| 180 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 360), |
| 181 midnight + base::TimeDelta::FromHours(6)); |
| 182 |
| 183 // Resolution of 720 minutes: 0:00, 12:00, 0:00 |
| 184 EXPECT_EQ( |
| 185 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 720), |
| 186 midnight); |
| 187 EXPECT_EQ( |
| 188 AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 720), |
| 189 midnight + base::TimeDelta::FromHours(12)); |
| 190 EXPECT_EQ( |
| 191 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 720), |
| 192 midnight); |
| 193 |
| 194 // Resolution of 1440 minutes: 0:00, 0:00, 0:00 |
| 195 EXPECT_EQ( |
| 196 AppBannerSettingsHelper::BucketTimeToResolution(reference_time, 1440), |
| 197 midnight); |
| 198 EXPECT_EQ( |
| 199 AppBannerSettingsHelper::BucketTimeToResolution(same_day_later, 1440), |
| 200 midnight); |
| 201 EXPECT_EQ( |
| 202 AppBannerSettingsHelper::BucketTimeToResolution(same_day_earlier, 1440), |
| 203 midnight); |
| 204 } |
| 205 |
45 TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) { | 206 TEST_F(AppBannerSettingsHelperTest, CouldShowEvents) { |
46 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 207 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
| 208 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); |
47 GURL url(kTestURL); | 209 GURL url(kTestURL); |
48 NavigateAndCommit(url); | 210 NavigateAndCommit(url); |
49 | 211 |
50 // Check that by default, there are no events recorded. | 212 // Check that by default, there are no events recorded. |
51 std::vector<AppBannerSettingsHelper::BannerEvent> events = | 213 std::vector<AppBannerSettingsHelper::BannerEvent> events = |
52 AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url, | 214 AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url, |
53 kTestPackageName); | 215 kTestPackageName); |
54 EXPECT_TRUE(events.empty()); | 216 EXPECT_TRUE(events.empty()); |
55 | 217 |
56 base::Time reference_time = GetReferenceTime(); | 218 base::Time reference_time = GetReferenceTime(); |
(...skipping 12 matching lines...) Expand all Loading... |
69 web_contents(), url, kTestPackageName); | 231 web_contents(), url, kTestPackageName); |
70 EXPECT_EQ(1u, events.size()); | 232 EXPECT_EQ(1u, events.size()); |
71 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); | 233 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); |
72 EXPECT_EQ(events[0].engagement, 1); | 234 EXPECT_EQ(events[0].engagement, 1); |
73 | 235 |
74 // Now add the next date. | 236 // Now add the next date. |
75 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 237 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
76 web_contents(), url, kTestPackageName, three_days_prior, | 238 web_contents(), url, kTestPackageName, three_days_prior, |
77 ui::PAGE_TRANSITION_GENERATED); | 239 ui::PAGE_TRANSITION_GENERATED); |
78 | 240 |
79 // Now there should be two days. | 241 // Now there should be two events. |
80 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | 242 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
81 web_contents(), url, kTestPackageName); | 243 web_contents(), url, kTestPackageName); |
82 EXPECT_EQ(2u, events.size()); | 244 EXPECT_EQ(2u, events.size()); |
83 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); | 245 EXPECT_TRUE(IsWithinDay(events[0].time, previous_fortnight)); |
84 EXPECT_TRUE(IsWithinDay(events[1].time, three_days_prior)); | 246 EXPECT_TRUE(IsWithinDay(events[1].time, three_days_prior)); |
85 EXPECT_EQ(events[0].engagement, 1); | 247 EXPECT_EQ(events[0].engagement, 1); |
86 EXPECT_EQ(events[1].engagement, 1); | 248 EXPECT_EQ(events[1].engagement, 1); |
87 | 249 |
88 // Now add the reference date. | 250 // Now add the reference date. |
89 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 251 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
90 web_contents(), url, kTestPackageName, reference_time, | 252 web_contents(), url, kTestPackageName, reference_time, |
91 ui::PAGE_TRANSITION_LINK); | 253 ui::PAGE_TRANSITION_LINK); |
92 | 254 |
93 // Now there should still be two days, but the first date should have been | 255 // Now there should still be two events, but the first date should have been |
94 // removed. | 256 // removed. |
95 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | 257 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
96 web_contents(), url, kTestPackageName); | 258 web_contents(), url, kTestPackageName); |
97 EXPECT_EQ(2u, events.size()); | 259 EXPECT_EQ(2u, events.size()); |
98 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); | 260 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); |
99 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); | 261 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); |
100 EXPECT_EQ(events[0].engagement, 1); | 262 EXPECT_EQ(events[0].engagement, 1); |
101 EXPECT_EQ(events[1].engagement, 1); | 263 EXPECT_EQ(events[1].engagement, 1); |
102 | 264 |
103 // Now add the the other day on the reference date. | 265 // Now add the the other date on the reference day. |
104 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 266 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
105 web_contents(), url, kTestPackageName, same_day, | 267 web_contents(), url, kTestPackageName, same_day, |
106 ui::PAGE_TRANSITION_RELOAD); | 268 ui::PAGE_TRANSITION_RELOAD); |
107 | 269 |
108 // Now there should still be the same two days. | 270 // Now there should still be the same two dates. |
109 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( | 271 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
110 web_contents(), url, kTestPackageName); | 272 web_contents(), url, kTestPackageName); |
111 EXPECT_EQ(2u, events.size()); | 273 EXPECT_EQ(2u, events.size()); |
112 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); | 274 EXPECT_TRUE(IsWithinDay(events[0].time, three_days_prior)); |
113 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); | 275 EXPECT_TRUE(IsWithinDay(events[1].time, reference_time)); |
114 EXPECT_EQ(events[0].engagement, 1); | 276 EXPECT_EQ(events[0].engagement, 1); |
115 EXPECT_EQ(events[1].engagement, 1); | 277 EXPECT_EQ(events[1].engagement, 1); |
116 } | 278 } |
117 | 279 |
| 280 TEST_F(AppBannerSettingsHelperTest, CouldShowEventsDifferentResolution) { |
| 281 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
| 282 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(20); |
| 283 GURL url(kTestURL); |
| 284 NavigateAndCommit(url); |
| 285 |
| 286 // Check that by default, there are no events recorded. |
| 287 std::vector<AppBannerSettingsHelper::BannerEvent> events = |
| 288 AppBannerSettingsHelper::GetCouldShowBannerEvents(web_contents(), url, |
| 289 kTestPackageName); |
| 290 EXPECT_TRUE(events.empty()); |
| 291 |
| 292 base::Time reference_time = GetReferenceTime(); |
| 293 base::Time same_day_ignored_i = |
| 294 reference_time + base::TimeDelta::FromMinutes(10); |
| 295 base::Time same_day_counted_i = |
| 296 reference_time + base::TimeDelta::FromMinutes(20); |
| 297 base::Time same_day_counted_ii = |
| 298 reference_time + base::TimeDelta::FromMinutes(45); |
| 299 base::Time same_day_ignored_ii = |
| 300 reference_time + base::TimeDelta::FromMinutes(59); |
| 301 |
| 302 // Add the reference date. |
| 303 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
| 304 web_contents(), url, kTestPackageName, reference_time, |
| 305 ui::PAGE_TRANSITION_LINK); |
| 306 |
| 307 // There should be one event recorded |
| 308 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
| 309 web_contents(), url, kTestPackageName); |
| 310 EXPECT_EQ(1u, events.size()); |
| 311 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); |
| 312 EXPECT_EQ(events[0].engagement, 1); |
| 313 |
| 314 // Now add the the ignored date on the reference day. |
| 315 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
| 316 web_contents(), url, kTestPackageName, same_day_ignored_i, |
| 317 ui::PAGE_TRANSITION_RELOAD); |
| 318 |
| 319 // Now there should still one event. |
| 320 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
| 321 web_contents(), url, kTestPackageName); |
| 322 EXPECT_EQ(1u, events.size()); |
| 323 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); |
| 324 EXPECT_EQ(events[0].engagement, 1); |
| 325 |
| 326 // Now add the the first counted date on the reference day. |
| 327 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
| 328 web_contents(), url, kTestPackageName, same_day_counted_i, |
| 329 ui::PAGE_TRANSITION_TYPED); |
| 330 |
| 331 // Now there should be two events. |
| 332 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
| 333 web_contents(), url, kTestPackageName); |
| 334 EXPECT_EQ(2u, events.size()); |
| 335 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); |
| 336 EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i)); |
| 337 EXPECT_EQ(events[0].engagement, 1); |
| 338 EXPECT_EQ(events[1].engagement, 1); |
| 339 |
| 340 // Now add the the second counted date on the reference day. |
| 341 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
| 342 web_contents(), url, kTestPackageName, same_day_counted_ii, |
| 343 ui::PAGE_TRANSITION_GENERATED); |
| 344 |
| 345 // Now there should be three events. |
| 346 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
| 347 web_contents(), url, kTestPackageName); |
| 348 EXPECT_EQ(3u, events.size()); |
| 349 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); |
| 350 EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i)); |
| 351 EXPECT_TRUE(IsWithinDay(events[2].time, same_day_counted_ii)); |
| 352 EXPECT_EQ(events[0].engagement, 1); |
| 353 EXPECT_EQ(events[1].engagement, 1); |
| 354 EXPECT_EQ(events[2].engagement, 1); |
| 355 |
| 356 // Now add the the second ignored date on the reference day. |
| 357 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
| 358 web_contents(), url, kTestPackageName, same_day_ignored_ii, |
| 359 ui::PAGE_TRANSITION_LINK); |
| 360 |
| 361 // Now there should still be three events. |
| 362 events = AppBannerSettingsHelper::GetCouldShowBannerEvents( |
| 363 web_contents(), url, kTestPackageName); |
| 364 EXPECT_EQ(3u, events.size()); |
| 365 EXPECT_TRUE(IsWithinDay(events[0].time, reference_time)); |
| 366 EXPECT_TRUE(IsWithinDay(events[1].time, same_day_counted_i)); |
| 367 EXPECT_TRUE(IsWithinDay(events[2].time, same_day_counted_ii)); |
| 368 EXPECT_EQ(events[0].engagement, 1); |
| 369 EXPECT_EQ(events[1].engagement, 1); |
| 370 EXPECT_EQ(events[2].engagement, 1); |
| 371 } |
| 372 |
118 TEST_F(AppBannerSettingsHelperTest, SingleEvents) { | 373 TEST_F(AppBannerSettingsHelperTest, SingleEvents) { |
119 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 374 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
| 375 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); |
120 GURL url(kTestURL); | 376 GURL url(kTestURL); |
121 NavigateAndCommit(url); | 377 NavigateAndCommit(url); |
122 | 378 |
123 base::Time reference_time = GetReferenceTime(); | 379 base::Time reference_time = GetReferenceTime(); |
124 base::Time other_time = reference_time - base::TimeDelta::FromDays(3); | 380 base::Time other_time = reference_time - base::TimeDelta::FromDays(3); |
125 for (int event = AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW; | 381 for (int event = AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW; |
126 event < AppBannerSettingsHelper::APP_BANNER_EVENT_NUM_EVENTS; ++event) { | 382 event < AppBannerSettingsHelper::APP_BANNER_EVENT_NUM_EVENTS; ++event) { |
127 // Check that by default, there is no event. | 383 // Check that by default, there is no event. |
128 base::Time event_time = AppBannerSettingsHelper::GetSingleBannerEvent( | 384 base::Time event_time = AppBannerSettingsHelper::GetSingleBannerEvent( |
129 web_contents(), url, kTestPackageName, | 385 web_contents(), url, kTestPackageName, |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 | 488 |
233 EXPECT_EQ(2u, events.size()); | 489 EXPECT_EQ(2u, events.size()); |
234 EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day)); | 490 EXPECT_TRUE(IsWithinHour(events[0].time, later_same_day)); |
235 EXPECT_EQ(4, events[0].engagement); | 491 EXPECT_EQ(4, events[0].engagement); |
236 EXPECT_TRUE(IsWithinHour(events[1].time, later_next_day)); | 492 EXPECT_TRUE(IsWithinHour(events[1].time, later_next_day)); |
237 EXPECT_EQ(4, events[1].engagement); | 493 EXPECT_EQ(4, events[1].engagement); |
238 } | 494 } |
239 | 495 |
240 TEST_F(AppBannerSettingsHelperTest, IndirectEngagementWithLowerWeight) { | 496 TEST_F(AppBannerSettingsHelperTest, IndirectEngagementWithLowerWeight) { |
241 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); | 497 AppBannerSettingsHelper::SetEngagementWeights(2, 0.5); |
| 498 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); |
242 GURL url(kTestURL); | 499 GURL url(kTestURL); |
243 NavigateAndCommit(url); | 500 NavigateAndCommit(url); |
244 | 501 |
245 base::Time reference_time = GetReferenceTime(); | 502 base::Time reference_time = GetReferenceTime(); |
246 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); | 503 base::Time second_day = reference_time + base::TimeDelta::FromDays(1); |
247 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); | 504 base::Time third_day = reference_time + base::TimeDelta::FromDays(2); |
248 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); | 505 base::Time fourth_day = reference_time + base::TimeDelta::FromDays(3); |
249 | 506 |
250 // By default the banner should not be shown. | 507 // By default the banner should not be shown. |
251 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 508 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. | 550 // It should take one direct visit with a weight of 2 to trigger the banner. |
294 AppBannerSettingsHelper::RecordBannerCouldShowEvent( | 551 AppBannerSettingsHelper::RecordBannerCouldShowEvent( |
295 web_contents(), url, kTestPackageName, reference_time, | 552 web_contents(), url, kTestPackageName, reference_time, |
296 ui::PAGE_TRANSITION_TYPED); | 553 ui::PAGE_TRANSITION_TYPED); |
297 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 554 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( |
298 web_contents(), url, kTestPackageName, reference_time)); | 555 web_contents(), url, kTestPackageName, reference_time)); |
299 } | 556 } |
300 | 557 |
301 TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) { | 558 TEST_F(AppBannerSettingsHelperTest, ShouldShowFromEngagement) { |
302 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 559 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
| 560 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); |
303 GURL url(kTestURL); | 561 GURL url(kTestURL); |
304 NavigateAndCommit(url); | 562 NavigateAndCommit(url); |
305 | 563 |
306 base::Time reference_time = GetReferenceTime(); | 564 base::Time reference_time = GetReferenceTime(); |
307 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 565 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
308 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 566 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
309 | 567 |
310 // By default the banner should not be shown. | 568 // By default the banner should not be shown. |
311 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 569 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
312 web_contents(), url, kTestPackageName, reference_time)); | 570 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. | 625 // Block the site more recently. Now it should not be shown. |
368 AppBannerSettingsHelper::RecordBannerEvent( | 626 AppBannerSettingsHelper::RecordBannerEvent( |
369 web_contents(), url, kTestPackageName, | 627 web_contents(), url, kTestPackageName, |
370 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, two_months_ago); | 628 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_BLOCK, two_months_ago); |
371 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 629 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
372 web_contents(), url, kTestPackageName, reference_time)); | 630 web_contents(), url, kTestPackageName, reference_time)); |
373 } | 631 } |
374 | 632 |
375 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) { | 633 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterShowing) { |
376 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 634 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
| 635 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); |
377 GURL url(kTestURL); | 636 GURL url(kTestURL); |
378 NavigateAndCommit(url); | 637 NavigateAndCommit(url); |
379 | 638 |
380 base::Time reference_time = GetReferenceTime(); | 639 base::Time reference_time = GetReferenceTime(); |
381 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 640 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
382 base::Time three_weeks_ago = reference_time - base::TimeDelta::FromDays(21); | 641 base::Time three_weeks_ago = reference_time - base::TimeDelta::FromDays(21); |
383 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 642 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
384 | 643 |
385 // By default the banner should not be shown. | 644 // By default the banner should not be shown. |
386 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 645 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
(...skipping 19 matching lines...) Expand all Loading... |
406 // Show the site more recently. Now it should not be shown. | 665 // Show the site more recently. Now it should not be shown. |
407 AppBannerSettingsHelper::RecordBannerEvent( | 666 AppBannerSettingsHelper::RecordBannerEvent( |
408 web_contents(), url, kTestPackageName, | 667 web_contents(), url, kTestPackageName, |
409 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, three_weeks_ago); | 668 AppBannerSettingsHelper::APP_BANNER_EVENT_DID_SHOW, three_weeks_ago); |
410 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 669 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
411 web_contents(), url, kTestPackageName, reference_time)); | 670 web_contents(), url, kTestPackageName, reference_time)); |
412 } | 671 } |
413 | 672 |
414 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) { | 673 TEST_F(AppBannerSettingsHelperTest, ShouldNotShowAfterAdding) { |
415 AppBannerSettingsHelper::SetEngagementWeights(1, 1); | 674 AppBannerSettingsHelper::SetEngagementWeights(1, 1); |
| 675 AppBannerSettingsHelper::SetMinimumMinutesBetweenVisits(1440); |
416 GURL url(kTestURL); | 676 GURL url(kTestURL); |
417 NavigateAndCommit(url); | 677 NavigateAndCommit(url); |
418 | 678 |
419 base::Time reference_time = GetReferenceTime(); | 679 base::Time reference_time = GetReferenceTime(); |
420 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); | 680 base::Time one_day_ago = reference_time - base::TimeDelta::FromDays(1); |
421 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); | 681 base::Time one_year_ago = reference_time - base::TimeDelta::FromDays(366); |
422 | 682 |
423 // By default the banner should not be shown. | 683 // By default the banner should not be shown. |
424 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( | 684 EXPECT_FALSE(AppBannerSettingsHelper::ShouldShowBanner( |
425 web_contents(), url, kTestPackageName, reference_time)); | 685 web_contents(), url, kTestPackageName, reference_time)); |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
464 ui::PAGE_TRANSITION_TYPED); | 724 ui::PAGE_TRANSITION_TYPED); |
465 | 725 |
466 // Navigate to another page on the same origin. | 726 // Navigate to another page on the same origin. |
467 url = GURL(kSameOriginTestURL); | 727 url = GURL(kSameOriginTestURL); |
468 NavigateAndCommit(url); | 728 NavigateAndCommit(url); |
469 | 729 |
470 // The banner should show as settings are per-origin. | 730 // The banner should show as settings are per-origin. |
471 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( | 731 EXPECT_TRUE(AppBannerSettingsHelper::ShouldShowBanner( |
472 web_contents(), url, kTestPackageName, reference_time)); | 732 web_contents(), url, kTestPackageName, reference_time)); |
473 } | 733 } |
OLD | NEW |