blob: be0516a623808b918ed3d06c0925d2e9b3f1e029 [file] [log] [blame]
// Copyright 2018 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.
#include "ios/chrome/browser/ui/first_run/ios_first_run_field_trials.h"
// FirstRunFieldTrialGroup
FirstRunFieldTrialGroup::FirstRunFieldTrialGroup(
const std::string& name,
variations::VariationID variation,
base::FieldTrial::Probability percentage)
: name_(name), variation_(variation), percentage_(percentage) {}
FirstRunFieldTrialGroup::~FirstRunFieldTrialGroup() {}
// FirstRunFieldTrialConfig
FirstRunFieldTrialConfig::FirstRunFieldTrialConfig(
const std::string& trial_name)
: trial_name_(trial_name) {}
FirstRunFieldTrialConfig::~FirstRunFieldTrialConfig() {}
scoped_refptr<base::FieldTrial>
FirstRunFieldTrialConfig::CreateOneTimeRandomizedTrial(
const std::string& default_group_name,
const base::FieldTrial::EntropyProvider& low_entropy_provider) {
scoped_refptr<base::FieldTrial> trial =
base::FieldTrialList::FactoryGetFieldTrialWithRandomizationSeed(
trial_name_, GetTotalProbability(), default_group_name,
base::FieldTrial::ONE_TIME_RANDOMIZED, 0,
/*default_group_number=*/nullptr, &low_entropy_provider);
for (const auto& group : groups_) {
variations::AssociateGoogleVariationID(
variations::GOOGLE_WEB_PROPERTIES_FIRST_PARTY, trial_name_,
group.name(), group.variation());
trial->AppendGroup(group.name(), group.percentage());
}
return trial;
}
int FirstRunFieldTrialConfig::GetTotalProbability() {
int sum = 0;
for (const auto& group : groups_) {
sum += group.percentage();
}
return sum;
}
void FirstRunFieldTrialConfig::AddGroup(
const std::string& name,
variations::VariationID variation,
base::FieldTrial::Probability percentage) {
groups_.emplace_back(name, variation, percentage);
}