| // Copyright 2022 The Chromium Authors | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef CHROME_BROWSER_METRICS_CHROME_BROWSER_SAMPLING_TRIALS_H_ | 
 | #define CHROME_BROWSER_METRICS_CHROME_BROWSER_SAMPLING_TRIALS_H_ | 
 |  | 
 | #include "base/feature_list.h" | 
 | #include "base/metrics/field_trial.h" | 
 |  | 
 | namespace metrics { | 
 |  | 
 | // Create sampling trials to control metrics/crash sampling on Windows/Android | 
 | // if they do not exist (e.g., no variations seed was applied, or the variations | 
 | // seed did not contain the trials). On Windows, there is only one trial to | 
 | // control sampling. On Android, there are two (with different sampling rates, | 
 | // see crbug/1306481 for more details), but the client will only use one. The | 
 | // trial used depends on when metrics reporting was enabled. We create both | 
 | // trials regardless of which one the client would use at the time this is | 
 | // called, because the trial used may change during the session (e.g., if the | 
 | // user disables then re-enables metrics reporting during the same session). | 
 | void CreateFallbackSamplingTrialsIfNeeded( | 
 |     const base::FieldTrial::EntropyProvider& entropy_providers, | 
 |     base::FeatureList* feature_list); | 
 |  | 
 | // Create a field trial to control UKM sampling for Stable if it does not exist | 
 | // (e.g., no variations seed was applied, or the variations seed did not contain | 
 | // the trial). Note that UKM sampling is not per-client such as metrics/crash | 
 | // sampling (see CreateFallbackSamplingTrialsIfNeeded() above), but rather | 
 | // per-metric. | 
 | void CreateFallbackUkmSamplingTrialIfNeeded( | 
 |     const base::FieldTrial::EntropyProvider& entropy_providers, | 
 |     base::FeatureList* feature_list); | 
 |  | 
 | }  // namespace metrics | 
 |  | 
 | #endif  // CHROME_BROWSER_METRICS_CHROME_BROWSER_SAMPLING_TRIALS_H_ |