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

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: Remove unused variable. 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 0c6c2a5ef43e7e3bf0e0a6e9b32c45ed4bf81b1f..f87366c64f68c728ad907c45a04e3e1cb6d413d8 100644
--- a/chrome/browser/autocomplete/autocomplete_field_trial.cc
+++ b/chrome/browser/autocomplete/autocomplete_field_trial.cc
@@ -7,6 +7,7 @@
#include <string>
#include "base/metrics/field_trial.h"
+#include "base/string_util.h"
#include "base/stringprintf.h"
#include "base/strings/string_number_conversions.h"
#include "chrome/common/metrics/metrics_util.h"
@@ -105,10 +106,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 +138,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 +268,38 @@ 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();
+
+ // Look for group names in form of "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));
+ const char kDisabledProviders[] = "DisabledProviders_";
+ if (!StartsWithASCII(group_name, kDisabledProviders, true))
+ continue;
+ int types = 0;
+ if (!base::StringToInt(base::StringPiece(
+ group_name.substr(strlen(kDisabledProviders))), &types)) {
+ LOG(WARNING) << "Malformed DisabledProviders string: " << group_name;
+ continue;
+ }
+ if (types == 0)
+ LOG(WARNING) << "Expecting a non-zero bitmap; group = " << group_name;
+ else
+ provider_types |= types;
}
+ return provider_types;
}
bool AutocompleteFieldTrial::InDisallowInlineHQPFieldTrial() {

Powered by Google App Engine
This is Rietveld 408576698