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

Side by Side Diff: chrome/browser/engagement/site_engagement_service_unittest.cc

Issue 2749823002: Restore KeyedServiceFactory diagnostics for context use-after-destroy. (Closed)
Patch Set: Refactor SiteEngagementService tests. Created 3 years, 9 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 "chrome/browser/engagement/site_engagement_service.h" 5 #include "chrome/browser/engagement/site_engagement_service.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/files/scoped_temp_dir.h" 9 #include "base/files/scoped_temp_dir.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 147
148 class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness { 148 class SiteEngagementServiceTest : public ChromeRenderViewHostTestHarness {
149 public: 149 public:
150 void SetUp() override { 150 void SetUp() override {
151 ChromeRenderViewHostTestHarness::SetUp(); 151 ChromeRenderViewHostTestHarness::SetUp();
152 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 152 ASSERT_TRUE(temp_dir_.CreateUniqueTempDir());
153 g_temp_history_dir = temp_dir_.GetPath(); 153 g_temp_history_dir = temp_dir_.GetPath();
154 HistoryServiceFactory::GetInstance()->SetTestingFactory( 154 HistoryServiceFactory::GetInstance()->SetTestingFactory(
155 profile(), &BuildTestHistoryService); 155 profile(), &BuildTestHistoryService);
156 SiteEngagementScore::SetParamValuesForTesting(); 156 SiteEngagementScore::SetParamValuesForTesting();
157 clock_ = new base::SimpleTestClock();
158 service_ = base::WrapUnique(
159 new SiteEngagementService(profile(), base::WrapUnique(clock_)));
160 }
161
162 void TearDown() override {
163 service_->Shutdown();
164 service_.reset();
165 ChromeRenderViewHostTestHarness::TearDown();
157 } 166 }
158 167
159 void NavigateWithTransitionAndExpectHigherScore( 168 void NavigateWithTransitionAndExpectHigherScore(
160 SiteEngagementService* service, 169 SiteEngagementService* service,
161 const GURL& url, 170 const GURL& url,
162 ui::PageTransition transition) { 171 ui::PageTransition transition) {
163 double prev_score = service->GetScore(url); 172 double prev_score = service->GetScore(url);
164 controller().LoadURL(url, content::Referrer(), transition, std::string()); 173 controller().LoadURL(url, content::Referrer(), transition, std::string());
165 int pending_id = controller().GetPendingEntry()->GetUniqueID(); 174 int pending_id = controller().GetPendingEntry()->GetUniqueID();
166 content::WebContentsTester::For(web_contents()) 175 content::WebContentsTester::For(web_contents())
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 base::RunLoop run_loop; 207 base::RunLoop run_loop;
199 content::BrowserThread::PostTaskAndReply( 208 content::BrowserThread::PostTaskAndReply(
200 thread_id, FROM_HERE, 209 thread_id, FROM_HERE,
201 base::Bind(&SiteEngagementServiceTest::CheckScoreFromSettings, 210 base::Bind(&SiteEngagementServiceTest::CheckScoreFromSettings,
202 base::Unretained(this), settings_map, url, &score), 211 base::Unretained(this), settings_map, url, &score),
203 run_loop.QuitClosure()); 212 run_loop.QuitClosure());
204 run_loop.Run(); 213 run_loop.Run();
205 return score; 214 return score;
206 } 215 }
207 216
208 private: 217 protected:
209 void CheckScoreFromSettings(HostContentSettingsMap* settings_map, 218 void CheckScoreFromSettings(HostContentSettingsMap* settings_map,
210 const GURL& url, 219 const GURL& url,
211 double *score) { 220 double *score) {
212 *score = SiteEngagementService::GetScoreFromSettings(settings_map, url); 221 *score = SiteEngagementService::GetScoreFromSettings(settings_map, url);
213 } 222 }
214 223
215 base::ScopedTempDir temp_dir_; 224 base::ScopedTempDir temp_dir_;
225 std::unique_ptr<SiteEngagementService> service_;
226 base::SimpleTestClock* clock_ = nullptr; // Owned by the service.
216 }; 227 };
217 228
218 TEST_F(SiteEngagementServiceTest, GetMedianEngagement) { 229 TEST_F(SiteEngagementServiceTest, GetMedianEngagement) {
219 SiteEngagementService* service = SiteEngagementService::Get(profile()); 230 SiteEngagementService* service = SiteEngagementService::Get(profile());
220 ASSERT_TRUE(service); 231 ASSERT_TRUE(service);
221 232
222 GURL url1("http://www.google.com/"); 233 GURL url1("http://www.google.com/");
223 GURL url2("https://www.google.com/"); 234 GURL url2("https://www.google.com/");
224 GURL url3("https://drive.google.com/"); 235 GURL url3("https://drive.google.com/");
225 GURL url4("https://maps.google.com/"); 236 GURL url4("https://maps.google.com/");
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
414 service->HandleMediaPlaying(web_contents(), true); 425 service->HandleMediaPlaying(web_contents(), true);
415 EXPECT_EQ(0, service->GetScore(url3)); 426 EXPECT_EQ(0, service->GetScore(url3));
416 427
417 NavigateAndCommit(url4); 428 NavigateAndCommit(url4);
418 service->HandleUserInput(web_contents(), 429 service->HandleUserInput(web_contents(),
419 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); 430 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS);
420 EXPECT_EQ(0, service->GetScore(url4)); 431 EXPECT_EQ(0, service->GetScore(url4));
421 } 432 }
422 433
423 TEST_F(SiteEngagementServiceTest, LastShortcutLaunch) { 434 TEST_F(SiteEngagementServiceTest, LastShortcutLaunch) {
424 base::SimpleTestClock* clock = new base::SimpleTestClock();
425 std::unique_ptr<SiteEngagementService> service(
426 new SiteEngagementService(profile(), base::WrapUnique(clock)));
427
428 base::HistogramTester histograms; 435 base::HistogramTester histograms;
429 436
430 base::Time current_day = GetReferenceTime(); 437 base::Time current_day = GetReferenceTime();
431 clock->SetNow(current_day - base::TimeDelta::FromDays(5)); 438 clock_->SetNow(current_day - base::TimeDelta::FromDays(5));
432 439
433 // The https and http versions of www.google.com should be separate. But 440 // The https and http versions of www.google.com should be separate. But
434 // different paths on the same origin should be treated the same. 441 // different paths on the same origin should be treated the same.
435 GURL url1("https://www.google.com/"); 442 GURL url1("https://www.google.com/");
436 GURL url2("http://www.google.com/"); 443 GURL url2("http://www.google.com/");
437 GURL url3("http://www.google.com/maps"); 444 GURL url3("http://www.google.com/maps");
438 445
439 EXPECT_EQ(0, service->GetScore(url1)); 446 EXPECT_EQ(0, service_->GetScore(url1));
440 EXPECT_EQ(0, service->GetScore(url2)); 447 EXPECT_EQ(0, service_->GetScore(url2));
441 EXPECT_EQ(0, service->GetScore(url3)); 448 EXPECT_EQ(0, service_->GetScore(url3));
442 449
443 service->SetLastShortcutLaunchTime(url2); 450 service_->SetLastShortcutLaunchTime(url2);
444 histograms.ExpectTotalCount( 451 histograms.ExpectTotalCount(
445 SiteEngagementMetrics::kDaysSinceLastShortcutLaunchHistogram, 0); 452 SiteEngagementMetrics::kDaysSinceLastShortcutLaunchHistogram, 0);
446 histograms.ExpectUniqueSample( 453 histograms.ExpectUniqueSample(
447 SiteEngagementMetrics::kEngagementTypeHistogram, 454 SiteEngagementMetrics::kEngagementTypeHistogram,
448 SiteEngagementMetrics::ENGAGEMENT_WEBAPP_SHORTCUT_LAUNCH, 1); 455 SiteEngagementMetrics::ENGAGEMENT_WEBAPP_SHORTCUT_LAUNCH, 1);
449 456
450 service->AddPoints(url1, 2.0); 457 service_->AddPoints(url1, 2.0);
451 service->AddPoints(url2, 2.0); 458 service_->AddPoints(url2, 2.0);
452 clock->SetNow(current_day); 459 clock_->SetNow(current_day);
453 service->SetLastShortcutLaunchTime(url2); 460 service_->SetLastShortcutLaunchTime(url2);
454 461
455 histograms.ExpectTotalCount( 462 histograms.ExpectTotalCount(
456 SiteEngagementMetrics::kDaysSinceLastShortcutLaunchHistogram, 1); 463 SiteEngagementMetrics::kDaysSinceLastShortcutLaunchHistogram, 1);
457 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, 464 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
458 4); 465 4);
459 histograms.ExpectBucketCount( 466 histograms.ExpectBucketCount(
460 SiteEngagementMetrics::kEngagementTypeHistogram, 467 SiteEngagementMetrics::kEngagementTypeHistogram,
461 SiteEngagementMetrics::ENGAGEMENT_WEBAPP_SHORTCUT_LAUNCH, 2); 468 SiteEngagementMetrics::ENGAGEMENT_WEBAPP_SHORTCUT_LAUNCH, 2);
462 histograms.ExpectBucketCount( 469 histograms.ExpectBucketCount(
463 SiteEngagementMetrics::kEngagementTypeHistogram, 470 SiteEngagementMetrics::kEngagementTypeHistogram,
464 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2); 471 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2);
465 472
466 EXPECT_DOUBLE_EQ(2.0, service->GetScore(url1)); 473 EXPECT_DOUBLE_EQ(2.0, service_->GetScore(url1));
467 EXPECT_DOUBLE_EQ(7.0, service->GetScore(url2)); 474 EXPECT_DOUBLE_EQ(7.0, service_->GetScore(url2));
468 475
469 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(1)); 476 clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(1));
470 EXPECT_DOUBLE_EQ(2.0, service->GetScore(url1)); 477 EXPECT_DOUBLE_EQ(2.0, service_->GetScore(url1));
471 EXPECT_DOUBLE_EQ(7.0, service->GetScore(url2)); 478 EXPECT_DOUBLE_EQ(7.0, service_->GetScore(url2));
472 479
473 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(7)); 480 clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(7));
474 EXPECT_DOUBLE_EQ(0.0, service->GetScore(url1)); 481 EXPECT_DOUBLE_EQ(0.0, service_->GetScore(url1));
475 EXPECT_DOUBLE_EQ(5.0, service->GetScore(url2)); 482 EXPECT_DOUBLE_EQ(5.0, service_->GetScore(url2));
476 483
477 service->AddPoints(url1, 1.0); 484 service_->AddPoints(url1, 1.0);
478 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(10)); 485 clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(10));
479 EXPECT_DOUBLE_EQ(1.0, service->GetScore(url1)); 486 EXPECT_DOUBLE_EQ(1.0, service_->GetScore(url1));
480 EXPECT_DOUBLE_EQ(5.0, service->GetScore(url2)); 487 EXPECT_DOUBLE_EQ(5.0, service_->GetScore(url2));
481 488
482 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(11)); 489 clock_->SetNow(GetReferenceTime() + base::TimeDelta::FromDays(11));
483 EXPECT_DOUBLE_EQ(1.0, service->GetScore(url1)); 490 EXPECT_DOUBLE_EQ(1.0, service_->GetScore(url1));
484 EXPECT_DOUBLE_EQ(0.0, service->GetScore(url2)); 491 EXPECT_DOUBLE_EQ(0.0, service_->GetScore(url2));
485 } 492 }
486 493
487 TEST_F(SiteEngagementServiceTest, NotificationPermission) { 494 TEST_F(SiteEngagementServiceTest, NotificationPermission) {
488 base::SimpleTestClock* clock = new base::SimpleTestClock();
489 std::unique_ptr<SiteEngagementService> service(
490 new SiteEngagementService(profile(), base::WrapUnique(clock)));
491
492 GURL url1("https://www.google.com/"); 495 GURL url1("https://www.google.com/");
493 GURL url2("http://www.google.com/"); 496 GURL url2("http://www.google.com/");
494 GURL url3("https://drive.google.com/"); 497 GURL url3("https://drive.google.com/");
495 clock->SetNow(GetReferenceTime()); 498 clock_->SetNow(GetReferenceTime());
496 499
497 EXPECT_EQ(0, service->GetScore(url1)); 500 EXPECT_EQ(0, service_->GetScore(url1));
498 EXPECT_EQ(0, service->GetScore(url2)); 501 EXPECT_EQ(0, service_->GetScore(url2));
499 EXPECT_EQ(0, service->GetScore(url3)); 502 EXPECT_EQ(0, service_->GetScore(url3));
500 503
501 HostContentSettingsMap* settings_map = 504 HostContentSettingsMap* settings_map =
502 HostContentSettingsMapFactory::GetForProfile(profile()); 505 HostContentSettingsMapFactory::GetForProfile(profile());
503 506
504 settings_map->SetContentSettingDefaultScope( 507 settings_map->SetContentSettingDefaultScope(
505 url1, url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), 508 url1, url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
506 CONTENT_SETTING_ALLOW); 509 CONTENT_SETTING_ALLOW);
507 510
508 settings_map->SetContentSettingDefaultScope( 511 settings_map->SetContentSettingDefaultScope(
509 url2, url2, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), 512 url2, url2, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
510 CONTENT_SETTING_BLOCK); 513 CONTENT_SETTING_BLOCK);
511 514
512 settings_map->SetContentSettingDefaultScope( 515 settings_map->SetContentSettingDefaultScope(
513 url3, url3, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), 516 url3, url3, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
514 CONTENT_SETTING_ASK); 517 CONTENT_SETTING_ASK);
515 518
516 EXPECT_EQ(5, service->GetScore(url1)); 519 EXPECT_EQ(5, service_->GetScore(url1));
517 EXPECT_EQ(0, service->GetScore(url2)); 520 EXPECT_EQ(0, service_->GetScore(url2));
518 EXPECT_EQ(0, service->GetScore(url3)); 521 EXPECT_EQ(0, service_->GetScore(url3));
519 522
520 service->AddPoints(url1, 1.0); 523 service_->AddPoints(url1, 1.0);
521 service->AddPoints(url2, 3.0); 524 service_->AddPoints(url2, 3.0);
522 EXPECT_EQ(6, service->GetScore(url1)); 525 EXPECT_EQ(6, service_->GetScore(url1));
523 EXPECT_EQ(3, service->GetScore(url2)); 526 EXPECT_EQ(3, service_->GetScore(url2));
524 527
525 settings_map->SetContentSettingDefaultScope( 528 settings_map->SetContentSettingDefaultScope(
526 url1, url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(), 529 url1, url1, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, std::string(),
527 CONTENT_SETTING_BLOCK); 530 CONTENT_SETTING_BLOCK);
528 531
529 EXPECT_EQ(1, service->GetScore(url1)); 532 EXPECT_EQ(1, service_->GetScore(url1));
530 } 533 }
531 534
532 TEST_F(SiteEngagementServiceTest, CheckHistograms) { 535 TEST_F(SiteEngagementServiceTest, CheckHistograms) {
533 base::HistogramTester histograms; 536 base::HistogramTester histograms;
534 537
535 base::SimpleTestClock* clock = new base::SimpleTestClock();
536 std::unique_ptr<SiteEngagementService> service(
537 new SiteEngagementService(profile(), base::WrapUnique(clock)));
538
539 base::Time current_day = GetReferenceTime(); 538 base::Time current_day = GetReferenceTime();
540 clock->SetNow(current_day); 539 clock_->SetNow(current_day);
541 540
542 // Histograms should start empty as the testing SiteEngagementService 541 // Histograms should start empty as the testing SiteEngagementService
543 // constructor does not record metrics. 542 // constructor does not record metrics.
544 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, 543 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
545 0); 544 0);
546 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0); 545 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0);
547 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram, 546 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
548 0); 547 0);
549 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram, 548 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
550 0); 549 0);
551 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram, 550 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
552 0); 551 0);
553 histograms.ExpectTotalCount( 552 histograms.ExpectTotalCount(
554 SiteEngagementMetrics::kEngagementScoreHistogramHTTP, 0); 553 SiteEngagementMetrics::kEngagementScoreHistogramHTTP, 0);
555 histograms.ExpectTotalCount( 554 histograms.ExpectTotalCount(
556 SiteEngagementMetrics::kEngagementScoreHistogramHTTPS, 0); 555 SiteEngagementMetrics::kEngagementScoreHistogramHTTPS, 0);
557 histograms.ExpectTotalCount( 556 histograms.ExpectTotalCount(
558 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); 557 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0);
559 histograms.ExpectTotalCount( 558 histograms.ExpectTotalCount(
560 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); 559 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0);
561 histograms.ExpectTotalCount( 560 histograms.ExpectTotalCount(
562 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0); 561 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0);
563 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, 562 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
564 0); 563 0);
565 564
566 // Record metrics for an empty engagement system. 565 // Record metrics for an empty engagement system.
567 service->RecordMetrics(); 566 service_->RecordMetrics();
568 567
569 histograms.ExpectUniqueSample( 568 histograms.ExpectUniqueSample(
570 SiteEngagementMetrics::kTotalEngagementHistogram, 0, 1); 569 SiteEngagementMetrics::kTotalEngagementHistogram, 0, 1);
571 histograms.ExpectUniqueSample(SiteEngagementMetrics::kTotalOriginsHistogram, 570 histograms.ExpectUniqueSample(SiteEngagementMetrics::kTotalOriginsHistogram,
572 0, 1); 571 0, 1);
573 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram, 572 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
574 0); 573 0);
575 histograms.ExpectTotalCount( 574 histograms.ExpectTotalCount(
576 SiteEngagementMetrics::kEngagementScoreHistogramHTTP, 0); 575 SiteEngagementMetrics::kEngagementScoreHistogramHTTP, 0);
577 histograms.ExpectTotalCount( 576 histograms.ExpectTotalCount(
(...skipping 10 matching lines...) Expand all
588 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 1); 587 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 1);
589 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, 588 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
590 0); 589 0);
591 590
592 const std::vector<std::string> engagement_bucket_histogram_names = 591 const std::vector<std::string> engagement_bucket_histogram_names =
593 SiteEngagementMetrics::GetEngagementBucketHistogramNames(); 592 SiteEngagementMetrics::GetEngagementBucketHistogramNames();
594 593
595 for (const std::string& histogram_name : engagement_bucket_histogram_names) 594 for (const std::string& histogram_name : engagement_bucket_histogram_names)
596 histograms.ExpectTotalCount(histogram_name, 0); 595 histograms.ExpectTotalCount(histogram_name, 0);
597 596
598 clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(60)); 597 clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(60));
599 598
600 // The https and http versions of www.google.com should be separate. 599 // The https and http versions of www.google.com should be separate.
601 GURL url1("https://www.google.com/"); 600 GURL url1("https://www.google.com/");
602 GURL url2("http://www.google.com/"); 601 GURL url2("http://www.google.com/");
603 GURL url3("http://drive.google.com/"); 602 GURL url3("http://drive.google.com/");
604 603
605 NavigateAndCommit(url1); 604 NavigateAndCommit(url1);
606 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); 605 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED);
607 service->HandleUserInput(web_contents(), 606 service_->HandleUserInput(web_contents(),
608 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); 607 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS);
609 service->HandleUserInput(web_contents(), 608 service_->HandleUserInput(web_contents(),
610 SiteEngagementMetrics::ENGAGEMENT_MOUSE); 609 SiteEngagementMetrics::ENGAGEMENT_MOUSE);
611 NavigateAndCommit(url2); 610 NavigateAndCommit(url2);
612 service->HandleMediaPlaying(web_contents(), true); 611 service_->HandleMediaPlaying(web_contents(), true);
613 612
614 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, 613 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
615 2); 614 2);
616 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 2); 615 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 2);
617 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0, 616 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0,
618 1); 617 1);
619 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1, 618 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
620 1); 619 1);
621 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram, 620 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
622 2); 621 2);
(...skipping 23 matching lines...) Expand all
646 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 645 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
647 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 1); 646 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 1);
648 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 647 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
649 SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN, 648 SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN,
650 1); 649 1);
651 histograms.ExpectBucketCount( 650 histograms.ExpectBucketCount(
652 SiteEngagementMetrics::kEngagementTypeHistogram, 651 SiteEngagementMetrics::kEngagementTypeHistogram,
653 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2); 652 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2);
654 653
655 // Navigations are still logged within the 1 hour refresh period 654 // Navigations are still logged within the 1 hour refresh period
656 clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(59)); 655 clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(59));
657 656
658 NavigateAndCommit(url2); 657 NavigateAndCommit(url2);
659 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED); 658 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED);
660 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_AUTO_BOOKMARK); 659 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_AUTO_BOOKMARK);
661 660
662 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, 661 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
663 8); 662 8);
664 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 663 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
665 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 3); 664 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 3);
666 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 665 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
667 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 1); 666 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 1);
668 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 667 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
669 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 1); 668 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 1);
670 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 669 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
671 SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN, 670 SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN,
672 1); 671 1);
673 histograms.ExpectBucketCount( 672 histograms.ExpectBucketCount(
674 SiteEngagementMetrics::kEngagementTypeHistogram, 673 SiteEngagementMetrics::kEngagementTypeHistogram,
675 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2); 674 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 2);
676 675
677 // Update the hourly histograms again. 676 // Update the hourly histograms again.
678 clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(1)); 677 clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(1));
679 678
680 NavigateAndCommit(url3); 679 NavigateAndCommit(url3);
681 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); 680 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED);
682 service->HandleMediaPlaying(web_contents(), false); 681 service_->HandleMediaPlaying(web_contents(), false);
683 NavigateAndCommit(url2); 682 NavigateAndCommit(url2);
684 service->HandleUserInput(web_contents(), 683 service_->HandleUserInput(web_contents(),
685 SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE); 684 SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE);
686 685
687 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, 686 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
688 3); 687 3);
689 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0, 688 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0,
690 1); 689 1);
691 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1, 690 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
692 1); 691 1);
693 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3, 692 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3,
694 1); 693 1);
695 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram, 694 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
(...skipping 30 matching lines...) Expand all
726 SiteEngagementMetrics::ENGAGEMENT_MEDIA_VISIBLE, 725 SiteEngagementMetrics::ENGAGEMENT_MEDIA_VISIBLE,
727 1); 726 1);
728 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 727 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
729 SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN, 728 SiteEngagementMetrics::ENGAGEMENT_MEDIA_HIDDEN,
730 1); 729 1);
731 histograms.ExpectBucketCount( 730 histograms.ExpectBucketCount(
732 SiteEngagementMetrics::kEngagementTypeHistogram, 731 SiteEngagementMetrics::kEngagementTypeHistogram,
733 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 3); 732 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 3);
734 733
735 NavigateAndCommit(url1); 734 NavigateAndCommit(url1);
736 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED); 735 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_GENERATED);
737 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); 736 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED);
738 NavigateAndCommit(url2); 737 NavigateAndCommit(url2);
739 service->HandleUserInput(web_contents(), 738 service_->HandleUserInput(web_contents(),
740 SiteEngagementMetrics::ENGAGEMENT_SCROLL); 739 SiteEngagementMetrics::ENGAGEMENT_SCROLL);
741 NavigateAndCommit(url1); 740 NavigateAndCommit(url1);
742 service->HandleUserInput(web_contents(), 741 service_->HandleUserInput(web_contents(),
743 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); 742 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS);
744 NavigateAndCommit(url3); 743 NavigateAndCommit(url3);
745 service->HandleUserInput(web_contents(), 744 service_->HandleUserInput(web_contents(),
746 SiteEngagementMetrics::ENGAGEMENT_MOUSE); 745 SiteEngagementMetrics::ENGAGEMENT_MOUSE);
747 746
748 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, 747 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
749 17); 748 17);
750 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 749 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
751 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 6); 750 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 6);
752 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 751 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
753 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 2); 752 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 2);
754 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 753 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
755 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 2); 754 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 2);
756 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 755 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
757 SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE, 756 SiteEngagementMetrics::ENGAGEMENT_TOUCH_GESTURE,
758 1); 757 1);
759 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, 758 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
760 SiteEngagementMetrics::ENGAGEMENT_SCROLL, 1); 759 SiteEngagementMetrics::ENGAGEMENT_SCROLL, 1);
761 histograms.ExpectBucketCount( 760 histograms.ExpectBucketCount(
762 SiteEngagementMetrics::kEngagementTypeHistogram, 761 SiteEngagementMetrics::kEngagementTypeHistogram,
763 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 3); 762 SiteEngagementMetrics::ENGAGEMENT_FIRST_DAILY_ENGAGEMENT, 3);
764 763
765 // Advance an origin to the max for a day and advance the clock an hour before 764 // Advance an origin to the max for a day and advance the clock an hour before
766 // the last increment before max. Expect the histogram to be updated. 765 // the last increment before max. Expect the histogram to be updated.
767 NavigateAndCommit(url1); 766 NavigateAndCommit(url1);
768 for (int i = 0; i < 6; ++i) 767 for (int i = 0; i < 6; ++i)
769 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); 768 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED);
770 769
771 clock->SetNow(clock->Now() + base::TimeDelta::FromMinutes(60)); 770 clock_->SetNow(clock_->Now() + base::TimeDelta::FromMinutes(60));
772 service->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED); 771 service_->HandleNavigation(web_contents(), ui::PAGE_TRANSITION_TYPED);
773 772
774 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram, 773 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
775 4); 774 4);
776 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0, 775 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0,
777 1); 776 1);
778 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1, 777 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
779 1); 778 1);
780 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3, 779 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3,
781 2); 780 2);
782 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram, 781 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
815 histograms.ExpectBucketCount(engagement_bucket_histogram_names[0], 33, 1); 814 histograms.ExpectBucketCount(engagement_bucket_histogram_names[0], 33, 1);
816 histograms.ExpectBucketCount(engagement_bucket_histogram_names[0], 66, 1); 815 histograms.ExpectBucketCount(engagement_bucket_histogram_names[0], 66, 1);
817 histograms.ExpectBucketCount(engagement_bucket_histogram_names[1], 33, 1); 816 histograms.ExpectBucketCount(engagement_bucket_histogram_names[1], 33, 1);
818 histograms.ExpectBucketCount(engagement_bucket_histogram_names[1], 66, 1); 817 histograms.ExpectBucketCount(engagement_bucket_histogram_names[1], 66, 1);
819 } 818 }
820 819
821 // Expect that sites that have reached zero engagement are cleaned up. Expect 820 // Expect that sites that have reached zero engagement are cleaned up. Expect
822 // engagement times to be reset if too much time has passed since the last 821 // engagement times to be reset if too much time has passed since the last
823 // engagement. 822 // engagement.
824 TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) { 823 TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) {
825 base::SimpleTestClock* clock = new base::SimpleTestClock();
826 std::unique_ptr<SiteEngagementService> service(
827 new SiteEngagementService(profile(), base::WrapUnique(clock)));
828
829 // Set the base time to be 3 weeks past the stale period in the past. 824 // Set the base time to be 3 weeks past the stale period in the past.
830 // Use a 1 second offset to make sure scores don't yet decay. 825 // Use a 1 second offset to make sure scores don't yet decay.
831 base::TimeDelta one_second = base::TimeDelta::FromSeconds(1); 826 base::TimeDelta one_second = base::TimeDelta::FromSeconds(1);
832 base::TimeDelta one_day = base::TimeDelta::FromDays(1); 827 base::TimeDelta one_day = base::TimeDelta::FromDays(1);
833 base::TimeDelta decay_period = 828 base::TimeDelta decay_period =
834 base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours()); 829 base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours());
835 base::TimeDelta shorter_than_decay_period = decay_period - one_second; 830 base::TimeDelta shorter_than_decay_period = decay_period - one_second;
836 831
837 base::Time max_decay_time = GetReferenceTime() - service->GetMaxDecayPeriod(); 832 base::Time max_decay_time =
838 base::Time stale_time = GetReferenceTime() - service->GetStalePeriod(); 833 GetReferenceTime() - service_->GetMaxDecayPeriod();
834 base::Time stale_time = GetReferenceTime() - service_->GetStalePeriod();
839 base::Time base_time = stale_time - shorter_than_decay_period * 4; 835 base::Time base_time = stale_time - shorter_than_decay_period * 4;
840 clock->SetNow(base_time); 836 clock_->SetNow(base_time);
841 837
842 // The https and http versions of www.google.com should be separate. 838 // The https and http versions of www.google.com should be separate.
843 GURL url1("https://www.google.com/"); 839 GURL url1("https://www.google.com/");
844 GURL url2("http://www.google.com/"); 840 GURL url2("http://www.google.com/");
845 GURL url3("http://maps.google.com/"); 841 GURL url3("http://maps.google.com/");
846 GURL url4("http://drive.google.com/"); 842 GURL url4("http://drive.google.com/");
847 843
848 EXPECT_EQ(0, service->GetScore(url1)); 844 EXPECT_EQ(0, service_->GetScore(url1));
849 EXPECT_EQ(0, service->GetScore(url2)); 845 EXPECT_EQ(0, service_->GetScore(url2));
850 EXPECT_EQ(0, service->GetScore(url3)); 846 EXPECT_EQ(0, service_->GetScore(url3));
851 EXPECT_EQ(0, service->GetScore(url4)); 847 EXPECT_EQ(0, service_->GetScore(url4));
852 848
853 // Add some points 849 // Add some points
854 service->AddPoints(url1, 1.0); 850 service_->AddPoints(url1, 1.0);
855 service->AddPoints(url2, 5.0); 851 service_->AddPoints(url2, 5.0);
856 EXPECT_EQ(1.0, service->GetScore(url1)); 852 EXPECT_EQ(1.0, service_->GetScore(url1));
857 EXPECT_EQ(5.0, service->GetScore(url2)); 853 EXPECT_EQ(5.0, service_->GetScore(url2));
858 854
859 // Add more to url2 over the next few days. Leave it completely alone after 855 // Add more to url2 over the next few days. Leave it completely alone after
860 // this. 856 // this.
861 clock->SetNow(base_time + one_day); 857 clock_->SetNow(base_time + one_day);
862 service->AddPoints(url2, 5.0); 858 service_->AddPoints(url2, 5.0);
863 EXPECT_EQ(10.0, service->GetScore(url2)); 859 EXPECT_EQ(10.0, service_->GetScore(url2));
864 860
865 clock->SetNow(base_time + 2 * one_day); 861 clock_->SetNow(base_time + 2 * one_day);
866 service->AddPoints(url2, 5.0); 862 service_->AddPoints(url2, 5.0);
867 EXPECT_EQ(15.0, service->GetScore(url2)); 863 EXPECT_EQ(15.0, service_->GetScore(url2));
868 864
869 clock->SetNow(base_time + 3 * one_day); 865 clock_->SetNow(base_time + 3 * one_day);
870 service->AddPoints(url2, 2.0); 866 service_->AddPoints(url2, 2.0);
871 EXPECT_EQ(17.0, service->GetScore(url2)); 867 EXPECT_EQ(17.0, service_->GetScore(url2));
872 base::Time url2_last_modified = clock->Now(); 868 base::Time url2_last_modified = clock_->Now();
873 869
874 // Move to (3 * shorter_than_decay_period) before the stale period. 870 // Move to (3 * shorter_than_decay_period) before the stale period.
875 base_time += shorter_than_decay_period; 871 base_time += shorter_than_decay_period;
876 clock->SetNow(base_time); 872 clock_->SetNow(base_time);
877 service->AddPoints(url1, 1.0); 873 service_->AddPoints(url1, 1.0);
878 service->AddPoints(url3, 5.0); 874 service_->AddPoints(url3, 5.0);
879 EXPECT_EQ(2.0, service->GetScore(url1)); 875 EXPECT_EQ(2.0, service_->GetScore(url1));
880 EXPECT_EQ(5.0, service->GetScore(url3)); 876 EXPECT_EQ(5.0, service_->GetScore(url3));
881 877
882 // Add more to url3, and then leave it alone. 878 // Add more to url3, and then leave it alone.
883 clock->SetNow(base_time + one_day); 879 clock_->SetNow(base_time + one_day);
884 service->AddPoints(url1, 5.0); 880 service_->AddPoints(url1, 5.0);
885 service->AddPoints(url3, 5.0); 881 service_->AddPoints(url3, 5.0);
886 EXPECT_EQ(7.0, service->GetScore(url1)); 882 EXPECT_EQ(7.0, service_->GetScore(url1));
887 EXPECT_EQ(10.0, service->GetScore(url3)); 883 EXPECT_EQ(10.0, service_->GetScore(url3));
888 884
889 // Move to (2 * shorter_than_decay_period) before the stale period. 885 // Move to (2 * shorter_than_decay_period) before the stale period.
890 base_time += shorter_than_decay_period; 886 base_time += shorter_than_decay_period;
891 clock->SetNow(base_time); 887 clock_->SetNow(base_time);
892 service->AddPoints(url1, 5.0); 888 service_->AddPoints(url1, 5.0);
893 service->AddPoints(url4, 5.0); 889 service_->AddPoints(url4, 5.0);
894 EXPECT_EQ(12.0, service->GetScore(url1)); 890 EXPECT_EQ(12.0, service_->GetScore(url1));
895 EXPECT_EQ(5.0, service->GetScore(url4)); 891 EXPECT_EQ(5.0, service_->GetScore(url4));
896 892
897 // Move to shorter_than_decay_period before the stale period. 893 // Move to shorter_than_decay_period before the stale period.
898 base_time += shorter_than_decay_period; 894 base_time += shorter_than_decay_period;
899 clock->SetNow(base_time); 895 clock_->SetNow(base_time);
900 service->AddPoints(url1, 1.5); 896 service_->AddPoints(url1, 1.5);
901 service->AddPoints(url4, 2.0); 897 service_->AddPoints(url4, 2.0);
902 EXPECT_EQ(13.5, service->GetScore(url1)); 898 EXPECT_EQ(13.5, service_->GetScore(url1));
903 EXPECT_EQ(7.0, service->GetScore(url4)); 899 EXPECT_EQ(7.0, service_->GetScore(url4));
904 900
905 // After cleanup, url2 should be last modified offset to max_decay_time by the 901 // After cleanup, url2 should be last modified offset to max_decay_time by the
906 // current offset to now. 902 // current offset to now.
907 url2_last_modified = max_decay_time - (clock->Now() - url2_last_modified); 903 url2_last_modified = max_decay_time - (clock_->Now() - url2_last_modified);
908 base_time = GetReferenceTime(); 904 base_time = GetReferenceTime();
909 905
910 { 906 {
911 clock->SetNow(base_time); 907 clock_->SetNow(base_time);
912 ASSERT_TRUE(service->IsLastEngagementStale()); 908 ASSERT_TRUE(service_->IsLastEngagementStale());
913 909
914 // Run a cleanup. Last engagement times will be reset relative to 910 // Run a cleanup. Last engagement times will be reset relative to
915 // max_decay_time. After the reset, url2 will go through 3 decays, url3 911 // max_decay_time. After the reset, url2 will go through 3 decays, url3
916 // will go through 2 decays, and url1/url4 will go through 1 decay. This 912 // will go through 2 decays, and url1/url4 will go through 1 decay. This
917 // decay is uncommitted! 913 // decay is uncommitted!
918 service->CleanupEngagementScores(true); 914 service_->CleanupEngagementScores(true);
919 ASSERT_FALSE(service->IsLastEngagementStale()); 915 ASSERT_FALSE(service_->IsLastEngagementStale());
920 916
921 std::map<GURL, double> score_map = service->GetScoreMap(); 917 std::map<GURL, double> score_map = service_->GetScoreMap();
922 EXPECT_EQ(3u, score_map.size()); 918 EXPECT_EQ(3u, score_map.size());
923 EXPECT_EQ(8.5, score_map[url1]); 919 EXPECT_EQ(8.5, score_map[url1]);
924 EXPECT_EQ(2.0, score_map[url2]); 920 EXPECT_EQ(2.0, score_map[url2]);
925 EXPECT_EQ(2.0, score_map[url4]); 921 EXPECT_EQ(2.0, score_map[url4]);
926 EXPECT_EQ(0, service->GetScore(url3)); 922 EXPECT_EQ(0, service_->GetScore(url3));
927 923
928 EXPECT_EQ(max_decay_time, 924 EXPECT_EQ(max_decay_time,
929 service->CreateEngagementScore(url1).last_engagement_time()); 925 service_->CreateEngagementScore(url1).last_engagement_time());
930 EXPECT_EQ(url2_last_modified, 926 EXPECT_EQ(url2_last_modified,
931 service->CreateEngagementScore(url2).last_engagement_time()); 927 service_->CreateEngagementScore(url2).last_engagement_time());
932 EXPECT_EQ(max_decay_time, 928 EXPECT_EQ(max_decay_time,
933 service->CreateEngagementScore(url4).last_engagement_time()); 929 service_->CreateEngagementScore(url4).last_engagement_time());
934 EXPECT_EQ(max_decay_time, service->GetLastEngagementTime()); 930 EXPECT_EQ(max_decay_time, service_->GetLastEngagementTime());
935 } 931 }
936 932
937 { 933 {
938 // Advance time by the stale period. Nothing should happen in the cleanup. 934 // Advance time by the stale period. Nothing should happen in the cleanup.
939 // Last engagement times are now relative to max_decay_time + stale period 935 // Last engagement times are now relative to max_decay_time + stale period
940 base_time += service->GetStalePeriod(); 936 base_time += service_->GetStalePeriod();
941 clock->SetNow(base_time); 937 clock_->SetNow(base_time);
942 ASSERT_TRUE(service->IsLastEngagementStale()); 938 ASSERT_TRUE(service_->IsLastEngagementStale());
943 939
944 std::map<GURL, double> score_map = service->GetScoreMap(); 940 std::map<GURL, double> score_map = service_->GetScoreMap();
945 EXPECT_EQ(3u, score_map.size()); 941 EXPECT_EQ(3u, score_map.size());
946 EXPECT_EQ(8.5, score_map[url1]); 942 EXPECT_EQ(8.5, score_map[url1]);
947 EXPECT_EQ(2.0, score_map[url2]); 943 EXPECT_EQ(2.0, score_map[url2]);
948 EXPECT_EQ(2.0, score_map[url4]); 944 EXPECT_EQ(2.0, score_map[url4]);
949 945
950 EXPECT_EQ(max_decay_time + service->GetStalePeriod(), 946 EXPECT_EQ(max_decay_time + service_->GetStalePeriod(),
951 service->CreateEngagementScore(url1).last_engagement_time()); 947 service_->CreateEngagementScore(url1).last_engagement_time());
952 EXPECT_EQ(url2_last_modified + service->GetStalePeriod(), 948 EXPECT_EQ(url2_last_modified + service_->GetStalePeriod(),
953 service->CreateEngagementScore(url2).last_engagement_time()); 949 service_->CreateEngagementScore(url2).last_engagement_time());
954 EXPECT_EQ(max_decay_time + service->GetStalePeriod(), 950 EXPECT_EQ(max_decay_time + service_->GetStalePeriod(),
955 service->CreateEngagementScore(url4).last_engagement_time()); 951 service_->CreateEngagementScore(url4).last_engagement_time());
956 EXPECT_EQ(max_decay_time + service->GetStalePeriod(), 952 EXPECT_EQ(max_decay_time + service_->GetStalePeriod(),
957 service->GetLastEngagementTime()); 953 service_->GetLastEngagementTime());
958 } 954 }
959 955
960 { 956 {
961 // Add points to commit the decay. 957 // Add points to commit the decay.
962 service->AddPoints(url1, 0.5); 958 service_->AddPoints(url1, 0.5);
963 service->AddPoints(url2, 0.5); 959 service_->AddPoints(url2, 0.5);
964 service->AddPoints(url4, 1); 960 service_->AddPoints(url4, 1);
965 961
966 std::map<GURL, double> score_map = service->GetScoreMap(); 962 std::map<GURL, double> score_map = service_->GetScoreMap();
967 EXPECT_EQ(3u, score_map.size()); 963 EXPECT_EQ(3u, score_map.size());
968 EXPECT_EQ(9.0, score_map[url1]); 964 EXPECT_EQ(9.0, score_map[url1]);
969 EXPECT_EQ(2.5, score_map[url2]); 965 EXPECT_EQ(2.5, score_map[url2]);
970 EXPECT_EQ(3.0, score_map[url4]); 966 EXPECT_EQ(3.0, score_map[url4]);
971 EXPECT_EQ(clock->Now(), 967 EXPECT_EQ(clock_->Now(),
972 service->CreateEngagementScore(url1).last_engagement_time()); 968 service_->CreateEngagementScore(url1).last_engagement_time());
973 EXPECT_EQ(clock->Now(), 969 EXPECT_EQ(clock_->Now(),
974 service->CreateEngagementScore(url2).last_engagement_time()); 970 service_->CreateEngagementScore(url2).last_engagement_time());
975 EXPECT_EQ(clock->Now(), 971 EXPECT_EQ(clock_->Now(),
976 service->CreateEngagementScore(url4).last_engagement_time()); 972 service_->CreateEngagementScore(url4).last_engagement_time());
977 EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); 973 EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime());
978 } 974 }
979 975
980 { 976 {
981 // Advance time by a decay period after the current last engagement time. 977 // Advance time by a decay period after the current last engagement time.
982 // Expect url2/url4 to be decayed to zero and url1 to decay once. 978 // Expect url2/url4 to be decayed to zero and url1 to decay once.
983 base_time = clock->Now() + decay_period; 979 base_time = clock_->Now() + decay_period;
984 clock->SetNow(base_time); 980 clock_->SetNow(base_time);
985 ASSERT_FALSE(service->IsLastEngagementStale()); 981 ASSERT_FALSE(service_->IsLastEngagementStale());
986 982
987 std::map<GURL, double> score_map = service->GetScoreMap(); 983 std::map<GURL, double> score_map = service_->GetScoreMap();
988 EXPECT_EQ(3u, score_map.size()); 984 EXPECT_EQ(3u, score_map.size());
989 EXPECT_EQ(4, score_map[url1]); 985 EXPECT_EQ(4, score_map[url1]);
990 EXPECT_EQ(0, score_map[url2]); 986 EXPECT_EQ(0, score_map[url2]);
991 EXPECT_EQ(0, score_map[url4]); 987 EXPECT_EQ(0, score_map[url4]);
992 988
993 service->CleanupEngagementScores(false); 989 service_->CleanupEngagementScores(false);
994 ASSERT_FALSE(service->IsLastEngagementStale()); 990 ASSERT_FALSE(service_->IsLastEngagementStale());
995 991
996 score_map = service->GetScoreMap(); 992 score_map = service_->GetScoreMap();
997 EXPECT_EQ(1u, score_map.size()); 993 EXPECT_EQ(1u, score_map.size());
998 EXPECT_EQ(4, score_map[url1]); 994 EXPECT_EQ(4, score_map[url1]);
999 EXPECT_EQ(0, service->GetScore(url2)); 995 EXPECT_EQ(0, service_->GetScore(url2));
1000 EXPECT_EQ(0, service->GetScore(url4)); 996 EXPECT_EQ(0, service_->GetScore(url4));
1001 EXPECT_EQ(clock->Now() - decay_period, 997 EXPECT_EQ(clock_->Now() - decay_period,
1002 service->CreateEngagementScore(url1).last_engagement_time()); 998 service_->CreateEngagementScore(url1).last_engagement_time());
1003 EXPECT_EQ(clock->Now() - decay_period, service->GetLastEngagementTime()); 999 EXPECT_EQ(clock_->Now() - decay_period, service_->GetLastEngagementTime());
1004 } 1000 }
1005 1001
1006 { 1002 {
1007 // Add points to commit the decay. 1003 // Add points to commit the decay.
1008 service->AddPoints(url1, 0.5); 1004 service_->AddPoints(url1, 0.5);
1009 1005
1010 std::map<GURL, double> score_map = service->GetScoreMap(); 1006 std::map<GURL, double> score_map = service_->GetScoreMap();
1011 EXPECT_EQ(1u, score_map.size()); 1007 EXPECT_EQ(1u, score_map.size());
1012 EXPECT_EQ(4.5, score_map[url1]); 1008 EXPECT_EQ(4.5, score_map[url1]);
1013 EXPECT_EQ(clock->Now(), 1009 EXPECT_EQ(clock_->Now(),
1014 service->CreateEngagementScore(url1).last_engagement_time()); 1010 service_->CreateEngagementScore(url1).last_engagement_time());
1015 EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); 1011 EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime());
1016 } 1012 }
1017 1013
1018 { 1014 {
1019 // Another decay period will decay url1 to zero. 1015 // Another decay period will decay url1 to zero.
1020 clock->SetNow(clock->Now() + decay_period); 1016 clock_->SetNow(clock_->Now() + decay_period);
1021 ASSERT_FALSE(service->IsLastEngagementStale()); 1017 ASSERT_FALSE(service_->IsLastEngagementStale());
1022 1018
1023 std::map<GURL, double> score_map = service->GetScoreMap(); 1019 std::map<GURL, double> score_map = service_->GetScoreMap();
1024 EXPECT_EQ(1u, score_map.size()); 1020 EXPECT_EQ(1u, score_map.size());
1025 EXPECT_EQ(0, score_map[url1]); 1021 EXPECT_EQ(0, score_map[url1]);
1026 EXPECT_EQ(clock->Now() - decay_period, 1022 EXPECT_EQ(clock_->Now() - decay_period,
1027 service->CreateEngagementScore(url1).last_engagement_time()); 1023 service_->CreateEngagementScore(url1).last_engagement_time());
1028 EXPECT_EQ(clock->Now() - decay_period, service->GetLastEngagementTime()); 1024 EXPECT_EQ(clock_->Now() - decay_period, service_->GetLastEngagementTime());
1029 1025
1030 service->CleanupEngagementScores(false); 1026 service_->CleanupEngagementScores(false);
1031 ASSERT_FALSE(service->IsLastEngagementStale()); 1027 ASSERT_FALSE(service_->IsLastEngagementStale());
1032 1028
1033 score_map = service->GetScoreMap(); 1029 score_map = service_->GetScoreMap();
1034 EXPECT_EQ(0u, score_map.size()); 1030 EXPECT_EQ(0u, score_map.size());
1035 EXPECT_EQ(0, service->GetScore(url1)); 1031 EXPECT_EQ(0, service_->GetScore(url1));
1036 EXPECT_EQ(clock->Now() - decay_period, service->GetLastEngagementTime()); 1032 EXPECT_EQ(clock_->Now() - decay_period, service_->GetLastEngagementTime());
1037 } 1033 }
1038 } 1034 }
1039 1035
1040 TEST_F(SiteEngagementServiceTest, CleanupEngagementScoresProportional) { 1036 TEST_F(SiteEngagementServiceTest, CleanupEngagementScoresProportional) {
1041 SetParamValue(SiteEngagementScore::DECAY_PROPORTION, 0.5); 1037 SetParamValue(SiteEngagementScore::DECAY_PROPORTION, 0.5);
1042 SetParamValue(SiteEngagementScore::DECAY_POINTS, 0); 1038 SetParamValue(SiteEngagementScore::DECAY_POINTS, 0);
1043 SetParamValue(SiteEngagementScore::SCORE_CLEANUP_THRESHOLD, 0.5); 1039 SetParamValue(SiteEngagementScore::SCORE_CLEANUP_THRESHOLD, 0.5);
1044 1040
1045 base::SimpleTestClock* clock = new base::SimpleTestClock();
1046 std::unique_ptr<SiteEngagementService> service(
1047 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1048
1049 base::Time current_day = GetReferenceTime(); 1041 base::Time current_day = GetReferenceTime();
1050 clock->SetNow(current_day); 1042 clock_->SetNow(current_day);
1051 1043
1052 GURL url1("https://www.google.com/"); 1044 GURL url1("https://www.google.com/");
1053 GURL url2("https://www.somewhereelse.com/"); 1045 GURL url2("https://www.somewhereelse.com/");
1054 1046
1055 service->AddPoints(url1, 1.0); 1047 service_->AddPoints(url1, 1.0);
1056 service->AddPoints(url2, 1.2); 1048 service_->AddPoints(url2, 1.2);
1057 1049
1058 current_day += base::TimeDelta::FromDays(7); 1050 current_day += base::TimeDelta::FromDays(7);
1059 clock->SetNow(current_day); 1051 clock_->SetNow(current_day);
1060 std::map<GURL, double> score_map = service->GetScoreMap(); 1052 std::map<GURL, double> score_map = service_->GetScoreMap();
1061 EXPECT_EQ(2u, score_map.size()); 1053 EXPECT_EQ(2u, score_map.size());
1062 AssertInRange(0.5, service->GetScore(url1)); 1054 AssertInRange(0.5, service_->GetScore(url1));
1063 AssertInRange(0.6, service->GetScore(url2)); 1055 AssertInRange(0.6, service_->GetScore(url2));
1064 1056
1065 service->CleanupEngagementScores(false); 1057 service_->CleanupEngagementScores(false);
1066 score_map = service->GetScoreMap(); 1058 score_map = service_->GetScoreMap();
1067 EXPECT_EQ(1u, score_map.size()); 1059 EXPECT_EQ(1u, score_map.size());
1068 EXPECT_EQ(0, service->GetScore(url1)); 1060 EXPECT_EQ(0, service_->GetScore(url1));
1069 AssertInRange(0.6, service->GetScore(url2)); 1061 AssertInRange(0.6, service_->GetScore(url2));
1070 } 1062 }
1071 1063
1072 TEST_F(SiteEngagementServiceTest, NavigationAccumulation) { 1064 TEST_F(SiteEngagementServiceTest, NavigationAccumulation) {
1073 GURL url("https://www.google.com/"); 1065 GURL url("https://www.google.com/");
1074 1066
1075 SiteEngagementService* service = SiteEngagementService::Get(profile()); 1067 SiteEngagementService* service = SiteEngagementService::Get(profile());
1076 ASSERT_TRUE(service); 1068 ASSERT_TRUE(service);
1077 1069
1078 // Create the helper manually since it isn't present when a tab isn't created. 1070 // Create the helper manually since it isn't present when a tab isn't created.
1079 SiteEngagementService::Helper::CreateForWebContents(web_contents()); 1071 SiteEngagementService::Helper::CreateForWebContents(web_contents());
(...skipping 13 matching lines...) Expand all
1093 ui::PAGE_TRANSITION_AUTO_TOPLEVEL); 1085 ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
1094 NavigateWithTransitionAndExpectEqualScore(service, url, 1086 NavigateWithTransitionAndExpectEqualScore(service, url,
1095 ui::PAGE_TRANSITION_LINK); 1087 ui::PAGE_TRANSITION_LINK);
1096 NavigateWithTransitionAndExpectEqualScore(service, url, 1088 NavigateWithTransitionAndExpectEqualScore(service, url,
1097 ui::PAGE_TRANSITION_RELOAD); 1089 ui::PAGE_TRANSITION_RELOAD);
1098 NavigateWithTransitionAndExpectEqualScore(service, url, 1090 NavigateWithTransitionAndExpectEqualScore(service, url,
1099 ui::PAGE_TRANSITION_FORM_SUBMIT); 1091 ui::PAGE_TRANSITION_FORM_SUBMIT);
1100 } 1092 }
1101 1093
1102 TEST_F(SiteEngagementServiceTest, IsBootstrapped) { 1094 TEST_F(SiteEngagementServiceTest, IsBootstrapped) {
1103 base::SimpleTestClock* clock = new base::SimpleTestClock();
1104 std::unique_ptr<SiteEngagementService> service(
1105 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1106
1107 base::Time current_day = GetReferenceTime(); 1095 base::Time current_day = GetReferenceTime();
1108 clock->SetNow(current_day); 1096 clock_->SetNow(current_day);
1109 1097
1110 GURL url1("https://www.google.com/"); 1098 GURL url1("https://www.google.com/");
1111 GURL url2("https://www.somewhereelse.com/"); 1099 GURL url2("https://www.somewhereelse.com/");
1112 1100
1113 EXPECT_FALSE(service->IsBootstrapped()); 1101 EXPECT_FALSE(service_->IsBootstrapped());
1114 1102
1115 service->AddPoints(url1, 5.0); 1103 service_->AddPoints(url1, 5.0);
1116 EXPECT_FALSE(service->IsBootstrapped()); 1104 EXPECT_FALSE(service_->IsBootstrapped());
1117 1105
1118 service->AddPoints(url2, 5.0); 1106 service_->AddPoints(url2, 5.0);
1119 EXPECT_TRUE(service->IsBootstrapped()); 1107 EXPECT_TRUE(service_->IsBootstrapped());
1120 1108
1121 clock->SetNow(current_day + base::TimeDelta::FromDays(8)); 1109 clock_->SetNow(current_day + base::TimeDelta::FromDays(8));
1122 EXPECT_FALSE(service->IsBootstrapped()); 1110 EXPECT_FALSE(service_->IsBootstrapped());
1123 } 1111 }
1124 1112
1125 TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) { 1113 TEST_F(SiteEngagementServiceTest, CleanupOriginsOnHistoryDeletion) {
1126 // Enable proportional decay to ensure that the undecay that happens to 1114 // Enable proportional decay to ensure that the undecay that happens to
1127 // balance out history deletion also accounts for the proportional decay. 1115 // balance out history deletion also accounts for the proportional decay.
1128 SetParamValue(SiteEngagementScore::DECAY_PROPORTION, 0.5); 1116 SetParamValue(SiteEngagementScore::DECAY_PROPORTION, 0.5);
1129 1117
1130 base::SimpleTestClock* clock = new base::SimpleTestClock();
1131 std::unique_ptr<SiteEngagementService> engagement(
1132 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1133 ASSERT_TRUE(engagement.get());
1134
1135 GURL origin1("http://www.google.com/"); 1118 GURL origin1("http://www.google.com/");
1136 GURL origin1a("http://www.google.com/search?q=asdf"); 1119 GURL origin1a("http://www.google.com/search?q=asdf");
1137 GURL origin1b("http://www.google.com/maps/search?q=asdf"); 1120 GURL origin1b("http://www.google.com/maps/search?q=asdf");
1138 GURL origin2("https://drive.google.com/"); 1121 GURL origin2("https://drive.google.com/");
1139 GURL origin2a("https://drive.google.com/somedoc"); 1122 GURL origin2a("https://drive.google.com/somedoc");
1140 GURL origin3("http://notdeleted.com/"); 1123 GURL origin3("http://notdeleted.com/");
1141 GURL origin4("http://decayed.com/"); 1124 GURL origin4("http://decayed.com/");
1142 GURL origin4a("http://decayed.com/index.html"); 1125 GURL origin4a("http://decayed.com/index.html");
1143 1126
1144 base::Time today = GetReferenceTime(); 1127 base::Time today = GetReferenceTime();
1145 base::Time yesterday = GetReferenceTime() - base::TimeDelta::FromDays(1); 1128 base::Time yesterday = GetReferenceTime() - base::TimeDelta::FromDays(1);
1146 base::Time yesterday_afternoon = GetReferenceTime() - 1129 base::Time yesterday_afternoon = GetReferenceTime() -
1147 base::TimeDelta::FromDays(1) + 1130 base::TimeDelta::FromDays(1) +
1148 base::TimeDelta::FromHours(4); 1131 base::TimeDelta::FromHours(4);
1149 base::Time yesterday_week = GetReferenceTime() - base::TimeDelta::FromDays(8); 1132 base::Time yesterday_week = GetReferenceTime() - base::TimeDelta::FromDays(8);
1150 clock->SetNow(today); 1133 clock_->SetNow(today);
1151 1134
1152 history::HistoryService* history = HistoryServiceFactory::GetForProfile( 1135 history::HistoryService* history = HistoryServiceFactory::GetForProfile(
1153 profile(), ServiceAccessType::IMPLICIT_ACCESS); 1136 profile(), ServiceAccessType::IMPLICIT_ACCESS);
1154 1137
1155 history->AddPage(origin1, yesterday_afternoon, history::SOURCE_BROWSED); 1138 history->AddPage(origin1, yesterday_afternoon, history::SOURCE_BROWSED);
1156 history->AddPage(origin1a, yesterday_week, history::SOURCE_BROWSED); 1139 history->AddPage(origin1a, yesterday_week, history::SOURCE_BROWSED);
1157 history->AddPage(origin1b, today, history::SOURCE_BROWSED); 1140 history->AddPage(origin1b, today, history::SOURCE_BROWSED);
1158 engagement->AddPoints(origin1, 3.0); 1141 service_->AddPoints(origin1, 3.0);
1159 1142
1160 history->AddPage(origin2, yesterday_afternoon, history::SOURCE_BROWSED); 1143 history->AddPage(origin2, yesterday_afternoon, history::SOURCE_BROWSED);
1161 history->AddPage(origin2a, yesterday_afternoon, history::SOURCE_BROWSED); 1144 history->AddPage(origin2a, yesterday_afternoon, history::SOURCE_BROWSED);
1162 engagement->AddPoints(origin2, 5.0); 1145 service_->AddPoints(origin2, 5.0);
1163 1146
1164 history->AddPage(origin3, today, history::SOURCE_BROWSED); 1147 history->AddPage(origin3, today, history::SOURCE_BROWSED);
1165 engagement->AddPoints(origin3, 5.0); 1148 service_->AddPoints(origin3, 5.0);
1166 1149
1167 history->AddPage(origin4, yesterday_week, history::SOURCE_BROWSED); 1150 history->AddPage(origin4, yesterday_week, history::SOURCE_BROWSED);
1168 history->AddPage(origin4a, yesterday_afternoon, history::SOURCE_BROWSED); 1151 history->AddPage(origin4a, yesterday_afternoon, history::SOURCE_BROWSED);
1169 engagement->AddPoints(origin4, 5.0); 1152 service_->AddPoints(origin4, 5.0);
1170 1153
1171 AssertInRange(3.0, engagement->GetScore(origin1)); 1154 AssertInRange(3.0, service_->GetScore(origin1));
1172 AssertInRange(5.0, engagement->GetScore(origin2)); 1155 AssertInRange(5.0, service_->GetScore(origin2));
1173 AssertInRange(5.0, engagement->GetScore(origin3)); 1156 AssertInRange(5.0, service_->GetScore(origin3));
1174 AssertInRange(5.0, engagement->GetScore(origin4)); 1157 AssertInRange(5.0, service_->GetScore(origin4));
1175 1158
1176 { 1159 {
1177 SiteEngagementChangeWaiter waiter(profile()); 1160 SiteEngagementChangeWaiter waiter(profile());
1178 1161
1179 base::CancelableTaskTracker task_tracker; 1162 base::CancelableTaskTracker task_tracker;
1180 // Expire origin1, origin2, origin2a, and origin4's most recent visit. 1163 // Expire origin1, origin2, origin2a, and origin4's most recent visit.
1181 history->ExpireHistoryBetween(std::set<GURL>(), yesterday, today, 1164 history->ExpireHistoryBetween(std::set<GURL>(), yesterday, today,
1182 base::Bind(&base::DoNothing), &task_tracker); 1165 base::Bind(&base::DoNothing), &task_tracker);
1183 waiter.Wait(); 1166 waiter.Wait();
1184 1167
1185 // origin2 is cleaned up because all its urls are deleted. origin1a and 1168 // origin2 is cleaned up because all its urls are deleted. origin1a and
1186 // origin1b are still in history, but 33% of urls have been deleted, thus 1169 // origin1b are still in history, but 33% of urls have been deleted, thus
1187 // cutting origin1's score by 1/3. origin3 is untouched. origin4 has 1 URL 1170 // cutting origin1's score by 1/3. origin3 is untouched. origin4 has 1 URL
1188 // deleted and 1 remaining, but its most recent visit is more than 1 week in 1171 // deleted and 1 remaining, but its most recent visit is more than 1 week in
1189 // the past. Ensure that its scored is halved, and not decayed further. 1172 // the past. Ensure that its scored is halved, and not decayed further.
1190 AssertInRange(2, engagement->GetScore(origin1)); 1173 AssertInRange(2, service_->GetScore(origin1));
1191 EXPECT_EQ(0, engagement->GetScore(origin2)); 1174 EXPECT_EQ(0, service_->GetScore(origin2));
1192 AssertInRange(5.0, engagement->GetScore(origin3)); 1175 AssertInRange(5.0, service_->GetScore(origin3));
1193 AssertInRange(2.5, engagement->GetScore(origin4)); 1176 AssertInRange(2.5, service_->GetScore(origin4));
1194 AssertInRange(9.5, engagement->GetTotalEngagementPoints()); 1177 AssertInRange(9.5, service_->GetTotalEngagementPoints());
1195 } 1178 }
1196 1179
1197 { 1180 {
1198 SiteEngagementChangeWaiter waiter(profile()); 1181 SiteEngagementChangeWaiter waiter(profile());
1199 1182
1200 // Expire origin1a. 1183 // Expire origin1a.
1201 std::vector<history::ExpireHistoryArgs> expire_list; 1184 std::vector<history::ExpireHistoryArgs> expire_list;
1202 history::ExpireHistoryArgs args; 1185 history::ExpireHistoryArgs args;
1203 args.urls.insert(origin1a); 1186 args.urls.insert(origin1a);
1204 args.SetTimeRangeForOneDay(yesterday_week); 1187 args.SetTimeRangeForOneDay(yesterday_week);
1205 expire_list.push_back(args); 1188 expire_list.push_back(args);
1206 1189
1207 base::CancelableTaskTracker task_tracker; 1190 base::CancelableTaskTracker task_tracker;
1208 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing), 1191 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing),
1209 &task_tracker); 1192 &task_tracker);
1210 waiter.Wait(); 1193 waiter.Wait();
1211 1194
1212 // origin1's score should be halved again. origin3 and origin4 remain 1195 // origin1's score should be halved again. origin3 and origin4 remain
1213 // untouched. 1196 // untouched.
1214 AssertInRange(1, engagement->GetScore(origin1)); 1197 AssertInRange(1, service_->GetScore(origin1));
1215 EXPECT_EQ(0, engagement->GetScore(origin2)); 1198 EXPECT_EQ(0, service_->GetScore(origin2));
1216 AssertInRange(5.0, engagement->GetScore(origin3)); 1199 AssertInRange(5.0, service_->GetScore(origin3));
1217 AssertInRange(2.5, engagement->GetScore(origin4)); 1200 AssertInRange(2.5, service_->GetScore(origin4));
1218 AssertInRange(8.5, engagement->GetTotalEngagementPoints()); 1201 AssertInRange(8.5, service_->GetTotalEngagementPoints());
1219 } 1202 }
1220 1203
1221 { 1204 {
1222 SiteEngagementChangeWaiter waiter(profile()); 1205 SiteEngagementChangeWaiter waiter(profile());
1223 1206
1224 // Expire origin1b. 1207 // Expire origin1b.
1225 std::vector<history::ExpireHistoryArgs> expire_list; 1208 std::vector<history::ExpireHistoryArgs> expire_list;
1226 history::ExpireHistoryArgs args; 1209 history::ExpireHistoryArgs args;
1227 args.urls.insert(origin1b); 1210 args.urls.insert(origin1b);
1228 args.SetTimeRangeForOneDay(today); 1211 args.SetTimeRangeForOneDay(today);
1229 expire_list.push_back(args); 1212 expire_list.push_back(args);
1230 1213
1231 base::CancelableTaskTracker task_tracker; 1214 base::CancelableTaskTracker task_tracker;
1232 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing), 1215 history->ExpireHistory(expire_list, base::Bind(&base::DoNothing),
1233 &task_tracker); 1216 &task_tracker);
1234 waiter.Wait(); 1217 waiter.Wait();
1235 1218
1236 // origin1 should be removed. origin3 and origin4 remain untouched. 1219 // origin1 should be removed. origin3 and origin4 remain untouched.
1237 EXPECT_EQ(0, engagement->GetScore(origin1)); 1220 EXPECT_EQ(0, service_->GetScore(origin1));
1238 EXPECT_EQ(0, engagement->GetScore(origin2)); 1221 EXPECT_EQ(0, service_->GetScore(origin2));
1239 AssertInRange(5.0, engagement->GetScore(origin3)); 1222 AssertInRange(5.0, service_->GetScore(origin3));
1240 AssertInRange(2.5, engagement->GetScore(origin4)); 1223 AssertInRange(2.5, service_->GetScore(origin4));
1241 AssertInRange(7.5, engagement->GetTotalEngagementPoints()); 1224 AssertInRange(7.5, service_->GetTotalEngagementPoints());
1242 } 1225 }
1243 } 1226 }
1244 1227
1245 TEST_F(SiteEngagementServiceTest, EngagementLevel) { 1228 TEST_F(SiteEngagementServiceTest, EngagementLevel) {
1246 static_assert(blink::mojom::EngagementLevel::NONE != 1229 static_assert(blink::mojom::EngagementLevel::NONE !=
1247 blink::mojom::EngagementLevel::LOW, 1230 blink::mojom::EngagementLevel::LOW,
1248 "enum values should not be equal"); 1231 "enum values should not be equal");
1249 static_assert(blink::mojom::EngagementLevel::LOW != 1232 static_assert(blink::mojom::EngagementLevel::LOW !=
1250 blink::mojom::EngagementLevel::MEDIUM, 1233 blink::mojom::EngagementLevel::MEDIUM,
1251 "enum values should not be equal"); 1234 "enum values should not be equal");
1252 static_assert(blink::mojom::EngagementLevel::MEDIUM != 1235 static_assert(blink::mojom::EngagementLevel::MEDIUM !=
1253 blink::mojom::EngagementLevel::HIGH, 1236 blink::mojom::EngagementLevel::HIGH,
1254 "enum values should not be equal"); 1237 "enum values should not be equal");
1255 static_assert(blink::mojom::EngagementLevel::HIGH != 1238 static_assert(blink::mojom::EngagementLevel::HIGH !=
1256 blink::mojom::EngagementLevel::MAX, 1239 blink::mojom::EngagementLevel::MAX,
1257 "enum values should not be equal"); 1240 "enum values should not be equal");
1258 1241
1259 base::SimpleTestClock* clock = new base::SimpleTestClock();
1260 std::unique_ptr<SiteEngagementService> service(
1261 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1262
1263 base::Time current_day = GetReferenceTime(); 1242 base::Time current_day = GetReferenceTime();
1264 clock->SetNow(current_day); 1243 clock_->SetNow(current_day);
1265 1244
1266 GURL url1("https://www.google.com/"); 1245 GURL url1("https://www.google.com/");
1267 GURL url2("http://www.google.com/"); 1246 GURL url2("http://www.google.com/");
1268 1247
1269 EXPECT_EQ(blink::mojom::EngagementLevel::NONE, 1248 EXPECT_EQ(blink::mojom::EngagementLevel::NONE,
1270 service->GetEngagementLevel(url1)); 1249 service_->GetEngagementLevel(url1));
1271 EXPECT_EQ(blink::mojom::EngagementLevel::NONE, 1250 EXPECT_EQ(blink::mojom::EngagementLevel::NONE,
1272 service->GetEngagementLevel(url2)); 1251 service_->GetEngagementLevel(url2));
1273 EXPECT_TRUE( 1252 EXPECT_TRUE(
1274 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE)); 1253 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE));
1275 EXPECT_FALSE(service->IsEngagementAtLeast( 1254 EXPECT_FALSE(service_->IsEngagementAtLeast(
1276 url1, blink::mojom::EngagementLevel::MINIMAL)); 1255 url1, blink::mojom::EngagementLevel::MINIMAL));
1277 EXPECT_FALSE( 1256 EXPECT_FALSE(
1278 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW)); 1257 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW));
1279 EXPECT_FALSE(service->IsEngagementAtLeast( 1258 EXPECT_FALSE(service_->IsEngagementAtLeast(
1280 url1, blink::mojom::EngagementLevel::MEDIUM)); 1259 url1, blink::mojom::EngagementLevel::MEDIUM));
1281 EXPECT_FALSE( 1260 EXPECT_FALSE(
1282 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH)); 1261 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH));
1283 EXPECT_FALSE( 1262 EXPECT_FALSE(
1284 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX)); 1263 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX));
1285 1264
1286 // Bring url2 to MINIMAL engagement. 1265 // Bring url2 to MINIMAL engagement.
1287 service->AddPoints(url2, 0.5); 1266 service_->AddPoints(url2, 0.5);
1288 EXPECT_EQ(blink::mojom::EngagementLevel::NONE, 1267 EXPECT_EQ(blink::mojom::EngagementLevel::NONE,
1289 service->GetEngagementLevel(url1)); 1268 service_->GetEngagementLevel(url1));
1290 EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL, 1269 EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL,
1291 service->GetEngagementLevel(url2)); 1270 service_->GetEngagementLevel(url2));
1292 EXPECT_TRUE( 1271 EXPECT_TRUE(
1293 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); 1272 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE));
1294 EXPECT_TRUE(service->IsEngagementAtLeast( 1273 EXPECT_TRUE(service_->IsEngagementAtLeast(
1295 url2, blink::mojom::EngagementLevel::MINIMAL)); 1274 url2, blink::mojom::EngagementLevel::MINIMAL));
1296 EXPECT_FALSE( 1275 EXPECT_FALSE(
1297 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); 1276 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW));
1298 EXPECT_FALSE(service->IsEngagementAtLeast( 1277 EXPECT_FALSE(service_->IsEngagementAtLeast(
1299 url2, blink::mojom::EngagementLevel::MEDIUM)); 1278 url2, blink::mojom::EngagementLevel::MEDIUM));
1300 EXPECT_FALSE( 1279 EXPECT_FALSE(
1301 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); 1280 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH));
1302 EXPECT_FALSE( 1281 EXPECT_FALSE(
1303 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); 1282 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX));
1304 1283
1305 // Bring url1 to LOW engagement. 1284 // Bring url1 to LOW engagement.
1306 service->AddPoints(url1, 1.0); 1285 service_->AddPoints(url1, 1.0);
1307 EXPECT_EQ(blink::mojom::EngagementLevel::LOW, 1286 EXPECT_EQ(blink::mojom::EngagementLevel::LOW,
1308 service->GetEngagementLevel(url1)); 1287 service_->GetEngagementLevel(url1));
1309 EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL, 1288 EXPECT_EQ(blink::mojom::EngagementLevel::MINIMAL,
1310 service->GetEngagementLevel(url2)); 1289 service_->GetEngagementLevel(url2));
1311 EXPECT_TRUE( 1290 EXPECT_TRUE(
1312 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE)); 1291 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::NONE));
1313 EXPECT_TRUE(service->IsEngagementAtLeast( 1292 EXPECT_TRUE(service_->IsEngagementAtLeast(
1314 url1, blink::mojom::EngagementLevel::MINIMAL)); 1293 url1, blink::mojom::EngagementLevel::MINIMAL));
1315 EXPECT_TRUE( 1294 EXPECT_TRUE(
1316 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW)); 1295 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::LOW));
1317 EXPECT_FALSE(service->IsEngagementAtLeast( 1296 EXPECT_FALSE(service_->IsEngagementAtLeast(
1318 url1, blink::mojom::EngagementLevel::MEDIUM)); 1297 url1, blink::mojom::EngagementLevel::MEDIUM));
1319 EXPECT_FALSE( 1298 EXPECT_FALSE(
1320 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH)); 1299 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::HIGH));
1321 EXPECT_FALSE( 1300 EXPECT_FALSE(
1322 service->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX)); 1301 service_->IsEngagementAtLeast(url1, blink::mojom::EngagementLevel::MAX));
1323 1302
1324 // Bring url2 to MEDIUM engagement. 1303 // Bring url2 to MEDIUM engagement.
1325 service->AddPoints(url2, 4.5); 1304 service_->AddPoints(url2, 4.5);
1326 EXPECT_EQ(blink::mojom::EngagementLevel::LOW, 1305 EXPECT_EQ(blink::mojom::EngagementLevel::LOW,
1327 service->GetEngagementLevel(url1)); 1306 service_->GetEngagementLevel(url1));
1328 EXPECT_EQ(blink::mojom::EngagementLevel::MEDIUM, 1307 EXPECT_EQ(blink::mojom::EngagementLevel::MEDIUM,
1329 service->GetEngagementLevel(url2)); 1308 service_->GetEngagementLevel(url2));
1330 EXPECT_TRUE( 1309 EXPECT_TRUE(
1331 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); 1310 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE));
1332 EXPECT_TRUE(service->IsEngagementAtLeast( 1311 EXPECT_TRUE(service_->IsEngagementAtLeast(
1333 url2, blink::mojom::EngagementLevel::MINIMAL)); 1312 url2, blink::mojom::EngagementLevel::MINIMAL));
1334 EXPECT_TRUE( 1313 EXPECT_TRUE(
1335 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); 1314 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW));
1336 EXPECT_TRUE(service->IsEngagementAtLeast( 1315 EXPECT_TRUE(service_->IsEngagementAtLeast(
1337 url2, blink::mojom::EngagementLevel::MEDIUM)); 1316 url2, blink::mojom::EngagementLevel::MEDIUM));
1338 EXPECT_FALSE( 1317 EXPECT_FALSE(
1339 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); 1318 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH));
1340 EXPECT_FALSE( 1319 EXPECT_FALSE(
1341 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); 1320 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX));
1342 1321
1343 // Bring url2 to HIGH engagement. 1322 // Bring url2 to HIGH engagement.
1344 for (int i = 0; i < 9; ++i) { 1323 for (int i = 0; i < 9; ++i) {
1345 current_day += base::TimeDelta::FromDays(1); 1324 current_day += base::TimeDelta::FromDays(1);
1346 clock->SetNow(current_day); 1325 clock_->SetNow(current_day);
1347 service->AddPoints(url2, 5.0); 1326 service_->AddPoints(url2, 5.0);
1348 } 1327 }
1349 EXPECT_EQ(blink::mojom::EngagementLevel::HIGH, 1328 EXPECT_EQ(blink::mojom::EngagementLevel::HIGH,
1350 service->GetEngagementLevel(url2)); 1329 service_->GetEngagementLevel(url2));
1351 1330
1352 EXPECT_TRUE( 1331 EXPECT_TRUE(
1353 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); 1332 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE));
1354 EXPECT_TRUE(service->IsEngagementAtLeast( 1333 EXPECT_TRUE(service_->IsEngagementAtLeast(
1355 url2, blink::mojom::EngagementLevel::MINIMAL)); 1334 url2, blink::mojom::EngagementLevel::MINIMAL));
1356 EXPECT_TRUE( 1335 EXPECT_TRUE(
1357 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); 1336 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW));
1358 EXPECT_TRUE(service->IsEngagementAtLeast( 1337 EXPECT_TRUE(service_->IsEngagementAtLeast(
1359 url2, blink::mojom::EngagementLevel::MEDIUM)); 1338 url2, blink::mojom::EngagementLevel::MEDIUM));
1360 EXPECT_TRUE( 1339 EXPECT_TRUE(
1361 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); 1340 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH));
1362 EXPECT_FALSE( 1341 EXPECT_FALSE(
1363 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); 1342 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX));
1364 1343
1365 // Bring url2 to MAX engagement. 1344 // Bring url2 to MAX engagement.
1366 for (int i = 0; i < 10; ++i) { 1345 for (int i = 0; i < 10; ++i) {
1367 current_day += base::TimeDelta::FromDays(1); 1346 current_day += base::TimeDelta::FromDays(1);
1368 clock->SetNow(current_day); 1347 clock_->SetNow(current_day);
1369 service->AddPoints(url2, 5.0); 1348 service_->AddPoints(url2, 5.0);
1370 } 1349 }
1371 EXPECT_EQ(blink::mojom::EngagementLevel::MAX, 1350 EXPECT_EQ(blink::mojom::EngagementLevel::MAX,
1372 service->GetEngagementLevel(url2)); 1351 service_->GetEngagementLevel(url2));
1373 EXPECT_TRUE( 1352 EXPECT_TRUE(
1374 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE)); 1353 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::NONE));
1375 EXPECT_TRUE(service->IsEngagementAtLeast( 1354 EXPECT_TRUE(service_->IsEngagementAtLeast(
1376 url2, blink::mojom::EngagementLevel::MINIMAL)); 1355 url2, blink::mojom::EngagementLevel::MINIMAL));
1377 EXPECT_TRUE( 1356 EXPECT_TRUE(
1378 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW)); 1357 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::LOW));
1379 EXPECT_TRUE(service->IsEngagementAtLeast( 1358 EXPECT_TRUE(service_->IsEngagementAtLeast(
1380 url2, blink::mojom::EngagementLevel::MEDIUM)); 1359 url2, blink::mojom::EngagementLevel::MEDIUM));
1381 EXPECT_TRUE( 1360 EXPECT_TRUE(
1382 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH)); 1361 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::HIGH));
1383 EXPECT_TRUE( 1362 EXPECT_TRUE(
1384 service->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX)); 1363 service_->IsEngagementAtLeast(url2, blink::mojom::EngagementLevel::MAX));
1385 } 1364 }
1386 1365
1387 TEST_F(SiteEngagementServiceTest, Observers) { 1366 TEST_F(SiteEngagementServiceTest, Observers) {
1388 SiteEngagementService* service = SiteEngagementService::Get(profile()); 1367 SiteEngagementService* service = SiteEngagementService::Get(profile());
1389 1368
1390 GURL url_score_1("http://www.google.com/maps"); 1369 GURL url_score_1("http://www.google.com/maps");
1391 GURL url_score_2("http://www.google.com/drive"); 1370 GURL url_score_2("http://www.google.com/drive");
1392 GURL url_score_3("http://www.google.com/"); 1371 GURL url_score_3("http://www.google.com/");
1393 GURL url_not_called("https://www.google.com/"); 1372 GURL url_not_called("https://www.google.com/");
1394 1373
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1441 service->HandleMediaPlaying(web_contents(), true); 1420 service->HandleMediaPlaying(web_contents(), true);
1442 tester.Wait(); 1421 tester.Wait();
1443 1422
1444 EXPECT_TRUE(tester.callback_called()); 1423 EXPECT_TRUE(tester.callback_called());
1445 EXPECT_FALSE(tester_not_called.callback_called()); 1424 EXPECT_FALSE(tester_not_called.callback_called());
1446 tester.Observe(nullptr); 1425 tester.Observe(nullptr);
1447 } 1426 }
1448 } 1427 }
1449 1428
1450 TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) { 1429 TEST_F(SiteEngagementServiceTest, ScoreDecayHistograms) {
1451 base::SimpleTestClock* clock = new base::SimpleTestClock();
1452 std::unique_ptr<SiteEngagementService> service(
1453 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1454
1455 base::Time current_day = GetReferenceTime(); 1430 base::Time current_day = GetReferenceTime();
1456 clock->SetNow(current_day); 1431 clock_->SetNow(current_day);
1457 base::HistogramTester histograms; 1432 base::HistogramTester histograms;
1458 GURL origin1("http://www.google.com/"); 1433 GURL origin1("http://www.google.com/");
1459 GURL origin2("http://drive.google.com/"); 1434 GURL origin2("http://drive.google.com/");
1460 1435
1461 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, 1436 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram,
1462 0); 1437 0);
1463 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1438 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1464 0); 1439 0);
1465 1440
1466 service->AddPoints(origin2, SiteEngagementScore::GetNavigationPoints()); 1441 service_->AddPoints(origin2, SiteEngagementScore::GetNavigationPoints());
1467 1442
1468 // Max the score for origin1. 1443 // Max the score for origin1.
1469 for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) { 1444 for (int i = 0; i < kMoreDaysThanNeededToMaxTotalEngagement; ++i) {
1470 current_day += base::TimeDelta::FromDays(1); 1445 current_day += base::TimeDelta::FromDays(1);
1471 clock->SetNow(current_day); 1446 clock_->SetNow(current_day);
1472 1447
1473 for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j) 1448 for (int j = 0; j < kMoreAccumulationsThanNeededToMaxDailyEngagement; ++j)
1474 service->AddPoints(origin1, SiteEngagementScore::GetNavigationPoints()); 1449 service_->AddPoints(origin1, SiteEngagementScore::GetNavigationPoints());
1475 } 1450 }
1476 1451
1477 EXPECT_EQ(SiteEngagementScore::kMaxPoints, service->GetScore(origin1)); 1452 EXPECT_EQ(SiteEngagementScore::kMaxPoints, service_->GetScore(origin1));
1478 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, 1453 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram,
1479 0); 1454 0);
1480 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1455 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1481 0); 1456 0);
1482 1457
1483 // Check histograms after one decay period. 1458 // Check histograms after one decay period.
1484 clock->SetNow( 1459 clock_->SetNow(
1485 current_day + 1460 current_day +
1486 base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours())); 1461 base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours()));
1487 1462
1488 // Trigger decay and histogram hit. 1463 // Trigger decay and histogram hit.
1489 service->AddPoints(origin1, 0.01); 1464 service_->AddPoints(origin1, 0.01);
1490 histograms.ExpectUniqueSample( 1465 histograms.ExpectUniqueSample(
1491 SiteEngagementMetrics::kScoreDecayedFromHistogram, 1466 SiteEngagementMetrics::kScoreDecayedFromHistogram,
1492 SiteEngagementScore::kMaxPoints, 1); 1467 SiteEngagementScore::kMaxPoints, 1);
1493 histograms.ExpectUniqueSample( 1468 histograms.ExpectUniqueSample(
1494 SiteEngagementMetrics::kScoreDecayedToHistogram, 1469 SiteEngagementMetrics::kScoreDecayedToHistogram,
1495 SiteEngagementScore::kMaxPoints - SiteEngagementScore::GetDecayPoints(), 1470 SiteEngagementScore::kMaxPoints - SiteEngagementScore::GetDecayPoints(),
1496 1); 1471 1);
1497 1472
1498 // Check histograms after another decay period. 1473 // Check histograms after another decay period.
1499 clock->SetNow(current_day + 1474 clock_->SetNow(current_day +
1500 base::TimeDelta::FromHours( 1475 base::TimeDelta::FromHours(
1501 2 * SiteEngagementScore::GetDecayPeriodInHours())); 1476 2 * SiteEngagementScore::GetDecayPeriodInHours()));
1502 // Trigger decay and histogram hit. 1477 // Trigger decay and histogram hit.
1503 service->AddPoints(origin1, 0.01); 1478 service_->AddPoints(origin1, 0.01);
1504 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, 1479 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram,
1505 2); 1480 2);
1506 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1481 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1507 2); 1482 2);
1508 1483
1509 // Check decay to zero. Start at the 3rd decay period (we have had two 1484 // Check decay to zero. Start at the 3rd decay period (we have had two
1510 // already). This will be 40 decays in total. 1485 // already). This will be 40 decays in total.
1511 for (int i = 3; i <= kMorePeriodsThanNeededToDecayMaxScore; ++i) { 1486 for (int i = 3; i <= kMorePeriodsThanNeededToDecayMaxScore; ++i) {
1512 clock->SetNow(current_day + 1487 clock_->SetNow(current_day +
1513 base::TimeDelta::FromHours( 1488 base::TimeDelta::FromHours(
1514 i * SiteEngagementScore::GetDecayPeriodInHours())); 1489 i * SiteEngagementScore::GetDecayPeriodInHours()));
1515 // Trigger decay and histogram hit. 1490 // Trigger decay and histogram hit.
1516 service->AddPoints(origin1, 0.01); 1491 service_->AddPoints(origin1, 0.01);
1517 } 1492 }
1518 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, 1493 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram,
1519 kMorePeriodsThanNeededToDecayMaxScore); 1494 kMorePeriodsThanNeededToDecayMaxScore);
1520 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1495 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1521 kMorePeriodsThanNeededToDecayMaxScore); 1496 kMorePeriodsThanNeededToDecayMaxScore);
1522 // It should have taken (20 - 3) = 17 of the 38 decays to get to zero, since 1497 // It should have taken (20 - 3) = 17 of the 38 decays to get to zero, since
1523 // we started from 95. Expect the remaining 21 decays to be to bucket 0 (and 1498 // we started from 95. Expect the remaining 21 decays to be to bucket 0 (and
1524 // hence 20 from bucket 0). 1499 // hence 20 from bucket 0).
1525 histograms.ExpectBucketCount( 1500 histograms.ExpectBucketCount(
1526 SiteEngagementMetrics::kScoreDecayedFromHistogram, 0, 20); 1501 SiteEngagementMetrics::kScoreDecayedFromHistogram, 0, 20);
1527 histograms.ExpectBucketCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1502 histograms.ExpectBucketCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1528 0, 21); 1503 0, 21);
1529 // Trigger decay and histogram hit for origin2, checking an independent decay. 1504 // Trigger decay and histogram hit for origin2, checking an independent decay.
1530 service->AddPoints(origin2, 0.01); 1505 service_->AddPoints(origin2, 0.01);
1531 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, 1506 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram,
1532 kMorePeriodsThanNeededToDecayMaxScore + 1); 1507 kMorePeriodsThanNeededToDecayMaxScore + 1);
1533 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1508 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1534 kMorePeriodsThanNeededToDecayMaxScore + 1); 1509 kMorePeriodsThanNeededToDecayMaxScore + 1);
1535 histograms.ExpectBucketCount( 1510 histograms.ExpectBucketCount(
1536 SiteEngagementMetrics::kScoreDecayedFromHistogram, 0, 21); 1511 SiteEngagementMetrics::kScoreDecayedFromHistogram, 0, 21);
1537 histograms.ExpectBucketCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1512 histograms.ExpectBucketCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1538 0, 22); 1513 0, 22);
1539 1514
1540 // Add more points and ensure no more samples are present. 1515 // Add more points and ensure no more samples are present.
1541 service->AddPoints(origin1, 0.01); 1516 service_->AddPoints(origin1, 0.01);
1542 service->AddPoints(origin2, 0.01); 1517 service_->AddPoints(origin2, 0.01);
1543 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram, 1518 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedFromHistogram,
1544 kMorePeriodsThanNeededToDecayMaxScore + 1); 1519 kMorePeriodsThanNeededToDecayMaxScore + 1);
1545 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram, 1520 histograms.ExpectTotalCount(SiteEngagementMetrics::kScoreDecayedToHistogram,
1546 kMorePeriodsThanNeededToDecayMaxScore + 1); 1521 kMorePeriodsThanNeededToDecayMaxScore + 1);
1547 } 1522 }
1548 1523
1549 TEST_F(SiteEngagementServiceTest, LastEngagementTime) { 1524 TEST_F(SiteEngagementServiceTest, LastEngagementTime) {
1550 // The last engagement time should start off null in prefs and in the service. 1525 // The last engagement time should start off null in prefs and in the service.
1551 base::Time last_engagement_time = base::Time::FromInternalValue( 1526 base::Time last_engagement_time = base::Time::FromInternalValue(
1552 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); 1527 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime));
1553 1528
1554 ASSERT_TRUE(last_engagement_time.is_null()); 1529 ASSERT_TRUE(last_engagement_time.is_null());
1555 1530 ASSERT_TRUE(service_->GetLastEngagementTime().is_null());
1556 base::SimpleTestClock* clock = new base::SimpleTestClock();
1557 std::unique_ptr<SiteEngagementService> service(
1558 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1559
1560 ASSERT_TRUE(service->GetLastEngagementTime().is_null());
1561 1531
1562 base::Time current_day = GetReferenceTime(); 1532 base::Time current_day = GetReferenceTime();
1563 clock->SetNow(current_day); 1533 clock_->SetNow(current_day);
1564 1534
1565 // Add points should set the last engagement time in the service, and persist 1535 // Add points should set the last engagement time in the service, and persist
1566 // it to disk. 1536 // it to disk.
1567 GURL origin("http://www.google.com/"); 1537 GURL origin("http://www.google.com/");
1568 service->AddPoints(origin, 1); 1538 service_->AddPoints(origin, 1);
1569 1539
1570 last_engagement_time = base::Time::FromInternalValue( 1540 last_engagement_time = base::Time::FromInternalValue(
1571 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); 1541 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime));
1572 1542
1573 EXPECT_EQ(current_day, service->GetLastEngagementTime()); 1543 EXPECT_EQ(current_day, service_->GetLastEngagementTime());
1574 EXPECT_EQ(current_day, last_engagement_time); 1544 EXPECT_EQ(current_day, last_engagement_time);
1575 1545
1576 // Running a cleanup and updating last engagement times should persist the 1546 // Running a cleanup and updating last engagement times should persist the
1577 // last engagement time to disk. 1547 // last engagement time to disk.
1578 current_day += service->GetStalePeriod(); 1548 current_day += service_->GetStalePeriod();
1579 base::Time rebased_time = current_day - service->GetMaxDecayPeriod(); 1549 base::Time rebased_time = current_day - service_->GetMaxDecayPeriod();
1580 clock->SetNow(current_day); 1550 clock_->SetNow(current_day);
1581 service->CleanupEngagementScores(true); 1551 service_->CleanupEngagementScores(true);
1582 1552
1583 last_engagement_time = base::Time::FromInternalValue( 1553 last_engagement_time = base::Time::FromInternalValue(
1584 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); 1554 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime));
1585 1555
1586 EXPECT_EQ(rebased_time, last_engagement_time); 1556 EXPECT_EQ(rebased_time, last_engagement_time);
1587 EXPECT_EQ(rebased_time, service->GetLastEngagementTime()); 1557 EXPECT_EQ(rebased_time, service_->GetLastEngagementTime());
1588 1558
1589 // Adding 0 points shouldn't update the last engagement time. 1559 // Adding 0 points shouldn't update the last engagement time.
1590 base::Time later_in_day = current_day + base::TimeDelta::FromSeconds(30); 1560 base::Time later_in_day = current_day + base::TimeDelta::FromSeconds(30);
1591 clock->SetNow(later_in_day); 1561 clock_->SetNow(later_in_day);
1592 service->AddPoints(origin, 0); 1562 service_->AddPoints(origin, 0);
1593 1563
1594 last_engagement_time = base::Time::FromInternalValue( 1564 last_engagement_time = base::Time::FromInternalValue(
1595 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); 1565 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime));
1596 EXPECT_EQ(rebased_time, last_engagement_time); 1566 EXPECT_EQ(rebased_time, last_engagement_time);
1597 EXPECT_EQ(rebased_time, service->GetLastEngagementTime()); 1567 EXPECT_EQ(rebased_time, service_->GetLastEngagementTime());
1598 1568
1599 // Add some more points and ensure the value is persisted. 1569 // Add some more points and ensure the value is persisted.
1600 service->AddPoints(origin, 3); 1570 service_->AddPoints(origin, 3);
1601 1571
1602 last_engagement_time = base::Time::FromInternalValue( 1572 last_engagement_time = base::Time::FromInternalValue(
1603 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime)); 1573 profile()->GetPrefs()->GetInt64(prefs::kSiteEngagementLastUpdateTime));
1604 1574
1605 EXPECT_EQ(later_in_day, last_engagement_time); 1575 EXPECT_EQ(later_in_day, last_engagement_time);
1606 EXPECT_EQ(later_in_day, service->GetLastEngagementTime()); 1576 EXPECT_EQ(later_in_day, service_->GetLastEngagementTime());
1607 } 1577 }
1608 1578
1609 TEST_F(SiteEngagementServiceTest, CleanupMovesScoreBackToNow) { 1579 TEST_F(SiteEngagementServiceTest, CleanupMovesScoreBackToNow) {
1610 base::SimpleTestClock* clock = new base::SimpleTestClock();
1611 std::unique_ptr<SiteEngagementService> service(
1612 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1613 base::Time last_engagement_time; 1580 base::Time last_engagement_time;
1614 1581
1615 base::Time current_day = GetReferenceTime(); 1582 base::Time current_day = GetReferenceTime();
1616 clock->SetNow(current_day); 1583 clock_->SetNow(current_day);
1617 1584
1618 GURL origin("http://www.google.com/"); 1585 GURL origin("http://www.google.com/");
1619 service->AddPoints(origin, 1); 1586 service_->AddPoints(origin, 1);
1620 EXPECT_EQ(1, service->GetScore(origin)); 1587 EXPECT_EQ(1, service_->GetScore(origin));
1621 EXPECT_EQ(current_day, service->GetLastEngagementTime()); 1588 EXPECT_EQ(current_day, service_->GetLastEngagementTime());
1622 1589
1623 // Send the clock back in time before the stale period and add engagement for 1590 // Send the clock back in time before the stale period and add engagement for
1624 // a new origin. Ensure that the original origin has its last engagement time 1591 // a new origin. Ensure that the original origin has its last engagement time
1625 // updated to now as a result. 1592 // updated to now as a result.
1626 base::Time before_stale_period = 1593 base::Time before_stale_period = clock_->Now() - service_->GetStalePeriod() -
1627 clock->Now() - service->GetStalePeriod() - service->GetMaxDecayPeriod(); 1594 service_->GetMaxDecayPeriod();
1628 clock->SetNow(before_stale_period); 1595 clock_->SetNow(before_stale_period);
1629 1596
1630 GURL origin1("http://maps.google.com/"); 1597 GURL origin1("http://maps.google.com/");
1631 service->AddPoints(origin1, 1); 1598 service_->AddPoints(origin1, 1);
1632 1599
1633 EXPECT_EQ(before_stale_period, 1600 EXPECT_EQ(before_stale_period,
1634 service->CreateEngagementScore(origin).last_engagement_time()); 1601 service_->CreateEngagementScore(origin).last_engagement_time());
1635 EXPECT_EQ(before_stale_period, service->GetLastEngagementTime()); 1602 EXPECT_EQ(before_stale_period, service_->GetLastEngagementTime());
1636 EXPECT_EQ(1, service->GetScore(origin)); 1603 EXPECT_EQ(1, service_->GetScore(origin));
1637 EXPECT_EQ(1, service->GetScore(origin1)); 1604 EXPECT_EQ(1, service_->GetScore(origin1));
1638 1605
1639 // Advance within a decay period and add points. 1606 // Advance within a decay period and add points.
1640 base::TimeDelta less_than_decay_period = 1607 base::TimeDelta less_than_decay_period =
1641 base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours()) - 1608 base::TimeDelta::FromHours(SiteEngagementScore::GetDecayPeriodInHours()) -
1642 base::TimeDelta::FromSeconds(30); 1609 base::TimeDelta::FromSeconds(30);
1643 base::Time origin1_last_updated = clock->Now() + less_than_decay_period; 1610 base::Time origin1_last_updated = clock_->Now() + less_than_decay_period;
1644 clock->SetNow(origin1_last_updated); 1611 clock_->SetNow(origin1_last_updated);
1645 service->AddPoints(origin, 1); 1612 service_->AddPoints(origin, 1);
1646 service->AddPoints(origin1, 5); 1613 service_->AddPoints(origin1, 5);
1647 EXPECT_EQ(2, service->GetScore(origin)); 1614 EXPECT_EQ(2, service_->GetScore(origin));
1648 EXPECT_EQ(6, service->GetScore(origin1)); 1615 EXPECT_EQ(6, service_->GetScore(origin1));
1649 1616
1650 clock->SetNow(clock->Now() + less_than_decay_period); 1617 clock_->SetNow(clock_->Now() + less_than_decay_period);
1651 service->AddPoints(origin, 5); 1618 service_->AddPoints(origin, 5);
1652 EXPECT_EQ(7, service->GetScore(origin)); 1619 EXPECT_EQ(7, service_->GetScore(origin));
1653 1620
1654 // Move forward to the max number of decays per score. This is within the 1621 // Move forward to the max number of decays per score. This is within the
1655 // stale period so no cleanup should be run. 1622 // stale period so no cleanup should be run.
1656 for (int i = 0; i < SiteEngagementScore::GetMaxDecaysPerScore(); ++i) { 1623 for (int i = 0; i < SiteEngagementScore::GetMaxDecaysPerScore(); ++i) {
1657 clock->SetNow(clock->Now() + less_than_decay_period); 1624 clock_->SetNow(clock_->Now() + less_than_decay_period);
1658 service->AddPoints(origin, 5); 1625 service_->AddPoints(origin, 5);
1659 EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); 1626 EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime());
1660 } 1627 }
1661 EXPECT_EQ(12, service->GetScore(origin)); 1628 EXPECT_EQ(12, service_->GetScore(origin));
1662 EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); 1629 EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime());
1663 1630
1664 // Move the clock back to precisely 1 decay period after origin1's last 1631 // Move the clock back to precisely 1 decay period after origin1's last
1665 // updated time. |last_engagement_time| is in the future, so AddPoints 1632 // updated time. |last_engagement_time| is in the future, so AddPoints
1666 // triggers a cleanup. Ensure that |last_engagement_time| is moved back 1633 // triggers a cleanup. Ensure that |last_engagement_time| is moved back
1667 // appropriately, while origin1 is decayed correctly (once). 1634 // appropriately, while origin1 is decayed correctly (once).
1668 clock->SetNow(origin1_last_updated + less_than_decay_period + 1635 clock_->SetNow(origin1_last_updated + less_than_decay_period +
1669 base::TimeDelta::FromSeconds(30)); 1636 base::TimeDelta::FromSeconds(30));
1670 service->AddPoints(origin1, 1); 1637 service_->AddPoints(origin1, 1);
1671 1638
1672 EXPECT_EQ(clock->Now(), 1639 EXPECT_EQ(clock_->Now(),
1673 service->CreateEngagementScore(origin).last_engagement_time()); 1640 service_->CreateEngagementScore(origin).last_engagement_time());
1674 EXPECT_EQ(clock->Now(), service->GetLastEngagementTime()); 1641 EXPECT_EQ(clock_->Now(), service_->GetLastEngagementTime());
1675 EXPECT_EQ(12, service->GetScore(origin)); 1642 EXPECT_EQ(12, service_->GetScore(origin));
1676 EXPECT_EQ(1, service->GetScore(origin1)); 1643 EXPECT_EQ(1, service_->GetScore(origin1));
1677 } 1644 }
1678 1645
1679 TEST_F(SiteEngagementServiceTest, CleanupMovesScoreBackToRebase) { 1646 TEST_F(SiteEngagementServiceTest, CleanupMovesScoreBackToRebase) {
1680 base::SimpleTestClock* clock = new base::SimpleTestClock();
1681 std::unique_ptr<SiteEngagementService> service(
1682 new SiteEngagementService(profile(), base::WrapUnique(clock)));
1683 base::Time last_engagement_time; 1647 base::Time last_engagement_time;
1684 1648
1685 base::Time current_day = GetReferenceTime(); 1649 base::Time current_day = GetReferenceTime();
1686 clock->SetNow(current_day); 1650 clock_->SetNow(current_day);
1687 1651
1688 GURL origin("http://www.google.com/"); 1652 GURL origin("http://www.google.com/");
1689 service->ResetBaseScoreForURL(origin, 5); 1653 service_->ResetBaseScoreForURL(origin, 5);
1690 service->AddPoints(origin, 5); 1654 service_->AddPoints(origin, 5);
1691 EXPECT_EQ(10, service->GetScore(origin)); 1655 EXPECT_EQ(10, service_->GetScore(origin));
1692 EXPECT_EQ(current_day, service->GetLastEngagementTime()); 1656 EXPECT_EQ(current_day, service_->GetLastEngagementTime());
1693 1657
1694 // Send the clock back in time before the stale period and add engagement for 1658 // Send the clock back in time before the stale period and add engagement for
1695 // a new origin. 1659 // a new origin.
1696 base::Time before_stale_period = 1660 base::Time before_stale_period = clock_->Now() - service_->GetStalePeriod() -
1697 clock->Now() - service->GetStalePeriod() - service->GetMaxDecayPeriod(); 1661 service_->GetMaxDecayPeriod();
1698 clock->SetNow(before_stale_period); 1662 clock_->SetNow(before_stale_period);
1699 1663
1700 GURL origin1("http://maps.google.com/"); 1664 GURL origin1("http://maps.google.com/");
1701 service->AddPoints(origin1, 1); 1665 service_->AddPoints(origin1, 1);
1702 1666
1703 EXPECT_EQ(before_stale_period, service->GetLastEngagementTime()); 1667 EXPECT_EQ(before_stale_period, service_->GetLastEngagementTime());
1704 1668
1705 // Set the clock such that |origin|'s last engagement time is between 1669 // Set the clock such that |origin|'s last engagement time is between
1706 // last_engagement_time and rebase_time. 1670 // last_engagement_time and rebase_time.
1707 clock->SetNow(current_day + service->GetStalePeriod() + 1671 clock_->SetNow(current_day + service_->GetStalePeriod() +
1708 service->GetMaxDecayPeriod() - 1672 service_->GetMaxDecayPeriod() -
1709 base::TimeDelta::FromSeconds((30))); 1673 base::TimeDelta::FromSeconds((30)));
1710 base::Time rebased_time = clock->Now() - service->GetMaxDecayPeriod(); 1674 base::Time rebased_time = clock_->Now() - service_->GetMaxDecayPeriod();
1711 service->CleanupEngagementScores(true); 1675 service_->CleanupEngagementScores(true);
1712 1676
1713 // Ensure that the original origin has its last engagement time updated to 1677 // Ensure that the original origin has its last engagement time updated to
1714 // rebase_time, and it has decayed when we access the score. 1678 // rebase_time, and it has decayed when we access the score.
1715 EXPECT_EQ(rebased_time, 1679 EXPECT_EQ(rebased_time,
1716 service->CreateEngagementScore(origin).last_engagement_time()); 1680 service_->CreateEngagementScore(origin).last_engagement_time());
1717 EXPECT_EQ(rebased_time, service->GetLastEngagementTime()); 1681 EXPECT_EQ(rebased_time, service_->GetLastEngagementTime());
1718 EXPECT_EQ(5, service->GetScore(origin)); 1682 EXPECT_EQ(5, service_->GetScore(origin));
1719 EXPECT_EQ(0, service->GetScore(origin1)); 1683 EXPECT_EQ(0, service_->GetScore(origin1));
1720 } 1684 }
1721 1685
1722 TEST_F(SiteEngagementServiceTest, IncognitoEngagementService) { 1686 TEST_F(SiteEngagementServiceTest, IncognitoEngagementService) {
1723 SiteEngagementService* service = SiteEngagementService::Get(profile()); 1687 SiteEngagementService* service = SiteEngagementService::Get(profile());
1724 ASSERT_TRUE(service); 1688 ASSERT_TRUE(service);
1725 1689
1726 GURL url1("http://www.google.com/"); 1690 GURL url1("http://www.google.com/");
1727 GURL url2("https://www.google.com/"); 1691 GURL url2("https://www.google.com/");
1728 GURL url3("https://drive.google.com/"); 1692 GURL url3("https://drive.google.com/");
1729 GURL url4("https://maps.google.com/"); 1693 GURL url4("https://maps.google.com/");
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
1809 1773
1810 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO, 1774 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO,
1811 settings_map, url1)); 1775 settings_map, url1));
1812 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, 1776 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE,
1813 settings_map, url2)); 1777 settings_map, url2));
1814 EXPECT_EQ(4, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE, 1778 EXPECT_EQ(4, CheckScoreFromSettingsOnThread(content::BrowserThread::FILE,
1815 incognito_settings_map, url1)); 1779 incognito_settings_map, url1));
1816 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO, 1780 EXPECT_EQ(3, CheckScoreFromSettingsOnThread(content::BrowserThread::IO,
1817 incognito_settings_map, url2)); 1781 incognito_settings_map, url2));
1818 } 1782 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698