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

Side by Side Diff: components/search_engines/template_url.cc

Issue 939713003: Enabled the "search web for image" context menu item when "Yandex" (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: The last arg of ExpectPostParamIs got a default value; the version number increased. Created 5 years, 10 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 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/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
316 // boundary delimiter line. Uses random number generator here to create 316 // boundary delimiter line. Uses random number generator here to create
317 // a unique boundary delimiter for form data encoding. 317 // a unique boundary delimiter for form data encoding.
318 std::string boundary = base::StringPrintf(kMultipartBoundary, 318 std::string boundary = base::StringPrintf(kMultipartBoundary,
319 base::RandUint64()); 319 base::RandUint64());
320 // Sets the content MIME type. 320 // Sets the content MIME type.
321 post_content->first = kUploadDataMIMEType; 321 post_content->first = kUploadDataMIMEType;
322 post_content->first += boundary; 322 post_content->first += boundary;
323 // Encodes the post parameters. 323 // Encodes the post parameters.
324 std::string* post_data = &post_content->second; 324 std::string* post_data = &post_content->second;
325 post_data->clear(); 325 post_data->clear();
326 for (PostParams::const_iterator param = post_params.begin(); 326 for (const auto& param : post_params) {
327 param != post_params.end(); ++param) { 327 DCHECK(!param.name.empty());
328 DCHECK(!param->first.empty()); 328 net::AddMultipartValueForUpload(param.name, param.value, boundary,
329 net::AddMultipartValueForUpload(param->first, param->second, boundary, 329 param.content_type, post_data);
330 std::string(), post_data);
331 } 330 }
332 net::AddMultipartFinalDelimiterForUpload(boundary, post_data); 331 net::AddMultipartFinalDelimiterForUpload(boundary, post_data);
333 return true; 332 return true;
334 } 333 }
335 334
336 bool TemplateURLRef::SupportsReplacement( 335 bool TemplateURLRef::SupportsReplacement(
337 const SearchTermsData& search_terms_data) const { 336 const SearchTermsData& search_terms_data) const {
338 ParseIfNecessary(search_terms_data); 337 ParseIfNecessary(search_terms_data);
339 return valid_ && supports_replacements_; 338 return valid_ && supports_replacements_;
340 } 339 }
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 Strings parts; 706 Strings parts;
708 // The '=' delimiter is required and the name must be not empty. 707 // The '=' delimiter is required and the name must be not empty.
709 base::SplitString(*iterator, '=', &parts); 708 base::SplitString(*iterator, '=', &parts);
710 if ((parts.size() != 2U) || parts[0].empty()) 709 if ((parts.size() != 2U) || parts[0].empty())
711 return std::string(); 710 return std::string();
712 711
713 std::string& value = parts[1]; 712 std::string& value = parts[1];
714 size_t replacements_size = replacements->size(); 713 size_t replacements_size = replacements->size();
715 if (IsTemplateParameterString(value)) 714 if (IsTemplateParameterString(value))
716 ParseParameter(0, value.length() - 1, &value, replacements); 715 ParseParameter(0, value.length() - 1, &value, replacements);
717 post_params->push_back(std::make_pair(parts[0], value)); 716 PostParam param = { parts[0], value };
717 post_params->push_back(param);
718 // If there was a replacement added, points its index to last added 718 // If there was a replacement added, points its index to last added
719 // PostParam. 719 // PostParam.
720 if (replacements->size() > replacements_size) { 720 if (replacements->size() > replacements_size) {
721 DCHECK_EQ(replacements_size + 1, replacements->size()); 721 DCHECK_EQ(replacements_size + 1, replacements->size());
722 Replacement* r = &replacements->back(); 722 Replacement* r = &replacements->back();
723 r->is_post_param = true; 723 r->is_post_param = true;
724 r->index = post_params->size() - 1; 724 r->index = post_params->size() - 1;
725 } 725 }
726 } 726 }
727 DCHECK(!post_params->empty()); 727 DCHECK(!post_params->empty());
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
790 path_ = url.path(); 790 path_ = url.path();
791 } 791 }
792 792
793 void TemplateURLRef::HandleReplacement(const std::string& name, 793 void TemplateURLRef::HandleReplacement(const std::string& name,
794 const std::string& value, 794 const std::string& value,
795 const Replacement& replacement, 795 const Replacement& replacement,
796 std::string* url) const { 796 std::string* url) const {
797 size_t pos = replacement.index; 797 size_t pos = replacement.index;
798 if (replacement.is_post_param) { 798 if (replacement.is_post_param) {
799 DCHECK_LT(pos, post_params_.size()); 799 DCHECK_LT(pos, post_params_.size());
800 DCHECK(!post_params_[pos].first.empty()); 800 DCHECK(!post_params_[pos].name.empty());
801 post_params_[pos].second = value; 801 post_params_[pos].value = value;
802 } else { 802 } else {
803 url->insert(pos, name.empty() ? value : (name + "=" + value + "&")); 803 url->insert(pos, name.empty() ? value : (name + "=" + value + "&"));
804 } 804 }
805 } 805 }
806 806
807 std::string TemplateURLRef::HandleReplacements( 807 std::string TemplateURLRef::HandleReplacements(
808 const SearchTermsArgs& search_terms_args, 808 const SearchTermsArgs& search_terms_args,
809 const SearchTermsData& search_terms_data, 809 const SearchTermsData& search_terms_data,
810 PostContent* post_content) const { 810 PostContent* post_content) const {
811 if (replacements_.empty()) { 811 if (replacements_.empty()) {
(...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after
1090 break; 1090 break;
1091 1091
1092 case SEARCH_TERMS: 1092 case SEARCH_TERMS:
1093 HandleReplacement( 1093 HandleReplacement(
1094 std::string(), base::UTF16ToUTF8(encoded_terms), *i, &url); 1094 std::string(), base::UTF16ToUTF8(encoded_terms), *i, &url);
1095 break; 1095 break;
1096 1096
1097 case GOOGLE_IMAGE_THUMBNAIL: 1097 case GOOGLE_IMAGE_THUMBNAIL:
1098 HandleReplacement( 1098 HandleReplacement(
1099 std::string(), search_terms_args.image_thumbnail_content, *i, &url); 1099 std::string(), search_terms_args.image_thumbnail_content, *i, &url);
1100 post_params_[i->index].content_type = "image/jpeg";
1100 break; 1101 break;
1101 1102
1102 case GOOGLE_IMAGE_URL: 1103 case GOOGLE_IMAGE_URL:
1103 if (search_terms_args.image_url.is_valid()) { 1104 if (search_terms_args.image_url.is_valid()) {
1104 HandleReplacement( 1105 HandleReplacement(
1105 std::string(), search_terms_args.image_url.spec(), *i, &url); 1106 std::string(), search_terms_args.image_url.spec(), *i, &url);
1106 } 1107 }
1107 break; 1108 break;
1108 1109
1109 case GOOGLE_IMAGE_ORIGINAL_WIDTH: 1110 case GOOGLE_IMAGE_ORIGINAL_WIDTH:
(...skipping 355 matching lines...) Expand 10 before | Expand all | Expand 10 after
1465 // patterns. This means that given patterns 1466 // patterns. This means that given patterns
1466 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], 1467 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ],
1467 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would 1468 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would
1468 // return false. This is important for at least Google, where such URLs 1469 // return false. This is important for at least Google, where such URLs
1469 // are invalid. 1470 // are invalid.
1470 return !search_terms->empty(); 1471 return !search_terms->empty();
1471 } 1472 }
1472 } 1473 }
1473 return false; 1474 return false;
1474 } 1475 }
OLDNEW
« no previous file with comments | « components/search_engines/template_url.h ('k') | components/search_engines/template_url_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698