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

Side by Side Diff: chrome/browser/search_engines/template_url.cc

Issue 308053009: Add contextual search to the template url system (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Patch 1 Created 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/search_engines/template_url.h" 5 #include "chrome/browser/search_engines/template_url.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 "google:unescapedSearchTerms"; 96 "google:unescapedSearchTerms";
97 const char kGoogleUnescapedSearchTermsParameterFull[] = 97 const char kGoogleUnescapedSearchTermsParameterFull[] =
98 "{google:unescapedSearchTerms}"; 98 "{google:unescapedSearchTerms}";
99 99
100 const char kGoogleImageSearchSource[] = "google:imageSearchSource"; 100 const char kGoogleImageSearchSource[] = "google:imageSearchSource";
101 const char kGoogleImageThumbnailParameter[] = "google:imageThumbnail"; 101 const char kGoogleImageThumbnailParameter[] = "google:imageThumbnail";
102 const char kGoogleImageURLParameter[] = "google:imageURL"; 102 const char kGoogleImageURLParameter[] = "google:imageURL";
103 const char kGoogleImageOriginalWidth[] = "google:imageOriginalWidth"; 103 const char kGoogleImageOriginalWidth[] = "google:imageOriginalWidth";
104 const char kGoogleImageOriginalHeight[] = "google:imageOriginalHeight"; 104 const char kGoogleImageOriginalHeight[] = "google:imageOriginalHeight";
105 105
106 // Contextual search parameters.
107 const char kGoogleContextualSearchVersion[] = "google:contextualSearchVersion";
108 const char kGoogleContextualSearchStart[] = "google:contextualSearchStart";
109 const char kGoogleContextualSearchEnd[] = "google:contextualSearchEnd";
110 const char kGoogleContextualSearchContent[] = "google:contextualSearchContent";
donnd 2014/06/02 18:09:46 Add the contextualSearchUrl here too.
jeremycho 2014/06/02 21:24:08 Done.
111 const char kGoogleContextualSearchEncoding[] =
112 "google:contextualSearchEncoding";
113
106 // Display value for kSearchTermsParameter. 114 // Display value for kSearchTermsParameter.
107 const char kDisplaySearchTerms[] = "%s"; 115 const char kDisplaySearchTerms[] = "%s";
108 116
109 // Display value for kGoogleUnescapedSearchTermsParameter. 117 // Display value for kGoogleUnescapedSearchTermsParameter.
110 const char kDisplayUnescapedSearchTerms[] = "%S"; 118 const char kDisplayUnescapedSearchTerms[] = "%S";
111 119
112 // Used if the count parameter is not optional. Indicates we want 10 search 120 // Used if the count parameter is not optional. Indicates we want 10 search
113 // results. 121 // results.
114 const char kDefaultCount[] = "10"; 122 const char kDefaultCount[] = "10";
115 123
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 206
199 207
200 // TemplateURLRef::SearchTermsArgs -------------------------------------------- 208 // TemplateURLRef::SearchTermsArgs --------------------------------------------
201 209
202 TemplateURLRef::SearchTermsArgs::SearchTermsArgs( 210 TemplateURLRef::SearchTermsArgs::SearchTermsArgs(
203 const base::string16& search_terms) 211 const base::string16& search_terms)
204 : search_terms(search_terms), 212 : search_terms(search_terms),
205 accepted_suggestion(NO_SUGGESTIONS_AVAILABLE), 213 accepted_suggestion(NO_SUGGESTIONS_AVAILABLE),
206 cursor_position(base::string16::npos), 214 cursor_position(base::string16::npos),
207 omnibox_start_margin(-1), 215 omnibox_start_margin(-1),
216 contextual_search_version(-1),
217 contextual_search_start(-1),
218 contextual_search_end(-1),
208 page_classification(AutocompleteInput::INVALID_SPEC), 219 page_classification(AutocompleteInput::INVALID_SPEC),
209 bookmark_bar_pinned(false), 220 bookmark_bar_pinned(false),
210 append_extra_query_params(false), 221 append_extra_query_params(false),
211 force_instant_results(false), 222 force_instant_results(false),
212 from_app_list(false) { 223 from_app_list(false) {
213 } 224 }
214 225
215 TemplateURLRef::SearchTermsArgs::~SearchTermsArgs() { 226 TemplateURLRef::SearchTermsArgs::~SearchTermsArgs() {
216 } 227 }
217 228
(...skipping 26 matching lines...) Expand all
244 showing_search_terms_(ShowingSearchTermsOnSRP()) { 255 showing_search_terms_(ShowingSearchTermsOnSRP()) {
245 DCHECK(owner_); 256 DCHECK(owner_);
246 DCHECK_LT(index_in_owner_, owner_->URLCount()); 257 DCHECK_LT(index_in_owner_, owner_->URLCount());
247 } 258 }
248 259
249 TemplateURLRef::~TemplateURLRef() { 260 TemplateURLRef::~TemplateURLRef() {
250 } 261 }
251 262
252 std::string TemplateURLRef::GetURL() const { 263 std::string TemplateURLRef::GetURL() const {
253 switch (type_) { 264 switch (type_) {
254 case SEARCH: return owner_->url(); 265 case SEARCH: return owner_->url();
255 case SUGGEST: return owner_->suggestions_url(); 266 case SUGGEST: return owner_->suggestions_url();
256 case INSTANT: return owner_->instant_url(); 267 case INSTANT: return owner_->instant_url();
257 case IMAGE: return owner_->image_url(); 268 case IMAGE: return owner_->image_url();
258 case NEW_TAB: return owner_->new_tab_url(); 269 case NEW_TAB: return owner_->new_tab_url();
259 case INDEXED: return owner_->GetURL(index_in_owner_); 270 case CONTEXTUAL_SEARCH: return owner_->contextual_search_url();
260 default: NOTREACHED(); return std::string(); // NOLINT 271 case INDEXED: return owner_->GetURL(index_in_owner_);
272 default: NOTREACHED(); return std::string(); // NOLINT
261 } 273 }
262 } 274 }
263 275
264 std::string TemplateURLRef::GetPostParamsString() const { 276 std::string TemplateURLRef::GetPostParamsString() const {
265 switch (type_) { 277 switch (type_) {
266 case INDEXED: 278 case INDEXED:
267 case SEARCH: return owner_->search_url_post_params(); 279 case SEARCH: return owner_->search_url_post_params();
268 case SUGGEST: return owner_->suggestions_url_post_params(); 280 case SUGGEST: return owner_->suggestions_url_post_params();
269 case INSTANT: return owner_->instant_url_post_params(); 281 case INSTANT: return owner_->instant_url_post_params();
270 case NEW_TAB: return std::string(); 282 case NEW_TAB: return std::string();
271 case IMAGE: return owner_->image_url_post_params(); 283 case CONTEXTUAL_SEARCH: return std::string();
284 case IMAGE: return owner_->image_url_post_params();
272 default: NOTREACHED(); return std::string(); // NOLINT 285 default: NOTREACHED(); return std::string(); // NOLINT
273 } 286 }
274 } 287 }
275 288
276 bool TemplateURLRef::UsesPOSTMethodUsingTermsData( 289 bool TemplateURLRef::UsesPOSTMethodUsingTermsData(
277 const SearchTermsData* search_terms_data) const { 290 const SearchTermsData* search_terms_data) const {
278 if (search_terms_data) 291 if (search_terms_data)
279 ParseIfNecessaryUsingTermsData(*search_terms_data); 292 ParseIfNecessaryUsingTermsData(*search_terms_data);
280 else 293 else
281 ParseIfNecessary(); 294 ParseIfNecessary();
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 replacements->push_back(Replacement(GOOGLE_FORCE_INSTANT_RESULTS, start)); 598 replacements->push_back(Replacement(GOOGLE_FORCE_INSTANT_RESULTS, start));
586 } else if (parameter == kGoogleInstantExtendedEnabledParameter) { 599 } else if (parameter == kGoogleInstantExtendedEnabledParameter) {
587 replacements->push_back(Replacement(GOOGLE_INSTANT_EXTENDED_ENABLED, 600 replacements->push_back(Replacement(GOOGLE_INSTANT_EXTENDED_ENABLED,
588 start)); 601 start));
589 } else if (parameter == kGoogleInstantExtendedEnabledKey) { 602 } else if (parameter == kGoogleInstantExtendedEnabledKey) {
590 url->insert(start, google_util::kInstantExtendedAPIParam); 603 url->insert(start, google_util::kInstantExtendedAPIParam);
591 } else if (parameter == kGoogleNTPIsThemedParameter) { 604 } else if (parameter == kGoogleNTPIsThemedParameter) {
592 replacements->push_back(Replacement(GOOGLE_NTP_IS_THEMED, start)); 605 replacements->push_back(Replacement(GOOGLE_NTP_IS_THEMED, start));
593 } else if (parameter == kGoogleOmniboxStartMarginParameter) { 606 } else if (parameter == kGoogleOmniboxStartMarginParameter) {
594 replacements->push_back(Replacement(GOOGLE_OMNIBOX_START_MARGIN, start)); 607 replacements->push_back(Replacement(GOOGLE_OMNIBOX_START_MARGIN, start));
608 } else if (parameter == kGoogleContextualSearchVersion) {
609 replacements->push_back(
610 Replacement(GOOGLE_CONTEXTUAL_SEARCH_VERSION, start));
611 } else if (parameter == kGoogleContextualSearchStart) {
612 replacements->push_back(
613 Replacement(GOOGLE_CONTEXTUAL_SEARCH_START, start));
614 } else if (parameter == kGoogleContextualSearchEnd) {
615 replacements->push_back(
616 Replacement(GOOGLE_CONTEXTUAL_SEARCH_END, start));
617 } else if (parameter == kGoogleContextualSearchContent) {
618 replacements->push_back(
619 Replacement(GOOGLE_CONTEXTUAL_SEARCH_CONTENT, start));
620 } else if (parameter == kGoogleContextualSearchEncoding) {
621 replacements->push_back(
622 Replacement(GOOGLE_CONTEXTUAL_SEARCH_ENCODING, start));
595 } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) { 623 } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) {
596 replacements->push_back(Replacement(GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION, 624 replacements->push_back(Replacement(GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION,
597 start)); 625 start));
598 } else if (parameter == kGooglePageClassificationParameter) { 626 } else if (parameter == kGooglePageClassificationParameter) {
599 replacements->push_back(Replacement(GOOGLE_PAGE_CLASSIFICATION, start)); 627 replacements->push_back(Replacement(GOOGLE_PAGE_CLASSIFICATION, start));
600 } else if (parameter == kGoogleRLZParameter) { 628 } else if (parameter == kGoogleRLZParameter) {
601 replacements->push_back(Replacement(GOOGLE_RLZ, start)); 629 replacements->push_back(Replacement(GOOGLE_RLZ, start));
602 } else if (parameter == kGoogleSearchClient) { 630 } else if (parameter == kGoogleSearchClient) {
603 replacements->push_back(Replacement(GOOGLE_SEARCH_CLIENT, start)); 631 replacements->push_back(Replacement(GOOGLE_SEARCH_CLIENT, start));
604 } else if (parameter == kGoogleSearchFieldtrialParameter) { 632 } else if (parameter == kGoogleSearchFieldtrialParameter) {
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 DCHECK(!i->is_post_param); 949 DCHECK(!i->is_post_param);
922 if (search_terms_args.omnibox_start_margin >= 0) { 950 if (search_terms_args.omnibox_start_margin >= 0) {
923 HandleReplacement( 951 HandleReplacement(
924 "es_sm", 952 "es_sm",
925 base::IntToString(search_terms_args.omnibox_start_margin), 953 base::IntToString(search_terms_args.omnibox_start_margin),
926 *i, 954 *i,
927 &url); 955 &url);
928 } 956 }
929 break; 957 break;
930 958
959 case GOOGLE_CONTEXTUAL_SEARCH_VERSION:
960 DCHECK(!i->is_post_param);
961 if (search_terms_args.contextual_search_version >= 0) {
962 HandleReplacement(
963 "ctxs",
964 base::IntToString(search_terms_args.contextual_search_version),
965 *i,
966 &url);
967 }
968 break;
969
970 case GOOGLE_CONTEXTUAL_SEARCH_START:
971 DCHECK(!i->is_post_param);
972 if (search_terms_args.contextual_search_start >= 0) {
973 HandleReplacement(
974 "ctxs_start",
975 base::IntToString(search_terms_args.contextual_search_start),
976 *i,
977 &url);
978 }
979 break;
980
981 case GOOGLE_CONTEXTUAL_SEARCH_END:
982 DCHECK(!i->is_post_param);
983 if (search_terms_args.contextual_search_end >= 0) {
984 HandleReplacement(
985 "ctxs_end",
986 base::IntToString(search_terms_args.contextual_search_end),
987 *i,
988 &url);
989 }
990 break;
991
992 case GOOGLE_CONTEXTUAL_SEARCH_CONTENT: {
993 DCHECK(!i->is_post_param);
994 const std::string content = search_terms_args.contextual_search_content;
995 if (!content.empty())
996 HandleReplacement("ctxs_content", content, *i, &url);
997 break;
998 }
999
1000 case GOOGLE_CONTEXTUAL_SEARCH_ENCODING: {
1001 DCHECK(!i->is_post_param);
1002 const std::string encoding =
1003 search_terms_args.contextual_search_encoding;
1004 if (!encoding.empty())
1005 HandleReplacement("ctxs_encoding", encoding, *i, &url);
1006 break;
1007 }
1008
931 case GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION: 1009 case GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION:
932 DCHECK(!i->is_post_param); 1010 DCHECK(!i->is_post_param);
933 if (search_terms_args.accepted_suggestion >= 0 || 1011 if (search_terms_args.accepted_suggestion >= 0 ||
934 !search_terms_args.assisted_query_stats.empty()) { 1012 !search_terms_args.assisted_query_stats.empty()) {
935 HandleReplacement( 1013 HandleReplacement(
936 "oq", base::UTF16ToUTF8(encoded_original_query), *i, &url); 1014 "oq", base::UTF16ToUTF8(encoded_original_query), *i, &url);
937 } 1015 }
938 break; 1016 break;
939 1017
940 case GOOGLE_PAGE_CLASSIFICATION: 1018 case GOOGLE_PAGE_CLASSIFICATION:
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 1170
1093 TemplateURL::TemplateURL(Profile* profile, const TemplateURLData& data) 1171 TemplateURL::TemplateURL(Profile* profile, const TemplateURLData& data)
1094 : profile_(profile), 1172 : profile_(profile),
1095 data_(data), 1173 data_(data),
1096 url_ref_(this, TemplateURLRef::SEARCH), 1174 url_ref_(this, TemplateURLRef::SEARCH),
1097 suggestions_url_ref_(this, 1175 suggestions_url_ref_(this,
1098 TemplateURLRef::SUGGEST), 1176 TemplateURLRef::SUGGEST),
1099 instant_url_ref_(this, 1177 instant_url_ref_(this,
1100 TemplateURLRef::INSTANT), 1178 TemplateURLRef::INSTANT),
1101 image_url_ref_(this, TemplateURLRef::IMAGE), 1179 image_url_ref_(this, TemplateURLRef::IMAGE),
1102 new_tab_url_ref_(this, TemplateURLRef::NEW_TAB) { 1180 new_tab_url_ref_(this, TemplateURLRef::NEW_TAB),
1181 contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH) {
1103 SetPrepopulateId(data_.prepopulate_id); 1182 SetPrepopulateId(data_.prepopulate_id);
1104 1183
1105 if (data_.search_terms_replacement_key == 1184 if (data_.search_terms_replacement_key ==
1106 kGoogleInstantExtendedEnabledKeyFull) { 1185 kGoogleInstantExtendedEnabledKeyFull) {
1107 data_.search_terms_replacement_key = google_util::kInstantExtendedAPIParam; 1186 data_.search_terms_replacement_key = google_util::kInstantExtendedAPIParam;
1108 } 1187 }
1109 } 1188 }
1110 1189
1111 TemplateURL::~TemplateURL() { 1190 TemplateURL::~TemplateURL() {
1112 } 1191 }
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 // patterns. This means that given patterns 1459 // patterns. This means that given patterns
1381 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], 1460 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ],
1382 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would 1461 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would
1383 // return false. This is important for at least Google, where such URLs 1462 // return false. This is important for at least Google, where such URLs
1384 // are invalid. 1463 // are invalid.
1385 return !search_terms->empty(); 1464 return !search_terms->empty();
1386 } 1465 }
1387 } 1466 }
1388 return false; 1467 return false;
1389 } 1468 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698