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

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

Issue 1368533004: Add UMA metrics to the site engagement service. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@time-on-site
Patch Set: Addressing reviewer feedback. Adding more testing Created 5 years, 2 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 "base/command_line.h" 5 #include "base/command_line.h"
6 #include "base/test/histogram_tester.h"
6 #include "base/test/simple_test_clock.h" 7 #include "base/test/simple_test_clock.h"
7 #include "base/values.h" 8 #include "base/values.h"
8 #include "chrome/browser/engagement/site_engagement_helper.h" 9 #include "chrome/browser/engagement/site_engagement_helper.h"
10 #include "chrome/browser/engagement/site_engagement_metrics.h"
9 #include "chrome/browser/engagement/site_engagement_service.h" 11 #include "chrome/browser/engagement/site_engagement_service.h"
10 #include "chrome/browser/engagement/site_engagement_service_factory.h" 12 #include "chrome/browser/engagement/site_engagement_service_factory.h"
11 #include "chrome/common/chrome_switches.h" 13 #include "chrome/common/chrome_switches.h"
12 #include "chrome/test/base/browser_with_test_window_test.h" 14 #include "chrome/test/base/browser_with_test_window_test.h"
13 #include "testing/gtest/include/gtest/gtest.h" 15 #include "testing/gtest/include/gtest/gtest.h"
14 16
15 namespace { 17 namespace {
16 18
17 const int kLessAccumulationsThanNeededToMaxDailyEngagement = 2; 19 const int kLessAccumulationsThanNeededToMaxDailyEngagement = 2;
18 const int kMoreAccumulationsThanNeededToMaxDailyEngagement = 40; 20 const int kMoreAccumulationsThanNeededToMaxDailyEngagement = 40;
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
313 public: 315 public:
314 SiteEngagementServiceTest() {} 316 SiteEngagementServiceTest() {}
315 317
316 void SetUp() override { 318 void SetUp() override {
317 BrowserWithTestWindowTest::SetUp(); 319 BrowserWithTestWindowTest::SetUp();
318 base::CommandLine::ForCurrentProcess()->AppendSwitch( 320 base::CommandLine::ForCurrentProcess()->AppendSwitch(
319 switches::kEnableSiteEngagementService); 321 switches::kEnableSiteEngagementService);
320 } 322 }
321 }; 323 };
322 324
325 TEST_F(SiteEngagementServiceTest, GetMedianEngagement) {
326 SiteEngagementService* service =
327 SiteEngagementServiceFactory::GetForProfile(profile());
328 DCHECK(service);
329
330 GURL url1("http://www.google.com/");
331 GURL url2("https://www.google.com/");
332 GURL url3("https://drive.google.com/");
333 GURL url4("https://maps.google.com/");
334 GURL url5("https://youtube.com/");
335 GURL url6("https://images.google.com/");
336
337 {
338 // For zero total sites, the median is 0.
339 std::map<GURL, double> score_map = service->GetScoreMap();
340 EXPECT_TRUE(0 == score_map.size());
341 EXPECT_DOUBLE_EQ(0, service->GetMedianEngagement(score_map));
342 }
343
344 {
345 // For odd total sites, the median is the middle score.
346 service->AddPoints(url1, 1);
347 std::map<GURL, double> score_map = service->GetScoreMap();
348 EXPECT_TRUE(1 == score_map.size());
349 EXPECT_DOUBLE_EQ(1, service->GetMedianEngagement(score_map));
350 }
351
352 {
353 // For even total sites, the median is the mean of the middle two scores.
354 service->AddPoints(url2, 2);
355 std::map<GURL, double> score_map = service->GetScoreMap();
356 EXPECT_TRUE(2 == score_map.size());
357 EXPECT_DOUBLE_EQ(1.5, service->GetMedianEngagement(score_map));
358 }
359
360 {
361 service->AddPoints(url3, 1.4);
362 std::map<GURL, double> score_map = service->GetScoreMap();
363 EXPECT_TRUE(3 == score_map.size());
364 EXPECT_DOUBLE_EQ(1.4, service->GetMedianEngagement(score_map));
365 }
366
367 {
368 service->AddPoints(url4, 1.8);
369 std::map<GURL, double> score_map = service->GetScoreMap();
370 EXPECT_TRUE(4 == score_map.size());
371 EXPECT_DOUBLE_EQ(1.6, service->GetMedianEngagement(score_map));
372 }
373
374 {
375 service->AddPoints(url5, 2.5);
376 std::map<GURL, double> score_map = service->GetScoreMap();
377 EXPECT_TRUE(5 == score_map.size());
378 EXPECT_DOUBLE_EQ(1.8, service->GetMedianEngagement(score_map));
379 }
380
381 {
382 service->AddPoints(url6, 3);
383 std::map<GURL, double> score_map = service->GetScoreMap();
384 EXPECT_TRUE(6 == score_map.size());
385 EXPECT_DOUBLE_EQ(1.9, service->GetMedianEngagement(score_map));
386 }
387 }
388
323 // Tests that the Site Engagement service is hooked up properly to navigations 389 // Tests that the Site Engagement service is hooked up properly to navigations
324 // by performing two navigations and checking the engagement score increases 390 // by performing two navigations and checking the engagement score increases
325 // both times. 391 // both times.
326 TEST_F(SiteEngagementServiceTest, ScoreIncrementsOnPageRequest) { 392 TEST_F(SiteEngagementServiceTest, ScoreIncrementsOnPageRequest) {
327 SiteEngagementService* service = 393 SiteEngagementService* service =
328 SiteEngagementServiceFactory::GetForProfile(profile()); 394 SiteEngagementServiceFactory::GetForProfile(profile());
329 DCHECK(service); 395 DCHECK(service);
330 396
331 GURL url("http://www.google.com/"); 397 GURL url("http://www.google.com/");
332 398
333 AddTab(browser(), GURL("about:blank")); 399 AddTab(browser(), GURL("about:blank"));
334 EXPECT_EQ(0, service->GetScore(url)); 400 EXPECT_EQ(0, service->GetScore(url));
335 double prev_score = service->GetScore(url); 401 double prev_score = service->GetScore(url);
336 402
337 NavigateAndCommitActiveTab(url); 403 NavigateAndCommitActiveTab(url);
338 EXPECT_LT(prev_score, service->GetScore(url)); 404 EXPECT_LT(prev_score, service->GetScore(url));
339 prev_score = service->GetScore(url); 405 prev_score = service->GetScore(url);
340 406
341 NavigateAndCommitActiveTab(url); 407 NavigateAndCommitActiveTab(url);
342 EXPECT_LT(prev_score, service->GetScore(url)); 408 EXPECT_LT(prev_score, service->GetScore(url));
343 } 409 }
344 410
345 // Expect that site engagement scores for several sites are correctly aggregated 411 // Expect that site engagement scores for several sites are correctly
346 // by GetTotalEngagementPoints(). 412 // aggregated during navigation events.
347 TEST_F(SiteEngagementServiceTest, GetTotalNavigationPoints) { 413 TEST_F(SiteEngagementServiceTest, GetNavigationPointsAndHistograms) {
348 SiteEngagementService* service = 414 base::SimpleTestClock* clock = new base::SimpleTestClock();
349 SiteEngagementServiceFactory::GetForProfile(profile()); 415 scoped_ptr<SiteEngagementService> service(
350 DCHECK(service); 416 new SiteEngagementService(profile(), make_scoped_ptr(clock)));
417
418 base::Time current_day = GetReferenceTime();
419 clock->SetNow(current_day);
420
421 base::HistogramTester histograms;
422
423 // Histograms should start empty as the testing SiteEngagementService
424 // constructor does not record metrics.
425 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
426 0);
427 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0);
428 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
429 0);
430 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
431 0);
432 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
433 0);
434 histograms.ExpectTotalCount(
435 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0);
436 histograms.ExpectTotalCount(
437 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0);
438 histograms.ExpectTotalCount(
439 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0);
440 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
441 0);
351 442
352 // The https and http versions of www.google.com should be separate. 443 // The https and http versions of www.google.com should be separate.
353 GURL url1("https://www.google.com/"); 444 GURL url1("https://www.google.com/");
354 GURL url2("http://www.google.com/"); 445 GURL url2("http://www.google.com/");
355 GURL url3("http://drive.google.com/"); 446 GURL url3("http://drive.google.com/");
356 447
357 EXPECT_EQ(0, service->GetScore(url1)); 448 EXPECT_EQ(0, service->GetScore(url1));
358 EXPECT_EQ(0, service->GetScore(url2)); 449 EXPECT_EQ(0, service->GetScore(url2));
359 EXPECT_EQ(0, service->GetScore(url3)); 450 EXPECT_EQ(0, service->GetScore(url3));
360 451
361 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); 452 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED);
362 EXPECT_EQ(0.5, service->GetScore(url1)); 453 EXPECT_EQ(0.5, service->GetScore(url1));
363 EXPECT_EQ(0.5, service->GetTotalEngagementPoints()); 454 EXPECT_EQ(0.5, service->GetTotalEngagementPoints());
364 455
456 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
457 1);
458 histograms.ExpectUniqueSample(SiteEngagementMetrics::kTotalOriginsHistogram,
459 1, 1);
460 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
461 1);
462 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
463 1);
464 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
465 1);
466 histograms.ExpectUniqueSample(
467 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0, 1);
468 histograms.ExpectUniqueSample(
469 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0, 1);
470 histograms.ExpectUniqueSample(
471 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 1);
472 histograms.ExpectUniqueSample(SiteEngagementMetrics::kEngagementTypeHistogram,
473 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION,
474 1);
475
476 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(59));
477
365 service->HandleNavigation(url2, ui::PAGE_TRANSITION_GENERATED); 478 service->HandleNavigation(url2, ui::PAGE_TRANSITION_GENERATED);
366 service->HandleNavigation(url2, ui::PAGE_TRANSITION_AUTO_TOPLEVEL); 479 service->HandleNavigation(url2, ui::PAGE_TRANSITION_AUTO_TOPLEVEL);
367 EXPECT_EQ(1, service->GetScore(url2)); 480 EXPECT_EQ(1, service->GetScore(url2));
368 EXPECT_EQ(1.5, service->GetTotalEngagementPoints()); 481 EXPECT_EQ(1.5, service->GetTotalEngagementPoints());
369 482
483 histograms.ExpectUniqueSample(SiteEngagementMetrics::kEngagementTypeHistogram,
484 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION,
485 3);
486
487 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(60));
488
370 service->HandleNavigation(url3, ui::PAGE_TRANSITION_TYPED); 489 service->HandleNavigation(url3, ui::PAGE_TRANSITION_TYPED);
371 EXPECT_EQ(0.5, service->GetScore(url3)); 490 EXPECT_EQ(0.5, service->GetScore(url3));
372 EXPECT_EQ(2, service->GetTotalEngagementPoints()); 491 EXPECT_EQ(2, service->GetTotalEngagementPoints());
373 492
493 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
494 2);
495 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
496 1);
497 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3,
498 1);
499 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
500 2);
501 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
502 2);
503 // Recorded per origin.
504 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
505 4);
506 histograms.ExpectUniqueSample(
507 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0, 2);
508 histograms.ExpectUniqueSample(
509 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0, 2);
510 histograms.ExpectUniqueSample(
511 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 2);
512 histograms.ExpectUniqueSample(SiteEngagementMetrics::kEngagementTypeHistogram,
513 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION,
514 4);
515
374 service->HandleNavigation(url1, ui::PAGE_TRANSITION_GENERATED); 516 service->HandleNavigation(url1, ui::PAGE_TRANSITION_GENERATED);
375 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); 517 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED);
376 EXPECT_EQ(1.5, service->GetScore(url1)); 518 EXPECT_EQ(1.5, service->GetScore(url1));
377 EXPECT_EQ(3, service->GetTotalEngagementPoints()); 519 EXPECT_EQ(3, service->GetTotalEngagementPoints());
520
521 histograms.ExpectUniqueSample(SiteEngagementMetrics::kEngagementTypeHistogram,
522 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION,
523 6);
524
525 // Advance an origin to the max for a day and advance the clock an hour before
526 // the last increment before max. Expect the histogram to be updated.
527 for (int i = 0; i < 6; ++i)
528 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED);
529
530 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(121));
531 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED);
532
533 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
534 3);
535 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
536 1);
537 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3,
538 2);
539 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
540 3);
541 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
542 3);
543 // Recorded per origin.
544 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
545 7);
546 histograms.ExpectUniqueSample(
547 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0, 3);
548 histograms.ExpectBucketCount(
549 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0, 2);
550 histograms.ExpectBucketCount(
551 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 1, 1);
552 histograms.ExpectUniqueSample(
553 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 3);
554 histograms.ExpectUniqueSample(SiteEngagementMetrics::kEngagementTypeHistogram,
555 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION,
556 13);
378 } 557 }
379 558
380 TEST_F(SiteEngagementServiceTest, GetTotalUserInputPoints) { 559 TEST_F(SiteEngagementServiceTest, GetUserInputPointsAndHistograms) {
381 SiteEngagementService* service = 560 base::SimpleTestClock* clock = new base::SimpleTestClock();
382 SiteEngagementServiceFactory::GetForProfile(profile()); 561 scoped_ptr<SiteEngagementService> service(
383 DCHECK(service); 562 new SiteEngagementService(profile(), make_scoped_ptr(clock)));
563
564 base::Time current_day = GetReferenceTime();
565 clock->SetNow(current_day);
566
567 base::HistogramTester histograms;
568
569 // Histograms should start empty as the testing SiteEngagementService
570 // constructor does not record metrics.
571 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
572 0);
573 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 0);
574 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
575 0);
576 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
577 0);
578 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
579 0);
580 histograms.ExpectTotalCount(
581 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0);
582 histograms.ExpectTotalCount(
583 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0);
584 histograms.ExpectTotalCount(
585 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0);
586 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
587 0);
384 588
385 // The https and http versions of www.google.com should be separate. 589 // The https and http versions of www.google.com should be separate.
386 GURL url1("https://www.google.com/"); 590 GURL url1("https://www.google.com/");
387 GURL url2("http://www.google.com/"); 591 GURL url2("http://www.google.com/");
388 GURL url3("http://drive.google.com/"); 592 GURL url3("http://drive.google.com/");
389 593
390 EXPECT_EQ(0, service->GetScore(url1)); 594 EXPECT_EQ(0, service->GetScore(url1));
391 EXPECT_EQ(0, service->GetScore(url2)); 595 EXPECT_EQ(0, service->GetScore(url2));
392 EXPECT_EQ(0, service->GetScore(url3)); 596 EXPECT_EQ(0, service->GetScore(url3));
393 597
394 service->HandleUserInput(url1); 598 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_MOUSE);
395 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url1)); 599 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url1));
396 EXPECT_DOUBLE_EQ(0.05, service->GetTotalEngagementPoints()); 600 EXPECT_DOUBLE_EQ(0.05, service->GetTotalEngagementPoints());
397 601
398 service->HandleUserInput(url2); 602 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
399 service->HandleUserInput(url2); 603 1);
604 histograms.ExpectUniqueSample(SiteEngagementMetrics::kTotalOriginsHistogram,
605 1, 1);
606 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
607 1);
608 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
609 1);
610 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
611 1);
612 histograms.ExpectUniqueSample(
613 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0, 1);
614 histograms.ExpectUniqueSample(
615 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0, 1);
616 histograms.ExpectUniqueSample(
617 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 1);
618 histograms.ExpectUniqueSample(SiteEngagementMetrics::kEngagementTypeHistogram,
619 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 1);
620
621 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(45));
622 service->HandleUserInput(url2, SiteEngagementMetrics::ENGAGEMENT_MOUSE);
623 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(60));
624 service->HandleUserInput(url2, SiteEngagementMetrics::ENGAGEMENT_KEYPRESS);
400 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url2)); 625 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url2));
401 EXPECT_DOUBLE_EQ(0.15, service->GetTotalEngagementPoints()); 626 EXPECT_DOUBLE_EQ(0.15, service->GetTotalEngagementPoints());
402 627
403 service->HandleUserInput(url3); 628 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
629 2);
630 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 2);
631 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
632 1);
633 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 2,
634 1);
635 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
636 2);
637 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
638 2);
639 // Per origin.
640 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
641 3);
642 histograms.ExpectUniqueSample(
643 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0, 2);
644 histograms.ExpectUniqueSample(
645 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0, 2);
646 histograms.ExpectUniqueSample(
647 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 2);
648 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
649 3);
650 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
651 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 2);
652 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
653 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 1);
654
655 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(150));
656 service->HandleUserInput(url3, SiteEngagementMetrics::ENGAGEMENT_KEYPRESS);
404 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url3)); 657 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url3));
405 EXPECT_DOUBLE_EQ(0.2, service->GetTotalEngagementPoints()); 658 EXPECT_DOUBLE_EQ(0.2, service->GetTotalEngagementPoints());
659 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
660 4);
661 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
662 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 2);
406 663
407 service->HandleUserInput(url1); 664 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_KEYPRESS);
408 service->HandleUserInput(url1); 665 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_MOUSE);
409 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url1)); 666 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url1));
410 EXPECT_DOUBLE_EQ(0.3, service->GetTotalEngagementPoints()); 667 EXPECT_DOUBLE_EQ(0.3, service->GetTotalEngagementPoints());
668 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
669 6);
670 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
671 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 3);
672 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
673 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 3);
674
675 // Advance an origin to the max and ensure the histogram is correctly
676 // incremented.
677 for (int i = 0; i < 1996; ++i)
678 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_MOUSE);
679
680 clock->SetNow(GetReferenceTime() + base::TimeDelta::FromMinutes(210));
681 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_MOUSE);
682
683 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalEngagementHistogram,
684 4);
685 histograms.ExpectTotalCount(SiteEngagementMetrics::kTotalOriginsHistogram, 4);
686 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 1,
687 1);
688 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 2,
689 1);
690 histograms.ExpectBucketCount(SiteEngagementMetrics::kTotalOriginsHistogram, 3,
691 2);
692 histograms.ExpectTotalCount(SiteEngagementMetrics::kMeanEngagementHistogram,
693 4);
694 histograms.ExpectTotalCount(SiteEngagementMetrics::kMedianEngagementHistogram,
695 4);
696 // Recorded per origin.
697 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementScoreHistogram,
698 9);
699 histograms.ExpectUniqueSample(
700 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0, 4);
701 histograms.ExpectTotalCount(
702 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 4);
703 histograms.ExpectBucketCount(
704 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0, 3);
705 histograms.ExpectBucketCount(
706 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 1, 1);
707 histograms.ExpectUniqueSample(
708 SiteEngagementMetrics::kPercentOriginsWithMaxEngagementHistogram, 0, 4);
709 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram,
710 2003);
711 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
712 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 2000);
713 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram,
714 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 3);
calamity 2015/10/02 05:31:18 These tests are getting too unruly. Can you just f
dominickn 2015/10/02 06:06:17 Done.
411 } 715 }
412 716
413 // Expect that sites that have reached zero engagement are cleaned up. 717 // Expect that sites that have reached zero engagement are cleaned up.
414 TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) { 718 TEST_F(SiteEngagementServiceTest, CleanupEngagementScores) {
415 base::SimpleTestClock* clock = new base::SimpleTestClock(); 719 base::SimpleTestClock* clock = new base::SimpleTestClock();
416 scoped_ptr<SiteEngagementService> service( 720 scoped_ptr<SiteEngagementService> service(
417 new SiteEngagementService(profile(), make_scoped_ptr(clock))); 721 new SiteEngagementService(profile(), make_scoped_ptr(clock)));
418 722
419 base::Time current_day = GetReferenceTime(); 723 base::Time current_day = GetReferenceTime();
420 clock->SetNow(current_day); 724 clock->SetNow(current_day);
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
470 EXPECT_EQ(1u, score_map.size()); 774 EXPECT_EQ(1u, score_map.size());
471 EXPECT_EQ(0, score_map[url1]); 775 EXPECT_EQ(0, score_map[url1]);
472 776
473 service->CleanupEngagementScores(); 777 service->CleanupEngagementScores();
474 778
475 score_map = service->GetScoreMap(); 779 score_map = service->GetScoreMap();
476 EXPECT_EQ(0u, score_map.size()); 780 EXPECT_EQ(0u, score_map.size());
477 EXPECT_EQ(0, service->GetScore(url1)); 781 EXPECT_EQ(0, service->GetScore(url1));
478 } 782 }
479 } 783 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698