1cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// found in the LICENSE file.
4cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
5cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/metrics/chrome_metrics_service_accessor.h"
6cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/common/pref_names.h"
8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/test/base/scoped_testing_local_state.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/test/base/testing_browser_process.h"
10cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
11cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
12cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)class ChromeMetricsServiceAccessorTest : public testing::Test {
13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) public:
14cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ChromeMetricsServiceAccessorTest()
15cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      : testing_local_state_(TestingBrowserProcess::GetGlobal()) {
16cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  PrefService* GetLocalState() {
19cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)    return testing_local_state_.Get();
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  }
21cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
22cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) private:
23cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ScopedTestingLocalState testing_local_state_;
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ChromeMetricsServiceAccessorTest);
26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)};
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_F(ChromeMetricsServiceAccessorTest, MetricsReportingEnabled) {
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if !defined(OS_CHROMEOS)
30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetLocalState()->SetBoolean(prefs::kMetricsReportingEnabled, false);
31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetLocalState()->SetBoolean(prefs::kMetricsReportingEnabled, true);
33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_TRUE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetLocalState()->ClearPref(prefs::kMetricsReportingEnabled);
35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#else
37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // ChromeOS does not register prefs::kMetricsReportingEnabled and uses
38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // device settings for metrics reporting.
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsMetricsReportingEnabled());
40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
41cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
42cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)
43cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)TEST_F(ChromeMetricsServiceAccessorTest, CrashReportingEnabled) {
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(GOOGLE_CHROME_BUILD)
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)// ChromeOS has different device settings for crash reporting.
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if !defined(OS_CHROMEOS)
47cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#if defined(OS_ANDROID)
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  const char* crash_pref = prefs::kCrashReportingEnabled;
49cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#else
50cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  const char* crash_pref = prefs::kMetricsReportingEnabled;
51cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif
52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetLocalState()->SetBoolean(crash_pref, false);
53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetLocalState()->SetBoolean(crash_pref, true);
55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_TRUE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
56cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  GetLocalState()->ClearPref(crash_pref);
57cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
58cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // !defined(OS_CHROMEOS)
59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#else  // defined(GOOGLE_CHROME_BUILD)
60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  // Chromium branded browsers never have crash reporting enabled.
61cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  EXPECT_FALSE(ChromeMetricsServiceAccessor::IsCrashReportingEnabled());
62cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#endif  // defined(GOOGLE_CHROME_BUILD)
63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}
64