Chromium Code Reviews| 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 |