summaryrefslogtreecommitdiffstats
path: root/chrome/browser/search_engines/template_url.cc
diff options
context:
space:
mode:
authorlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-03 00:53:31 +0000
committerlevin@chromium.org <levin@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-09-03 00:53:31 +0000
commit923d733d12d2dcb01aa64ec825c19444d728d978 (patch)
treeac9cfd8e13a96184f0f5a00fda7001c56c9c00bc /chrome/browser/search_engines/template_url.cc
parentd343782a2492ca416da36f9c6560b49042b93b76 (diff)
downloadchromium_src-923d733d12d2dcb01aa64ec825c19444d728d978.zip
chromium_src-923d733d12d2dcb01aa64ec825c19444d728d978.tar.gz
chromium_src-923d733d12d2dcb01aa64ec825c19444d728d978.tar.bz2
Fix TemplateURLModel::GenerateSearchURL for use on non-UI threads.
BUG=38475 TEST=unit_tests --gtest_filter=Temp*:Sea*:Key* Review URL: http://codereview.chromium.org/3343002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58445 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/search_engines/template_url.cc')
-rw-r--r--chrome/browser/search_engines/template_url.cc42
1 files changed, 34 insertions, 8 deletions
diff --git a/chrome/browser/search_engines/template_url.cc b/chrome/browser/search_engines/template_url.cc
index 78a8163..9912b35 100644
--- a/chrome/browser/search_engines/template_url.cc
+++ b/chrome/browser/search_engines/template_url.cc
@@ -185,6 +185,12 @@ std::string TemplateURLRef::ParseURL(const std::string& url,
}
void TemplateURLRef::ParseIfNecessary() const {
+ UIThreadSearchTermsData search_terms_data;
+ ParseIfNecessaryUsingTermsData(search_terms_data);
+}
+
+void TemplateURLRef::ParseIfNecessaryUsingTermsData(
+ const SearchTermsData& search_terms_data) const {
if (!parsed_) {
parsed_ = true;
parsed_url_ = ParseURL(url_, &replacements_, &valid_);
@@ -206,14 +212,13 @@ void TemplateURLRef::ParseIfNecessary() const {
// Only parse the host/key if there is one search term. Technically there
// could be more than one term, but it's uncommon; so we punt.
if (has_only_one_search_term)
- ParseHostAndSearchTermKey();
+ ParseHostAndSearchTermKey(search_terms_data);
}
}
}
-void TemplateURLRef::ParseHostAndSearchTermKey() const {
- UIThreadSearchTermsData search_terms_data;
-
+void TemplateURLRef::ParseHostAndSearchTermKey(
+ const SearchTermsData& search_terms_data) const {
std::string url_string = url_;
ReplaceSubstringsAfterOffset(&url_string, 0,
kGoogleBaseURLParameterFull,
@@ -273,7 +278,7 @@ std::string TemplateURLRef::ReplaceSearchTermsUsingTermsData(
int accepted_suggestion,
const std::wstring& original_query_for_suggestion,
const SearchTermsData& search_terms_data) const {
- ParseIfNecessary();
+ ParseIfNecessaryUsingTermsData(search_terms_data);
if (!valid_)
return std::string();
@@ -404,12 +409,24 @@ std::string TemplateURLRef::ReplaceSearchTermsUsingTermsData(
}
bool TemplateURLRef::SupportsReplacement() const {
- ParseIfNecessary();
+ UIThreadSearchTermsData search_terms_data;
+ return SupportsReplacementUsingTermsData(search_terms_data);
+}
+
+bool TemplateURLRef::SupportsReplacementUsingTermsData(
+ const SearchTermsData& search_terms_data) const {
+ ParseIfNecessaryUsingTermsData(search_terms_data);
return valid_ && supports_replacements_;
}
bool TemplateURLRef::IsValid() const {
- ParseIfNecessary();
+ UIThreadSearchTermsData search_terms_data;
+ return IsValidUsingTermsData(search_terms_data);
+}
+
+bool TemplateURLRef::IsValidUsingTermsData(
+ const SearchTermsData& search_terms_data) const {
+ ParseIfNecessaryUsingTermsData(search_terms_data);
return valid_;
}
@@ -524,7 +541,16 @@ GURL TemplateURL::GenerateFaviconURL(const GURL& url) {
// static
bool TemplateURL::SupportsReplacement(const TemplateURL* turl) {
- return turl && turl->url() && turl->url()->SupportsReplacement();
+ UIThreadSearchTermsData search_terms_data;
+ return SupportsReplacementUsingTermsData(turl, search_terms_data);
+}
+
+// static
+bool TemplateURL::SupportsReplacementUsingTermsData(
+ const TemplateURL* turl,
+ const SearchTermsData& search_terms_data) {
+ return turl && turl->url() &&
+ turl->url()->SupportsReplacementUsingTermsData(search_terms_data);
}
TemplateURL::TemplateURL()