Chromium Code Reviews| 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 |