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 3// found in the LICENSE file. 4 5#include "chrome/browser/metrics/chrome_metrics_service_accessor.h" 6 7#include "base/prefs/pref_service.h" 8#include "chrome/browser/browser_process.h" 9#include "chrome/common/pref_names.h" 10#include "components/metrics/metrics_service.h" 11#include "components/variations/metrics_util.h" 12 13#if defined(OS_CHROMEOS) 14#include "chrome/browser/chromeos/settings/cros_settings.h" 15#endif 16 17// static 18bool ChromeMetricsServiceAccessor::IsMetricsReportingEnabled() { 19 bool result = false; 20 const PrefService* local_state = g_browser_process->local_state(); 21 if (local_state) { 22 const PrefService::Preference* uma_pref = 23 local_state->FindPreference(prefs::kMetricsReportingEnabled); 24 if (uma_pref) { 25 bool success = uma_pref->GetValue()->GetAsBoolean(&result); 26 DCHECK(success); 27 } 28 } 29 return result; 30} 31 32bool ChromeMetricsServiceAccessor::IsCrashReportingEnabled() { 33#if defined(GOOGLE_CHROME_BUILD) 34#if defined(OS_CHROMEOS) 35 bool reporting_enabled = false; 36 chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, 37 &reporting_enabled); 38 return reporting_enabled; 39#elif defined(OS_ANDROID) 40 // Android has its own settings for metrics / crash uploading. 41 const PrefService* prefs = g_browser_process->local_state(); 42 return prefs->GetBoolean(prefs::kCrashReportingEnabled); 43#else 44 return ChromeMetricsServiceAccessor::IsMetricsReportingEnabled(); 45#endif 46#else 47 return false; 48#endif 49} 50 51// static 52bool ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial( 53 const std::string& trial_name, 54 const std::string& group_name) { 55 return RegisterSyntheticFieldTrialWithNameHash(metrics::HashName(trial_name), 56 group_name); 57} 58 59// static 60bool ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrialWithNameHash( 61 uint32_t trial_name_hash, 62 const std::string& group_name) { 63 return MetricsServiceAccessor::RegisterSyntheticFieldTrial( 64 g_browser_process->metrics_service(), 65 trial_name_hash, 66 metrics::HashName(group_name)); 67} 68