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

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

Issue 2344343002: Wire in postmortem report collection (Closed)
Patch Set: Merge Created 4 years, 2 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 <vector> 9 #include <vector>
10 10
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 chromeos_metrics_provider_(nullptr), 230 chromeos_metrics_provider_(nullptr),
231 #endif 231 #endif
232 waiting_for_collect_final_metrics_step_(false), 232 waiting_for_collect_final_metrics_step_(false),
233 num_async_histogram_fetches_in_progress_(0), 233 num_async_histogram_fetches_in_progress_(0),
234 profiler_metrics_provider_(nullptr), 234 profiler_metrics_provider_(nullptr),
235 #if defined(ENABLE_PLUGINS) 235 #if defined(ENABLE_PLUGINS)
236 plugin_metrics_provider_(nullptr), 236 plugin_metrics_provider_(nullptr),
237 #endif 237 #endif
238 #if defined(OS_WIN) 238 #if defined(OS_WIN)
239 google_update_metrics_provider_(nullptr), 239 google_update_metrics_provider_(nullptr),
240 watcher_metrics_provider_(nullptr),
241 antivirus_metrics_provider_(nullptr),
240 #endif 242 #endif
241 drive_metrics_provider_(nullptr), 243 drive_metrics_provider_(nullptr),
242 start_time_(base::TimeTicks::Now()), 244 start_time_(base::TimeTicks::Now()),
243 has_uploaded_profiler_data_(false), 245 has_uploaded_profiler_data_(false),
244 weak_ptr_factory_(this) { 246 weak_ptr_factory_(this) {
245 DCHECK(thread_checker_.CalledOnValidThread()); 247 DCHECK(thread_checker_.CalledOnValidThread());
246 RecordCommandLineMetrics(); 248 RecordCommandLineMetrics();
247 RegisterForNotifications(); 249 RegisterForNotifications();
248 } 250 }
249 251
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
481 metrics_service_->RegisterMetricsProvider( 483 metrics_service_->RegisterMetricsProvider(
482 std::unique_ptr<metrics::MetricsProvider>(new PageLoadMetricsProvider())); 484 std::unique_ptr<metrics::MetricsProvider>(new PageLoadMetricsProvider()));
483 #endif // BUILDFLAG(ANDROID_JAVA_UI) 485 #endif // BUILDFLAG(ANDROID_JAVA_UI)
484 486
485 #if defined(OS_WIN) 487 #if defined(OS_WIN)
486 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; 488 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin;
487 metrics_service_->RegisterMetricsProvider( 489 metrics_service_->RegisterMetricsProvider(
488 std::unique_ptr<metrics::MetricsProvider>( 490 std::unique_ptr<metrics::MetricsProvider>(
489 google_update_metrics_provider_)); 491 google_update_metrics_provider_));
490 492
493 base::FilePath user_data_dir;
494 base::FilePath crash_dir;
495 if (!base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir) ||
496 !base::PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dir)) {
497 // If either call fails, then clear both.
498 user_data_dir = base::FilePath();
499 crash_dir = base::FilePath();
500 }
501 watcher_metrics_provider_ = new browser_watcher::WatcherMetricsProviderWin(
502 chrome::GetBrowserExitCodesRegistryPath(), user_data_dir, crash_dir,
503 content::BrowserThread::GetBlockingPool());
491 metrics_service_->RegisterMetricsProvider( 504 metrics_service_->RegisterMetricsProvider(
492 std::unique_ptr<metrics::MetricsProvider>( 505 std::unique_ptr<metrics::MetricsProvider>(watcher_metrics_provider_));
493 new browser_watcher::WatcherMetricsProviderWin(
494 chrome::GetBrowserExitCodesRegistryPath(),
495 content::BrowserThread::GetBlockingPool())));
496 506
497 antivirus_metrics_provider_ = new AntiVirusMetricsProvider( 507 antivirus_metrics_provider_ = new AntiVirusMetricsProvider(
498 content::BrowserThread::GetBlockingPool() 508 content::BrowserThread::GetBlockingPool()
499 ->GetTaskRunnerWithShutdownBehavior( 509 ->GetTaskRunnerWithShutdownBehavior(
500 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); 510 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN));
501 511
502 metrics_service_->RegisterMetricsProvider( 512 metrics_service_->RegisterMetricsProvider(
503 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); 513 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_));
504 #endif // defined(OS_WIN) 514 #endif // defined(OS_WIN)
505 515
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
595 #endif // defined(OS_WIN) 605 #endif // defined(OS_WIN)
596 } 606 }
597 607
598 void ChromeMetricsServiceClient::OnInitTaskGotAntiVirusData() { 608 void ChromeMetricsServiceClient::OnInitTaskGotAntiVirusData() {
599 drive_metrics_provider_->GetDriveMetrics( 609 drive_metrics_provider_->GetDriveMetrics(
600 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics, 610 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics,
601 weak_ptr_factory_.GetWeakPtr())); 611 weak_ptr_factory_.GetWeakPtr()));
602 } 612 }
603 613
604 void ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() { 614 void ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() {
615 #if defined(OS_WIN)
616 watcher_metrics_provider_->CollectPostmortemReports(base::Bind(
617 &ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports,
618 weak_ptr_factory_.GetWeakPtr()));
619 #else
620 OnInitTaskCollectedPostmortemReports();
621 #endif // defined(OS_WIN)
622 }
623
624 void ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports() {
605 finished_init_task_callback_.Run(); 625 finished_init_task_callback_.Run();
606 } 626 }
607 627
608 bool ChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() { 628 bool ChromeMetricsServiceClient::ShouldIncludeProfilerDataInLog() {
609 // Upload profiler data at most once per session. 629 // Upload profiler data at most once per session.
610 if (has_uploaded_profiler_data_) 630 if (has_uploaded_profiler_data_)
611 return false; 631 return false;
612 632
613 // For each log, flip a fair coin. Thus, profiler data is sent with the first 633 // For each log, flip a fair coin. Thus, profiler data is sent with the first
614 // log with probability 50%, with the second log with probability 25%, and so 634 // 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
796 } 816 }
797 } 817 }
798 818
799 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { 819 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) {
800 metrics_service_->OnApplicationNotIdle(); 820 metrics_service_->OnApplicationNotIdle();
801 } 821 }
802 822
803 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { 823 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() {
804 return metrics::IsCellularLogicEnabled(); 824 return metrics::IsCellularLogicEnabled();
805 } 825 }
OLDNEW
« no previous file with comments | « chrome/browser/metrics/chrome_metrics_service_client.h ('k') | components/browser_watcher/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698