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

Unified Diff: chrome/browser/metrics/chrome_metrics_service_client.cc

Issue 2344343002: Wire in postmortem report collection (Closed)
Patch Set: Address first round Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/metrics/chrome_metrics_service_client.cc
diff --git a/chrome/browser/metrics/chrome_metrics_service_client.cc b/chrome/browser/metrics/chrome_metrics_service_client.cc
index b1af4ef6ecbcb0294a9c5476fb4f538339abfe9b..032ef6c28d0371aa5ccfbb70dc1433abe74191ea 100644
--- a/chrome/browser/metrics/chrome_metrics_service_client.cc
+++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
@@ -249,6 +249,8 @@ ChromeMetricsServiceClient::ChromeMetricsServiceClient(
#endif
#if defined(OS_WIN)
google_update_metrics_provider_(nullptr),
+ watcher_metrics_provider_(nullptr),
+ antivirus_metrics_provider_(nullptr),
#endif
drive_metrics_provider_(nullptr),
start_time_(base::TimeTicks::Now()),
@@ -498,11 +500,19 @@ void ChromeMetricsServiceClient::Initialize() {
std::unique_ptr<metrics::MetricsProvider>(
google_update_metrics_provider_));
+ base::FilePath user_data_dir;
+ base::FilePath crash_dir;
+ if (!base::PathService::Get(chrome::DIR_USER_DATA, &user_data_dir) ||
+ !base::PathService::Get(chrome::DIR_CRASH_DUMPS, &crash_dir)) {
+ // If either call fails, then clear both.
+ user_data_dir = base::FilePath();
+ crash_dir = base::FilePath();
+ }
+ watcher_metrics_provider_ = new browser_watcher::WatcherMetricsProviderWin(
+ chrome::GetBrowserExitCodesRegistryPath(), user_data_dir, crash_dir,
+ content::BrowserThread::GetBlockingPool());
metrics_service_->RegisterMetricsProvider(
- std::unique_ptr<metrics::MetricsProvider>(
- new browser_watcher::WatcherMetricsProviderWin(
- chrome::GetBrowserExitCodesRegistryPath(),
- content::BrowserThread::GetBlockingPool())));
+ std::unique_ptr<metrics::MetricsProvider>(watcher_metrics_provider_));
antivirus_metrics_provider_ = new AntiVirusMetricsProvider(
content::BrowserThread::GetBlockingPool()
@@ -620,6 +630,18 @@ void ChromeMetricsServiceClient::OnInitTaskGotAntiVirusData() {
}
void ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() {
+ const base::Closure on_collected_callback = base::Bind(
+ &ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports,
Sigurður Ásgeirsson 2016/09/22 13:06:11 ubernit: it's pretty wasteful to create a Closure,
manzagop (departed) 2016/09/22 15:41:57 Done.
+ weak_ptr_factory_.GetWeakPtr());
+
+#if defined(OS_WIN)
+ watcher_metrics_provider_->CollectPostmortemReports(on_collected_callback);
+#else
+ on_collected_callback.Run();
+#endif // defined(OS_WIN)
+}
+
+void ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports() {
finished_init_task_callback_.Run();
}

Powered by Google App Engine
This is Rietveld 408576698