Chromium Code Reviews| Index: chrome/browser/search_engines/template_url.cc |
| diff --git a/chrome/browser/search_engines/template_url.cc b/chrome/browser/search_engines/template_url.cc |
| index 96c68ebed9c6d9561e0e23fb7684f2108ae902a6..67a850694fce53bd3be4028f2414b35bae5bdc8f 100644 |
| --- a/chrome/browser/search_engines/template_url.cc |
| +++ b/chrome/browser/search_engines/template_url.cc |
| @@ -103,6 +103,14 @@ const char kGoogleImageURLParameter[] = "google:imageURL"; |
| const char kGoogleImageOriginalWidth[] = "google:imageOriginalWidth"; |
| const char kGoogleImageOriginalHeight[] = "google:imageOriginalHeight"; |
| +// Contextual search parameters. |
| +const char kGoogleContextualSearchVersion[] = "google:contextualSearchVersion"; |
| +const char kGoogleContextualSearchStart[] = "google:contextualSearchStart"; |
| +const char kGoogleContextualSearchEnd[] = "google:contextualSearchEnd"; |
| +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.
|
| +const char kGoogleContextualSearchEncoding[] = |
| + "google:contextualSearchEncoding"; |
| + |
| // Display value for kSearchTermsParameter. |
| const char kDisplaySearchTerms[] = "%s"; |
| @@ -205,6 +213,9 @@ TemplateURLRef::SearchTermsArgs::SearchTermsArgs( |
| accepted_suggestion(NO_SUGGESTIONS_AVAILABLE), |
| cursor_position(base::string16::npos), |
| omnibox_start_margin(-1), |
| + contextual_search_version(-1), |
| + contextual_search_start(-1), |
| + contextual_search_end(-1), |
| page_classification(AutocompleteInput::INVALID_SPEC), |
| bookmark_bar_pinned(false), |
| append_extra_query_params(false), |
| @@ -251,24 +262,26 @@ TemplateURLRef::~TemplateURLRef() { |
| std::string TemplateURLRef::GetURL() const { |
| switch (type_) { |
| - case SEARCH: return owner_->url(); |
| - case SUGGEST: return owner_->suggestions_url(); |
| - case INSTANT: return owner_->instant_url(); |
| - case IMAGE: return owner_->image_url(); |
| - case NEW_TAB: return owner_->new_tab_url(); |
| - case INDEXED: return owner_->GetURL(index_in_owner_); |
| - default: NOTREACHED(); return std::string(); // NOLINT |
| + case SEARCH: return owner_->url(); |
| + case SUGGEST: return owner_->suggestions_url(); |
| + case INSTANT: return owner_->instant_url(); |
| + case IMAGE: return owner_->image_url(); |
| + case NEW_TAB: return owner_->new_tab_url(); |
| + case CONTEXTUAL_SEARCH: return owner_->contextual_search_url(); |
| + case INDEXED: return owner_->GetURL(index_in_owner_); |
| + default: NOTREACHED(); return std::string(); // NOLINT |
| } |
| } |
| std::string TemplateURLRef::GetPostParamsString() const { |
| switch (type_) { |
| case INDEXED: |
| - case SEARCH: return owner_->search_url_post_params(); |
| - case SUGGEST: return owner_->suggestions_url_post_params(); |
| - case INSTANT: return owner_->instant_url_post_params(); |
| - case NEW_TAB: return std::string(); |
| - case IMAGE: return owner_->image_url_post_params(); |
| + case SEARCH: return owner_->search_url_post_params(); |
| + case SUGGEST: return owner_->suggestions_url_post_params(); |
| + case INSTANT: return owner_->instant_url_post_params(); |
| + case NEW_TAB: return std::string(); |
| + case CONTEXTUAL_SEARCH: return std::string(); |
| + case IMAGE: return owner_->image_url_post_params(); |
| default: NOTREACHED(); return std::string(); // NOLINT |
| } |
| } |
| @@ -592,6 +605,21 @@ bool TemplateURLRef::ParseParameter(size_t start, |
| replacements->push_back(Replacement(GOOGLE_NTP_IS_THEMED, start)); |
| } else if (parameter == kGoogleOmniboxStartMarginParameter) { |
| replacements->push_back(Replacement(GOOGLE_OMNIBOX_START_MARGIN, start)); |
| + } else if (parameter == kGoogleContextualSearchVersion) { |
| + replacements->push_back( |
| + Replacement(GOOGLE_CONTEXTUAL_SEARCH_VERSION, start)); |
| + } else if (parameter == kGoogleContextualSearchStart) { |
| + replacements->push_back( |
| + Replacement(GOOGLE_CONTEXTUAL_SEARCH_START, start)); |
| + } else if (parameter == kGoogleContextualSearchEnd) { |
| + replacements->push_back( |
| + Replacement(GOOGLE_CONTEXTUAL_SEARCH_END, start)); |
| + } else if (parameter == kGoogleContextualSearchContent) { |
| + replacements->push_back( |
| + Replacement(GOOGLE_CONTEXTUAL_SEARCH_CONTENT, start)); |
| + } else if (parameter == kGoogleContextualSearchEncoding) { |
| + replacements->push_back( |
| + Replacement(GOOGLE_CONTEXTUAL_SEARCH_ENCODING, start)); |
| } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) { |
| replacements->push_back(Replacement(GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION, |
| start)); |
| @@ -928,6 +956,56 @@ std::string TemplateURLRef::HandleReplacements( |
| } |
| break; |
| + case GOOGLE_CONTEXTUAL_SEARCH_VERSION: |
| + DCHECK(!i->is_post_param); |
| + if (search_terms_args.contextual_search_version >= 0) { |
| + HandleReplacement( |
| + "ctxs", |
| + base::IntToString(search_terms_args.contextual_search_version), |
| + *i, |
| + &url); |
| + } |
| + break; |
| + |
| + case GOOGLE_CONTEXTUAL_SEARCH_START: |
| + DCHECK(!i->is_post_param); |
| + if (search_terms_args.contextual_search_start >= 0) { |
| + HandleReplacement( |
| + "ctxs_start", |
| + base::IntToString(search_terms_args.contextual_search_start), |
| + *i, |
| + &url); |
| + } |
| + break; |
| + |
| + case GOOGLE_CONTEXTUAL_SEARCH_END: |
| + DCHECK(!i->is_post_param); |
| + if (search_terms_args.contextual_search_end >= 0) { |
| + HandleReplacement( |
| + "ctxs_end", |
| + base::IntToString(search_terms_args.contextual_search_end), |
| + *i, |
| + &url); |
| + } |
| + break; |
| + |
| + case GOOGLE_CONTEXTUAL_SEARCH_CONTENT: { |
| + DCHECK(!i->is_post_param); |
| + const std::string content = search_terms_args.contextual_search_content; |
| + if (!content.empty()) |
| + HandleReplacement("ctxs_content", content, *i, &url); |
| + break; |
| + } |
| + |
| + case GOOGLE_CONTEXTUAL_SEARCH_ENCODING: { |
| + DCHECK(!i->is_post_param); |
| + const std::string encoding = |
| + search_terms_args.contextual_search_encoding; |
| + if (!encoding.empty()) |
| + HandleReplacement("ctxs_encoding", encoding, *i, &url); |
| + break; |
| + } |
| + |
| case GOOGLE_ORIGINAL_QUERY_FOR_SUGGESTION: |
| DCHECK(!i->is_post_param); |
| if (search_terms_args.accepted_suggestion >= 0 || |
| @@ -1099,7 +1177,8 @@ TemplateURL::TemplateURL(Profile* profile, const TemplateURLData& data) |
| instant_url_ref_(this, |
| TemplateURLRef::INSTANT), |
| image_url_ref_(this, TemplateURLRef::IMAGE), |
| - new_tab_url_ref_(this, TemplateURLRef::NEW_TAB) { |
| + new_tab_url_ref_(this, TemplateURLRef::NEW_TAB), |
| + contextual_search_url_ref_(this, TemplateURLRef::CONTEXTUAL_SEARCH) { |
| SetPrepopulateId(data_.prepopulate_id); |
| if (data_.search_terms_replacement_key == |