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

Unified Diff: chrome/browser/autocomplete/autocomplete_field_trial.cc

Issue 12220004: Introduce dynamic ablation of AutocompleteProviders using AC dynamic trials. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Created 7 years, 10 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
Index: chrome/browser/autocomplete/autocomplete_field_trial.cc
diff --git a/chrome/browser/autocomplete/autocomplete_field_trial.cc b/chrome/browser/autocomplete/autocomplete_field_trial.cc
index 08e5410129479853e04e27d4825e3c719939a836..12c3f001d0213b450b6a2492a13c9d107aed59f5 100644
--- a/chrome/browser/autocomplete/autocomplete_field_trial.cc
+++ b/chrome/browser/autocomplete/autocomplete_field_trial.cc
@@ -105,10 +105,10 @@ const base::FieldTrial::Probability
// Field trial IDs.
// Though they are not literally "const", they are set only once, in
-// Activate() below.
+// ActivateStaticTrials() below.
// Whether the static field trials have been initialized by
-// ActivateStaticTrials method.
+// ActivateStaticTrials() method.
bool static_field_trials_initialized = false;
// Field trial ID for the disallow-inline History Quick Provider
@@ -137,8 +137,14 @@ int hqp_only_count_matches_at_word_boundaries_experiment_group = 0;
// experiment group.
int hqp_use_cursor_position_experiment_group = 0;
+// Concatenates the autocomplete dynamic field trial prefix with a field trial
+// ID to form a complete autocomplete field trial name.
+std::string DynamicFieldTrialName(int id) {
+ return base::StringPrintf("%s%d", kAutocompleteDynamicFieldTrialPrefix, id);
}
+} // namespace
+
void AutocompleteFieldTrial::ActivateStaticTrials() {
DCHECK(!static_field_trials_initialized);
@@ -261,11 +267,40 @@ void AutocompleteFieldTrial::ActivateStaticTrials() {
}
void AutocompleteFieldTrial::ActivateDynamicTrials() {
- // Initialize all autocomplete dynamic field trials.
+ // Initialize all autocomplete dynamic field trials. This method may be
+ // called multiple times.
+ for (int i = 0; i < kMaxAutocompleteDynamicFieldTrials; ++i)
+ base::FieldTrialList::FindValue(DynamicFieldTrialName(i));
+}
+
+int AutocompleteFieldTrial::GetDisabledProviderTypes() {
+ // Make sure that Autocomplete dynamic field trials are activated. It's OK to
+ // call this method multiple times.
+ ActivateDynamicTrials();
+
+ // We assume that each group may contain a substring
+ // "DisabledProviders_<mask>" where "mask" is a bitmap of disabled provider
+ // types (AutocompleteProvider::Type).
+ int provider_types = 0;
for (int i = 0; i < kMaxAutocompleteDynamicFieldTrials; ++i) {
- base::FieldTrialList::FindValue(
- base::StringPrintf("%s%d", kAutocompleteDynamicFieldTrialPrefix, i));
+ std::string group_name = base::FieldTrialList::FindFullName(
+ DynamicFieldTrialName(i));
+ if (!group_name.empty()) {
+ const char kDisabledProviders[] = "DisabledProviders_";
+ const size_t pos = group_name.find(kDisabledProviders);
+ if (pos == std::string::npos)
+ continue;
+ int types = 0;
+ // It's OK to ignore the result, because we don't care about perfect
+ // conversions.
+ base::StringToInt(base::StringPiece(
+ group_name.substr(pos + strlen(kDisabledProviders))), &types);
+ if (types == 0)
+ LOG(WARNING) << "Expecting a non-zero bitmap; group = " << group_name;
+ provider_types |= types;
+ }
}
+ return provider_types;
}
bool AutocompleteFieldTrial::InDisallowInlineHQPFieldTrial() {

Powered by Google App Engine
This is Rietveld 408576698