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