| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |