Home | History | Annotate | Download | only in metrics
      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:
     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 
     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 
     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