xref: /aosp_15_r20/external/cronet/components/metrics/enabled_state_provider.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1 // Copyright 2016 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef COMPONENTS_METRICS_ENABLED_STATE_PROVIDER_H_
6 #define COMPONENTS_METRICS_ENABLED_STATE_PROVIDER_H_
7 
8 namespace metrics {
9 
10 // An interface that provides whether metrics should be reported.
11 class EnabledStateProvider {
12  public:
~EnabledStateProvider()13   virtual ~EnabledStateProvider() {}
14 
15   // Indicates that the user has provided consent to collect and report metrics.
16   virtual bool IsConsentGiven() const = 0;
17 
18   // Should collection and reporting be enabled. This should depend on consent
19   // being given.
20   virtual bool IsReportingEnabled() const;
21 
22   // Enable or disable checking whether field trials are forced or not at
23   // EnabledStateProvider::IsReportingEnabled().
24   static void SetIgnoreForceFieldTrialsForTesting(bool ignore_trials);
25 };
26 
27 }  // namespace metrics
28 
29 #endif  // COMPONENTS_METRICS_ENABLED_STATE_PROVIDER_H_
30