// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/metrics/metrics_service_accessor.h" #include "base/base_switches.h" #include "base/command_line.h" #include "base/prefs/pref_service.h" #include "components/metrics/metrics_pref_names.h" #include "components/metrics/metrics_service.h" #include "components/variations/metrics_util.h" namespace metrics { // static bool MetricsServiceAccessor::IsMetricsReportingEnabled( PrefService* pref_service) { return IsMetricsReportingEnabledWithPrefValue( pref_service->GetBoolean(prefs::kMetricsReportingEnabled)); } // static bool MetricsServiceAccessor::IsMetricsReportingEnabledWithPrefValue( bool enabled_in_prefs) { #if defined(GOOGLE_CHROME_BUILD) // In official builds, disable metrics when reporting field trials are // forced; otherwise, use the value of the user's preference to determine // whether to enable metrics reporting. return !base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kForceFieldTrials) && enabled_in_prefs; #else // In non-official builds, disable metrics reporting completely. return false; #endif // defined(GOOGLE_CHROME_BUILD) } // static bool MetricsServiceAccessor::RegisterSyntheticFieldTrial( MetricsService* metrics_service, const std::string& trial_name, const std::string& group_name) { return RegisterSyntheticFieldTrialWithNameAndGroupHash( metrics_service, HashName(trial_name), HashName(group_name)); } // static bool MetricsServiceAccessor::RegisterSyntheticFieldTrialWithNameHash( MetricsService* metrics_service, uint32_t trial_name_hash, const std::string& group_name) { return RegisterSyntheticFieldTrialWithNameAndGroupHash( metrics_service, trial_name_hash, HashName(group_name)); } // static bool MetricsServiceAccessor::RegisterSyntheticFieldTrialWithNameAndGroupHash( MetricsService* metrics_service, uint32_t trial_name_hash, uint32_t group_name_hash) { if (!metrics_service) return false; variations::SyntheticTrialGroup trial_group(trial_name_hash, group_name_hash); metrics_service->RegisterSyntheticFieldTrial(trial_group); return true; } } // namespace metrics