// Copyright 2017 The Chromium Authors. All rights reserved.
// 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/metrics/field_trial.h"

namespace variations {

// Infrastructure for setting up platform specific field trials. Chrome and
// WebView make use through their corresponding subclasses.
class PlatformFieldTrials {
 public:
  PlatformFieldTrials() = default;
  virtual ~PlatformFieldTrials() = default;

  // Set up field trials for a specific platform.
  virtual void SetupFieldTrials() = 0;

  // Create field trials that will control feature list features. This should be
  // called during the same timing window as
  // FeatureList::AssociateReportingFieldTrial. |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.
  virtual void SetupFeatureControllingFieldTrials(
      bool has_seed,
      base::FeatureList* feature_list) = 0;

 private:
  DISALLOW_COPY_AND_ASSIGN(PlatformFieldTrials);
};

}  // namespace variations

#endif  // COMPONENTS_VARIATIONS_PLATFORM_FIELD_TRIALS_H_
