• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
12 class ChromeMetricsServiceAccessorTest : public testing::Test {
13  public:
ChromeMetricsServiceAccessorTest()14   ChromeMetricsServiceAccessorTest()
15       : testing_local_state_(TestingBrowserProcess::GetGlobal()) {
16   }
17 
GetLocalState()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 
TEST_F(ChromeMetricsServiceAccessorTest,MetricsReportingEnabled)28 TEST_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 
TEST_F(ChromeMetricsServiceAccessorTest,CrashReportingEnabled)43 TEST_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