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

Unified Diff: chrome/browser/ui/search/search.cc

Issue 12094073: Use an experiment value to set the instant_extended.enabled pref default. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Feedbac Created 7 years, 11 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/ui/search/search.h ('k') | chrome/browser/ui/search/search_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/search/search.cc
diff --git a/chrome/browser/ui/search/search.cc b/chrome/browser/ui/search/search.cc
index 796edb4ee64bf23013c73c455ea65b7d8c84b63d..d4dab2c80b66efb4ea67138d94d22e4fd242401f 100644
--- a/chrome/browser/ui/search/search.cc
+++ b/chrome/browser/ui/search/search.cc
@@ -33,6 +33,10 @@ const bool kEnableOnThemesDefault = false;
const char kEmbeddedPageVersionFlagName[] = "espv";
const int kEmbeddedPageVersionDefault = 1;
+const char kInstantExtendedActivationName[] = "instant";
+const chrome::search::InstantExtendedDefault kInstantExtendedActivationDefault =
+ chrome::search::INSTANT_USE_EXISTING;
+
// Constants for the field trial name and group prefix.
const char kInstantExtendedFieldTrialName[] = "InstantExtended";
const char kGroupNumberPrefix[] = "Group";
@@ -46,6 +50,32 @@ const char kDisablingSuffix[] = "DISABLED";
namespace chrome {
namespace search {
+InstantExtendedDefault InstantExtendedDefaultFromInt64(int64 default_value) {
+ switch (default_value) {
+ case 0: return INSTANT_FORCE_ON;
+ case 1: return INSTANT_USE_EXISTING;
+ case 2: return INSTANT_FORCE_OFF;
+ default: return INSTANT_USE_EXISTING;
+ }
+}
+
+InstantExtendedDefault GetInstantExtendedDefaultSetting() {
+ InstantExtendedDefault default_setting = INSTANT_USE_EXISTING;
+
+ FieldTrialFlags flags;
+ if (GetFieldTrialInfo(
+ base::FieldTrialList::FindFullName(kInstantExtendedFieldTrialName),
+ &flags, NULL)) {
+ uint64 trial_default = GetUInt64ValueForFlagWithDefault(
+ kInstantExtendedActivationName,
+ kInstantExtendedActivationDefault,
+ flags);
+ default_setting = InstantExtendedDefaultFromInt64(trial_default);
+ }
+
+ return default_setting;
+}
+
// Check whether or not the Extended API should be used on the given profile.
bool IsInstantExtendedAPIEnabled(Profile* profile) {
return EmbeddedSearchPageVersion(profile) != 0;
@@ -63,15 +93,9 @@ uint64 EmbeddedSearchPageVersion(Profile* profile) {
// Check Finch field trials.
FieldTrialFlags flags;
- uint64 group_number = 0;
- base::FieldTrial* trial =
- base::FieldTrialList::Find(kInstantExtendedFieldTrialName);
- if (trial) {
- std::string group_name = trial->group_name();
- GetFieldTrialInfo(group_name, &flags, &group_number);
- }
-
- if (group_number > 0) {
+ if (GetFieldTrialInfo(
+ base::FieldTrialList::FindFullName(kInstantExtendedFieldTrialName),
+ &flags, NULL)) {
uint64 espv = GetUInt64ValueForFlagWithDefault(
kEmbeddedPageVersionFlagName,
kEmbeddedPageVersionDefault,
@@ -151,29 +175,43 @@ bool IsForcedInstantURL(const GURL& url) {
url.path() == instant_url.path();
}
-// Given a field trial group name in the above format, parses out the group
-// number and configuration flags. Will return a group number of 0 on error.
-void GetFieldTrialInfo(const std::string& group_name,
+bool GetFieldTrialInfo(const std::string& group_name,
FieldTrialFlags* flags,
uint64* group_number) {
- if (!EndsWith(group_name, kDisablingSuffix, true) &&
- StartsWithASCII(group_name, kGroupNumberPrefix, true)) {
- // We have a valid trial that starts with "Group" and isn't disabled.
- size_t first_space = group_name.find(" ");
- std::string group_prefix = group_name;
- if (first_space != std::string::npos) {
- // There is a flags section of the group name. Split that out and parse
- // it.
- group_prefix = group_name.substr(0, first_space);
- base::SplitStringIntoKeyValuePairs(
- group_name.substr(first_space), ':', ' ', flags);
- }
- if (!base::StringToUint64(group_prefix.substr(strlen(kGroupNumberPrefix)),
- group_number)) {
- // Could not parse group number.
- *group_number = 0;
+ if (EndsWith(group_name, kDisablingSuffix, true) ||
+ !StartsWithASCII(group_name, kGroupNumberPrefix, true)) {
+ return false;
+ }
+
+ // We have a valid trial that starts with "Group" and isn't disabled.
+ // First extract the flags.
+ std::string group_prefix(group_name);
+
+ size_t first_space = group_name.find(" ");
+ if (first_space != std::string::npos) {
+ // There is a flags section of the group name. Split that out and parse
+ // it.
+ group_prefix = group_name.substr(0, first_space);
+ if (!base::SplitStringIntoKeyValuePairs(group_name.substr(first_space),
+ ':', ' ', flags)) {
+ // Failed to parse the flags section. Assume the whole group name is
+ // invalid.
+ return false;
}
}
+
+ // Now extract the group number, making sure we get a non-zero value.
+ uint64 temp_group_number = 0;
+ if (!base::StringToUint64(group_prefix.substr(strlen(kGroupNumberPrefix)),
+ &temp_group_number) ||
+ temp_group_number == 0) {
+ return false;
+ }
+
+ if (group_number)
+ *group_number = temp_group_number;
+
+ return true;
}
// Given a FieldTrialFlags object, returns the string value of the provided
« no previous file with comments | « chrome/browser/ui/search/search.h ('k') | chrome/browser/ui/search/search_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698