| 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 a2b2d7da315fb5517d4128c18e8f4146241cddec..a157272b3e0fbe0184a040ad9435d30eea39ebce 100644
|
| --- a/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| +++ b/chrome/browser/metrics/chrome_metrics_service_client.cc
|
| @@ -229,6 +229,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()),
|
| @@ -469,11 +471,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()
|
| @@ -591,6 +601,18 @@ void ChromeMetricsServiceClient::OnInitTaskGotAntiVirusData() {
|
| }
|
|
|
| void ChromeMetricsServiceClient::OnInitTaskGotDriveMetrics() {
|
| + const base::Closure on_collected_callback = base::Bind(
|
| + &ChromeMetricsServiceClient::OnInitTaskCollectedPostmortemReports,
|
| + 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();
|
| }
|
|
|
|
|