Index: chrome/browser/search_engines/template_url_parser.cc |
diff --git a/chrome/browser/search_engines/template_url_parser.cc b/chrome/browser/search_engines/template_url_parser.cc |
index 8f6db40776b6e7ac27ee8be9d594bb0b82ebede9..9ab4a1e9a70d30a273e2bed1b349f21b20607826 100644 |
--- a/chrome/browser/search_engines/template_url_parser.cc |
+++ b/chrome/browser/search_engines/template_url_parser.cc |
@@ -13,6 +13,7 @@ |
#include "base/string_util.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/utf_string_conversions.h" |
+#include "chrome/browser/search_engines/search_terms_data.h" |
#include "chrome/browser/search_engines/template_url.h" |
#include "chrome/browser/search_engines/template_url_service.h" |
#include "chrome/common/url_constants.h" |
@@ -309,10 +310,19 @@ TemplateURL* TemplateURLParsingContext::GetTemplateURL( |
// Bail if the search URL is empty or if either TemplateURLRef is invalid. |
scoped_ptr<TemplateURL> template_url(new TemplateURL(profile, data_)); |
- if (template_url->url().empty() || !template_url->url_ref().IsValid() || |
+ // Do not use a UIThreadSearchTermsData if a profile wasn't provided as it |
+ // results in the same thing (relevant UIThreadSearchTermsData methods default |
+ // to SearchTermsData methods when the profile is NULL), but prevents |
+ // validity checks on non-UI threads. |
Peter Kasting
2013/04/17 22:50:06
This comment is extremely confusing. I would remo
gab
2013/04/18 15:00:27
Done.
|
+ scoped_ptr<SearchTermsData> search_terms_data(profile ? |
+ new UIThreadSearchTermsData(profile) : new SearchTermsData()); |
+ if (template_url->url().empty() || |
+ !template_url->url_ref().IsValidUsingTermsData(*search_terms_data) || |
(!template_url->suggestions_url().empty() && |
- !template_url->suggestions_url_ref().IsValid())) |
+ !template_url->suggestions_url_ref(). |
+ IsValidUsingTermsData(*search_terms_data))) { |
return NULL; |
+ } |
return template_url.release(); |
} |