Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(447)

Unified Diff: components/variations/variations_seed_processor.cc

Issue 71753004: Allow variation id with forcing flag for special setup & unit tests. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase. Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/variations/variations_seed_processor.cc
diff --git a/components/variations/variations_seed_processor.cc b/components/variations/variations_seed_processor.cc
index e7a33cad035433b67603eabfccb819868d54ca38..61745586c6712c3fca28f0e6bfc77ce29868c15e 100644
--- a/components/variations/variations_seed_processor.cc
+++ b/components/variations/variations_seed_processor.cc
@@ -56,6 +56,28 @@ void RegisterExperimentParams(const Study& study,
AssociateVariationParams(study.name(), experiment.name(), params);
}
+// If there are variation ids associated with |experiment|, register the
+// variation ids.
+void RegisterVariationIds(const Study_Experiment& experiment,
+ const std::string& trial_name) {
+ if (experiment.has_google_web_experiment_id()) {
+ const VariationID variation_id =
+ static_cast<VariationID>(experiment.google_web_experiment_id());
+ AssociateGoogleVariationIDForce(GOOGLE_WEB_PROPERTIES,
+ trial_name,
+ experiment.name(),
+ variation_id);
+ }
+ if (experiment.has_google_update_experiment_id()) {
+ const VariationID variation_id =
+ static_cast<VariationID>(experiment.google_update_experiment_id());
+ AssociateGoogleVariationIDForce(GOOGLE_UPDATE_SERVICE,
+ trial_name,
+ experiment.name(),
+ variation_id);
+ }
+}
+
} // namespace
VariationsSeedProcessor::VariationsSeedProcessor() {
@@ -64,6 +86,28 @@ VariationsSeedProcessor::VariationsSeedProcessor() {
VariationsSeedProcessor::~VariationsSeedProcessor() {
}
+bool VariationsSeedProcessor::AllowVariationIdWithForcingFlag(
+ const Study& study) {
+ if (!study.has_filter())
+ return false;
+ const Study_Filter& filter = study.filter();
+ if (filter.platform_size() == 0 || filter.channel_size() == 0)
+ return false;
+ for (int i = 0; i < filter.platform_size(); ++i) {
+ if (filter.platform(i) != Study_Platform_PLATFORM_ANDROID &&
+ filter.platform(i) != Study_Platform_PLATFORM_IOS) {
+ return false;
+ }
+ }
+ for (int i = 0; i < filter.channel_size(); ++i) {
+ if (filter.channel(i) != Study_Channel_CANARY &&
+ filter.channel(i) != Study_Channel_DEV) {
+ return false;
+ }
+ }
+ return true;
+}
+
void VariationsSeedProcessor::CreateTrialsFromSeed(
const VariationsSeed& seed,
const std::string& locale,
@@ -225,6 +269,8 @@ void VariationsSeedProcessor::CreateTrialFromStudy(
RegisterExperimentParams(study, experiment);
DVLOG(1) << "Trial " << study.name() << " forced by flag: "
<< experiment.forcing_flag();
+ if (AllowVariationIdWithForcingFlag(study))
+ RegisterVariationIds(experiment, study.name());
return;
}
}
@@ -253,30 +299,15 @@ void VariationsSeedProcessor::CreateTrialFromStudy(
const Study_Experiment& experiment = study.experiment(i);
RegisterExperimentParams(study, experiment);
- // Groups with flags can't be selected randomly, so we don't add them to
- // the field trial.
+ // Groups with forcing flags have probability 0 and will never be selected.
+ // Therefore, there's no need to add them to the field trial.
if (experiment.has_forcing_flag())
continue;
if (experiment.name() != study.default_experiment_name())
trial->AppendGroup(experiment.name(), experiment.probability_weight());
- if (experiment.has_google_web_experiment_id()) {
- const VariationID variation_id =
- static_cast<VariationID>(experiment.google_web_experiment_id());
- AssociateGoogleVariationIDForce(GOOGLE_WEB_PROPERTIES,
- study.name(),
- experiment.name(),
- variation_id);
- }
- if (experiment.has_google_update_experiment_id()) {
- const VariationID variation_id =
- static_cast<VariationID>(experiment.google_update_experiment_id());
- AssociateGoogleVariationIDForce(GOOGLE_UPDATE_SERVICE,
- study.name(),
- experiment.name(),
- variation_id);
- }
+ RegisterVariationIds(experiment, study.name());
}
trial->SetForced();
« no previous file with comments | « components/variations/variations_seed_processor.h ('k') | components/variations/variations_seed_processor_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698