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

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: Respond to comments and make contextual search /search requests accessible from Java. 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";
111 const char kGoogleContextualSearchBasePageURL[] =
112 "google:contextualSearchBasePageURL";
113 const char kGoogleContextualSearchEncoding[] =
114 "google:contextualSearchEncoding";
115
106 // Display value for kSearchTermsParameter. 116 // Display value for kSearchTermsParameter.
107 const char kDisplaySearchTerms[] = "%s"; 117 const char kDisplaySearchTerms[] = "%s";
108 118
109 // Display value for kGoogleUnescapedSearchTermsParameter. 119 // Display value for kGoogleUnescapedSearchTermsParameter.
110 const char kDisplayUnescapedSearchTerms[] = "%S"; 120 const char kDisplayUnescapedSearchTerms[] = "%S";
111 121
112 // Used if the count parameter is not optional. Indicates we want 10 search 122 // Used if the count parameter is not optional. Indicates we want 10 search
113 // results. 123 // results.
114 const char kDefaultCount[] = "10"; 124 const char kDefaultCount[] = "10";
115 125
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 TemplateURLRef::SearchTermsArgs::SearchTermsArgs( 212 TemplateURLRef::SearchTermsArgs::SearchTermsArgs(
203 const base::string16& search_terms) 213 const base::string16& search_terms)
204 : search_terms(search_terms), 214 : search_terms(search_terms),
205 accepted_suggestion(NO_SUGGESTIONS_AVAILABLE), 215 accepted_suggestion(NO_SUGGESTIONS_AVAILABLE),
206 cursor_position(base::string16::npos), 216 cursor_position(base::string16::npos),
207 omnibox_start_margin(-1), 217 omnibox_start_margin(-1),
208 page_classification(AutocompleteInput::INVALID_SPEC), 218 page_classification(AutocompleteInput::INVALID_SPEC),
209 bookmark_bar_pinned(false), 219 bookmark_bar_pinned(false),
210 append_extra_query_params(false), 220 append_extra_query_params(false),
211 force_instant_results(false), 221 force_instant_results(false),
212 from_app_list(false) { 222 from_app_list(false),
223 contextual_search_params(ContextualSearchParams()){
213 } 224 }
214 225
215 TemplateURLRef::SearchTermsArgs::~SearchTermsArgs() { 226 TemplateURLRef::SearchTermsArgs::~SearchTermsArgs() {
216 } 227 }
217 228
218 229
219 // TemplateURLRef ------------------------------------------------------------- 230 // TemplateURLRef -------------------------------------------------------------
220 231
221 TemplateURLRef::TemplateURLRef(TemplateURL* owner, Type type) 232 TemplateURLRef::TemplateURLRef(TemplateURL* owner, Type type)
222 : owner_(owner), 233 : owner_(owner),
(...skipping 21 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 == kGoogleContextualSearchBasePageURL) {
621 replacements->push_back(
622 Replacement(GOOGLE_CONTEXTUAL_SEARCH_BASE_PAGE_URL, start));
623 } else if (parameter == kGoogleContextualSearchEncoding) {
624 replacements->push_back(
625 Replacement(GOOGLE_CONTEXTUAL_SEARCH_ENCODING, start));
595 } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) { 626 } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) {
596 replacements->push_back(Replacement(GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION, 627 replacements->push_back(Replacement(GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION,
597 start)); 628 start));
598 } else if (parameter == kGooglePageClassificationParameter) { 629 } else if (parameter == kGooglePageClassificationParameter) {
599 replacements->push_back(Replacement(GOOGLE_PAGE_CLASSIFICATION, start)); 630 replacements->push_back(Replacement(GOOGLE_PAGE_CLASSIFICATION, start));
600 } else if (parameter == kGoogleRLZParameter) { 631 } else if (parameter == kGoogleRLZParameter) {
601 replacements->push_back(Replacement(GOOGLE_RLZ, start)); 632 replacements->push_back(Replacement(GOOGLE_RLZ, start));
602 } else if (parameter == kGoogleSearchClient) { 633 } else if (parameter == kGoogleSearchClient) {
603 replacements->push_back(Replacement(GOOGLE_SEARCH_CLIENT, start)); 634 replacements->push_back(Replacement(GOOGLE_SEARCH_CLIENT, start));
604 } else if (parameter == kGoogleSearchFieldtrialParameter) { 635 } else if (parameter == kGoogleSearchFieldtrialParameter) {
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 DCHECK(!i->is_post_param); 952 DCHECK(!i->is_post_param);
922 if (search_terms_args.omnibox_start_margin >= 0) { 953 if (search_terms_args.omnibox_start_margin >= 0) {
923 HandleReplacement( 954 HandleReplacement(
924 "es_sm", 955 "es_sm",
925 base::IntToString(search_terms_args.omnibox_start_margin), 956 base::IntToString(search_terms_args.omnibox_start_margin),
926 *i, 957 *i,
927 &url); 958 &url);
928 } 959 }
929 break; 960 break;
930 961
962 case GOOGLE_CONTEXTUAL_SEARCH_VERSION:
963 if (search_terms_args.contextual_search_params.version >= 0) {
964 HandleReplacement(
965 "ctxs",
966 base::IntToString(
967 search_terms_args.contextual_search_params.version),
968 *i,
969 &url);
970 }
971 break;
972
973 case GOOGLE_CONTEXTUAL_SEARCH_START:
974 HandleReplacement(
975 std::string(),
976 base::IntToString(search_terms_args.contextual_search_params.start),
977 *i,
978 &url);
979 break;
980
981 case GOOGLE_CONTEXTUAL_SEARCH_END:
982 HandleReplacement(
983 std::string(),
984 base::IntToString(search_terms_args.contextual_search_params.end),
985 *i,
986 &url);
987 break;
988
989 case GOOGLE_CONTEXTUAL_SEARCH_CONTENT: {
990 HandleReplacement(
991 std::string(),
992 search_terms_args.contextual_search_params.content,
993 *i,
994 &url);
995 break;
996 }
997
998 case GOOGLE_CONTEXTUAL_SEARCH_BASE_PAGE_URL: {
999 const std::string base_page_url =
1000 search_terms_args.contextual_search_params.base_page_url;
1001 if (!base_page_url.empty())
1002 HandleReplacement("ctxs_url", base_page_url, *i, &url);
1003 break;
1004 }
1005
1006 case GOOGLE_CONTEXTUAL_SEARCH_ENCODING: {
1007 const std::string encoding =
1008 search_terms_args.contextual_search_params.encoding;
1009 if (!encoding.empty())
1010 HandleReplacement("ctxs_encoding", encoding, *i, &url);
1011 break;
1012 }
1013
931 case GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION: 1014 case GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION:
932 DCHECK(!i->is_post_param); 1015 DCHECK(!i->is_post_param);
933 if (search_terms_args.accepted_suggestion >= 0 || 1016 if (search_terms_args.accepted_suggestion >= 0 ||
934 !search_terms_args.assisted_query_stats.empty()) { 1017 !search_terms_args.assisted_query_stats.empty()) {
935 HandleReplacement( 1018 HandleReplacement(
936 "oq", base::UTF16ToUTF8(encoded_original_query), *i, &url); 1019 "oq", base::UTF16ToUTF8(encoded_original_query), *i, &url);
937 } 1020 }
938 break; 1021 break;
939 1022
940 case GOOGLE_PAGE_CLASSIFICATION: 1023 case GOOGLE_PAGE_CLASSIFICATION:
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
1092 1175
1093 TemplateURL::TemplateURL(Profile* profile, const TemplateURLData& data) 1176 TemplateURL::TemplateURL(Profile* profile, const TemplateURLData& data)
1094 : profile_(profile), 1177 : profile_(profile),
1095 data_(data), 1178 data_(data),
1096 url_ref_(this, TemplateURLRef::SEARCH), 1179 url_ref_(this, TemplateURLRef::SEARCH),
1097 suggestions_url_ref_(this, 1180 suggestions_url_ref_(this,
1098 TemplateURLRef::SUGGEST), 1181 TemplateURLRef::SUGGEST),
1099 instant_url_ref_(this, 1182 instant_url_ref_(this,
1100 TemplateURLRef::INSTANT), 1183 TemplateURLRef::INSTANT),
1101 image_url_ref_(this, TemplateURLRef::IMAGE), 1184 image_url_ref_(this, TemplateURLRef::IMAGE),
1102 new_tab_url_ref_(this, TemplateURLRef::NEW_TAB) { 1185 new_tab_url_ref_(this, TemplateURLRef::NEW_TAB),
1186 contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH) {
1103 SetPrepopulateId(data_.prepopulate_id); 1187 SetPrepopulateId(data_.prepopulate_id);
1104 1188
1105 if (data_.search_terms_replacement_key == 1189 if (data_.search_terms_replacement_key ==
1106 kGoogleInstantExtendedEnabledKeyFull) { 1190 kGoogleInstantExtendedEnabledKeyFull) {
1107 data_.search_terms_replacement_key = google_util::kInstantExtendedAPIParam; 1191 data_.search_terms_replacement_key = google_util::kInstantExtendedAPIParam;
1108 } 1192 }
1109 } 1193 }
1110 1194
1111 TemplateURL::~TemplateURL() { 1195 TemplateURL::~TemplateURL() {
1112 } 1196 }
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after
1380 // patterns. This means that given patterns 1464 // patterns. This means that given patterns
1381 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], 1465 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ],
1382 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would 1466 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would
1383 // return false. This is important for at least Google, where such URLs 1467 // return false. This is important for at least Google, where such URLs
1384 // are invalid. 1468 // are invalid.
1385 return !search_terms->empty(); 1469 return !search_terms->empty();
1386 } 1470 }
1387 } 1471 }
1388 return false; 1472 return false;
1389 } 1473 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698