OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "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 Loading... | |
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 Loading... | |
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 } |
OLD | NEW |