| 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 22 matching lines...) Expand all Loading... |
| 33 #include "chrome/browser/metrics/subprocess_metrics_provider.h" | 33 #include "chrome/browser/metrics/subprocess_metrics_provider.h" |
| 34 #include "chrome/browser/metrics/time_ticks_experiment_win.h" | 34 #include "chrome/browser/metrics/time_ticks_experiment_win.h" |
| 35 #include "chrome/browser/sync/chrome_sync_client.h" | 35 #include "chrome/browser/sync/chrome_sync_client.h" |
| 36 #include "chrome/browser/ui/browser_otr_state.h" | 36 #include "chrome/browser/ui/browser_otr_state.h" |
| 37 #include "chrome/common/channel_info.h" | 37 #include "chrome/common/channel_info.h" |
| 38 #include "chrome/common/chrome_paths.h" | 38 #include "chrome/common/chrome_paths.h" |
| 39 #include "chrome/common/chrome_paths_internal.h" | 39 #include "chrome/common/chrome_paths_internal.h" |
| 40 #include "chrome/common/chrome_switches.h" | 40 #include "chrome/common/chrome_switches.h" |
| 41 #include "chrome/common/crash_keys.h" | 41 #include "chrome/common/crash_keys.h" |
| 42 #include "chrome/common/features.h" | 42 #include "chrome/common/features.h" |
| 43 #include "chrome/common/pref_names.h" |
| 43 #include "chrome/installer/util/util_constants.h" | 44 #include "chrome/installer/util/util_constants.h" |
| 44 #include "components/metrics/call_stack_profile_metrics_provider.h" | 45 #include "components/metrics/call_stack_profile_metrics_provider.h" |
| 45 #include "components/metrics/drive_metrics_provider.h" | 46 #include "components/metrics/drive_metrics_provider.h" |
| 46 #include "components/metrics/file_metrics_provider.h" | 47 #include "components/metrics/file_metrics_provider.h" |
| 47 #include "components/metrics/gpu/gpu_metrics_provider.h" | 48 #include "components/metrics/gpu/gpu_metrics_provider.h" |
| 48 #include "components/metrics/metrics_pref_names.h" | 49 #include "components/metrics/metrics_pref_names.h" |
| 49 #include "components/metrics/metrics_reporting_default_state.h" | 50 #include "components/metrics/metrics_reporting_default_state.h" |
| 50 #include "components/metrics/metrics_service.h" | 51 #include "components/metrics/metrics_service.h" |
| 51 #include "components/metrics/metrics_service_client.h" | 52 #include "components/metrics/metrics_service_client.h" |
| 52 #include "components/metrics/metrics_state_manager.h" | 53 #include "components/metrics/metrics_state_manager.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 108 namespace { | 109 namespace { |
| 109 | 110 |
| 110 // This specifies the amount of time to wait for all renderers to send their | 111 // This specifies the amount of time to wait for all renderers to send their |
| 111 // data. | 112 // data. |
| 112 const int kMaxHistogramGatheringWaitDuration = 60000; // 60 seconds. | 113 const int kMaxHistogramGatheringWaitDuration = 60000; // 60 seconds. |
| 113 | 114 |
| 114 // Needs to be kept in sync with the writer in | 115 // Needs to be kept in sync with the writer in |
| 115 // third_party/crashpad/crashpad/handler/handler_main.cc. | 116 // third_party/crashpad/crashpad/handler/handler_main.cc. |
| 116 const char kCrashpadHistogramAllocatorName[] = "CrashpadMetrics"; | 117 const char kCrashpadHistogramAllocatorName[] = "CrashpadMetrics"; |
| 117 | 118 |
| 118 // Checks whether it is the first time that cellular uploads logic should be | |
| 119 // enabled based on whether the the preference for that logic is initialized. | |
| 120 // This should happen only once as the used preference will be initialized | |
| 121 // afterwards in |UmaSessionStats.java|. | |
| 122 bool ShouldClearSavedMetrics() { | |
| 123 #if BUILDFLAG(ANDROID_JAVA_UI) | |
| 124 PrefService* local_state = g_browser_process->local_state(); | |
| 125 return !local_state->HasPrefPath(metrics::prefs::kMetricsReportingEnabled) && | |
| 126 metrics::IsCellularLogicEnabled(); | |
| 127 #else | |
| 128 return false; | |
| 129 #endif | |
| 130 } | |
| 131 | |
| 132 void RegisterFileMetricsPreferences(PrefRegistrySimple* registry) { | 119 void RegisterFileMetricsPreferences(PrefRegistrySimple* registry) { |
| 133 metrics::FileMetricsProvider::RegisterPrefs( | 120 metrics::FileMetricsProvider::RegisterPrefs( |
| 134 registry, ChromeMetricsServiceClient::kBrowserMetricsName); | 121 registry, ChromeMetricsServiceClient::kBrowserMetricsName); |
| 135 | 122 |
| 136 metrics::FileMetricsProvider::RegisterPrefs(registry, | 123 metrics::FileMetricsProvider::RegisterPrefs(registry, |
| 137 kCrashpadHistogramAllocatorName); | 124 kCrashpadHistogramAllocatorName); |
| 138 | 125 |
| 139 #if defined(OS_WIN) | 126 #if defined(OS_WIN) |
| 140 metrics::FileMetricsProvider::RegisterPrefs( | 127 metrics::FileMetricsProvider::RegisterPrefs( |
| 141 registry, installer::kSetupHistogramAllocatorName); | 128 registry, installer::kSetupHistogramAllocatorName); |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 return IsMetricsReportingPolicyManaged(); | 396 return IsMetricsReportingPolicyManaged(); |
| 410 } | 397 } |
| 411 | 398 |
| 412 metrics::EnableMetricsDefault | 399 metrics::EnableMetricsDefault |
| 413 ChromeMetricsServiceClient::GetMetricsReportingDefaultState() { | 400 ChromeMetricsServiceClient::GetMetricsReportingDefaultState() { |
| 414 return metrics::GetMetricsReportingDefaultState( | 401 return metrics::GetMetricsReportingDefaultState( |
| 415 g_browser_process->local_state()); | 402 g_browser_process->local_state()); |
| 416 } | 403 } |
| 417 | 404 |
| 418 void ChromeMetricsServiceClient::Initialize() { | 405 void ChromeMetricsServiceClient::Initialize() { |
| 419 // Clear metrics reports if it is the first time cellular upload logic should | 406 PrefService* local_state = g_browser_process->local_state(); |
| 420 // apply to avoid sudden bulk uploads. It needs to be done before initializing | |
| 421 // metrics service so that metrics log manager is initialized correctly. | |
| 422 if (ShouldClearSavedMetrics()) { | |
| 423 PrefService* local_state = g_browser_process->local_state(); | |
| 424 local_state->ClearPref(metrics::prefs::kMetricsInitialLogs); | |
| 425 local_state->ClearPref(metrics::prefs::kMetricsOngoingLogs); | |
| 426 } | |
| 427 | 407 |
| 428 metrics_service_.reset(new metrics::MetricsService( | 408 // Clear deprecated metrics preference for Android. |
| 429 metrics_state_manager_, this, g_browser_process->local_state())); | 409 // TODO(gayane): Cleanup this code after M60 when the pref would be cleared |
| 410 // from clients. |
| 411 #if BUILDFLAG(ANDROID_JAVA_UI) |
| 412 local_state->ClearPref(prefs::kCrashReportingEnabled); |
| 413 #endif |
| 414 |
| 415 metrics_service_.reset( |
| 416 new metrics::MetricsService(metrics_state_manager_, this, local_state)); |
| 430 | 417 |
| 431 // Gets access to persistent metrics shared by sub-processes. | 418 // Gets access to persistent metrics shared by sub-processes. |
| 432 metrics_service_->RegisterMetricsProvider( | 419 metrics_service_->RegisterMetricsProvider( |
| 433 std::unique_ptr<metrics::MetricsProvider>( | 420 std::unique_ptr<metrics::MetricsProvider>( |
| 434 new SubprocessMetricsProvider())); | 421 new SubprocessMetricsProvider())); |
| 435 | 422 |
| 436 // Register metrics providers. | 423 // Register metrics providers. |
| 437 #if defined(ENABLE_EXTENSIONS) | 424 #if defined(ENABLE_EXTENSIONS) |
| 438 metrics_service_->RegisterMetricsProvider( | 425 metrics_service_->RegisterMetricsProvider( |
| 439 std::unique_ptr<metrics::MetricsProvider>( | 426 std::unique_ptr<metrics::MetricsProvider>( |
| 440 new ExtensionsMetricsProvider(metrics_state_manager_))); | 427 new ExtensionsMetricsProvider(metrics_state_manager_))); |
| 441 #endif | 428 #endif |
| 442 metrics_service_->RegisterMetricsProvider( | 429 metrics_service_->RegisterMetricsProvider( |
| 443 std::unique_ptr<metrics::MetricsProvider>( | 430 std::unique_ptr<metrics::MetricsProvider>( |
| 444 new metrics::NetworkMetricsProvider( | 431 new metrics::NetworkMetricsProvider( |
| 445 content::BrowserThread::GetBlockingPool()))); | 432 content::BrowserThread::GetBlockingPool()))); |
| 446 | 433 |
| 447 // Currently, we configure OmniboxMetricsProvider to not log events to UMA | 434 // Currently, we configure OmniboxMetricsProvider to not log events to UMA |
| 448 // if there is a single incognito session visible. In the future, it may | 435 // if there is a single incognito session visible. In the future, it may |
| 449 // be worth revisiting this to still log events from non-incognito sessions. | 436 // be worth revisiting this to still log events from non-incognito sessions. |
| 450 metrics_service_->RegisterMetricsProvider( | 437 metrics_service_->RegisterMetricsProvider( |
| 451 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( | 438 std::unique_ptr<metrics::MetricsProvider>(new OmniboxMetricsProvider( |
| 452 base::Bind(&chrome::IsIncognitoSessionActive)))); | 439 base::Bind(&chrome::IsIncognitoSessionActive)))); |
| 453 metrics_service_->RegisterMetricsProvider( | 440 metrics_service_->RegisterMetricsProvider( |
| 454 std::unique_ptr<metrics::MetricsProvider>( | 441 std::unique_ptr<metrics::MetricsProvider>( |
| 455 new ChromeStabilityMetricsProvider( | 442 new ChromeStabilityMetricsProvider(local_state))); |
| 456 g_browser_process->local_state()))); | |
| 457 metrics_service_->RegisterMetricsProvider( | 443 metrics_service_->RegisterMetricsProvider( |
| 458 std::unique_ptr<metrics::MetricsProvider>( | 444 std::unique_ptr<metrics::MetricsProvider>( |
| 459 new metrics::GPUMetricsProvider)); | 445 new metrics::GPUMetricsProvider)); |
| 460 metrics_service_->RegisterMetricsProvider( | 446 metrics_service_->RegisterMetricsProvider( |
| 461 std::unique_ptr<metrics::MetricsProvider>( | 447 std::unique_ptr<metrics::MetricsProvider>( |
| 462 new metrics::ScreenInfoMetricsProvider)); | 448 new metrics::ScreenInfoMetricsProvider)); |
| 463 | 449 |
| 464 metrics_service_->RegisterMetricsProvider(CreateFileMetricsProvider( | 450 metrics_service_->RegisterMetricsProvider(CreateFileMetricsProvider( |
| 465 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled())); | 451 ChromeMetricsServiceAccessor::IsMetricsAndCrashReportingEnabled())); |
| 466 | 452 |
| 467 drive_metrics_provider_ = new metrics::DriveMetricsProvider( | 453 drive_metrics_provider_ = new metrics::DriveMetricsProvider( |
| 468 content::BrowserThread::GetTaskRunnerForThread( | 454 content::BrowserThread::GetTaskRunnerForThread( |
| 469 content::BrowserThread::FILE), | 455 content::BrowserThread::FILE), |
| 470 chrome::FILE_LOCAL_STATE); | 456 chrome::FILE_LOCAL_STATE); |
| 471 metrics_service_->RegisterMetricsProvider( | 457 metrics_service_->RegisterMetricsProvider( |
| 472 std::unique_ptr<metrics::MetricsProvider>(drive_metrics_provider_)); | 458 std::unique_ptr<metrics::MetricsProvider>(drive_metrics_provider_)); |
| 473 | 459 |
| 474 profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider( | 460 profiler_metrics_provider_ = new metrics::ProfilerMetricsProvider(); |
| 475 base::Bind(&metrics::IsCellularLogicEnabled)); | |
| 476 metrics_service_->RegisterMetricsProvider( | 461 metrics_service_->RegisterMetricsProvider( |
| 477 std::unique_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); | 462 std::unique_ptr<metrics::MetricsProvider>(profiler_metrics_provider_)); |
| 478 | 463 |
| 479 metrics_service_->RegisterMetricsProvider( | 464 metrics_service_->RegisterMetricsProvider( |
| 480 std::unique_ptr<metrics::MetricsProvider>( | 465 std::unique_ptr<metrics::MetricsProvider>( |
| 481 new metrics::CallStackProfileMetricsProvider)); | 466 new metrics::CallStackProfileMetricsProvider)); |
| 482 | 467 |
| 483 metrics_service_->RegisterMetricsProvider( | 468 metrics_service_->RegisterMetricsProvider( |
| 484 std::unique_ptr<metrics::MetricsProvider>( | 469 std::unique_ptr<metrics::MetricsProvider>( |
| 485 new metrics::SamplingMetricsProvider)); | 470 new metrics::SamplingMetricsProvider)); |
| 486 | 471 |
| 487 #if BUILDFLAG(ANDROID_JAVA_UI) | 472 #if BUILDFLAG(ANDROID_JAVA_UI) |
| 488 metrics_service_->RegisterMetricsProvider( | 473 metrics_service_->RegisterMetricsProvider( |
| 489 std::unique_ptr<metrics::MetricsProvider>( | 474 std::unique_ptr<metrics::MetricsProvider>( |
| 490 new AndroidMetricsProvider(g_browser_process->local_state()))); | 475 new AndroidMetricsProvider(local_state))); |
| 491 metrics_service_->RegisterMetricsProvider( | 476 metrics_service_->RegisterMetricsProvider( |
| 492 std::unique_ptr<metrics::MetricsProvider>(new PageLoadMetricsProvider())); | 477 std::unique_ptr<metrics::MetricsProvider>(new PageLoadMetricsProvider())); |
| 493 #endif // BUILDFLAG(ANDROID_JAVA_UI) | 478 #endif // BUILDFLAG(ANDROID_JAVA_UI) |
| 494 | 479 |
| 495 #if defined(OS_WIN) | 480 #if defined(OS_WIN) |
| 496 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; | 481 google_update_metrics_provider_ = new GoogleUpdateMetricsProviderWin; |
| 497 metrics_service_->RegisterMetricsProvider( | 482 metrics_service_->RegisterMetricsProvider( |
| 498 std::unique_ptr<metrics::MetricsProvider>( | 483 std::unique_ptr<metrics::MetricsProvider>( |
| 499 google_update_metrics_provider_)); | 484 google_update_metrics_provider_)); |
| 500 | 485 |
| 501 metrics_service_->RegisterMetricsProvider( | 486 metrics_service_->RegisterMetricsProvider( |
| 502 std::unique_ptr<metrics::MetricsProvider>( | 487 std::unique_ptr<metrics::MetricsProvider>( |
| 503 new browser_watcher::WatcherMetricsProviderWin( | 488 new browser_watcher::WatcherMetricsProviderWin( |
| 504 chrome::GetBrowserExitCodesRegistryPath(), | 489 chrome::GetBrowserExitCodesRegistryPath(), |
| 505 content::BrowserThread::GetBlockingPool()))); | 490 content::BrowserThread::GetBlockingPool()))); |
| 506 | 491 |
| 507 antivirus_metrics_provider_ = new AntiVirusMetricsProvider( | 492 antivirus_metrics_provider_ = new AntiVirusMetricsProvider( |
| 508 content::BrowserThread::GetBlockingPool() | 493 content::BrowserThread::GetBlockingPool() |
| 509 ->GetTaskRunnerWithShutdownBehavior( | 494 ->GetTaskRunnerWithShutdownBehavior( |
| 510 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); | 495 base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN)); |
| 511 | 496 |
| 512 metrics_service_->RegisterMetricsProvider( | 497 metrics_service_->RegisterMetricsProvider( |
| 513 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); | 498 std::unique_ptr<metrics::MetricsProvider>(antivirus_metrics_provider_)); |
| 514 #endif // defined(OS_WIN) | 499 #endif // defined(OS_WIN) |
| 515 | 500 |
| 516 #if defined(ENABLE_PLUGINS) | 501 #if defined(ENABLE_PLUGINS) |
| 517 plugin_metrics_provider_ = | 502 plugin_metrics_provider_ = new PluginMetricsProvider(local_state); |
| 518 new PluginMetricsProvider(g_browser_process->local_state()); | |
| 519 metrics_service_->RegisterMetricsProvider( | 503 metrics_service_->RegisterMetricsProvider( |
| 520 std::unique_ptr<metrics::MetricsProvider>(plugin_metrics_provider_)); | 504 std::unique_ptr<metrics::MetricsProvider>(plugin_metrics_provider_)); |
| 521 #endif // defined(ENABLE_PLUGINS) | 505 #endif // defined(ENABLE_PLUGINS) |
| 522 | 506 |
| 523 #if defined(OS_CHROMEOS) | 507 #if defined(OS_CHROMEOS) |
| 524 ChromeOSMetricsProvider* chromeos_metrics_provider = | 508 ChromeOSMetricsProvider* chromeos_metrics_provider = |
| 525 new ChromeOSMetricsProvider; | 509 new ChromeOSMetricsProvider; |
| 526 chromeos_metrics_provider_ = chromeos_metrics_provider; | 510 chromeos_metrics_provider_ = chromeos_metrics_provider; |
| 527 metrics_service_->RegisterMetricsProvider( | 511 metrics_service_->RegisterMetricsProvider( |
| 528 std::unique_ptr<metrics::MetricsProvider>(chromeos_metrics_provider)); | 512 std::unique_ptr<metrics::MetricsProvider>(chromeos_metrics_provider)); |
| 529 | 513 |
| 530 SigninStatusMetricsProviderChromeOS* signin_metrics_provider_cros = | 514 SigninStatusMetricsProviderChromeOS* signin_metrics_provider_cros = |
| 531 new SigninStatusMetricsProviderChromeOS; | 515 new SigninStatusMetricsProviderChromeOS; |
| 532 metrics_service_->RegisterMetricsProvider( | 516 metrics_service_->RegisterMetricsProvider( |
| 533 std::unique_ptr<metrics::MetricsProvider>(signin_metrics_provider_cros)); | 517 std::unique_ptr<metrics::MetricsProvider>(signin_metrics_provider_cros)); |
| 534 | 518 |
| 535 // Record default UMA state as opt-out for all Chrome OS users, if not | 519 // Record default UMA state as opt-out for all Chrome OS users, if not |
| 536 // recorded yet. | 520 // recorded yet. |
| 537 PrefService* local_state = g_browser_process->local_state(); | |
| 538 if (metrics::GetMetricsReportingDefaultState(local_state) == | 521 if (metrics::GetMetricsReportingDefaultState(local_state) == |
| 539 metrics::EnableMetricsDefault::DEFAULT_UNKNOWN) { | 522 metrics::EnableMetricsDefault::DEFAULT_UNKNOWN) { |
| 540 metrics::RecordMetricsReportingDefaultState( | 523 metrics::RecordMetricsReportingDefaultState( |
| 541 local_state, metrics::EnableMetricsDefault::OPT_OUT); | 524 local_state, metrics::EnableMetricsDefault::OPT_OUT); |
| 542 } | 525 } |
| 543 #endif // defined(OS_CHROMEOS) | 526 #endif // defined(OS_CHROMEOS) |
| 544 | 527 |
| 545 #if !defined(OS_CHROMEOS) | 528 #if !defined(OS_CHROMEOS) |
| 546 metrics_service_->RegisterMetricsProvider( | 529 metrics_service_->RegisterMetricsProvider( |
| 547 std::unique_ptr<metrics::MetricsProvider>( | 530 std::unique_ptr<metrics::MetricsProvider>( |
| 548 SigninStatusMetricsProvider::CreateInstance(base::WrapUnique( | 531 SigninStatusMetricsProvider::CreateInstance(base::WrapUnique( |
| 549 new ChromeSigninStatusMetricsProviderDelegate)))); | 532 new ChromeSigninStatusMetricsProviderDelegate)))); |
| 550 #endif // !defined(OS_CHROMEOS) | 533 #endif // !defined(OS_CHROMEOS) |
| 551 | 534 |
| 552 metrics_service_->RegisterMetricsProvider( | 535 metrics_service_->RegisterMetricsProvider( |
| 553 std::unique_ptr<metrics::MetricsProvider>( | 536 std::unique_ptr<metrics::MetricsProvider>( |
| 554 new sync_driver::DeviceCountMetricsProvider(base::Bind( | 537 new sync_driver::DeviceCountMetricsProvider(base::Bind( |
| 555 &browser_sync::ChromeSyncClient::GetDeviceInfoTrackers)))); | 538 &browser_sync::ChromeSyncClient::GetDeviceInfoTrackers)))); |
| 556 | 539 |
| 557 metrics_service_->RegisterMetricsProvider( | 540 metrics_service_->RegisterMetricsProvider( |
| 558 std::unique_ptr<metrics::MetricsProvider>( | 541 std::unique_ptr<metrics::MetricsProvider>( |
| 559 new HttpsEngagementMetricsProvider())); | 542 new HttpsEngagementMetricsProvider())); |
| 560 | |
| 561 // Clear stability metrics if it is the first time cellular upload logic | |
| 562 // should apply to avoid sudden bulk uploads. It needs to be done after all | |
| 563 // providers are registered. | |
| 564 if (ShouldClearSavedMetrics()) | |
| 565 metrics_service_->ClearSavedStabilityMetrics(); | |
| 566 } | 543 } |
| 567 | 544 |
| 568 void ChromeMetricsServiceClient::OnInitTaskGotHardwareClass() { | 545 void ChromeMetricsServiceClient::OnInitTaskGotHardwareClass() { |
| 569 const base::Closure got_bluetooth_adapter_callback = | 546 const base::Closure got_bluetooth_adapter_callback = |
| 570 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotBluetoothAdapter, | 547 base::Bind(&ChromeMetricsServiceClient::OnInitTaskGotBluetoothAdapter, |
| 571 weak_ptr_factory_.GetWeakPtr()); | 548 weak_ptr_factory_.GetWeakPtr()); |
| 572 #if defined(OS_CHROMEOS) | 549 #if defined(OS_CHROMEOS) |
| 573 chromeos_metrics_provider_->InitTaskGetBluetoothAdapter( | 550 chromeos_metrics_provider_->InitTaskGetBluetoothAdapter( |
| 574 got_bluetooth_adapter_callback); | 551 got_bluetooth_adapter_callback); |
| 575 #else | 552 #else |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 814 } | 791 } |
| 815 } | 792 } |
| 816 | 793 |
| 817 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { | 794 void ChromeMetricsServiceClient::OnURLOpenedFromOmnibox(OmniboxLog* log) { |
| 818 metrics_service_->OnApplicationNotIdle(); | 795 metrics_service_->OnApplicationNotIdle(); |
| 819 } | 796 } |
| 820 | 797 |
| 821 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { | 798 bool ChromeMetricsServiceClient::IsUMACellularUploadLogicEnabled() { |
| 822 return metrics::IsCellularLogicEnabled(); | 799 return metrics::IsCellularLogicEnabled(); |
| 823 } | 800 } |
| OLD | NEW |