| 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 323 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 342 EXPECT_LT(prev_score, service->GetScore(url)); | 344 EXPECT_LT(prev_score, service->GetScore(url)); |
| 343 } | 345 } |
| 344 | 346 |
| 345 // Expect that site engagement scores for several sites are correctly aggregated | 347 // Expect that site engagement scores for several sites are correctly aggregated |
| 346 // by GetTotalEngagementPoints(). | 348 // by GetTotalEngagementPoints(). |
| 347 TEST_F(SiteEngagementServiceTest, GetTotalNavigationPoints) { | 349 TEST_F(SiteEngagementServiceTest, GetTotalNavigationPoints) { |
| 348 SiteEngagementService* service = | 350 SiteEngagementService* service = |
| 349 SiteEngagementServiceFactory::GetForProfile(profile()); | 351 SiteEngagementServiceFactory::GetForProfile(profile()); |
| 350 DCHECK(service); | 352 DCHECK(service); |
| 351 | 353 |
| 354 base::HistogramTester histograms; |
| 355 |
| 356 // Histograms should start off empty. |
| 357 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 358 0); |
| 359 histograms.ExpectTotalCount( |
| 360 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 361 histograms.ExpectTotalCount( |
| 362 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 363 |
| 352 // The https and http versions of www.google.com should be separate. | 364 // The https and http versions of www.google.com should be separate. |
| 353 GURL url1("https://www.google.com/"); | 365 GURL url1("https://www.google.com/"); |
| 354 GURL url2("http://www.google.com/"); | 366 GURL url2("http://www.google.com/"); |
| 355 GURL url3("http://drive.google.com/"); | 367 GURL url3("http://drive.google.com/"); |
| 356 | 368 |
| 357 EXPECT_EQ(0, service->GetScore(url1)); | 369 EXPECT_EQ(0, service->GetScore(url1)); |
| 358 EXPECT_EQ(0, service->GetScore(url2)); | 370 EXPECT_EQ(0, service->GetScore(url2)); |
| 359 EXPECT_EQ(0, service->GetScore(url3)); | 371 EXPECT_EQ(0, service->GetScore(url3)); |
| 360 | 372 |
| 361 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); | 373 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); |
| 362 EXPECT_EQ(0.5, service->GetScore(url1)); | 374 EXPECT_EQ(0.5, service->GetScore(url1)); |
| 363 EXPECT_EQ(0.5, service->GetTotalEngagementPoints()); | 375 EXPECT_EQ(0.5, service->GetTotalEngagementPoints()); |
| 376 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 377 1); |
| 378 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 379 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 1); |
| 380 histograms.ExpectTotalCount( |
| 381 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 382 histograms.ExpectTotalCount( |
| 383 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 364 | 384 |
| 365 service->HandleNavigation(url2, ui::PAGE_TRANSITION_GENERATED); | 385 service->HandleNavigation(url2, ui::PAGE_TRANSITION_GENERATED); |
| 366 service->HandleNavigation(url2, ui::PAGE_TRANSITION_AUTO_TOPLEVEL); | 386 service->HandleNavigation(url2, ui::PAGE_TRANSITION_AUTO_TOPLEVEL); |
| 367 EXPECT_EQ(1, service->GetScore(url2)); | 387 EXPECT_EQ(1, service->GetScore(url2)); |
| 368 EXPECT_EQ(1.5, service->GetTotalEngagementPoints()); | 388 EXPECT_EQ(1.5, service->GetTotalEngagementPoints()); |
| 389 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 390 3); |
| 391 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 392 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 3); |
| 393 histograms.ExpectTotalCount( |
| 394 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 395 histograms.ExpectTotalCount( |
| 396 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 369 | 397 |
| 370 service->HandleNavigation(url3, ui::PAGE_TRANSITION_TYPED); | 398 service->HandleNavigation(url3, ui::PAGE_TRANSITION_TYPED); |
| 371 EXPECT_EQ(0.5, service->GetScore(url3)); | 399 EXPECT_EQ(0.5, service->GetScore(url3)); |
| 372 EXPECT_EQ(2, service->GetTotalEngagementPoints()); | 400 EXPECT_EQ(2, service->GetTotalEngagementPoints()); |
| 401 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 402 4); |
| 403 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 404 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 4); |
| 405 histograms.ExpectTotalCount( |
| 406 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 407 histograms.ExpectTotalCount( |
| 408 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 373 | 409 |
| 374 service->HandleNavigation(url1, ui::PAGE_TRANSITION_GENERATED); | 410 service->HandleNavigation(url1, ui::PAGE_TRANSITION_GENERATED); |
| 375 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); | 411 service->HandleNavigation(url1, ui::PAGE_TRANSITION_TYPED); |
| 376 EXPECT_EQ(1.5, service->GetScore(url1)); | 412 EXPECT_EQ(1.5, service->GetScore(url1)); |
| 377 EXPECT_EQ(3, service->GetTotalEngagementPoints()); | 413 EXPECT_EQ(3, service->GetTotalEngagementPoints()); |
| 414 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 415 6); |
| 416 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 417 SiteEngagementMetrics::ENGAGEMENT_NAVIGATION, 6); |
| 418 histograms.ExpectTotalCount( |
| 419 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 420 histograms.ExpectTotalCount( |
| 421 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 378 } | 422 } |
| 379 | 423 |
| 380 TEST_F(SiteEngagementServiceTest, GetTotalUserInputPoints) { | 424 TEST_F(SiteEngagementServiceTest, GetTotalUserInputPoints) { |
| 381 SiteEngagementService* service = | 425 SiteEngagementService* service = |
| 382 SiteEngagementServiceFactory::GetForProfile(profile()); | 426 SiteEngagementServiceFactory::GetForProfile(profile()); |
| 383 DCHECK(service); | 427 DCHECK(service); |
| 384 | 428 |
| 429 base::HistogramTester histograms; |
| 430 |
| 431 // Histograms should start off empty. |
| 432 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 433 0); |
| 434 histograms.ExpectTotalCount( |
| 435 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 436 histograms.ExpectTotalCount( |
| 437 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 438 |
| 385 // The https and http versions of www.google.com should be separate. | 439 // The https and http versions of www.google.com should be separate. |
| 386 GURL url1("https://www.google.com/"); | 440 GURL url1("https://www.google.com/"); |
| 387 GURL url2("http://www.google.com/"); | 441 GURL url2("http://www.google.com/"); |
| 388 GURL url3("http://drive.google.com/"); | 442 GURL url3("http://drive.google.com/"); |
| 389 | 443 |
| 390 EXPECT_EQ(0, service->GetScore(url1)); | 444 EXPECT_EQ(0, service->GetScore(url1)); |
| 391 EXPECT_EQ(0, service->GetScore(url2)); | 445 EXPECT_EQ(0, service->GetScore(url2)); |
| 392 EXPECT_EQ(0, service->GetScore(url3)); | 446 EXPECT_EQ(0, service->GetScore(url3)); |
| 393 | 447 |
| 394 service->HandleUserInput(url1); | 448 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
| 395 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url1)); | 449 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url1)); |
| 396 EXPECT_DOUBLE_EQ(0.05, service->GetTotalEngagementPoints()); | 450 EXPECT_DOUBLE_EQ(0.05, service->GetTotalEngagementPoints()); |
| 451 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 452 1); |
| 453 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 454 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 1); |
| 455 histograms.ExpectTotalCount( |
| 456 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 457 histograms.ExpectTotalCount( |
| 458 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 397 | 459 |
| 398 service->HandleUserInput(url2); | 460 service->HandleUserInput(url2, SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
| 399 service->HandleUserInput(url2); | 461 service->HandleUserInput(url2, SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
| 400 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url2)); | 462 EXPECT_DOUBLE_EQ(0.1, service->GetScore(url2)); |
| 401 EXPECT_DOUBLE_EQ(0.15, service->GetTotalEngagementPoints()); | 463 EXPECT_DOUBLE_EQ(0.15, service->GetTotalEngagementPoints()); |
| 464 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 465 3); |
| 466 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 467 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 2); |
| 468 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 469 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 1); |
| 470 histograms.ExpectTotalCount( |
| 471 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 472 histograms.ExpectTotalCount( |
| 473 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 402 | 474 |
| 403 service->HandleUserInput(url3); | 475 service->HandleUserInput(url3, SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
| 404 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url3)); | 476 EXPECT_DOUBLE_EQ(0.05, service->GetScore(url3)); |
| 405 EXPECT_DOUBLE_EQ(0.2, service->GetTotalEngagementPoints()); | 477 EXPECT_DOUBLE_EQ(0.2, service->GetTotalEngagementPoints()); |
| 478 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 479 4); |
| 480 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 481 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 2); |
| 482 histograms.ExpectTotalCount( |
| 483 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 484 histograms.ExpectTotalCount( |
| 485 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 406 | 486 |
| 407 service->HandleUserInput(url1); | 487 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_KEYPRESS); |
| 408 service->HandleUserInput(url1); | 488 service->HandleUserInput(url1, SiteEngagementMetrics::ENGAGEMENT_MOUSE); |
| 409 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url1)); | 489 EXPECT_DOUBLE_EQ(0.15, service->GetScore(url1)); |
| 410 EXPECT_DOUBLE_EQ(0.3, service->GetTotalEngagementPoints()); | 490 EXPECT_DOUBLE_EQ(0.3, service->GetTotalEngagementPoints()); |
| 491 histograms.ExpectTotalCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 492 6); |
| 493 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 494 SiteEngagementMetrics::ENGAGEMENT_MOUSE, 3); |
| 495 histograms.ExpectBucketCount(SiteEngagementMetrics::kEngagementTypeHistogram, |
| 496 SiteEngagementMetrics::ENGAGEMENT_KEYPRESS, 3); |
| 497 histograms.ExpectTotalCount( |
| 498 SiteEngagementMetrics::kOriginsWithMaxDailyEngagementHistogram, 0); |
| 499 histograms.ExpectTotalCount( |
| 500 SiteEngagementMetrics::kOriginsWithMaxEngagementHistogram, 0); |
| 411 } | 501 } |
| OLD | NEW |