Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / metrics / chrome_metrics_service_accessor.cc
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
18 bool 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
32 bool 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
52 bool 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
60 bool 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 }