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 |