| // 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 |