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..f2a40110ffe5e2432596026144f8a8c51cce3623 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,33 @@ const char kDisablingSuffix[] = "DISABLED"; |
namespace chrome { |
namespace search { |
+InstantExtendedDefault InstantExtendedDefaultFromInt64(int64 default_value) { |
MAD
2013/01/31 15:44:57
I usually prefer having functions not available ou
robertshield
2013/01/31 18:56:52
Ordinarily I would have, but since most of this fu
MAD
2013/01/31 20:14:53
OK... Forget it...
|
+ 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; |
+ uint64 group_number = 0; |
+ base::FieldTrial* trial = |
+ base::FieldTrialList::Find(kInstantExtendedFieldTrialName); |
MAD
2013/01/31 15:44:57
There's also a method on FieldTrialList to get the
robertshield
2013/01/31 18:56:52
Used the method you suggest. With the refactoring
MAD
2013/01/31 20:14:53
Agreed...
|
+ if (trial && GetFieldTrialInfo(trial->group_name(), &flags, &group_number)) { |
+ 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; |
@@ -66,12 +97,7 @@ uint64 EmbeddedSearchPageVersion(Profile* profile) { |
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 (trial && GetFieldTrialInfo(trial->group_name(), &flags, &group_number)) { |
uint64 espv = GetUInt64ValueForFlagWithDefault( |
kEmbeddedPageVersionFlagName, |
kEmbeddedPageVersionDefault, |
@@ -153,9 +179,10 @@ bool IsForcedInstantURL(const GURL& url) { |
// 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, |
MAD
2013/01/31 15:44:57
Now that we return success, group_number pointer c
robertshield
2013/01/31 18:56:52
Done.
|
FieldTrialFlags* flags, |
uint64* group_number) { |
+ bool success = false; |
if (!EndsWith(group_name, kDisablingSuffix, true) && |
StartsWithASCII(group_name, kGroupNumberPrefix, true)) { |
// We have a valid trial that starts with "Group" and isn't disabled. |
@@ -168,12 +195,15 @@ void GetFieldTrialInfo(const std::string& group_name, |
base::SplitStringIntoKeyValuePairs( |
group_name.substr(first_space), ':', ' ', flags); |
} |
- if (!base::StringToUint64(group_prefix.substr(strlen(kGroupNumberPrefix)), |
- group_number)) { |
- // Could not parse group number. |
+ if (base::StringToUint64(group_prefix.substr(strlen(kGroupNumberPrefix)), |
+ group_number)) { |
+ success = true; |
+ } else { |
*group_number = 0; |
} |
} |
+ |
+ return success; |
} |
// Given a FieldTrialFlags object, returns the string value of the provided |