Chromium Code Reviews| Index: chrome/browser/search/search.cc |
| diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc |
| index 5d665dcd012db1342d578ce9c5dceb6c85be85de..6364ba6e7cfb8ae66cb6e9f84b4b5f26671da986 100644 |
| --- a/chrome/browser/search/search.cc |
| +++ b/chrome/browser/search/search.cc |
| @@ -53,8 +53,12 @@ namespace { |
| // The first token is always GroupN for some integer N, followed by a |
| // space-delimited list of key:value pairs which correspond to these flags: |
| const char kEmbeddedPageVersionFlagName[] = "espv"; |
| -#if defined(OS_IOS) || defined(OS_ANDROID) |
| +#if defined(OS_IOS) |
| +const uint64 kEmbeddedPageVersionDefault = 1; |
| +#elif defined(OS_ANDROID) |
| const uint64 kEmbeddedPageVersionDefault = 1; |
| +// Use this variant to enable EmbeddedSearch SearchBox API in the results page. |
| +const uint64 kEmbeddedPageVersionVariant = 2; |
| #else |
| const uint64 kEmbeddedPageVersionDefault = 2; |
| #endif |
| @@ -259,12 +263,20 @@ base::string16 GetSearchTermsImpl(const content::WebContents* contents, |
| // Since iOS and Android doesn't use the instant framework, these checks are |
| // disabled for the two platforms. |
| Profile* profile = Profile::FromBrowserContext(contents->GetBrowserContext()); |
| -#if !defined(OS_IOS) && !defined(OS_ANDROID) |
| - if (!IsRenderedInInstantProcess(contents, profile) && |
| +#if defined(OS_IOS) |
| + bool check_renderer_process = false; |
| +#elif defined(OS_ANDROID) |
| + bool check_renderer_process = |
| + EmbeddedSearchPageVersion() == kEmbeddedPageVersionVariant; |
| +#else |
| + bool check_renderer_process = true; |
| +#endif // defined(OS_IOS) |
| + if (check_renderer_process && |
| + !IsRenderedInInstantProcess(contents, profile) && |
| ((entry == contents->GetController().GetLastCommittedEntry()) || |
| !ShouldAssignURLToInstantRenderer(entry->GetURL(), profile))) |
| return base::string16(); |
| -#endif // !defined(OS_IOS) && !defined(OS_ANDROID) |
| + |
| // Check to see if search terms have already been extracted. |
| base::string16 search_terms = GetSearchTermsFromNavigationEntry(entry); |
| if (!search_terms.empty()) |
| @@ -343,16 +355,25 @@ struct NewTabURLDetails { |
| const int kDisableStartMargin = -1; |
| bool IsInstantExtendedAPIEnabled() { |
| -#if defined(OS_IOS) || defined(OS_ANDROID) |
| +#if defined(OS_IOS) |
| return false; |
| +#elif defined(OS_ANDROID) |
| + return EmbeddedSearchPageVersion() == kEmbeddedPageVersionVariant; |
| #else |
| return true; |
| -#endif // defined(OS_IOS) || defined(OS_ANDROID) |
| +#endif // defined(OS_IOS) |
| } |
| // Determine what embedded search page version to request from the user's |
| // default search provider. If 0, the embedded search UI should not be enabled. |
| uint64 EmbeddedSearchPageVersion() { |
| +#if defined(OS_ANDROID) |
| + if (CommandLine::ForCurrentProcess()->HasSwitch( |
| + switches::kEnableEmbeddedSearchAPI)) { |
|
Ted C
2014/04/24 16:24:13
I believe this should be indented 4 from the if no
kmadhusu
2014/04/24 17:38:48
Done.
|
| + return kEmbeddedPageVersionVariant; |
| + } |
| +#endif |
| + |
| FieldTrialFlags flags; |
| if (GetFieldTrialInfo(&flags)) { |
| return GetUInt64ValueForFlagWithDefault(kEmbeddedPageVersionFlagName, |
| @@ -430,13 +451,12 @@ base::string16 GetSearchTerms(const content::WebContents* contents) { |
| if (!entry) |
| return base::string16(); |
| -#if !defined(OS_IOS) && !defined(OS_ANDROID) |
| - // iOS and Android doesn't use the Instant framework, disable this check for |
| - // the two platforms. |
| - InstantSupportState state = GetInstantSupportStateFromNavigationEntry(*entry); |
| - if (state == INSTANT_SUPPORT_NO) |
| - return base::string16(); |
| -#endif // !defined(OS_IOS) && !defined(OS_ANDROID) |
| + if (IsInstantExtendedAPIEnabled()) { |
| + InstantSupportState state = |
| + GetInstantSupportStateFromNavigationEntry(*entry); |
| + if (state == INSTANT_SUPPORT_NO) |
| + return base::string16(); |
| + } |
| return GetSearchTermsImpl(contents, entry); |
| } |