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 "chrome/common/pref_names.h"
8#include "chrome/test/base/scoped_testing_local_state.h"
9#include "chrome/test/base/testing_browser_process.h"
10#include "testing/gtest/include/gtest/gtest.h"
11
12class ChromeMetricsServiceAccessorTest : public testing::Test {
13 public:
14  ChromeMetricsServiceAccessorTest()
15      : testing_local_state_(TestingBrowserProcess::GetGlobal()) {
16  }
17
18  PrefService* GetLocalState() {
19    return testing_local_state_.Get();
20  }
21
22 private:
23  ScopedTestingLocalState testing_local_state_;
24
25  DISALLOW_COPY_AND_ASSIGN(ChromeMetricsServiceAccessorTest);
26};
27
28TEST_F(ChromeMetricsServiceAccessorTest, MetricsReportingEnabled) {
29#if !defined(OS_CHROMEOS)
30  GetLocalState()->SetBoolean(prefs::kMetricsReportingEnabled, false);
31  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
32  GetLocalState()->SetBoolean(prefs::kMetricsReportingEnabled, true);
33  EXPECT_TRUE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
34  GetLocalState()->ClearPref(prefs::kMetricsReportingEnabled);
35  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
36#else
37  // ChromeOS does not register prefs::kMetricsReportingEnabled and uses
38  // device settings for metrics reporting.
39  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
40#endif
41}
42
43TEST_F(ChromeMetricsServiceAccessorTest, CrashReportingEnabled) {
44#if defined(GOOGLE_CHROME_BUILD)
45// ChromeOS has different device settings for crash reporting.
46#if !defined(OS_CHROMEOS)
47#if defined(OS_ANDROID)
48  const char* crash_pref = prefs::kCrashReportingEnabled;
49#else
50  const char* crash_pref = prefs::kMetricsReportingEnabled;
51#endif
52  GetLocalState()->SetBoolean(crash_pref, false);
53  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
54  GetLocalState()->SetBoolean(crash_pref, true);
55  EXPECT_TRUE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
56  GetLocalState()->ClearPref(crash_pref);
57  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
58#endif  // !defined(OS_CHROMEOS)
59#else  // defined(GOOGLE_CHROME_BUILD)
60  // Chromium branded browsers never have crash reporting enabled.
61  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
62#endif  // defined(GOOGLE_CHROME_BUILD)
63}
64