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

Unified Diff: components/search_engines/template_url.cc

Issue 1983773002: Cache SearchEngineType of TemplateURL (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@refactor-extracting-terms-from-template-url
Patch Set: Fix typo Created 4 years, 6 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: components/search_engines/template_url.cc
diff --git a/components/search_engines/template_url.cc b/components/search_engines/template_url.cc
index 22e361ad561d285d1a092f7979c70ee3d1e5c4eb..a3be5cff8ebc067e03bc80fb10cf22c57bc3372d 100644
--- a/components/search_engines/template_url.cc
+++ b/components/search_engines/template_url.cc
@@ -25,6 +25,7 @@
#include "components/metrics/proto/omnibox_input_type.pb.h"
#include "components/search_engines/search_engines_switches.h"
#include "components/search_engines/search_terms_data.h"
+#include "components/search_engines/template_url_prepopulate_data.h"
#include "components/url_formatter/url_formatter.h"
#include "google_apis/google_api_keys.h"
#include "net/base/escape.h"
@@ -1204,7 +1205,8 @@ TemplateURL::TemplateURL(const TemplateURLData& data)
TemplateURLRef::INSTANT),
image_url_ref_(this, TemplateURLRef::IMAGE),
new_tab_url_ref_(this, TemplateURLRef::NEW_TAB),
- contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH) {
+ contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH),
+ engine_type_(SEARCH_ENGINE_UNKNOWN) {
ResizeURLRefVector();
SetPrepopulateId(data_.prepopulate_id);
@@ -1332,6 +1334,17 @@ std::string TemplateURL::GetExtensionId() const {
return extension_info_->extension_id;
}
+SearchEngineType TemplateURL::GetEngineType(
+ const SearchTermsData& search_terms_data) const {
+ if (engine_type_ == SEARCH_ENGINE_UNKNOWN) {
+ const GURL url = GenerateSearchURL(search_terms_data);
+ engine_type_ = url.is_valid() ?
+ TemplateURLPrepopulateData::GetEngineType(url) : SEARCH_ENGINE_OTHER;
+ DCHECK_NE(SEARCH_ENGINE_UNKNOWN, engine_type_);
+ }
+ return engine_type_;
+}
+
bool TemplateURL::ExtractSearchTermsFromURL(
const GURL& url,
const SearchTermsData& search_terms_data,
@@ -1469,6 +1482,7 @@ void TemplateURL::CopyFrom(const TemplateURL& other) {
void TemplateURL::SetURL(const std::string& url) {
data_.SetURL(url);
+ engine_type_ = SEARCH_ENGINE_UNKNOWN;
url_ref_->InvalidateCachedValues();
}

Powered by Google App Engine
This is Rietveld 408576698