| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef CHROME_BROWSER_SEARCH_SEARCH_H_ | 5 #ifndef CHROME_BROWSER_SEARCH_SEARCH_H_ |
| 6 #define CHROME_BROWSER_SEARCH_SEARCH_H_ | 6 #define CHROME_BROWSER_SEARCH_SEARCH_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 namespace content { | 21 namespace content { |
| 22 class BrowserContext; | 22 class BrowserContext; |
| 23 class NavigationEntry; | 23 class NavigationEntry; |
| 24 class WebContents; | 24 class WebContents; |
| 25 } | 25 } |
| 26 | 26 |
| 27 namespace user_prefs { | 27 namespace user_prefs { |
| 28 class PrefRegistrySyncable; | 28 class PrefRegistrySyncable; |
| 29 } | 29 } |
| 30 | 30 |
| 31 namespace chrome { | 31 namespace search { |
| 32 | 32 |
| 33 // For reporting Cacheable NTP navigations. | 33 // For reporting Cacheable NTP navigations. |
| 34 enum CacheableNTPLoad { | 34 enum CacheableNTPLoad { |
| 35 CACHEABLE_NTP_LOAD_FAILED = 0, | 35 CACHEABLE_NTP_LOAD_FAILED = 0, |
| 36 CACHEABLE_NTP_LOAD_SUCCEEDED = 1, | 36 CACHEABLE_NTP_LOAD_SUCCEEDED = 1, |
| 37 CACHEABLE_NTP_LOAD_MAX = 2 | 37 CACHEABLE_NTP_LOAD_MAX = 2 |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 enum OptInState { | 40 enum OptInState { |
| 41 // The user has not manually opted in/out of InstantExtended. | 41 // The user has not manually opted in/out of InstantExtended. |
| 42 INSTANT_EXTENDED_NOT_SET, | 42 INSTANT_EXTENDED_NOT_SET, |
| 43 // The user has opted-in to InstantExtended. | 43 // The user has opted-in to InstantExtended. |
| 44 INSTANT_EXTENDED_OPT_IN, | 44 INSTANT_EXTENDED_OPT_IN, |
| 45 // The user has opted-out of InstantExtended. | 45 // The user has opted-out of InstantExtended. |
| 46 INSTANT_EXTENDED_OPT_OUT, | 46 INSTANT_EXTENDED_OPT_OUT, |
| 47 INSTANT_EXTENDED_OPT_IN_STATE_ENUM_COUNT, | 47 INSTANT_EXTENDED_OPT_IN_STATE_ENUM_COUNT, |
| 48 }; | 48 }; |
| 49 | 49 |
| 50 // Use this value for "start margin" to prevent the "es_sm" parameter from | |
| 51 // being used. | |
| 52 extern const int kDisableStartMargin; | |
| 53 | |
| 54 // Returns whether the suggest is enabled for the given |profile|. | 50 // Returns whether the suggest is enabled for the given |profile|. |
| 55 bool IsSuggestPrefEnabled(Profile* profile); | 51 bool IsSuggestPrefEnabled(Profile* profile); |
| 56 | 52 |
| 57 // Returns a string indicating whether InstantExtended is enabled, suitable | |
| 58 // for adding as a query string param to the homepage or search requests. | |
| 59 // Returns an empty string otherwise. | |
| 60 // | |
| 61 // |for_search| should be set to true for search requests, in which case this | |
| 62 // returns a non-empty string only if query extraction is enabled. | |
| 63 std::string InstantExtendedEnabledParam(bool for_search); | |
| 64 | |
| 65 // Returns a string that will cause the search results page to update | |
| 66 // incrementally. Currently, Instant Extended passes a different param to | |
| 67 // search results pages that also has this effect, so by default this function | |
| 68 // returns the empty string when Instant Extended is enabled. However, when | |
| 69 // doing instant search result prerendering, we still need to pass this param, | |
| 70 // as Instant Extended does not cause incremental updates by default for the | |
| 71 // prerender page. Callers should set |for_prerender| in this case to force | |
| 72 // the returned string to be non-empty. | |
| 73 std::string ForceInstantResultsParam(bool for_prerender); | |
| 74 | |
| 75 // Returns whether query extraction is enabled. | |
| 76 bool IsQueryExtractionEnabled(); | |
| 77 | |
| 78 // Extracts and returns search terms from |url|. Does not consider | 53 // Extracts and returns search terms from |url|. Does not consider |
| 79 // IsQueryExtractionEnabled() and Instant support state of the page and does | 54 // IsQueryExtractionEnabled() and Instant support state of the page and does |
| 80 // not check for a privileged process, so most callers should use | 55 // not check for a privileged process, so most callers should use |
| 81 // GetSearchTerms() below instead. | 56 // GetSearchTerms() below instead. |
| 82 base::string16 ExtractSearchTermsFromURL(Profile* profile, const GURL& url); | 57 base::string16 ExtractSearchTermsFromURL(Profile* profile, const GURL& url); |
| 83 | 58 |
| 84 // Returns true if it is okay to extract search terms from |url|. |url| must | 59 // Returns true if it is okay to extract search terms from |url|. |url| must |
| 85 // have a secure scheme and must contain the search terms replacement key for | 60 // have a secure scheme and must contain the search terms replacement key for |
| 86 // the default search provider. | 61 // the default search provider. |
| 87 bool IsQueryExtractionAllowedForURL(Profile* profile, const GURL& url); | 62 bool IsQueryExtractionAllowedForURL(Profile* profile, const GURL& url); |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 141 GURL GetInstantURL(Profile* profile, bool force_instant_results); | 116 GURL GetInstantURL(Profile* profile, bool force_instant_results); |
| 142 | 117 |
| 143 // Returns URLs associated with the default search engine for |profile|. | 118 // Returns URLs associated with the default search engine for |profile|. |
| 144 std::vector<GURL> GetSearchURLs(Profile* profile); | 119 std::vector<GURL> GetSearchURLs(Profile* profile); |
| 145 | 120 |
| 146 // Returns the default search engine base page URL to prefetch search results. | 121 // Returns the default search engine base page URL to prefetch search results. |
| 147 // Returns an empty URL if 'prefetch_results' flag is set to false in field | 122 // Returns an empty URL if 'prefetch_results' flag is set to false in field |
| 148 // trials. | 123 // trials. |
| 149 GURL GetSearchResultPrefetchBaseURL(Profile* profile); | 124 GURL GetSearchResultPrefetchBaseURL(Profile* profile); |
| 150 | 125 |
| 151 // Returns true if 'prefetch_results' flag is set to true in field trials to | |
| 152 // prefetch high-confidence search suggestions. | |
| 153 bool ShouldPrefetchSearchResults(); | |
| 154 | |
| 155 // Returns true if 'allow_prefetch_non_default_match' flag is enabled in field | |
| 156 // trials to allow prefetching the suggestion marked to be prefetched by the | |
| 157 // suggest server even if it is not the default match. | |
| 158 bool ShouldAllowPrefetchNonDefaultMatch(); | |
| 159 | |
| 160 // Returns true if 'prerender_instant_url_on_omnibox_focus' flag is enabled in | 126 // Returns true if 'prerender_instant_url_on_omnibox_focus' flag is enabled in |
| 161 // field trials to prerender Instant search base page when the omnibox is | 127 // field trials to prerender Instant search base page when the omnibox is |
| 162 // focused. | 128 // focused. |
| 163 bool ShouldPrerenderInstantUrlOnOmniboxFocus(); | 129 bool ShouldPrerenderInstantUrlOnOmniboxFocus(); |
| 164 | 130 |
| 165 // Returns true if 'reuse_instant_search_base_page' flag is set to true in field | |
| 166 // trials to reuse the prerendered page to commit any search query. | |
| 167 bool ShouldReuseInstantSearchBasePage(); | |
| 168 | |
| 169 // Returns the Local Instant URL of the New Tab Page. | 131 // Returns the Local Instant URL of the New Tab Page. |
| 170 // TODO(kmadhusu): Remove this function and update the call sites. | 132 // TODO(kmadhusu): Remove this function and update the call sites. |
| 171 GURL GetLocalInstantURL(Profile* profile); | 133 GURL GetLocalInstantURL(Profile* profile); |
| 172 | 134 |
| 173 // Returns true if the local new tab page should show a Google logo and search | 135 // Returns true if the local new tab page should show a Google logo and search |
| 174 // box for users whose default search provider is Google, or false if not. | 136 // box for users whose default search provider is Google, or false if not. |
| 175 bool ShouldShowGoogleLocalNTP(); | 137 bool ShouldShowGoogleLocalNTP(); |
| 176 | 138 |
| 177 // Transforms the input |url| into its "effective URL". The returned URL | 139 // Transforms the input |url| into its "effective URL". The returned URL |
| 178 // facilitates grouping process-per-site. The |url| is transformed, for | 140 // facilitates grouping process-per-site. The |url| is transformed, for |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 InstantSupportState GetInstantSupportStateFromNavigationEntry( | 175 InstantSupportState GetInstantSupportStateFromNavigationEntry( |
| 214 const content::NavigationEntry& entry); | 176 const content::NavigationEntry& entry); |
| 215 | 177 |
| 216 // Returns true if the field trial flag is enabled to prefetch results on SRP. | 178 // Returns true if the field trial flag is enabled to prefetch results on SRP. |
| 217 bool ShouldPrefetchSearchResultsOnSRP(); | 179 bool ShouldPrefetchSearchResultsOnSRP(); |
| 218 | 180 |
| 219 // ----------------------------------------------------- | 181 // ----------------------------------------------------- |
| 220 // The following APIs are exposed for use in tests only. | 182 // The following APIs are exposed for use in tests only. |
| 221 // ----------------------------------------------------- | 183 // ----------------------------------------------------- |
| 222 | 184 |
| 223 // Forces query in the omnibox to be on for tests. | |
| 224 void EnableQueryExtractionForTesting(); | |
| 225 | |
| 226 // Returns the Cacheable New Tab Page URL for the given |profile|. | 185 // Returns the Cacheable New Tab Page URL for the given |profile|. |
| 227 GURL GetNewTabPageURL(Profile* profile); | 186 GURL GetNewTabPageURL(Profile* profile); |
| 228 | 187 |
| 229 // Returns true if 'use_alternate_instant_url' flag is set to true in field | 188 // Returns true if 'use_alternate_instant_url' flag is set to true in field |
| 230 // trials to use an alternate Instant search base page URL for prefetching | 189 // trials to use an alternate Instant search base page URL for prefetching |
| 231 // search results. This allows experimentation of Instant search. | 190 // search results. This allows experimentation of Instant search. |
| 232 bool ShouldUseAltInstantURL(); | 191 bool ShouldUseAltInstantURL(); |
| 233 | 192 |
| 234 // Returns true if 'use_search_path_for_instant' flag is set to true in field | 193 // Returns true if 'use_search_path_for_instant' flag is set to true in field |
| 235 // trials to use an '/search' path in an alternate Instant search base page URL | 194 // trials to use an '/search' path in an alternate Instant search base page URL |
| 236 // for prefetching search results. This allows experimentation of Instant | 195 // for prefetching search results. This allows experimentation of Instant |
| 237 // search. | 196 // search. |
| 238 bool ShouldUseSearchPathForInstant(); | 197 bool ShouldUseSearchPathForInstant(); |
| 239 | 198 |
| 240 } // namespace chrome | 199 } // namespace search |
| 241 | 200 |
| 242 #endif // CHROME_BROWSER_SEARCH_SEARCH_H_ | 201 #endif // CHROME_BROWSER_SEARCH_SEARCH_H_ |
| OLD | NEW |