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 |