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

Unified Diff: chrome/browser/omnibox/omnibox_field_trial.cc

Issue 22031002: Omnibox: Create DemoteByType Experiment (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix include that caused android build failure Created 7 years, 4 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/omnibox/omnibox_field_trial.cc
diff --git a/chrome/browser/omnibox/omnibox_field_trial.cc b/chrome/browser/omnibox/omnibox_field_trial.cc
index 83b9143b73f6ac2e006944d6bfd49dc5a302a5c9..2bec78bc0ccf477943baf275e0d459b0f0edaa24 100644
--- a/chrome/browser/omnibox/omnibox_field_trial.cc
+++ b/chrome/browser/omnibox/omnibox_field_trial.cc
@@ -8,6 +8,7 @@
#include "base/metrics/field_trial.h"
#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "base/strings/stringprintf.h"
#include "chrome/common/metrics/metrics_util.h"
@@ -26,6 +27,7 @@ const char kBundledExperimentFieldTrialName[] = "OmniboxBundledExperimentV1";
// Rule names used by the bundled experiment.
const char kSearchHistoryRule[] = "SearchHistory";
+const char kDemoteByTypeRule[] = "DemoteByType";
// The autocomplete dynamic field trial name prefix. Each field trial is
// configured dynamically and is retrieved automatically by Chrome during
@@ -233,6 +235,35 @@ bool OmniboxFieldTrial::SearchHistoryDisable(
kSearchHistoryRule, current_page_classification) == "Disable";
}
+void OmniboxFieldTrial::GetDemotionsByType(
+ AutocompleteInput::PageClassification current_page_classification,
+ DemotionMultipliers* demotions_by_type) {
+ demotions_by_type->clear();
+ const std::string demotion_rule =
+ OmniboxFieldTrial::GetValueForRuleInContext(
+ kDemoteByTypeRule,
+ current_page_classification);
+ // The value of the DemoteByType rule is a comma-separated list of
+ // {ResultType + ":" + Number} where ResultType is an AutocompleteMatchType::
+ // Type enum represented as an integer and Number is an integer number
+ // between 0 and 100 inclusive. Relevance scores of matches of that result
+ // type are multiplied by Number / 100. 100 means no change.
+ base::StringPairs kv_pairs;
+ if (base::SplitStringIntoKeyValuePairs(demotion_rule, ':', ',', &kv_pairs)) {
+ for (base::StringPairs::const_iterator it = kv_pairs.begin();
+ it != kv_pairs.end(); ++it) {
+ // This is a best-effort conversion; we trust the hand-crafted parameters
+ // downloaded from the server to be perfect. There's no need for handle
+ // errors smartly.
+ int k, v;
+ base::StringToInt(it->first, &k);
+ base::StringToInt(it->second, &v);
+ (*demotions_by_type)[static_cast<AutocompleteMatchType::Type>(k)] =
+ static_cast<float>(v) / 100.0f;
+ }
+ }
+}
+
// Background and implementation details:
//
// Each experiment group in any field trial can come with an optional set of
« no previous file with comments | « chrome/browser/omnibox/omnibox_field_trial.h ('k') | chrome/browser/omnibox/omnibox_field_trial_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698