xref: /aosp_15_r20/external/cronet/components/metrics/enabled_state_provider.cc (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors
2*6777b538SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*6777b538SAndroid Build Coastguard Worker // found in the LICENSE file.
4*6777b538SAndroid Build Coastguard Worker 
5*6777b538SAndroid Build Coastguard Worker #include "components/metrics/enabled_state_provider.h"
6*6777b538SAndroid Build Coastguard Worker 
7*6777b538SAndroid Build Coastguard Worker #include "base/base_switches.h"
8*6777b538SAndroid Build Coastguard Worker #include "base/command_line.h"
9*6777b538SAndroid Build Coastguard Worker 
10*6777b538SAndroid Build Coastguard Worker namespace metrics {
11*6777b538SAndroid Build Coastguard Worker 
12*6777b538SAndroid Build Coastguard Worker namespace {
13*6777b538SAndroid Build Coastguard Worker // Some browser_tests enable metrics reporting independent of the presence of
14*6777b538SAndroid Build Coastguard Worker // kForceFieldTrials:
15*6777b538SAndroid Build Coastguard Worker // - MetricsServiceBrowserFilesTest.FilesRemain
16*6777b538SAndroid Build Coastguard Worker // - MetricsInternalsUIBrowserTestWithLog.All
17*6777b538SAndroid Build Coastguard Worker bool g_ignore_force_field_trials_for_testing = false;
18*6777b538SAndroid Build Coastguard Worker }  // namespace
19*6777b538SAndroid Build Coastguard Worker 
IsReportingEnabled() const20*6777b538SAndroid Build Coastguard Worker bool EnabledStateProvider::IsReportingEnabled() const {
21*6777b538SAndroid Build Coastguard Worker   // Disable metrics reporting when field trials are forced, as otherwise this
22*6777b538SAndroid Build Coastguard Worker   // would pollute experiment results in UMA. Note: This is done here and not
23*6777b538SAndroid Build Coastguard Worker   // in IsConsentGiven() as we do not want this to affect field trial entropy
24*6777b538SAndroid Build Coastguard Worker   // logic (i.e. high entropy source should still be used if UMA is on).
25*6777b538SAndroid Build Coastguard Worker   return IsConsentGiven() &&
26*6777b538SAndroid Build Coastguard Worker          (g_ignore_force_field_trials_for_testing ||
27*6777b538SAndroid Build Coastguard Worker           !base::CommandLine::ForCurrentProcess()->HasSwitch(
28*6777b538SAndroid Build Coastguard Worker               switches::kForceFieldTrials));
29*6777b538SAndroid Build Coastguard Worker }
30*6777b538SAndroid Build Coastguard Worker 
SetIgnoreForceFieldTrialsForTesting(bool ignore_trials)31*6777b538SAndroid Build Coastguard Worker void EnabledStateProvider::SetIgnoreForceFieldTrialsForTesting(
32*6777b538SAndroid Build Coastguard Worker     bool ignore_trials) {
33*6777b538SAndroid Build Coastguard Worker   g_ignore_force_field_trials_for_testing = ignore_trials;
34*6777b538SAndroid Build Coastguard Worker }
35*6777b538SAndroid Build Coastguard Worker 
36*6777b538SAndroid Build Coastguard Worker }  // namespace metrics
37