1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_VARIATIONS_PLATFORM_FIELD_TRIALS_H_
#define COMPONENTS_VARIATIONS_PLATFORM_FIELD_TRIALS_H_
#include "base/component_export.h"
#include "base/metrics/field_trial.h"
#include "components/variations/entropy_provider.h"
namespace variations {
// Infrastructure for setting up platform specific field trials. Chrome and
// WebView make use through their corresponding subclasses.
class COMPONENT_EXPORT(VARIATIONS) PlatformFieldTrials {
public:
PlatformFieldTrials() = default;
PlatformFieldTrials(const PlatformFieldTrials&) = delete;
PlatformFieldTrials& operator=(const PlatformFieldTrials&) = delete;
virtual ~PlatformFieldTrials() = default;
// Called once trials are set up to do platform-specific initialization.
// Mainly used for setting up persistent histograms.
virtual void OnVariationsSetupComplete() {}
// Create field trials that are defined by client code rather than being sent
// from the variations server. Called after server trials are set up.
// |has_seed| indicates that the variations service used a seed to create
// field trials. This can be used to prevent associating a field trial with a
// feature that you expect to be controlled by the variations seed.
// |entropy_providers| should be used for randomizing trials. Trials that
// should be visible to Google web properties should use the low_entropy()
// provider.
virtual void SetUpClientSideFieldTrials(
bool has_seed,
const variations::EntropyProviders& entropy_providers,
base::FeatureList* feature_list) {}
// Registers any synthetic field trials. Will be called later than the above
// methods, in particular after g_browser_process is available..
virtual void RegisterSyntheticTrials() {}
// Registers feature overrides. Called after server trials and client side
// trials are set up, before initializing the singleton feature list. This
// can be used to override a feature after a field trial you expect to
// control. For example, this mechanism can be used to provide
// different per-platform feature defaults for platforms that are compiled
// together, like Android WebView and Android Chrome.
virtual void RegisterFeatureOverrides(base::FeatureList* feature_list) {}
};
} // namespace variations
#endif // COMPONENTS_VARIATIONS_PLATFORM_FIELD_TRIALS_H_
|