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

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

Issue 1886913002: Convert //chrome/browser/metrics from scoped_ptr to std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
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/logging.h" 15 #include "base/logging.h"
16 #include "base/memory/ptr_util.h"
16 #include "base/metrics/histogram.h" 17 #include "base/metrics/histogram.h"
17 #include "base/path_service.h" 18 #include "base/path_service.h"
18 #include "base/rand_util.h" 19 #include "base/rand_util.h"
19 #include "base/strings/string16.h" 20 #include "base/strings/string16.h"
20 #include "base/threading/platform_thread.h" 21 #include "base/threading/platform_thread.h"
21 #include "build/build_config.h" 22 #include "build/build_config.h"
22 #include "chrome/browser/browser_process.h" 23 #include "chrome/browser/browser_process.h"
23 #include "chrome/browser/chrome_notification_types.h" 24 #include "chrome/browser/chrome_notification_types.h"
24 #include "chrome/browser/google/google_brand.h" 25 #include "chrome/browser/google/google_brand.h"
25 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h" 26 #include "chrome/browser/metrics/chrome_stability_metrics_provider.h"
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 void RegisterInstallerFileMetricsPreferences(PrefRegistrySimple* registry) { 140 void RegisterInstallerFileMetricsPreferences(PrefRegistrySimple* registry) {
140 #if defined(OS_WIN) 141 #if defined(OS_WIN)
141 metrics::FileMetricsProvider::RegisterPrefs( 142 metrics::FileMetricsProvider::RegisterPrefs(
142 registry, installer::kSetupHistogramAllocatorName); 143 registry, installer::kSetupHistogramAllocatorName);
143 #endif 144 #endif
144 } 145 }
145 146
146 void RegisterInstallerFileMetricsProvider( 147 void RegisterInstallerFileMetricsProvider(
147 metrics::MetricsService* metrics_service) { 148 metrics::MetricsService* metrics_service) {
148 #if defined(OS_WIN) 149 #if defined(OS_WIN)
149 scoped_ptr<metrics::FileMetricsProvider> file_metrics( 150 std::unique_ptr<metrics::FileMetricsProvider> file_metrics(
150 new metrics::FileMetricsProvider( 151 new metrics::FileMetricsProvider(
151 content::BrowserThread::GetBlockingPool() 152 content::BrowserThread::GetBlockingPool()
152 ->GetTaskRunnerWithShutdownBehavior( 153 ->GetTaskRunnerWithShutdownBehavior(
153 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN), 154 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN),
154 g_browser_process->local_state())); 155 g_browser_process->local_state()));
155 base::FilePath program_dir; 156 base::FilePath program_dir;
156 base::PathService::Get(base::DIR_EXE, &program_dir); 157 base::PathService::Get(base::DIR_EXE, &program_dir);
157 file_metrics->RegisterFile( 158 file_metrics->RegisterFile(
158 program_dir.AppendASCII(installer::kSetupHistogramAllocatorName) 159 program_dir.AppendASCII(installer::kSetupHistogramAllocatorName)
159 .AddExtension(L".pma"), 160 .AddExtension(L".pma"),
160 metrics::FileMetricsProvider::FILE_HISTOGRAMS_ATOMIC, 161 metrics::FileMetricsProvider::FILE_HISTOGRAMS_ATOMIC,
161 installer::kSetupHistogramAllocatorName); 162 installer::kSetupHistogramAllocatorName);
162 metrics_service->RegisterMetricsProvider(std::move(file_metrics)); 163 metrics_service->RegisterMetricsProvider(std::move(file_metrics));
163 #endif 164 #endif
164 } 165 }
(...skipping 23 matching lines...) Expand all
188 DCHECK(thread_checker_.CalledOnValidThread()); 189 DCHECK(thread_checker_.CalledOnValidThread());
189 RecordCommandLineMetrics(); 190 RecordCommandLineMetrics();
190 RegisterForNotifications(); 191 RegisterForNotifications();
191 } 192 }
192 193
193 ChromeMetricsServiceClient::~ChromeMetricsServiceClient() { 194 ChromeMetricsServiceClient::~ChromeMetricsServiceClient() {
194 DCHECK(thread_checker_.CalledOnValidThread()); 195 DCHECK(thread_checker_.CalledOnValidThread());
195 } 196 }
196 197
197 // static 198 // static
198 scoped_ptr<ChromeMetricsServiceClient> ChromeMetricsServiceClient::Create( 199 std::unique_ptr<ChromeMetricsServiceClient> ChromeMetricsServiceClient::Create(
199 metrics::MetricsStateManager* state_manager, 200 metrics::MetricsStateManager* state_manager,
200 PrefService* local_state) { 201 PrefService* local_state) {
201 // Perform two-phase initialization so that |client->metrics_service_| only 202 // Perform two-phase initialization so that |client->metrics_service_| only
202 // receives pointers to fully constructed objects. 203 // receives pointers to fully constructed objects.
203 scoped_ptr<ChromeMetricsServiceClient> client( 204 std::unique_ptr<ChromeMetricsServiceClient> client(
204 new ChromeMetricsServiceClient(state_manager)); 205 new ChromeMetricsServiceClient(state_manager));
205 client->Initialize(); 206 client->Initialize();
206 207
207 return client; 208 return client;
208 } 209 }
209 210
210 // static 211 // static
211 void ChromeMetricsServiceClient::RegisterPrefs(PrefRegistrySimple* registry) { 212 void ChromeMetricsServiceClient::RegisterPrefs(PrefRegistrySimple* registry) {
212 metrics::MetricsService::RegisterPrefs(registry); 213 metrics::MetricsService::RegisterPrefs(registry);
213 metrics::StabilityMetricsHelper::RegisterPrefs(registry); 214 metrics::StabilityMetricsHelper::RegisterPrefs(registry);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
292 if (ShouldIncludeProfilerDataInLog()) { 293 if (ShouldIncludeProfilerDataInLog()) {
293 // Fetch profiler data. This will call into 294 // Fetch profiler data. This will call into
294 // |FinishedReceivingProfilerData()| when the task completes. 295 // |FinishedReceivingProfilerData()| when the task completes.
295 metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously( 296 metrics::TrackingSynchronizer::FetchProfilerDataAsynchronously(
296 weak_ptr_factory_.GetWeakPtr()); 297 weak_ptr_factory_.GetWeakPtr());
297 } else { 298 } else {
298 CollectFinalHistograms(); 299 CollectFinalHistograms();
299 } 300 }
300 } 301 }
301 302
302 scoped_ptr<metrics::MetricsLogUploader> 303 std::unique_ptr<metrics::MetricsLogUploader>
303 ChromeMetricsServiceClient::CreateUploader( 304 ChromeMetricsServiceClient::CreateUploader(
304 const base::Callback<void(int)>& on_upload_complete) { 305 const base::Callback<void(int)>& on_upload_complete) {
305 return scoped_ptr<metrics::MetricsLogUploader>( 306 return std::unique_ptr<metrics::MetricsLogUploader>(
306 new metrics::NetMetricsLogUploader( 307 new metrics::NetMetricsLogUploader(
307 g_browser_process->system_request_context(), 308 g_browser_process->system_request_context(),
308 metrics::kDefaultMetricsServerUrl, 309 metrics::kDefaultMetricsServerUrl, metrics::kDefaultMetricsMimeType,
309 metrics::kDefaultMetricsMimeType,
310 on_upload_complete)); 310 on_upload_complete));
311 } 311 }
312 312
313 base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() { 313 base::TimeDelta ChromeMetricsServiceClient::GetStandardUploadInterval() {
314 #if defined(OS_ANDROID) 314 #if defined(OS_ANDROID)
315 if (IsCellularLogicEnabled()) 315 if (IsCellularLogicEnabled())
316 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds); 316 return base::TimeDelta::FromSeconds(kStandardUploadIntervalCellularSeconds);
317 #endif 317 #endif
318 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds); 318 return base::TimeDelta::FromSeconds(kStandardUploadIntervalSeconds);
319 } 319 }
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
353 PrefService* local_state = g_browser_process->local_state(); 353 PrefService* local_state = g_browser_process->local_state();
354 local_state->ClearPref(metrics::prefs::kMetricsInitialLogs); 354 local_state->ClearPref(metrics::prefs::kMetricsInitialLogs);
355 local_state->ClearPref(metrics::prefs::kMetricsOngoingLogs); 355 local_state->ClearPref(metrics::prefs::kMetricsOngoingLogs);
356 } 356 }
357 357
358 metrics_service_.reset(new metrics::MetricsService( 358 metrics_service_.reset(new metrics::MetricsService(
359 metrics_state_manager_, this, g_browser_process->local_state())); 359 metrics_state_manager_, this, g_browser_process->local_state()));
360 360
361 // Gets access to persistent metrics shared by sub-processes. 361 // Gets access to persistent metrics shared by sub-processes.
362 metrics_service_->RegisterMetricsProvider( 362 metrics_service_->RegisterMetricsProvider(
363 scoped_ptr<metrics::MetricsProvider>(new SubprocessMetricsProvider())); 363 std::unique_ptr<metrics::MetricsProvider>(
364 new SubprocessMetricsProvider()));
364 365
365 // Register metrics providers. 366 // Register metrics providers.
366 #if defined(ENABLE_EXTENSIONS) 367 #if defined(ENABLE_EXTENSIONS)
367 metrics_service_->RegisterMetricsProvider( 368 metrics_service_->RegisterMetricsProvider(
368 scoped_ptr<metrics::MetricsProvider>( 369 std::unique_ptr<metrics::MetricsProvider>(
369 new ExtensionsMetricsProvider(metrics_state_manager_))); 370 new ExtensionsMetricsProvider(metrics_state_manager_)));
370 #endif 371 #endif
371 metrics_service_->RegisterMetricsProvider( 372 metrics_service_->RegisterMetricsProvider(
372 scoped_ptr<metrics::MetricsProvider>(new metrics::NetworkMetricsProvider( 373 std::unique_ptr<metrics::MetricsProvider>(
373 content::BrowserThread::GetBlockingPool()))); 374 new metrics::NetworkMetricsProvider(
375 content::BrowserThread::GetBlockingPool())));
374 376
375 // Currently, we configure OmniboxMetricsProvider to not log events to UMA 377 // Currently, we configure OmniboxMetricsProvider to not log events to UMA
376 // if there is a single incognito session visible. In the future, it may 378 // if there is a single incognito session visible. In the future, it may
377 // be worth revisiting this to still log events from non-incognito sessions. 379 // be worth revisiting this to still log events from non-incognito sessions.
378 metrics_service_->RegisterMetricsProvider( 380 metrics_service_->RegisterMetricsProvider(
379 scoped_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( 381 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider(
380 base::Bind(&chrome::IsOffTheRecordSessionActive)))); 382 base::Bind(&chrome::IsOffTheRecordSessionActive))));
381 metrics_service_->RegisterMetricsProvider( 383 metrics_service_->RegisterMetricsProvider(
382 scoped_ptr<metrics::MetricsProvider>(new ChromeStabilityMetricsProvider( 384 std::unique_ptr<metrics::MetricsProvider>(
383 g_browser_process->local_state()))); 385 new ChromeStabilityMetricsProvider(
386 g_browser_process->local_state())));
384 metrics_service_->RegisterMetricsProvider( 387 metrics_service_->RegisterMetricsProvider(
385 scoped_ptr<metrics::MetricsProvider>(new metrics::GPUMetricsProvider)); 388 std::unique_ptr<metrics::MetricsProvider>(
389 new metrics::GPUMetricsProvider));
386 metrics_service_->RegisterMetricsProvider( 390 metrics_service_->RegisterMetricsProvider(
387 scoped_ptr<metrics::MetricsProvider>( 391 std::unique_ptr<metrics::MetricsProvider>(
388 new metrics::ScreenInfoMetricsProvider)); 392 new metrics::ScreenInfoMetricsProvider));
389 393
390 RegisterInstallerFileMetricsProvider(metrics_service_.get()); 394 RegisterInstallerFileMetricsProvider(metrics_service_.get());
391 395
392 drive_metrics_provider_ = new metrics::DriveMetricsProvider( 396 drive_metrics_provider_ = new metrics::DriveMetricsProvider(
393 content::BrowserThread::GetMessageLoopProxyForThread( 397 content::BrowserThread::GetMessageLoopProxyForThread(
394 content::BrowserThread::FILE), 398 content::BrowserThread::FILE),
395 chrome::FILE_LOCAL_STATE); 399 chrome::FILE_LOCAL_STATE);
396 metrics_service_->RegisterMetricsProvider( 400 metrics_service_->RegisterMetricsProvider(
397 scoped_ptr<metrics::MetricsProvider>(drive_metrics_provider_)); 401 std::unique_ptr<metrics::MetricsProvider>(drive_metrics_provider_));
398 402
399 profiler_metrics_provider_ = 403 profiler_metrics_provider_ =
400 new metrics::ProfilerMetricsProvider(base::Bind(&IsCellularLogicEnabled)); 404 new metrics::ProfilerMetricsProvider(base::Bind(&IsCellularLogicEnabled));
401 metrics_service_->RegisterMetricsProvider( 405 metrics_service_->RegisterMetricsProvider(
402 scoped_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); 406 std::unique_ptr<metrics::MetricsProvider>(profiler_metrics_provider_));
403 407
404 metrics_service_->RegisterMetricsProvider( 408 metrics_service_->RegisterMetricsProvider(
405 scoped_ptr<metrics::MetricsProvider>( 409 std::unique_ptr<metrics::MetricsProvider>(
406 new metrics::CallStackProfileMetricsProvider)); 410 new metrics::CallStackProfileMetricsProvider));
407 411
408 #if BUILDFLAG(ANDROID_JAVA_UI) 412 #if BUILDFLAG(ANDROID_JAVA_UI)
409 metrics_service_->RegisterMetricsProvider( 413 metrics_service_->RegisterMetricsProvider(
410 scoped_ptr<metrics::MetricsProvider>( 414 std::unique_ptr<metrics::MetricsProvider>(
411 new AndroidMetricsProvider(g_browser_process->local_state()))); 415 new AndroidMetricsProvider(g_browser_process->local_state())));
412 #endif // BUILDFLAG(ANDROID_JAVA_UI) 416 #endif // BUILDFLAG(ANDROID_JAVA_UI)
413 417
414 #if defined(OS_WIN) 418 #if defined(OS_WIN)
415 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; 419 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin;
416 metrics_service_->RegisterMetricsProvider( 420 metrics_service_->RegisterMetricsProvider(
417 scoped_ptr<metrics::MetricsProvider>(google_update_metrics_provider_)); 421 std::unique_ptr<metrics::MetricsProvider>(
422 google_update_metrics_provider_));
418 423
419 metrics_service_->RegisterMetricsProvider( 424 metrics_service_->RegisterMetricsProvider(
420 scoped_ptr<metrics::MetricsProvider>( 425 std::unique_ptr<metrics::MetricsProvider>(
421 new browser_watcher::WatcherMetricsProviderWin( 426 new browser_watcher::WatcherMetricsProviderWin(
422 chrome::kBrowserExitCodesRegistryPath, 427 chrome::kBrowserExitCodesRegistryPath,
423 content::BrowserThread::GetBlockingPool()))); 428 content::BrowserThread::GetBlockingPool())));
424 #endif // defined(OS_WIN) 429 #endif // defined(OS_WIN)
425 430
426 #if defined(ENABLE_PLUGINS) 431 #if defined(ENABLE_PLUGINS)
427 plugin_metrics_provider_ = 432 plugin_metrics_provider_ =
428 new PluginMetricsProvider(g_browser_process->local_state()); 433 new PluginMetricsProvider(g_browser_process->local_state());
429 metrics_service_->RegisterMetricsProvider( 434 metrics_service_->RegisterMetricsProvider(
430 scoped_ptr<metrics::MetricsProvider>(plugin_metrics_provider_)); 435 std::unique_ptr<metrics::MetricsProvider>(plugin_metrics_provider_));
431 #endif // defined(ENABLE_PLUGINS) 436 #endif // defined(ENABLE_PLUGINS)
432 437
433 #if defined(OS_CHROMEOS) 438 #if defined(OS_CHROMEOS)
434 ChromeOSMetricsProvider* chromeos_metrics_provider = 439 ChromeOSMetricsProvider* chromeos_metrics_provider =
435 new ChromeOSMetricsProvider; 440 new ChromeOSMetricsProvider;
436 chromeos_metrics_provider_ = chromeos_metrics_provider; 441 chromeos_metrics_provider_ = chromeos_metrics_provider;
437 metrics_service_->RegisterMetricsProvider( 442 metrics_service_->RegisterMetricsProvider(
438 scoped_ptr<metrics::MetricsProvider>(chromeos_metrics_provider)); 443 std::unique_ptr<metrics::MetricsProvider>(chromeos_metrics_provider));
439 444
440 SigninStatusMetricsProviderChromeOS* signin_metrics_provider_cros = 445 SigninStatusMetricsProviderChromeOS* signin_metrics_provider_cros =
441 new SigninStatusMetricsProviderChromeOS; 446 new SigninStatusMetricsProviderChromeOS;
442 metrics_service_->RegisterMetricsProvider( 447 metrics_service_->RegisterMetricsProvider(
443 scoped_ptr<metrics::MetricsProvider>(signin_metrics_provider_cros)); 448 std::unique_ptr<metrics::MetricsProvider>(signin_metrics_provider_cros));
444 #endif // defined(OS_CHROMEOS) 449 #endif // defined(OS_CHROMEOS)
445 450
446 #if !defined(OS_CHROMEOS) 451 #if !defined(OS_CHROMEOS)
447 metrics_service_->RegisterMetricsProvider( 452 metrics_service_->RegisterMetricsProvider(
448 scoped_ptr<metrics::MetricsProvider>( 453 std::unique_ptr<metrics::MetricsProvider>(
449 SigninStatusMetricsProvider::CreateInstance( 454 SigninStatusMetricsProvider::CreateInstance(base::WrapUnique(
450 make_scoped_ptr(new ChromeSigninStatusMetricsProviderDelegate)))); 455 new ChromeSigninStatusMetricsProviderDelegate))));
451 #endif // !defined(OS_CHROMEOS) 456 #endif // !defined(OS_CHROMEOS)
452 457
453 metrics_service_->RegisterMetricsProvider( 458 metrics_service_->RegisterMetricsProvider(
454 scoped_ptr<metrics::MetricsProvider>( 459 std::unique_ptr<metrics::MetricsProvider>(
455 new sync_driver::DeviceCountMetricsProvider(base::Bind( 460 new sync_driver::DeviceCountMetricsProvider(base::Bind(
456 &browser_sync::ChromeSyncClient::GetDeviceInfoTrackers)))); 461 &browser_sync::ChromeSyncClient::GetDeviceInfoTrackers))));
457 462
458 // Clear stability metrics if it is the first time cellular upload logic 463 // Clear stability metrics if it is the first time cellular upload logic
459 // should apply to avoid sudden bulk uploads. It needs to be done after all 464 // should apply to avoid sudden bulk uploads. It needs to be done after all
460 // providers are registered. 465 // providers are registered.
461 if (ShouldClearSavedMetrics()) 466 if (ShouldClearSavedMetrics())
462 metrics_service_->ClearSavedStabilityMetrics(); 467 metrics_service_->ClearSavedStabilityMetrics();
463 } 468 }
464 469
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
686 } 691 }
687 } 692 }
688 693
689 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { 694 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) {
690 metrics_service_->OnApplicationNotIdle(); 695 metrics_service_->OnApplicationNotIdle();
691 } 696 }
692 697
693 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { 698 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() {
694 return IsCellularLogicEnabled(); 699 return IsCellularLogicEnabled();
695 } 700 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698