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 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
921 case GOOGLE_UNESCAPED_SEARCH_TERMS: { | 921 case GOOGLE_UNESCAPED_SEARCH_TERMS: { |
922 std::string unescaped_terms; | 922 std::string unescaped_terms; |
923 base::UTF16ToCodepage(search_terms_args.search_terms, | 923 base::UTF16ToCodepage(search_terms_args.search_terms, |
924 input_encoding.c_str(), | 924 input_encoding.c_str(), |
925 base::OnStringConversionError::SKIP, | 925 base::OnStringConversionError::SKIP, |
926 &unescaped_terms); | 926 &unescaped_terms); |
927 HandleReplacement(std::string(), unescaped_terms, *i, &url); | 927 HandleReplacement(std::string(), unescaped_terms, *i, &url); |
928 break; | 928 break; |
929 } | 929 } |
930 | 930 |
931 case GOOGLE_ZERO_PREFIX_URL: | 931 case GOOGLE_CURRENT_PAGE_URL: |
932 DCHECK(!i->is_post_param); | 932 DCHECK(!i->is_post_param); |
933 if (!search_terms_args.zero_prefix_url.empty()) { | 933 if (!search_terms_args.current_page_url.empty()) { |
934 const std::string& escaped_zero_prefix_url = | 934 const std::string& escaped_current_page_url = |
935 net::EscapeQueryParamValue(search_terms_args.zero_prefix_url, | 935 net::EscapeQueryParamValue(search_terms_args.current_page_url, |
936 true); | 936 true); |
937 HandleReplacement("url", escaped_zero_prefix_url, *i, &url); | 937 HandleReplacement("url", escaped_current_page_url, *i, &url); |
938 } | 938 } |
939 | 939 |
940 break; | 940 break; |
941 | 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: |
(...skipping 330 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 |