OLD | NEW |
---|---|
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 "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/guid.h" | 10 #include "base/guid.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
53 | 53 |
54 const char kGoogleAssistedQueryStatsParameter[] = "google:assistedQueryStats"; | 54 const char kGoogleAssistedQueryStatsParameter[] = "google:assistedQueryStats"; |
55 | 55 |
56 // Host/Domain Google searches are relative to. | 56 // Host/Domain Google searches are relative to. |
57 const char kGoogleBaseURLParameter[] = "google:baseURL"; | 57 const char kGoogleBaseURLParameter[] = "google:baseURL"; |
58 const char kGoogleBaseURLParameterFull[] = "{google:baseURL}"; | 58 const char kGoogleBaseURLParameterFull[] = "{google:baseURL}"; |
59 | 59 |
60 // Like google:baseURL, but for the Search Suggest capability. | 60 // Like google:baseURL, but for the Search Suggest capability. |
61 const char kGoogleBaseSuggestURLParameter[] = "google:baseSuggestURL"; | 61 const char kGoogleBaseSuggestURLParameter[] = "google:baseSuggestURL"; |
62 const char kGoogleBaseSuggestURLParameterFull[] = "{google:baseSuggestURL}"; | 62 const char kGoogleBaseSuggestURLParameterFull[] = "{google:baseSuggestURL}"; |
63 const char kGoogleCurrentPageUrlParameter[] = "google:currentPageUrl"; | |
63 const char kGoogleCursorPositionParameter[] = "google:cursorPosition"; | 64 const char kGoogleCursorPositionParameter[] = "google:cursorPosition"; |
64 const char kGoogleInstantEnabledParameter[] = "google:instantEnabledParameter"; | 65 const char kGoogleInstantEnabledParameter[] = "google:instantEnabledParameter"; |
65 const char kGoogleInstantExtendedEnabledParameter[] = | 66 const char kGoogleInstantExtendedEnabledParameter[] = |
66 "google:instantExtendedEnabledParameter"; | 67 "google:instantExtendedEnabledParameter"; |
67 const char kGoogleInstantExtendedEnabledKey[] = | 68 const char kGoogleInstantExtendedEnabledKey[] = |
68 "google:instantExtendedEnabledKey"; | 69 "google:instantExtendedEnabledKey"; |
69 const char kGoogleInstantExtendedEnabledKeyFull[] = | 70 const char kGoogleInstantExtendedEnabledKeyFull[] = |
70 "{google:instantExtendedEnabledKey}"; | 71 "{google:instantExtendedEnabledKey}"; |
71 const char kGoogleNTPIsThemedParameter[] = "google:ntpIsThemedParameter"; | 72 const char kGoogleNTPIsThemedParameter[] = "google:ntpIsThemedParameter"; |
72 const char kGoogleOmniboxStartMarginParameter[] = | 73 const char kGoogleOmniboxStartMarginParameter[] = |
73 "google:omniboxStartMarginParameter"; | 74 "google:omniboxStartMarginParameter"; |
74 const char kGoogleOriginalQueryForSuggestionParameter[] = | 75 const char kGoogleOriginalQueryForSuggestionParameter[] = |
75 "google:originalQueryForSuggestion"; | 76 "google:originalQueryForSuggestion"; |
76 const char kGooglePageClassificationParameter[] = "google:pageClassification"; | 77 const char kGooglePageClassificationParameter[] = "google:pageClassification"; |
77 const char kGoogleRLZParameter[] = "google:RLZ"; | 78 const char kGoogleRLZParameter[] = "google:RLZ"; |
78 const char kGoogleSearchClient[] = "google:searchClient"; | 79 const char kGoogleSearchClient[] = "google:searchClient"; |
79 const char kGoogleSearchFieldtrialParameter[] = | 80 const char kGoogleSearchFieldtrialParameter[] = |
80 "google:searchFieldtrialParameter"; | 81 "google:searchFieldtrialParameter"; |
81 const char kGoogleSourceIdParameter[] = "google:sourceId"; | 82 const char kGoogleSourceIdParameter[] = "google:sourceId"; |
82 const char kGoogleSuggestAPIKeyParameter[] = "google:suggestAPIKeyParameter"; | 83 const char kGoogleSuggestAPIKeyParameter[] = "google:suggestAPIKeyParameter"; |
83 const char kGoogleSuggestClient[] = "google:suggestClient"; | 84 const char kGoogleSuggestClient[] = "google:suggestClient"; |
84 const char kGoogleZeroPrefixUrlParameter[] = "google:zeroPrefixUrl"; | |
85 | 85 |
86 // Same as kSearchTermsParameter, with no escaping. | 86 // Same as kSearchTermsParameter, with no escaping. |
87 const char kGoogleUnescapedSearchTermsParameter[] = | 87 const char kGoogleUnescapedSearchTermsParameter[] = |
88 "google:unescapedSearchTerms"; | 88 "google:unescapedSearchTerms"; |
89 const char kGoogleUnescapedSearchTermsParameterFull[] = | 89 const char kGoogleUnescapedSearchTermsParameterFull[] = |
90 "{google:unescapedSearchTerms}"; | 90 "{google:unescapedSearchTerms}"; |
91 | 91 |
92 const char kGoogleImageSearchSource[] = "google:imageSearchSource"; | 92 const char kGoogleImageSearchSource[] = "google:imageSearchSource"; |
93 const char kGoogleImageThumbnailParameter[] = "google:imageThumbnail"; | 93 const char kGoogleImageThumbnailParameter[] = "google:imageThumbnail"; |
94 const char kGoogleImageURLParameter[] = "google:imageURL"; | 94 const char kGoogleImageURLParameter[] = "google:imageURL"; |
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
529 replacements->push_back(Replacement(SEARCH_TERMS, start)); | 529 replacements->push_back(Replacement(SEARCH_TERMS, start)); |
530 } else if (parameter == kCountParameter) { | 530 } else if (parameter == kCountParameter) { |
531 if (!optional) | 531 if (!optional) |
532 url->insert(start, kDefaultCount); | 532 url->insert(start, kDefaultCount); |
533 } else if (parameter == kGoogleAssistedQueryStatsParameter) { | 533 } else if (parameter == kGoogleAssistedQueryStatsParameter) { |
534 replacements->push_back(Replacement(GOOGLE_ASSISTED_QUERY_STATS, start)); | 534 replacements->push_back(Replacement(GOOGLE_ASSISTED_QUERY_STATS, start)); |
535 } else if (parameter == kGoogleBaseURLParameter) { | 535 } else if (parameter == kGoogleBaseURLParameter) { |
536 replacements->push_back(Replacement(GOOGLE_BASE_URL, start)); | 536 replacements->push_back(Replacement(GOOGLE_BASE_URL, start)); |
537 } else if (parameter == kGoogleBaseSuggestURLParameter) { | 537 } else if (parameter == kGoogleBaseSuggestURLParameter) { |
538 replacements->push_back(Replacement(GOOGLE_BASE_SUGGEST_URL, start)); | 538 replacements->push_back(Replacement(GOOGLE_BASE_SUGGEST_URL, start)); |
539 } else if (parameter == kGoogleCurrentPageUrlParameter) { | |
540 replacements->push_back(Replacement(GOOGLE_CURRENT_PAGE_URL, start)); | |
539 } else if (parameter == kGoogleCursorPositionParameter) { | 541 } else if (parameter == kGoogleCursorPositionParameter) { |
540 replacements->push_back(Replacement(GOOGLE_CURSOR_POSITION, start)); | 542 replacements->push_back(Replacement(GOOGLE_CURSOR_POSITION, start)); |
541 } else if (parameter == kGoogleImageOriginalHeight) { | 543 } else if (parameter == kGoogleImageOriginalHeight) { |
542 replacements->push_back( | 544 replacements->push_back( |
543 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_HEIGHT, start)); | 545 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_HEIGHT, start)); |
544 } else if (parameter == kGoogleImageOriginalWidth) { | 546 } else if (parameter == kGoogleImageOriginalWidth) { |
545 replacements->push_back( | 547 replacements->push_back( |
546 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_WIDTH, start)); | 548 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_WIDTH, start)); |
547 } else if (parameter == kGoogleImageSearchSource) { | 549 } else if (parameter == kGoogleImageSearchSource) { |
548 url->insert(start, GetGoogleImageSearchSource()); | 550 url->insert(start, GetGoogleImageSearchSource()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
580 #else | 582 #else |
581 url->insert(start, "sourceid=chrome&"); | 583 url->insert(start, "sourceid=chrome&"); |
582 #endif | 584 #endif |
583 } else if (parameter == kGoogleSuggestAPIKeyParameter) { | 585 } else if (parameter == kGoogleSuggestAPIKeyParameter) { |
584 url->insert(start, | 586 url->insert(start, |
585 net::EscapeQueryParamValue(google_apis::GetAPIKey(), false)); | 587 net::EscapeQueryParamValue(google_apis::GetAPIKey(), false)); |
586 } else if (parameter == kGoogleSuggestClient) { | 588 } else if (parameter == kGoogleSuggestClient) { |
587 replacements->push_back(Replacement(GOOGLE_SUGGEST_CLIENT, start)); | 589 replacements->push_back(Replacement(GOOGLE_SUGGEST_CLIENT, start)); |
588 } else if (parameter == kGoogleUnescapedSearchTermsParameter) { | 590 } else if (parameter == kGoogleUnescapedSearchTermsParameter) { |
589 replacements->push_back(Replacement(GOOGLE_UNESCAPED_SEARCH_TERMS, start)); | 591 replacements->push_back(Replacement(GOOGLE_UNESCAPED_SEARCH_TERMS, start)); |
590 } else if (parameter == kGoogleZeroPrefixUrlParameter) { | |
591 replacements->push_back(Replacement(GOOGLE_ZERO_PREFIX_URL, start)); | |
592 } else if (parameter == kInputEncodingParameter) { | 592 } else if (parameter == kInputEncodingParameter) { |
593 replacements->push_back(Replacement(ENCODING, start)); | 593 replacements->push_back(Replacement(ENCODING, start)); |
594 } else if (parameter == kLanguageParameter) { | 594 } else if (parameter == kLanguageParameter) { |
595 replacements->push_back(Replacement(LANGUAGE, start)); | 595 replacements->push_back(Replacement(LANGUAGE, start)); |
596 } else if (parameter == kOutputEncodingParameter) { | 596 } else if (parameter == kOutputEncodingParameter) { |
597 if (!optional) | 597 if (!optional) |
598 url->insert(start, kOutputEncodingType); | 598 url->insert(start, kOutputEncodingType); |
599 } else if ((parameter == kStartIndexParameter) || | 599 } else if ((parameter == kStartIndexParameter) || |
600 (parameter == kStartPageParameter)) { | 600 (parameter == kStartPageParameter)) { |
601 // We don't support these. | 601 // We don't support these. |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
821 std::string(), search_terms_data.GoogleBaseURLValue(), *i, &url); | 821 std::string(), search_terms_data.GoogleBaseURLValue(), *i, &url); |
822 break; | 822 break; |
823 | 823 |
824 case GOOGLE_BASE_SUGGEST_URL: | 824 case GOOGLE_BASE_SUGGEST_URL: |
825 DCHECK(!i->is_post_param); | 825 DCHECK(!i->is_post_param); |
826 HandleReplacement( | 826 HandleReplacement( |
827 std::string(), search_terms_data.GoogleBaseSuggestURLValue(), *i, | 827 std::string(), search_terms_data.GoogleBaseSuggestURLValue(), *i, |
828 &url); | 828 &url); |
829 break; | 829 break; |
830 | 830 |
831 case GOOGLE_CURRENT_PAGE_URL: | |
832 DCHECK(!i->is_post_param); | |
833 if (!search_terms_args.current_page_url.empty()) { | |
834 const std::string& escaped_current_page_url = | |
835 net::EscapeQueryParamValue(search_terms_args.current_page_url, | |
Peter Kasting
2013/10/08 01:10:25
Nit: Consider inlining this into the next statemen
H Fung
2013/10/30 23:56:15
Done.
| |
836 true); | |
837 HandleReplacement("url", escaped_current_page_url, *i, &url); | |
838 } | |
839 | |
840 break; | |
841 | |
831 case GOOGLE_CURSOR_POSITION: | 842 case GOOGLE_CURSOR_POSITION: |
832 DCHECK(!i->is_post_param); | 843 DCHECK(!i->is_post_param); |
833 if (search_terms_args.cursor_position != string16::npos) | 844 if (search_terms_args.cursor_position != string16::npos) |
834 HandleReplacement( | 845 HandleReplacement( |
835 "cp", | 846 "cp", |
836 base::StringPrintf("%" PRIuS, search_terms_args.cursor_position), | 847 base::StringPrintf("%" PRIuS, search_terms_args.cursor_position), |
837 *i, | 848 *i, |
838 &url); | 849 &url); |
839 break; | 850 break; |
840 | 851 |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
921 case GOOGLE_UNESCAPED_SEARCH_TERMS: { | 932 case GOOGLE_UNESCAPED_SEARCH_TERMS: { |
922 std::string unescaped_terms; | 933 std::string unescaped_terms; |
923 base::UTF16ToCodepage(search_terms_args.search_terms, | 934 base::UTF16ToCodepage(search_terms_args.search_terms, |
924 input_encoding.c_str(), | 935 input_encoding.c_str(), |
925 base::OnStringConversionError::SKIP, | 936 base::OnStringConversionError::SKIP, |
926 &unescaped_terms); | 937 &unescaped_terms); |
927 HandleReplacement(std::string(), unescaped_terms, *i, &url); | 938 HandleReplacement(std::string(), unescaped_terms, *i, &url); |
928 break; | 939 break; |
929 } | 940 } |
930 | 941 |
931 case GOOGLE_ZERO_PREFIX_URL: | |
932 DCHECK(!i->is_post_param); | |
933 if (!search_terms_args.zero_prefix_url.empty()) { | |
934 const std::string& escaped_zero_prefix_url = | |
935 net::EscapeQueryParamValue(search_terms_args.zero_prefix_url, | |
936 true); | |
937 HandleReplacement("url", escaped_zero_prefix_url, *i, &url); | |
938 } | |
939 | |
940 break; | |
941 | |
942 case LANGUAGE: | 942 case LANGUAGE: |
943 HandleReplacement( | 943 HandleReplacement( |
944 std::string(), search_terms_data.GetApplicationLocale(), *i, &url); | 944 std::string(), search_terms_data.GetApplicationLocale(), *i, &url); |
945 break; | 945 break; |
946 | 946 |
947 case SEARCH_TERMS: | 947 case SEARCH_TERMS: |
948 HandleReplacement(std::string(), UTF16ToUTF8(encoded_terms), *i, &url); | 948 HandleReplacement(std::string(), UTF16ToUTF8(encoded_terms), *i, &url); |
949 break; | 949 break; |
950 | 950 |
951 case GOOGLE_IMAGE_THUMBNAIL: | 951 case GOOGLE_IMAGE_THUMBNAIL: |
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1278 // patterns. This means that given patterns | 1278 // patterns. This means that given patterns |
1279 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], | 1279 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], |
1280 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would | 1280 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would |
1281 // return false. This is important for at least Google, where such URLs | 1281 // return false. This is important for at least Google, where such URLs |
1282 // are invalid. | 1282 // are invalid. |
1283 return !search_terms->empty(); | 1283 return !search_terms->empty(); |
1284 } | 1284 } |
1285 } | 1285 } |
1286 return false; | 1286 return false; |
1287 } | 1287 } |
OLD | NEW |