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

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

Issue 23621037: Send URLs on non-zero prefix suggest requests also. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add NULL check to prevent test seg faults. Created 7 years, 1 month 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 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 const char kGoogleAssistedQueryStatsParameter[] = "google:assistedQueryStats"; 58 const char kGoogleAssistedQueryStatsParameter[] = "google:assistedQueryStats";
59 59
60 // Host/Domain Google searches are relative to. 60 // Host/Domain Google searches are relative to.
61 const char kGoogleBaseURLParameter[] = "google:baseURL"; 61 const char kGoogleBaseURLParameter[] = "google:baseURL";
62 const char kGoogleBaseURLParameterFull[] = "{google:baseURL}"; 62 const char kGoogleBaseURLParameterFull[] = "{google:baseURL}";
63 63
64 // Like google:baseURL, but for the Search Suggest capability. 64 // Like google:baseURL, but for the Search Suggest capability.
65 const char kGoogleBaseSuggestURLParameter[] = "google:baseSuggestURL"; 65 const char kGoogleBaseSuggestURLParameter[] = "google:baseSuggestURL";
66 const char kGoogleBaseSuggestURLParameterFull[] = "{google:baseSuggestURL}"; 66 const char kGoogleBaseSuggestURLParameterFull[] = "{google:baseSuggestURL}";
67 const char kGoogleBookmarkBarPinnedParameter[] = "google:bookmarkBarPinned"; 67 const char kGoogleBookmarkBarPinnedParameter[] = "google:bookmarkBarPinned";
68 const char kGoogleCurrentPageUrlParameter[] = "google:currentPageUrl";
68 const char kGoogleCursorPositionParameter[] = "google:cursorPosition"; 69 const char kGoogleCursorPositionParameter[] = "google:cursorPosition";
69 const char kGoogleForceInstantResultsParameter[] = "google:forceInstantResults"; 70 const char kGoogleForceInstantResultsParameter[] = "google:forceInstantResults";
70 const char kGoogleInstantExtendedEnabledParameter[] = 71 const char kGoogleInstantExtendedEnabledParameter[] =
71 "google:instantExtendedEnabledParameter"; 72 "google:instantExtendedEnabledParameter";
72 const char kGoogleInstantExtendedEnabledKey[] = 73 const char kGoogleInstantExtendedEnabledKey[] =
73 "google:instantExtendedEnabledKey"; 74 "google:instantExtendedEnabledKey";
74 const char kGoogleInstantExtendedEnabledKeyFull[] = 75 const char kGoogleInstantExtendedEnabledKeyFull[] =
75 "{google:instantExtendedEnabledKey}"; 76 "{google:instantExtendedEnabledKey}";
76 const char kGoogleNTPIsThemedParameter[] = "google:ntpIsThemedParameter"; 77 const char kGoogleNTPIsThemedParameter[] = "google:ntpIsThemedParameter";
77 const char kGoogleOmniboxStartMarginParameter[] = 78 const char kGoogleOmniboxStartMarginParameter[] =
78 "google:omniboxStartMarginParameter"; 79 "google:omniboxStartMarginParameter";
79 const char kGoogleOriginalQueryForSuggestionParameter[] = 80 const char kGoogleOriginalQueryForSuggestionParameter[] =
80 "google:originalQueryForSuggestion"; 81 "google:originalQueryForSuggestion";
81 const char kGooglePageClassificationParameter[] = "google:pageClassification"; 82 const char kGooglePageClassificationParameter[] = "google:pageClassification";
82 const char kGoogleRLZParameter[] = "google:RLZ"; 83 const char kGoogleRLZParameter[] = "google:RLZ";
83 const char kGoogleSearchClient[] = "google:searchClient"; 84 const char kGoogleSearchClient[] = "google:searchClient";
84 const char kGoogleSearchFieldtrialParameter[] = 85 const char kGoogleSearchFieldtrialParameter[] =
85 "google:searchFieldtrialParameter"; 86 "google:searchFieldtrialParameter";
86 const char kGoogleSourceIdParameter[] = "google:sourceId"; 87 const char kGoogleSourceIdParameter[] = "google:sourceId";
87 const char kGoogleSuggestAPIKeyParameter[] = "google:suggestAPIKeyParameter"; 88 const char kGoogleSuggestAPIKeyParameter[] = "google:suggestAPIKeyParameter";
88 const char kGoogleSuggestClient[] = "google:suggestClient"; 89 const char kGoogleSuggestClient[] = "google:suggestClient";
89 const char kGoogleZeroPrefixUrlParameter[] = "google:zeroPrefixUrl";
90 90
91 // Same as kSearchTermsParameter, with no escaping. 91 // Same as kSearchTermsParameter, with no escaping.
92 const char kGoogleUnescapedSearchTermsParameter[] = 92 const char kGoogleUnescapedSearchTermsParameter[] =
93 "google:unescapedSearchTerms"; 93 "google:unescapedSearchTerms";
94 const char kGoogleUnescapedSearchTermsParameterFull[] = 94 const char kGoogleUnescapedSearchTermsParameterFull[] =
95 "{google:unescapedSearchTerms}"; 95 "{google:unescapedSearchTerms}";
96 96
97 const char kGoogleImageSearchSource[] = "google:imageSearchSource"; 97 const char kGoogleImageSearchSource[] = "google:imageSearchSource";
98 const char kGoogleImageThumbnailParameter[] = "google:imageThumbnail"; 98 const char kGoogleImageThumbnailParameter[] = "google:imageThumbnail";
99 const char kGoogleImageURLParameter[] = "google:imageURL"; 99 const char kGoogleImageURLParameter[] = "google:imageURL";
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
552 if (!optional) 552 if (!optional)
553 url->insert(start, kDefaultCount); 553 url->insert(start, kDefaultCount);
554 } else if (parameter == kGoogleAssistedQueryStatsParameter) { 554 } else if (parameter == kGoogleAssistedQueryStatsParameter) {
555 replacements->push_back(Replacement(GOOGLE_ASSISTED_QUERY_STATS, start)); 555 replacements->push_back(Replacement(GOOGLE_ASSISTED_QUERY_STATS, start));
556 } else if (parameter == kGoogleBaseURLParameter) { 556 } else if (parameter == kGoogleBaseURLParameter) {
557 replacements->push_back(Replacement(GOOGLE_BASE_URL, start)); 557 replacements->push_back(Replacement(GOOGLE_BASE_URL, start));
558 } else if (parameter == kGoogleBaseSuggestURLParameter) { 558 } else if (parameter == kGoogleBaseSuggestURLParameter) {
559 replacements->push_back(Replacement(GOOGLE_BASE_SUGGEST_URL, start)); 559 replacements->push_back(Replacement(GOOGLE_BASE_SUGGEST_URL, start));
560 } else if (parameter == kGoogleBookmarkBarPinnedParameter) { 560 } else if (parameter == kGoogleBookmarkBarPinnedParameter) {
561 replacements->push_back(Replacement(GOOGLE_BOOKMARK_BAR_PINNED, start)); 561 replacements->push_back(Replacement(GOOGLE_BOOKMARK_BAR_PINNED, start));
562 } else if (parameter == kGoogleCurrentPageUrlParameter) {
563 replacements->push_back(Replacement(GOOGLE_CURRENT_PAGE_URL, start));
562 } else if (parameter == kGoogleCursorPositionParameter) { 564 } else if (parameter == kGoogleCursorPositionParameter) {
563 replacements->push_back(Replacement(GOOGLE_CURSOR_POSITION, start)); 565 replacements->push_back(Replacement(GOOGLE_CURSOR_POSITION, start));
564 } else if (parameter == kGoogleImageOriginalHeight) { 566 } else if (parameter == kGoogleImageOriginalHeight) {
565 replacements->push_back( 567 replacements->push_back(
566 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_HEIGHT, start)); 568 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_HEIGHT, start));
567 } else if (parameter == kGoogleImageOriginalWidth) { 569 } else if (parameter == kGoogleImageOriginalWidth) {
568 replacements->push_back( 570 replacements->push_back(
569 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_WIDTH, start)); 571 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_WIDTH, start));
570 } else if (parameter == kGoogleImageSearchSource) { 572 } else if (parameter == kGoogleImageSearchSource) {
571 url->insert(start, GetGoogleImageSearchSource()); 573 url->insert(start, GetGoogleImageSearchSource());
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 #else 605 #else
604 url->insert(start, "sourceid=chrome&"); 606 url->insert(start, "sourceid=chrome&");
605 #endif 607 #endif
606 } else if (parameter == kGoogleSuggestAPIKeyParameter) { 608 } else if (parameter == kGoogleSuggestAPIKeyParameter) {
607 url->insert(start, 609 url->insert(start,
608 net::EscapeQueryParamValue(google_apis::GetAPIKey(), false)); 610 net::EscapeQueryParamValue(google_apis::GetAPIKey(), false));
609 } else if (parameter == kGoogleSuggestClient) { 611 } else if (parameter == kGoogleSuggestClient) {
610 replacements->push_back(Replacement(GOOGLE_SUGGEST_CLIENT, start)); 612 replacements->push_back(Replacement(GOOGLE_SUGGEST_CLIENT, start));
611 } else if (parameter == kGoogleUnescapedSearchTermsParameter) { 613 } else if (parameter == kGoogleUnescapedSearchTermsParameter) {
612 replacements->push_back(Replacement(GOOGLE_UNESCAPED_SEARCH_TERMS, start)); 614 replacements->push_back(Replacement(GOOGLE_UNESCAPED_SEARCH_TERMS, start));
613 } else if (parameter == kGoogleZeroPrefixUrlParameter) {
614 replacements->push_back(Replacement(GOOGLE_ZERO_PREFIX_URL, start));
615 } else if (parameter == kInputEncodingParameter) { 615 } else if (parameter == kInputEncodingParameter) {
616 replacements->push_back(Replacement(ENCODING, start)); 616 replacements->push_back(Replacement(ENCODING, start));
617 } else if (parameter == kLanguageParameter) { 617 } else if (parameter == kLanguageParameter) {
618 replacements->push_back(Replacement(LANGUAGE, start)); 618 replacements->push_back(Replacement(LANGUAGE, start));
619 } else if (parameter == kOutputEncodingParameter) { 619 } else if (parameter == kOutputEncodingParameter) {
620 if (!optional) 620 if (!optional)
621 url->insert(start, kOutputEncodingType); 621 url->insert(start, kOutputEncodingType);
622 } else if ((parameter == kStartIndexParameter) || 622 } else if ((parameter == kStartIndexParameter) ||
623 (parameter == kStartPageParameter)) { 623 (parameter == kStartPageParameter)) {
624 // We don't support these. 624 // We don't support these.
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after
855 if (showing_search_terms_) { 855 if (showing_search_terms_) {
856 // Log whether the bookmark bar is pinned when the user is seeing 856 // Log whether the bookmark bar is pinned when the user is seeing
857 // InstantExtended on the SRP. 857 // InstantExtended on the SRP.
858 DCHECK(!i->is_post_param); 858 DCHECK(!i->is_post_param);
859 HandleReplacement( 859 HandleReplacement(
860 "bmbp", search_terms_args.bookmark_bar_pinned ? "1" : "0", *i, 860 "bmbp", search_terms_args.bookmark_bar_pinned ? "1" : "0", *i,
861 &url); 861 &url);
862 } 862 }
863 break; 863 break;
864 864
865 case GOOGLE_CURRENT_PAGE_URL:
866 DCHECK(!i->is_post_param);
867 if (!search_terms_args.current_page_url.empty()) {
868 const std::string& escaped_current_page_url =
869 net::EscapeQueryParamValue(search_terms_args.current_page_url,
870 true);
871 HandleReplacement("url", escaped_current_page_url, *i, &url);
872 }
873 break;
874
865 case GOOGLE_CURSOR_POSITION: 875 case GOOGLE_CURSOR_POSITION:
866 DCHECK(!i->is_post_param); 876 DCHECK(!i->is_post_param);
867 if (search_terms_args.cursor_position != string16::npos) 877 if (search_terms_args.cursor_position != string16::npos)
868 HandleReplacement( 878 HandleReplacement(
869 "cp", 879 "cp",
870 base::StringPrintf("%" PRIuS, search_terms_args.cursor_position), 880 base::StringPrintf("%" PRIuS, search_terms_args.cursor_position),
871 *i, 881 *i,
872 &url); 882 &url);
873 break; 883 break;
874 884
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
958 case GOOGLE_UNESCAPED_SEARCH_TERMS: { 968 case GOOGLE_UNESCAPED_SEARCH_TERMS: {
959 std::string unescaped_terms; 969 std::string unescaped_terms;
960 base::UTF16ToCodepage(search_terms_args.search_terms, 970 base::UTF16ToCodepage(search_terms_args.search_terms,
961 input_encoding.c_str(), 971 input_encoding.c_str(),
962 base::OnStringConversionError::SKIP, 972 base::OnStringConversionError::SKIP,
963 &unescaped_terms); 973 &unescaped_terms);
964 HandleReplacement(std::string(), unescaped_terms, *i, &url); 974 HandleReplacement(std::string(), unescaped_terms, *i, &url);
965 break; 975 break;
966 } 976 }
967 977
968 case GOOGLE_ZERO_PREFIX_URL:
969 DCHECK(!i->is_post_param);
970 if (!search_terms_args.zero_prefix_url.empty()) {
971 const std::string& escaped_zero_prefix_url =
972 net::EscapeQueryParamValue(search_terms_args.zero_prefix_url,
973 true);
974 HandleReplacement("url", escaped_zero_prefix_url, *i, &url);
975 }
976
977 break;
978
979 case LANGUAGE: 978 case LANGUAGE:
980 HandleReplacement( 979 HandleReplacement(
981 std::string(), search_terms_data.GetApplicationLocale(), *i, &url); 980 std::string(), search_terms_data.GetApplicationLocale(), *i, &url);
982 break; 981 break;
983 982
984 case SEARCH_TERMS: 983 case SEARCH_TERMS:
985 HandleReplacement(std::string(), UTF16ToUTF8(encoded_terms), *i, &url); 984 HandleReplacement(std::string(), UTF16ToUTF8(encoded_terms), *i, &url);
986 break; 985 break;
987 986
988 case GOOGLE_IMAGE_THUMBNAIL: 987 case GOOGLE_IMAGE_THUMBNAIL:
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1319 // patterns. This means that given patterns 1318 // patterns. This means that given patterns
1320 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], 1319 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ],
1321 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would 1320 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would
1322 // return false. This is important for at least Google, where such URLs 1321 // return false. This is important for at least Google, where such URLs
1323 // are invalid. 1322 // are invalid.
1324 return !search_terms->empty(); 1323 return !search_terms->empty();
1325 } 1324 }
1326 } 1325 }
1327 return false; 1326 return false;
1328 } 1327 }
OLDNEW
« no previous file with comments | « chrome/browser/search_engines/template_url.h ('k') | chrome/browser/search_engines/template_url_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698