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 |
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 chromeos_metrics_provider_(nullptr), | 222 chromeos_metrics_provider_(nullptr), |
223 #endif | 223 #endif |
224 waiting_for_collect_final_metrics_step_(false), | 224 waiting_for_collect_final_metrics_step_(false), |
225 num_async_histogram_fetches_in_progress_(0), | 225 num_async_histogram_fetches_in_progress_(0), |
226 profiler_metrics_provider_(nullptr), | 226 profiler_metrics_provider_(nullptr), |
227 #if defined(ENABLE_PLUGINS) | 227 #if defined(ENABLE_PLUGINS) |
228 plugin_metrics_provider_(nullptr), | 228 plugin_metrics_provider_(nullptr), |
229 #endif | 229 #endif |
230 #if defined(OS_WIN) | 230 #if defined(OS_WIN) |
231 google_update_metrics_provider_(nullptr), | 231 google_update_metrics_provider_(nullptr), |
| 232 watcher_metrics_provider_(nullptr), |
| 233 antivirus_metrics_provider_(nullptr), |
232 #endif | 234 #endif |
233 drive_metrics_provider_(nullptr), | 235 drive_metrics_provider_(nullptr), |
234 start_time_(base::TimeTicks::Now()), | 236 start_time_(base::TimeTicks::Now()), |
235 has_uploaded_profiler_data_(false), | 237 has_uploaded_profiler_data_(false), |
236 weak_ptr_factory_(this) { | 238 weak_ptr_factory_(this) { |
237 DCHECK(thread_checker_.CalledOnValidThread()); | 239 DCHECK(thread_checker_.CalledOnValidThread()); |
238 RecordCommandLineMetrics(); | 240 RecordCommandLineMetrics(); |
239 RegisterForNotifications(); | 241 RegisterForNotifications(); |
240 } | 242 } |
241 | 243 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
462 metrics_service_->RegisterMetricsProvider( | 464 metrics_service_->RegisterMetricsProvider( |
463 std::unique_ptr<metrics::MetricsProvider>(new PageLoadMetricsProvider())); | 465 std::unique_ptr<metrics::MetricsProvider>(new PageLoadMetricsProvider())); |
464 #endif // BUILDFLAG(ANDROID_JAVA_UI) | 466 #endif // BUILDFLAG(ANDROID_JAVA_UI) |
465 | 467 |
466 #if defined(OS_WIN) | 468 #if defined(OS_WIN) |
467 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; | 469 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; |
468 metrics_service_->RegisterMetricsProvider( | 470 metrics_service_->RegisterMetricsProvider( |
469 std::unique_ptr<metrics::MetricsProvider>( | 471 std::unique_ptr<metrics::MetricsProvider>( |
470 google_update_metrics_provider_)); | 472 google_update_metrics_provider_)); |
471 | 473 |
| 474 base::FilePath user_data_dir; |
| 475 base::FilePath crash_dir; |
| 476 if (!base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir) || |
| 477 !base::PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dir)) { |
| 478 // If either call fails, then clear both. |
| 479 user_data_dir = base::FilePath(); |
| 480 crash_dir = base::FilePath(); |
| 481 } |
| 482 watcher_metrics_provider_ = new browser_watcher::WatcherMetricsProviderWin( |
| 483 chrome::GetBrowserExitCodesRegistryPath(), user_data_dir, crash_dir, |
| 484 content::BrowserThread::GetBlockingPool()); |
472 metrics_service_->RegisterMetricsProvider( | 485 metrics_service_->RegisterMetricsProvider( |
473 std::unique_ptr<metrics::MetricsProvider>( | 486 std::unique_ptr<metrics::MetricsProvider>(watcher_metrics_provider_)); |
474 new browser_watcher::WatcherMetricsProviderWin( | |
475 chrome::GetBrowserExitCodesRegistryPath(), | |
476 content::BrowserThread::GetBlockingPool()))); | |
477 | 487 |
478 antivirus_metrics_provider_ = new AntiVirusMetricsProvider( | 488 antivirus_metrics_provider_ = new AntiVirusMetricsProvider( |
479 content::BrowserThread::GetBlockingPool() | 489 content::BrowserThread::GetBlockingPool() |
480 ->GetTaskRunnerWithShutdownBehavior( | 490 ->GetTaskRunnerWithShutdownBehavior( |
481 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); | 491 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); |
482 | 492 |
483 metrics_service_->RegisterMetricsProvider( | 493 metrics_service_->RegisterMetricsProvider( |
484 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); | 494 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); |
485 #endif // defined(OS_WIN) | 495 #endif // defined(OS_WIN) |
486 | 496 |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
584 #endif // defined(OS_WIN) | 594 #endif // defined(OS_WIN) |
585 } | 595 } |
586 | 596 |
587 void ChromeMetricsServiceClient::OnInitTaskGotAntiVirusData() { | 597 void ChromeMetricsServiceClient::OnInitTaskGotAntiVirusData() { |
588 drive_metrics_provider_->GetDriveMetrics( | 598 drive_metrics_provider_->GetDriveMetrics( |
589 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics, | 599 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics, |
590 weak_ptr_factory_.GetWeakPtr())); | 600 weak_ptr_factory_.GetWeakPtr())); |
591 } | 601 } |
592 | 602 |
593 void ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() { | 603 void ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() { |
| 604 const base::Closure on_collected_callback = base::Bind( |
| 605 &ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports, |
| 606 weak_ptr_factory_.GetWeakPtr()); |
| 607 |
| 608 #if defined(OS_WIN) |
| 609 watcher_metrics_provider_->CollectPostmortemReports(on_collected_callback); |
| 610 #else |
| 611 on_collected_callback.Run(); |
| 612 #endif // defined(OS_WIN) |
| 613 } |
| 614 |
| 615 void ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports() { |
594 finished_init_task_callback_.Run(); | 616 finished_init_task_callback_.Run(); |
595 } | 617 } |
596 | 618 |
597 bool ChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { | 619 bool ChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { |
598 // Upload profiler data at most once per session. | 620 // Upload profiler data at most once per session. |
599 if (has_uploaded_profiler_data_) | 621 if (has_uploaded_profiler_data_) |
600 return false; | 622 return false; |
601 | 623 |
602 // For each log, flip a fair coin. Thus, profiler data is sent with the first | 624 // For each log, flip a fair coin. Thus, profiler data is sent with the first |
603 // log with probability 50%, with the second log with probability 25%, and so | 625 // log with probability 50%, with the second log with probability 25%, and so |
(...skipping 181 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
785 } | 807 } |
786 } | 808 } |
787 | 809 |
788 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { | 810 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { |
789 metrics_service_->OnApplicationNotIdle(); | 811 metrics_service_->OnApplicationNotIdle(); |
790 } | 812 } |
791 | 813 |
792 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { | 814 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { |
793 return metrics::IsCellularLogicEnabled(); | 815 return metrics::IsCellularLogicEnabled(); |
794 } | 816 } |
OLD | NEW |