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

Side by Side Diff: chrome/browser/metrics/chrome_metrics_service_client.cc

Issue 2671603002: Add network information to UKM (Closed)
Patch Set: fix comments and includes Created 3 years, 10 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/metrics/chrome_metrics_service_client.h" 5 #include "chrome/browser/metrics/chrome_metrics_service_client.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 #include <utility> 10 #include <utility>
(...skipping 546 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 // Clear deprecated metrics preference for Android. 557 // Clear deprecated metrics preference for Android.
558 // TODO(gayane): Cleanup this code after M60 when the pref would be cleared 558 // TODO(gayane): Cleanup this code after M60 when the pref would be cleared
559 // from clients. 559 // from clients.
560 #if defined(OS_ANDROID) 560 #if defined(OS_ANDROID)
561 local_state->ClearPref(prefs::kCrashReportingEnabled); 561 local_state->ClearPref(prefs::kCrashReportingEnabled);
562 #endif 562 #endif
563 563
564 metrics_service_.reset( 564 metrics_service_.reset(
565 new metrics::MetricsService(metrics_state_manager_, this, local_state)); 565 new metrics::MetricsService(metrics_state_manager_, this, local_state));
566 566
567 if (base::FeatureList::IsEnabled(ukm::kUkmFeature)) 567 RegisterMetricsServiceProviders();
568
569 if (base::FeatureList::IsEnabled(ukm::kUkmFeature)) {
568 ukm_service_.reset(new ukm::UkmService(local_state, this)); 570 ukm_service_.reset(new ukm::UkmService(local_state, this));
571 RegisterUKMProviders();
572 }
573 }
574
575 void ChromeMetricsServiceClient::RegisterMetricsServiceProviders() {
576 PrefService* local_state = g_browser_process->local_state();
569 577
570 // Gets access to persistent metrics shared by sub-processes. 578 // Gets access to persistent metrics shared by sub-processes.
571 metrics_service_->RegisterMetricsProvider( 579 metrics_service_->RegisterMetricsProvider(
572 std::unique_ptr<metrics::MetricsProvider>( 580 std::unique_ptr<metrics::MetricsProvider>(
573 new SubprocessMetricsProvider())); 581 new SubprocessMetricsProvider()));
574 582
575 // Register metrics providers.
576 #if BUILDFLAG(ENABLE_EXTENSIONS) 583 #if BUILDFLAG(ENABLE_EXTENSIONS)
577 metrics_service_->RegisterMetricsProvider( 584 metrics_service_->RegisterMetricsProvider(
578 std::unique_ptr<metrics::MetricsProvider>( 585 std::unique_ptr<metrics::MetricsProvider>(
579 new ExtensionsMetricsProvider(metrics_state_manager_))); 586 new ExtensionsMetricsProvider(metrics_state_manager_)));
580 #endif 587 #endif
581 588
582 metrics_service_->RegisterMetricsProvider( 589 metrics_service_->RegisterMetricsProvider(
583 base::MakeUnique<metrics::NetworkMetricsProvider>( 590 base::MakeUnique<metrics::NetworkMetricsProvider>(
584 base::MakeUnique<metrics::NetworkQualityEstimatorProviderImpl>( 591 base::MakeUnique<metrics::NetworkQualityEstimatorProviderImpl>(
585 g_browser_process->io_thread()), 592 g_browser_process->io_thread()),
586 content::BrowserThread::GetBlockingPool())); 593 content::BrowserThread::GetBlockingPool()));
587 594
588 // Currently, we configure OmniboxMetricsProvider to not log events to UMA 595 // Currently, we configure OmniboxMetricsProvider to not log events to UMA
589 // if there is a single incognito session visible. In the future, it may 596 // if there is a single incognito session visible. In the future, it may
590 // be worth revisiting this to still log events from non-incognito sessions. 597 // be worth revisiting this to still log events from non-incognito sessions.
591 metrics_service_->RegisterMetricsProvider( 598 metrics_service_->RegisterMetricsProvider(
592 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( 599 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider(
593 base::Bind(&chrome::IsIncognitoSessionActive)))); 600 base::Bind(&chrome::IsIncognitoSessionActive))));
601
594 metrics_service_->RegisterMetricsProvider( 602 metrics_service_->RegisterMetricsProvider(
595 std::unique_ptr<metrics::MetricsProvider>( 603 std::unique_ptr<metrics::MetricsProvider>(
596 new ChromeStabilityMetricsProvider(local_state))); 604 new ChromeStabilityMetricsProvider(local_state)));
605
597 metrics_service_->RegisterMetricsProvider( 606 metrics_service_->RegisterMetricsProvider(
598 std::unique_ptr<metrics::MetricsProvider>( 607 std::unique_ptr<metrics::MetricsProvider>(
599 new metrics::GPUMetricsProvider)); 608 new metrics::GPUMetricsProvider));
609
600 metrics_service_->RegisterMetricsProvider( 610 metrics_service_->RegisterMetricsProvider(
601 std::unique_ptr<metrics::MetricsProvider>( 611 std::unique_ptr<metrics::MetricsProvider>(
602 new metrics::ScreenInfoMetricsProvider)); 612 new metrics::ScreenInfoMetricsProvider));
603 613
604 metrics_service_->RegisterMetricsProvider(CreateFileMetricsProvider( 614 metrics_service_->RegisterMetricsProvider(CreateFileMetricsProvider(
605 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled())); 615 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled()));
606 616
607 drive_metrics_provider_ = new metrics::DriveMetricsProvider( 617 drive_metrics_provider_ = new metrics::DriveMetricsProvider(
608 content::BrowserThread::GetTaskRunnerForThread( 618 content::BrowserThread::GetTaskRunnerForThread(
609 content::BrowserThread::FILE), 619 content::BrowserThread::FILE),
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 715
706 metrics_service_->RegisterMetricsProvider( 716 metrics_service_->RegisterMetricsProvider(
707 std::unique_ptr<metrics::MetricsProvider>( 717 std::unique_ptr<metrics::MetricsProvider>(
708 new HttpsEngagementMetricsProvider())); 718 new HttpsEngagementMetricsProvider()));
709 719
710 metrics_service_->RegisterMetricsProvider( 720 metrics_service_->RegisterMetricsProvider(
711 std::unique_ptr<metrics::MetricsProvider>( 721 std::unique_ptr<metrics::MetricsProvider>(
712 new CertificateReportingMetricsProvider())); 722 new CertificateReportingMetricsProvider()));
713 } 723 }
714 724
725 void ChromeMetricsServiceClient::RegisterUKMProviders() {
726 ukm_service_->RegisterMetricsProvider(
727 base::MakeUnique<metrics::NetworkMetricsProvider>(
728 base::MakeUnique<metrics::NetworkQualityEstimatorProviderImpl>(
729 g_browser_process->io_thread()),
730 content::BrowserThread::GetBlockingPool()));
731 }
732
715 bool ChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { 733 bool ChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() {
716 // Upload profiler data at most once per session. 734 // Upload profiler data at most once per session.
717 if (has_uploaded_profiler_data_) 735 if (has_uploaded_profiler_data_)
718 return false; 736 return false;
719 737
720 // For each log, flip a fair coin. Thus, profiler data is sent with the first 738 // For each log, flip a fair coin. Thus, profiler data is sent with the first
721 // log with probability 50%, with the second log with probability 25%, and so 739 // log with probability 50%, with the second log with probability 25%, and so
722 // on. As a result, uploaded data is biased toward earlier logs. 740 // on. As a result, uploaded data is biased toward earlier logs.
723 // TODO(isherman): Explore other possible algorithms, and choose one that 741 // TODO(isherman): Explore other possible algorithms, and choose one that
724 // might be more appropriate. For example, it might be reasonable to include 742 // might be more appropriate. For example, it might be reasonable to include
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
920 } 938 }
921 939
922 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { 940 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() {
923 return metrics::IsCellularLogicEnabled(); 941 return metrics::IsCellularLogicEnabled();
924 } 942 }
925 943
926 void ChromeMetricsServiceClient::OnHistoryDeleted() { 944 void ChromeMetricsServiceClient::OnHistoryDeleted() {
927 if (ukm_service_) 945 if (ukm_service_)
928 ukm_service_->Purge(); 946 ukm_service_->Purge();
929 } 947 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/chrome_metrics_service_client.h ('k') | components/metrics/test_metrics_provider.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698