Chromium Code Reviews| 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 <vector> | 9 #include <vector> |
| 10 | 10 |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/callback.h" | 12 #include "base/callback.h" |
| 13 #include "base/command_line.h" | 13 #include "base/command_line.h" |
| 14 #include "base/files/file_path.h" | 14 #include "base/files/file_path.h" |
| 15 #include "base/files/file_util.h" | 15 #include "base/files/file_util.h" |
| 16 #include "base/logging.h" | 16 #include "base/logging.h" |
| 17 #include "base/memory/ptr_util.h" | 17 #include "base/memory/ptr_util.h" |
| 18 #include "base/metrics/histogram.h" | 18 #include "base/metrics/histogram.h" |
| 19 #include "base/metrics/persistent_histogram_allocator.h" | 19 #include "base/metrics/persistent_histogram_allocator.h" |
| 20 #include "base/path_service.h" | 20 #include "base/path_service.h" |
| 21 #include "base/rand_util.h" | 21 #include "base/rand_util.h" |
| 22 #include "base/strings/string16.h" | 22 #include "base/strings/string16.h" |
| 23 #include "base/threading/platform_thread.h" | 23 #include "base/threading/platform_thread.h" |
| 24 #include "build/build_config.h" | 24 #include "build/build_config.h" |
| 25 #include "chrome/browser/after_startup_task_utils.h" | |
| 25 #include "chrome/browser/browser_process.h" | 26 #include "chrome/browser/browser_process.h" |
| 26 #include "chrome/browser/chrome_notification_types.h" | 27 #include "chrome/browser/chrome_notification_types.h" |
| 27 #include "chrome/browser/google/google_brand.h" | 28 #include "chrome/browser/google/google_brand.h" |
| 28 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" | 29 #include "chrome/browser/metrics/chrome_metrics_service_accessor.h" |
| 29 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h" | 30 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h" |
| 30 #include "chrome/browser/metrics/https_engagement_metrics_provider.h" | 31 #include "chrome/browser/metrics/https_engagement_metrics_provider.h" |
| 31 #include "chrome/browser/metrics/metrics_reporting_state.h" | 32 #include "chrome/browser/metrics/metrics_reporting_state.h" |
| 32 #include "chrome/browser/metrics/sampling_metrics_provider.h" | 33 #include "chrome/browser/metrics/sampling_metrics_provider.h" |
| 33 #include "chrome/browser/metrics/subprocess_metrics_provider.h" | 34 #include "chrome/browser/metrics/subprocess_metrics_provider.h" |
| 34 #include "chrome/browser/metrics/time_ticks_experiment_win.h" | 35 #include "chrome/browser/metrics/time_ticks_experiment_win.h" |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 131 metrics::FileMetricsProvider::RegisterPrefs( | 132 metrics::FileMetricsProvider::RegisterPrefs( |
| 132 registry, installer::kSetupHistogramAllocatorName); | 133 registry, installer::kSetupHistogramAllocatorName); |
| 133 #endif | 134 #endif |
| 134 } | 135 } |
| 135 | 136 |
| 136 std::unique_ptr<metrics::FileMetricsProvider> | 137 std::unique_ptr<metrics::FileMetricsProvider> |
| 137 CreateInstallerFileMetricsProvider(bool metrics_reporting_enabled) { | 138 CreateInstallerFileMetricsProvider(bool metrics_reporting_enabled) { |
| 138 // Fetch a worker-pool for performing I/O tasks that are not allowed on | 139 // Fetch a worker-pool for performing I/O tasks that are not allowed on |
| 139 // the main UI thread. | 140 // the main UI thread. |
| 140 scoped_refptr<base::TaskRunner> task_runner = | 141 scoped_refptr<base::TaskRunner> task_runner = |
| 141 content::BrowserThread::GetBlockingPool() | 142 new AfterStartupTaskUtils::Runner( |
| 142 ->GetTaskRunnerWithShutdownBehavior( | 143 content::BrowserThread::GetBlockingPool() |
| 143 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN); | 144 ->GetTaskRunnerWithShutdownBehavior( |
| 145 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); | |
| 144 | 146 |
| 145 // Create an object to monitor files of metrics and include them in reports. | 147 // Create an object to monitor files of metrics and include them in reports. |
| 146 std::unique_ptr<metrics::FileMetricsProvider> file_metrics_provider( | 148 std::unique_ptr<metrics::FileMetricsProvider> file_metrics_provider( |
| 147 new metrics::FileMetricsProvider(task_runner, | 149 new metrics::FileMetricsProvider(task_runner, |
| 148 g_browser_process->local_state())); | 150 g_browser_process->local_state())); |
| 149 | 151 |
| 150 // Create the full pathname of the file holding browser metrics. | 152 // Create the full pathname of the file holding browser metrics. |
| 151 base::FilePath metrics_file; | 153 base::FilePath metrics_file; |
| 152 if (base::PathService::Get(chrome::DIR_USER_DATA, &metrics_file)) { | 154 if (base::PathService::Get(chrome::DIR_USER_DATA, &metrics_file)) { |
| 153 metrics_file = | 155 metrics_file = |
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 412 new SubprocessMetricsProvider())); | 414 new SubprocessMetricsProvider())); |
| 413 | 415 |
| 414 // Register metrics providers. | 416 // Register metrics providers. |
| 415 #if defined(ENABLE_EXTENSIONS) | 417 #if defined(ENABLE_EXTENSIONS) |
| 416 metrics_service_->RegisterMetricsProvider( | 418 metrics_service_->RegisterMetricsProvider( |
| 417 std::unique_ptr<metrics::MetricsProvider>( | 419 std::unique_ptr<metrics::MetricsProvider>( |
| 418 new ExtensionsMetricsProvider(metrics_state_manager_))); | 420 new ExtensionsMetricsProvider(metrics_state_manager_))); |
| 419 #endif | 421 #endif |
| 420 metrics_service_->RegisterMetricsProvider( | 422 metrics_service_->RegisterMetricsProvider( |
| 421 std::unique_ptr<metrics::MetricsProvider>( | 423 std::unique_ptr<metrics::MetricsProvider>( |
| 422 new metrics::NetworkMetricsProvider( | 424 new metrics::NetworkMetricsProvider(new AfterStartupTaskUtils::Runner( |
| 423 content::BrowserThread::GetBlockingPool()))); | 425 content::BrowserThread::GetBlockingPool())))); |
|
Alexei Svitkine (slow)
2016/08/12 18:28:18
Similar to AntiVirusMetricsProvider, this could de
| |
| 424 | 426 |
| 425 // Currently, we configure OmniboxMetricsProvider to not log events to UMA | 427 // Currently, we configure OmniboxMetricsProvider to not log events to UMA |
| 426 // if there is a single incognito session visible. In the future, it may | 428 // if there is a single incognito session visible. In the future, it may |
| 427 // be worth revisiting this to still log events from non-incognito sessions. | 429 // be worth revisiting this to still log events from non-incognito sessions. |
| 428 metrics_service_->RegisterMetricsProvider( | 430 metrics_service_->RegisterMetricsProvider( |
| 429 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( | 431 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( |
| 430 base::Bind(&chrome::IsIncognitoSessionActive)))); | 432 base::Bind(&chrome::IsIncognitoSessionActive)))); |
| 431 metrics_service_->RegisterMetricsProvider( | 433 metrics_service_->RegisterMetricsProvider( |
| 432 std::unique_ptr<metrics::MetricsProvider>( | 434 std::unique_ptr<metrics::MetricsProvider>( |
| 433 new ChromeStabilityMetricsProvider( | 435 new ChromeStabilityMetricsProvider( |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 473 #if defined(OS_WIN) | 475 #if defined(OS_WIN) |
| 474 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; | 476 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; |
| 475 metrics_service_->RegisterMetricsProvider( | 477 metrics_service_->RegisterMetricsProvider( |
| 476 std::unique_ptr<metrics::MetricsProvider>( | 478 std::unique_ptr<metrics::MetricsProvider>( |
| 477 google_update_metrics_provider_)); | 479 google_update_metrics_provider_)); |
| 478 | 480 |
| 479 metrics_service_->RegisterMetricsProvider( | 481 metrics_service_->RegisterMetricsProvider( |
| 480 std::unique_ptr<metrics::MetricsProvider>( | 482 std::unique_ptr<metrics::MetricsProvider>( |
| 481 new browser_watcher::WatcherMetricsProviderWin( | 483 new browser_watcher::WatcherMetricsProviderWin( |
| 482 chrome::GetBrowserExitCodesRegistryPath(), | 484 chrome::GetBrowserExitCodesRegistryPath(), |
| 483 content::BrowserThread::GetBlockingPool()))); | 485 new AfterStartupTaskUtils::Runner( |
| 486 content::BrowserThread::GetBlockingPool())))); | |
|
Alexei Svitkine (slow)
2016/08/12 18:28:18
This seems fine. Used to clean up registry data wh
| |
| 484 | 487 |
| 485 antivirus_metrics_provider_ = new AntiVirusMetricsProvider( | 488 antivirus_metrics_provider_ = |
| 486 content::BrowserThread::GetBlockingPool() | 489 new AntiVirusMetricsProvider(new AfterStartupTaskUtils::Runner( |
|
Alexei Svitkine (slow)
2016/08/12 18:28:18
This will delay running GetAntiVirusProductsOnFile
gab
2016/08/15 19:39:56
For startup's sake on slow machines (forgetting th
| |
| 487 ->GetTaskRunnerWithShutdownBehavior( | 490 content::BrowserThread::GetBlockingPool() |
| 488 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); | 491 ->GetTaskRunnerWithShutdownBehavior( |
| 492 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN))); | |
| 489 | 493 |
| 490 metrics_service_->RegisterMetricsProvider( | 494 metrics_service_->RegisterMetricsProvider( |
| 491 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); | 495 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); |
| 492 #endif // defined(OS_WIN) | 496 #endif // defined(OS_WIN) |
| 493 | 497 |
| 494 #if defined(ENABLE_PLUGINS) | 498 #if defined(ENABLE_PLUGINS) |
| 495 plugin_metrics_provider_ = | 499 plugin_metrics_provider_ = |
| 496 new PluginMetricsProvider(g_browser_process->local_state()); | 500 new PluginMetricsProvider(g_browser_process->local_state()); |
| 497 metrics_service_->RegisterMetricsProvider( | 501 metrics_service_->RegisterMetricsProvider( |
| 498 std::unique_ptr<metrics::MetricsProvider>(plugin_metrics_provider_)); | 502 std::unique_ptr<metrics::MetricsProvider>(plugin_metrics_provider_)); |
| (...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 792 } | 796 } |
| 793 } | 797 } |
| 794 | 798 |
| 795 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { | 799 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { |
| 796 metrics_service_->OnApplicationNotIdle(); | 800 metrics_service_->OnApplicationNotIdle(); |
| 797 } | 801 } |
| 798 | 802 |
| 799 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { | 803 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { |
| 800 return metrics::IsCellularLogicEnabled(); | 804 return metrics::IsCellularLogicEnabled(); |
| 801 } | 805 } |
| OLD | NEW |