blob: 79d0086578d1d63657391e26d3303dc732372f3e [file] [log] [blame]
// 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) {}
// Register any synthetic field trials. Will be called later than the above
// methods, in particular after g_browser_process is available..
virtual void RegisterSyntheticTrials() {}
};
} // namespace variations
#endif // COMPONENTS_VARIATIONS_PLATFORM_FIELD_TRIALS_H_