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

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

Issue 141893009: Create a new helper function to extract search terms from the URL irrespective of the availablility (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments. Created 6 years, 10 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
Index: chrome/browser/search/search.cc
diff --git a/chrome/browser/search/search.cc b/chrome/browser/search/search.cc
index 3aa8c72d25afa77fdd2ff5ccda2ce3923584f7be..ded8185606dccded391f2eacaad266882e740d94 100644
--- a/chrome/browser/search/search.cc
+++ b/chrome/browser/search/search.cc
@@ -203,14 +203,11 @@ bool IsRenderedInInstantProcess(const content::WebContents* contents,
return instant_service->IsInstantProcess(process_host->GetID());
}
-// Returns true if |url| passes some basic checks that must succeed for it to be
-// usable as an instant URL:
-// (1) It contains the search terms replacement key of |template_url|, which is
-// expected to be the TemplateURL* for the default search provider.
-// (2) Either it has a secure scheme, or else the user has manually specified a
-// --google-base-url and it uses that base URL. (This allows testers to use
-// --google-base-url to point at non-HTTPS servers, which eases testing.)
-bool IsSuitableURLForInstant(const GURL& url, const TemplateURL* template_url) {
+// |url| should either have a secure scheme or have a non-HTTPS base URL that
+// the user specified using --google-base-url. (This allows testers to use
+// --google-base-url to point at non-HTTPS servers, which eases testing.)
+bool IsSuitableURLForInstantImpl(const GURL& url,
Jered 2014/02/11 23:33:28 nit: Either drop the Impl or rename this to match
kmadhusu 2014/02/12 00:24:57 Dropped the Impl.
+ const TemplateURL* template_url) {
return template_url->HasSearchTermsReplacementKey(url) &&
(url.SchemeIsSecure() ||
google_util::StartsWithCommandLineGoogleBaseURL(url));
@@ -233,7 +230,7 @@ bool IsInstantURL(const GURL& url, Profile* profile) {
if (!template_url)
return false;
- if (!IsSuitableURLForInstant(url, template_url))
+ if (!IsSuitableURLForInstantImpl(url, template_url))
return false;
const TemplateURLRef& instant_url_ref = template_url->instant_url_ref();
@@ -273,8 +270,11 @@ base::string16 GetSearchTermsImpl(const content::WebContents* contents,
if (!search_terms.empty())
return search_terms;
+ if (!IsQueryExtractionAllowedForURL(profile, entry->GetVirtualURL()))
+ return base::string16();
+
// Otherwise, extract from the URL.
- return GetSearchTermsFromURL(profile, entry->GetVirtualURL());
+ return ExtractSearchTermsFromURL(profile, entry->GetVirtualURL());
}
bool IsURLAllowedForSupervisedUser(const GURL& url, Profile* profile) {
@@ -381,7 +381,7 @@ bool IsQueryExtractionEnabled() {
#endif // defined(OS_IOS) || defined(OS_ANDROID)
}
-base::string16 GetSearchTermsFromURL(Profile* profile, const GURL& url) {
+base::string16 ExtractSearchTermsFromURL(Profile* profile, const GURL& url) {
if (url.is_valid() && url == GetSearchResultPrefetchBaseURL(profile)) {
// InstantSearchPrerenderer has the search query for the Instant search base
// page.
@@ -391,13 +391,18 @@ base::string16 GetSearchTermsFromURL(Profile* profile, const GURL& url) {
return prerenderer->get_last_query();
}
- base::string16 search_terms;
TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
- if (template_url && IsSuitableURLForInstant(url, template_url))
+ base::string16 search_terms;
+ if (template_url)
template_url->ExtractSearchTermsFromURL(url, &search_terms);
return search_terms;
}
+bool IsQueryExtractionAllowedForURL(Profile* profile, const GURL& url) {
+ TemplateURL* template_url = GetDefaultSearchProviderTemplateURL(profile);
+ return template_url && IsSuitableURLForInstantImpl(url, template_url);
+}
+
base::string16 GetSearchTermsFromNavigationEntry(
const content::NavigationEntry* entry) {
base::string16 search_terms;
@@ -447,9 +452,9 @@ bool IsNTPURL(const GURL& url, Profile* profile) {
if (!IsInstantExtendedAPIEnabled())
return url == GURL(chrome::kChromeUINewTabURL);
+ const base::string16 search_terms = ExtractSearchTermsFromURL(profile, url);
return profile &&
- ((IsInstantURL(url, profile) &&
- GetSearchTermsFromURL(profile, url).empty()) ||
+ ((IsInstantURL(url, profile) && search_terms.empty()) ||
url == GURL(chrome::kChromeSearchLocalNtpUrl));
}
@@ -501,7 +506,7 @@ GURL GetInstantURL(Profile* profile, int start_margin,
// Extended mode requires HTTPS. Force it unless the base URL was overridden
// on the command line, in which case we allow HTTP (see comments on
- // IsSuitableURLForInstant()).
+ // IsSuitableURLForInstantImpl()).
if (!instant_url.SchemeIsSecure() &&
!google_util::StartsWithCommandLineGoogleBaseURL(instant_url)) {
GURL::Replacements replacements;

Powered by Google App Engine
This is Rietveld 408576698