Chromium Code Reviews| 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 |