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

Unified Diff: chrome/browser/instant/instant_field_trial.cc

Issue 8370020: Add a new field trial for Instant. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed @sky's comments Created 9 years, 2 months 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
« no previous file with comments | « chrome/browser/instant/instant_field_trial.h ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/instant/instant_field_trial.cc
diff --git a/chrome/browser/instant/instant_field_trial.cc b/chrome/browser/instant/instant_field_trial.cc
index c95c529e829b3be7a5e2519af1566976e51e4123..0e1c5d2b313e6ec8c505c7c9900828af6e786298 100644
--- a/chrome/browser/instant/instant_field_trial.cc
+++ b/chrome/browser/instant/instant_field_trial.cc
@@ -17,15 +17,17 @@ namespace {
// Field trial IDs of the control and experiment groups. Though they are not
// literally "const", they are set only once, in Activate() below. See the .h
// file for what these groups represent.
-int g_instant_control_a = 0;
-int g_instant_control_b = 0;
int g_instant_experiment_a = 0;
int g_instant_experiment_b = 0;
-
-int g_hidden_control_a = 0;
-int g_hidden_control_b = 0;
int g_hidden_experiment_a = 0;
int g_hidden_experiment_b = 0;
+int g_silent_experiment_a = 0;
+int g_silent_experiment_b = 0;
+
+int g_uma_control_a = 0;
+int g_uma_control_b = 0;
+int g_all_control_a = 0;
+int g_all_control_b = 0;
}
@@ -38,16 +40,18 @@ void InstantFieldTrial::Activate() {
if (base::FieldTrialList::IsOneTimeRandomizationEnabled())
trial->UseOneTimeRandomization();
- // Each group is of size 5%.
- g_instant_control_a = trial->AppendGroup("InstantControlA", 50);
- g_instant_control_b = trial->AppendGroup("InstantControlB", 50);
+ // Each group is of total size 10% (5% each for the _a and _b variants).
g_instant_experiment_a = trial->AppendGroup("InstantExperimentA", 50);
g_instant_experiment_b = trial->AppendGroup("InstantExperimentB", 50);
-
- g_hidden_control_a = trial->AppendGroup("HiddenControlA", 50);
- g_hidden_control_b = trial->AppendGroup("HiddenControlB", 50);
g_hidden_experiment_a = trial->AppendGroup("HiddenExperimentA", 50);
g_hidden_experiment_b = trial->AppendGroup("HiddenExperimentB", 50);
+ g_silent_experiment_a = trial->AppendGroup("SilentExperimentA", 50);
+ g_silent_experiment_b = trial->AppendGroup("SilentExperimentB", 50);
+
+ g_uma_control_a = trial->AppendGroup("UmaControlA", 50);
+ g_uma_control_b = trial->AppendGroup("UmaControlB", 50);
+ g_all_control_a = trial->AppendGroup("AllControlA", 50);
+ g_all_control_b = trial->AppendGroup("AllControlB", 50);
}
// static
@@ -60,6 +64,8 @@ InstantFieldTrial::Group InstantFieldTrial::GetGroup(Profile* profile) {
return INSTANT_EXPERIMENT_A;
else if (switch_value == switches::kInstantFieldTrialHidden)
return HIDDEN_EXPERIMENT_A;
+ else if (switch_value == switches::kInstantFieldTrialSilent)
+ return SILENT_EXPERIMENT_A;
else
return INACTIVE;
}
@@ -70,42 +76,42 @@ InstantFieldTrial::Group InstantFieldTrial::GetGroup(Profile* profile) {
return INACTIVE;
}
- if (!profile)
- return INACTIVE;
-
- const PrefService* prefs = profile->GetPrefs();
+ const PrefService* prefs = profile ? profile->GetPrefs() : NULL;
if (!prefs ||
prefs->GetBoolean(prefs::kInstantEnabledOnce) ||
prefs->IsManagedPreference(prefs::kInstantEnabled)) {
return INACTIVE;
}
- // HIDDEN groups.
- if (group == g_hidden_control_a)
- return HIDDEN_CONTROL_A;
- if (group == g_hidden_control_b)
- return HIDDEN_CONTROL_B;
- if (group == g_hidden_experiment_a)
- return HIDDEN_EXPERIMENT_A;
- if (group == g_hidden_experiment_b)
- return HIDDEN_EXPERIMENT_B;
-
- // INSTANT group users must meet some extra requirements.
+ // First, deal with the groups that don't require UMA opt-in.
+ if (group == g_silent_experiment_a)
+ return SILENT_EXPERIMENT_A;
+ if (group == g_silent_experiment_b)
+ return SILENT_EXPERIMENT_B;
+ if (group == g_all_control_a)
+ return ALL_CONTROL_A;
+ if (group == g_all_control_b)
+ return ALL_CONTROL_B;
+
+ // All other groups require UMA and suggest, else bounce back to INACTIVE.
if (profile->IsOffTheRecord() ||
!MetricsServiceHelper::IsMetricsReportingEnabled() ||
!prefs->GetBoolean(prefs::kSearchSuggestEnabled)) {
return INACTIVE;
}
- // INSTANT groups.
- if (group == g_instant_control_a)
- return INSTANT_CONTROL_A;
- if (group == g_instant_control_b)
- return INSTANT_CONTROL_B;
if (group == g_instant_experiment_a)
return INSTANT_EXPERIMENT_A;
if (group == g_instant_experiment_b)
return INSTANT_EXPERIMENT_B;
+ if (group == g_hidden_experiment_a)
+ return HIDDEN_EXPERIMENT_A;
+ if (group == g_hidden_experiment_b)
+ return HIDDEN_EXPERIMENT_B;
+ if (group == g_uma_control_a)
+ return UMA_CONTROL_A;
+ if (group == g_uma_control_b)
+ return UMA_CONTROL_B;
NOTREACHED();
return INACTIVE;
@@ -115,19 +121,20 @@ InstantFieldTrial::Group InstantFieldTrial::GetGroup(Profile* profile) {
bool InstantFieldTrial::IsExperimentGroup(Profile* profile) {
Group group = GetGroup(profile);
return group == INSTANT_EXPERIMENT_A || group == INSTANT_EXPERIMENT_B ||
- group == HIDDEN_EXPERIMENT_A || group == HIDDEN_EXPERIMENT_B;
+ group == HIDDEN_EXPERIMENT_A || group == HIDDEN_EXPERIMENT_B ||
+ group == SILENT_EXPERIMENT_A || group == SILENT_EXPERIMENT_B;
}
// static
-bool InstantFieldTrial::IsInstantExperiment(Profile* profile) {
+bool InstantFieldTrial::IsHiddenExperiment(Profile* profile) {
Group group = GetGroup(profile);
- return group == INSTANT_EXPERIMENT_A || group == INSTANT_EXPERIMENT_B;
+ return group == HIDDEN_EXPERIMENT_A || group == HIDDEN_EXPERIMENT_B;
}
// static
-bool InstantFieldTrial::IsHiddenExperiment(Profile* profile) {
+bool InstantFieldTrial::IsSilentExperiment(Profile* profile) {
Group group = GetGroup(profile);
- return group == HIDDEN_EXPERIMENT_A || group == HIDDEN_EXPERIMENT_B;
+ return group == SILENT_EXPERIMENT_A || group == SILENT_EXPERIMENT_B;
}
// static
@@ -135,15 +142,17 @@ std::string InstantFieldTrial::GetGroupName(Profile* profile) {
switch (GetGroup(profile)) {
case INACTIVE: return std::string();
- case INSTANT_CONTROL_A: return "_InstantControlA";
- case INSTANT_CONTROL_B: return "_InstantControlB";
case INSTANT_EXPERIMENT_A: return "_InstantExperimentA";
case INSTANT_EXPERIMENT_B: return "_InstantExperimentB";
-
- case HIDDEN_CONTROL_A: return "_HiddenControlA";
- case HIDDEN_CONTROL_B: return "_HiddenControlB";
case HIDDEN_EXPERIMENT_A: return "_HiddenExperimentA";
case HIDDEN_EXPERIMENT_B: return "_HiddenExperimentB";
+ case SILENT_EXPERIMENT_A: return "_SilentExperimentA";
+ case SILENT_EXPERIMENT_B: return "_SilentExperimentB";
+
+ case UMA_CONTROL_A: return "_UmaControlA";
+ case UMA_CONTROL_B: return "_UmaControlB";
+ case ALL_CONTROL_A: return "_AllControlA";
+ case ALL_CONTROL_B: return "_AllControlB";
}
NOTREACHED();
@@ -155,15 +164,17 @@ std::string InstantFieldTrial::GetGroupAsUrlParam(Profile* profile) {
switch (GetGroup(profile)) {
case INACTIVE: return std::string();
- case INSTANT_CONTROL_A: return "ix=ica&";
- case INSTANT_CONTROL_B: return "ix=icb&";
case INSTANT_EXPERIMENT_A: return "ix=iea&";
case INSTANT_EXPERIMENT_B: return "ix=ieb&";
-
- case HIDDEN_CONTROL_A: return "ix=hca&";
- case HIDDEN_CONTROL_B: return "ix=hcb&";
case HIDDEN_EXPERIMENT_A: return "ix=hea&";
case HIDDEN_EXPERIMENT_B: return "ix=heb&";
+ case SILENT_EXPERIMENT_A: return "ix=sea&";
+ case SILENT_EXPERIMENT_B: return "ix=seb&";
+
+ case UMA_CONTROL_A: return "ix=uca&";
+ case UMA_CONTROL_B: return "ix=ucb&";
+ case ALL_CONTROL_A: return "ix=aca&";
+ case ALL_CONTROL_B: return "ix=acb&";
}
NOTREACHED();
« no previous file with comments | « chrome/browser/instant/instant_field_trial.h ('k') | chrome/common/chrome_switches.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698