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

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: Adding tests, addressing reviewer feedback 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 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698