| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "components/search_engines/template_url.h" | 5 #include "components/search_engines/template_url.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 1164 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1175 if (!post_params_.empty()) | 1175 if (!post_params_.empty()) |
| 1176 EncodeFormData(post_params_, post_content); | 1176 EncodeFormData(post_params_, post_content); |
| 1177 | 1177 |
| 1178 return url; | 1178 return url; |
| 1179 } | 1179 } |
| 1180 | 1180 |
| 1181 | 1181 |
| 1182 // TemplateURL ---------------------------------------------------------------- | 1182 // TemplateURL ---------------------------------------------------------------- |
| 1183 | 1183 |
| 1184 TemplateURL::AssociatedExtensionInfo::AssociatedExtensionInfo( | 1184 TemplateURL::AssociatedExtensionInfo::AssociatedExtensionInfo( |
| 1185 Type type, | |
| 1186 const std::string& extension_id) | 1185 const std::string& extension_id) |
| 1187 : type(type), | 1186 : extension_id(extension_id), wants_to_be_default_engine(false) {} |
| 1188 extension_id(extension_id), | |
| 1189 wants_to_be_default_engine(false) { | |
| 1190 DCHECK_NE(NORMAL, type); | |
| 1191 } | |
| 1192 | 1187 |
| 1193 TemplateURL::AssociatedExtensionInfo::~AssociatedExtensionInfo() { | 1188 TemplateURL::AssociatedExtensionInfo::~AssociatedExtensionInfo() { |
| 1194 } | 1189 } |
| 1195 | 1190 |
| 1196 TemplateURL::TemplateURL(const TemplateURLData& data) | 1191 TemplateURL::TemplateURL(const TemplateURLData& data, Type type) |
| 1197 : data_(data), | 1192 : data_(data), |
| 1198 url_ref_(nullptr), | 1193 url_ref_(nullptr), |
| 1199 suggestions_url_ref_(this, | 1194 suggestions_url_ref_(this, TemplateURLRef::SUGGEST), |
| 1200 TemplateURLRef::SUGGEST), | 1195 instant_url_ref_(this, TemplateURLRef::INSTANT), |
| 1201 instant_url_ref_(this, | |
| 1202 TemplateURLRef::INSTANT), | |
| 1203 image_url_ref_(this, TemplateURLRef::IMAGE), | 1196 image_url_ref_(this, TemplateURLRef::IMAGE), |
| 1204 new_tab_url_ref_(this, TemplateURLRef::NEW_TAB), | 1197 new_tab_url_ref_(this, TemplateURLRef::NEW_TAB), |
| 1205 contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH), | 1198 contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH), |
| 1199 type_(type), |
| 1206 engine_type_(SEARCH_ENGINE_UNKNOWN) { | 1200 engine_type_(SEARCH_ENGINE_UNKNOWN) { |
| 1207 ResizeURLRefVector(); | 1201 ResizeURLRefVector(); |
| 1208 SetPrepopulateId(data_.prepopulate_id); | 1202 SetPrepopulateId(data_.prepopulate_id); |
| 1209 | 1203 |
| 1210 if (data_.search_terms_replacement_key == | 1204 if (data_.search_terms_replacement_key == |
| 1211 "{google:instantExtendedEnabledKey}") { | 1205 "{google:instantExtendedEnabledKey}") { |
| 1212 data_.search_terms_replacement_key = google_util::kInstantExtendedAPIParam; | 1206 data_.search_terms_replacement_key = google_util::kInstantExtendedAPIParam; |
| 1213 } | 1207 } |
| 1214 } | 1208 } |
| 1215 | 1209 |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1300 } | 1294 } |
| 1301 return suggestions_url_ref_.HasGoogleBaseURLs(search_terms_data) || | 1295 return suggestions_url_ref_.HasGoogleBaseURLs(search_terms_data) || |
| 1302 instant_url_ref_.HasGoogleBaseURLs(search_terms_data) || | 1296 instant_url_ref_.HasGoogleBaseURLs(search_terms_data) || |
| 1303 image_url_ref_.HasGoogleBaseURLs(search_terms_data) || | 1297 image_url_ref_.HasGoogleBaseURLs(search_terms_data) || |
| 1304 new_tab_url_ref_.HasGoogleBaseURLs(search_terms_data) || | 1298 new_tab_url_ref_.HasGoogleBaseURLs(search_terms_data) || |
| 1305 contextual_search_url_ref_.HasGoogleBaseURLs(search_terms_data); | 1299 contextual_search_url_ref_.HasGoogleBaseURLs(search_terms_data); |
| 1306 } | 1300 } |
| 1307 | 1301 |
| 1308 bool TemplateURL::IsGoogleSearchURLWithReplaceableKeyword( | 1302 bool TemplateURL::IsGoogleSearchURLWithReplaceableKeyword( |
| 1309 const SearchTermsData& search_terms_data) const { | 1303 const SearchTermsData& search_terms_data) const { |
| 1310 return (GetType() == NORMAL) && | 1304 return (type_ == NORMAL) && |
| 1311 url_ref_->HasGoogleBaseURLs(search_terms_data) && | 1305 url_ref_->HasGoogleBaseURLs(search_terms_data) && |
| 1312 google_util::IsGoogleHostname(base::UTF16ToUTF8(data_.keyword()), | 1306 google_util::IsGoogleHostname(base::UTF16ToUTF8(data_.keyword()), |
| 1313 google_util::DISALLOW_SUBDOMAIN); | 1307 google_util::DISALLOW_SUBDOMAIN); |
| 1314 } | 1308 } |
| 1315 | 1309 |
| 1316 bool TemplateURL::HasSameKeywordAs( | 1310 bool TemplateURL::HasSameKeywordAs( |
| 1317 const TemplateURLData& other, | 1311 const TemplateURLData& other, |
| 1318 const SearchTermsData& search_terms_data) const { | 1312 const SearchTermsData& search_terms_data) const { |
| 1319 return (data_.keyword() == other.keyword()) || | 1313 return (data_.keyword() == other.keyword()) || |
| 1320 (IsGoogleSearchURLWithReplaceableKeyword(search_terms_data) && | 1314 (IsGoogleSearchURLWithReplaceableKeyword(search_terms_data) && |
| 1321 TemplateURL(other).IsGoogleSearchURLWithReplaceableKeyword( | 1315 TemplateURL(other).IsGoogleSearchURLWithReplaceableKeyword( |
| 1322 search_terms_data)); | 1316 search_terms_data)); |
| 1323 } | 1317 } |
| 1324 | 1318 |
| 1325 TemplateURL::Type TemplateURL::GetType() const { | |
| 1326 return extension_info_ ? extension_info_->type : NORMAL; | |
| 1327 } | |
| 1328 | |
| 1329 std::string TemplateURL::GetExtensionId() const { | 1319 std::string TemplateURL::GetExtensionId() const { |
| 1330 DCHECK(extension_info_); | 1320 DCHECK(extension_info_); |
| 1331 return extension_info_->extension_id; | 1321 return extension_info_->extension_id; |
| 1332 } | 1322 } |
| 1333 | 1323 |
| 1334 SearchEngineType TemplateURL::GetEngineType( | 1324 SearchEngineType TemplateURL::GetEngineType( |
| 1335 const SearchTermsData& search_terms_data) const { | 1325 const SearchTermsData& search_terms_data) const { |
| 1336 if (engine_type_ == SEARCH_ENGINE_UNKNOWN) { | 1326 if (engine_type_ == SEARCH_ENGINE_UNKNOWN) { |
| 1337 const GURL url = GenerateSearchURL(search_terms_data); | 1327 const GURL url = GenerateSearchURL(search_terms_data); |
| 1338 engine_type_ = url.is_valid() ? | 1328 engine_type_ = url.is_valid() ? |
| (...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1492 instant_url_ref_.prepopulated_ = prepopulated; | 1482 instant_url_ref_.prepopulated_ = prepopulated; |
| 1493 image_url_ref_.prepopulated_ = prepopulated; | 1483 image_url_ref_.prepopulated_ = prepopulated; |
| 1494 new_tab_url_ref_.prepopulated_ = prepopulated; | 1484 new_tab_url_ref_.prepopulated_ = prepopulated; |
| 1495 contextual_search_url_ref_.prepopulated_ = prepopulated; | 1485 contextual_search_url_ref_.prepopulated_ = prepopulated; |
| 1496 } | 1486 } |
| 1497 | 1487 |
| 1498 void TemplateURL::ResetKeywordIfNecessary( | 1488 void TemplateURL::ResetKeywordIfNecessary( |
| 1499 const SearchTermsData& search_terms_data, | 1489 const SearchTermsData& search_terms_data, |
| 1500 bool force) { | 1490 bool force) { |
| 1501 if (IsGoogleSearchURLWithReplaceableKeyword(search_terms_data) || force) { | 1491 if (IsGoogleSearchURLWithReplaceableKeyword(search_terms_data) || force) { |
| 1502 DCHECK(GetType() != OMNIBOX_API_EXTENSION); | 1492 DCHECK_NE(OMNIBOX_API_EXTENSION, type_); |
| 1503 GURL url(GenerateSearchURL(search_terms_data)); | 1493 GURL url(GenerateSearchURL(search_terms_data)); |
| 1504 if (url.is_valid()) | 1494 if (url.is_valid()) |
| 1505 data_.SetKeyword(GenerateKeyword(url)); | 1495 data_.SetKeyword(GenerateKeyword(url)); |
| 1506 } | 1496 } |
| 1507 } | 1497 } |
| 1508 | 1498 |
| 1509 void TemplateURL::InvalidateCachedValues() const { | 1499 void TemplateURL::InvalidateCachedValues() const { |
| 1510 for (const TemplateURLRef& ref : url_refs_) | 1500 for (const TemplateURLRef& ref : url_refs_) |
| 1511 ref.InvalidateCachedValues(); | 1501 ref.InvalidateCachedValues(); |
| 1512 suggestions_url_ref_.InvalidateCachedValues(); | 1502 suggestions_url_ref_.InvalidateCachedValues(); |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1550 // patterns. This means that given patterns | 1540 // patterns. This means that given patterns |
| 1551 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], | 1541 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], |
| 1552 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would | 1542 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would |
| 1553 // return false. This is important for at least Google, where such URLs | 1543 // return false. This is important for at least Google, where such URLs |
| 1554 // are invalid. | 1544 // are invalid. |
| 1555 return !search_terms->empty(); | 1545 return !search_terms->empty(); |
| 1556 } | 1546 } |
| 1557 } | 1547 } |
| 1558 return false; | 1548 return false; |
| 1559 } | 1549 } |
| OLD | NEW |