| // Copyright 2016 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #include "components/metrics/enabled_state_provider.h" | 
 |  | 
 | #include "base/base_switches.h" | 
 | #include "base/command_line.h" | 
 |  | 
 | namespace metrics { | 
 |  | 
 | namespace { | 
 | // Some browser_tests enable metrics reporting independent of the presence of | 
 | // kForceFieldTrials: | 
 | // - MetricsServiceBrowserFilesTest.FilesRemain | 
 | // - MetricsInternalsUIBrowserTestWithLog.All | 
 | bool g_ignore_force_field_trials_for_testing = false; | 
 | }  // namespace | 
 |  | 
 | bool EnabledStateProvider::IsReportingEnabled() const { | 
 |   // Disable metrics reporting when field trials are forced, as otherwise this | 
 |   // would pollute experiment results in UMA. Note: This is done here and not | 
 |   // in IsConsentGiven() as we do not want this to affect field trial entropy | 
 |   // logic (i.e. high entropy source should still be used if UMA is on). | 
 |   return IsConsentGiven() && | 
 |          (g_ignore_force_field_trials_for_testing || | 
 |           !base::CommandLine::ForCurrentProcess()->HasSwitch( | 
 |               switches::kForceFieldTrials)); | 
 | } | 
 |  | 
 | void EnabledStateProvider::SetIgnoreForceFieldTrialsForTesting( | 
 |     bool ignore_trials) { | 
 |   g_ignore_force_field_trials_for_testing = ignore_trials; | 
 | } | 
 |  | 
 | }  // namespace metrics |