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 <string> | 7 #include <string> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "base/strings/string_split.h" | 21 #include "base/strings/string_split.h" |
22 #include "base/strings/string_util.h" | 22 #include "base/strings/string_util.h" |
23 #include "base/strings/stringprintf.h" | 23 #include "base/strings/stringprintf.h" |
24 #include "base/strings/utf_string_conversions.h" | 24 #include "base/strings/utf_string_conversions.h" |
25 #include "chrome/browser/google/google_util.h" | 25 #include "chrome/browser/google/google_util.h" |
26 #include "chrome/browser/search/search.h" | 26 #include "chrome/browser/search/search.h" |
27 #include "chrome/browser/search_engines/search_terms_data.h" | 27 #include "chrome/browser/search_engines/search_terms_data.h" |
28 #include "chrome/browser/search_engines/template_url_service.h" | 28 #include "chrome/browser/search_engines/template_url_service.h" |
29 #include "chrome/common/chrome_switches.h" | 29 #include "chrome/common/chrome_switches.h" |
30 #include "chrome/common/chrome_version_info.h" | 30 #include "chrome/common/chrome_version_info.h" |
| 31 #include "components/metrics/proto/omnibox_input_type.pb.h" |
31 #include "extensions/common/constants.h" | 32 #include "extensions/common/constants.h" |
32 #include "google_apis/google_api_keys.h" | 33 #include "google_apis/google_api_keys.h" |
33 #include "net/base/escape.h" | 34 #include "net/base/escape.h" |
34 #include "net/base/mime_util.h" | 35 #include "net/base/mime_util.h" |
35 #include "ui/base/l10n/l10n_util.h" | 36 #include "ui/base/l10n/l10n_util.h" |
36 | 37 |
37 namespace { | 38 namespace { |
38 | 39 |
39 // The TemplateURLRef has any number of terms that need to be replaced. Each of | 40 // The TemplateURLRef has any number of terms that need to be replaced. Each of |
40 // the terms is enclosed in braces. If the character preceeding the final | 41 // the terms is enclosed in braces. If the character preceeding the final |
(...skipping 19 matching lines...) Expand all Loading... |
60 const char kGoogleBaseURLParameter[] = "google:baseURL"; | 61 const char kGoogleBaseURLParameter[] = "google:baseURL"; |
61 const char kGoogleBaseURLParameterFull[] = "{google:baseURL}"; | 62 const char kGoogleBaseURLParameterFull[] = "{google:baseURL}"; |
62 | 63 |
63 // Like google:baseURL, but for the Search Suggest capability. | 64 // Like google:baseURL, but for the Search Suggest capability. |
64 const char kGoogleBaseSuggestURLParameter[] = "google:baseSuggestURL"; | 65 const char kGoogleBaseSuggestURLParameter[] = "google:baseSuggestURL"; |
65 const char kGoogleBaseSuggestURLParameterFull[] = "{google:baseSuggestURL}"; | 66 const char kGoogleBaseSuggestURLParameterFull[] = "{google:baseSuggestURL}"; |
66 const char kGoogleBookmarkBarPinnedParameter[] = "google:bookmarkBarPinned"; | 67 const char kGoogleBookmarkBarPinnedParameter[] = "google:bookmarkBarPinned"; |
67 const char kGoogleCurrentPageUrlParameter[] = "google:currentPageUrl"; | 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"; |
| 71 const char kGoogleInputTypeParameter[] = "google:inputType"; |
70 const char kGoogleInstantExtendedEnabledParameter[] = | 72 const char kGoogleInstantExtendedEnabledParameter[] = |
71 "google:instantExtendedEnabledParameter"; | 73 "google:instantExtendedEnabledParameter"; |
72 const char kGoogleInstantExtendedEnabledKey[] = | 74 const char kGoogleInstantExtendedEnabledKey[] = |
73 "google:instantExtendedEnabledKey"; | 75 "google:instantExtendedEnabledKey"; |
74 const char kGoogleInstantExtendedEnabledKeyFull[] = | 76 const char kGoogleInstantExtendedEnabledKeyFull[] = |
75 "{google:instantExtendedEnabledKey}"; | 77 "{google:instantExtendedEnabledKey}"; |
76 const char kGoogleNTPIsThemedParameter[] = "google:ntpIsThemedParameter"; | 78 const char kGoogleNTPIsThemedParameter[] = "google:ntpIsThemedParameter"; |
77 const char kGoogleOmniboxStartMarginParameter[] = | 79 const char kGoogleOmniboxStartMarginParameter[] = |
78 "google:omniboxStartMarginParameter"; | 80 "google:omniboxStartMarginParameter"; |
79 const char kGoogleOriginalQueryForSuggestionParameter[] = | 81 const char kGoogleOriginalQueryForSuggestionParameter[] = |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 } | 196 } |
195 | 197 |
196 } // namespace | 198 } // namespace |
197 | 199 |
198 | 200 |
199 // TemplateURLRef::SearchTermsArgs -------------------------------------------- | 201 // TemplateURLRef::SearchTermsArgs -------------------------------------------- |
200 | 202 |
201 TemplateURLRef::SearchTermsArgs::SearchTermsArgs( | 203 TemplateURLRef::SearchTermsArgs::SearchTermsArgs( |
202 const base::string16& search_terms) | 204 const base::string16& search_terms) |
203 : search_terms(search_terms), | 205 : search_terms(search_terms), |
| 206 input_type(metrics::OmniboxInputType::INVALID), |
204 accepted_suggestion(NO_SUGGESTIONS_AVAILABLE), | 207 accepted_suggestion(NO_SUGGESTIONS_AVAILABLE), |
205 cursor_position(base::string16::npos), | 208 cursor_position(base::string16::npos), |
206 omnibox_start_margin(-1), | 209 omnibox_start_margin(-1), |
207 page_classification(AutocompleteInput::INVALID_SPEC), | 210 page_classification(AutocompleteInput::INVALID_SPEC), |
208 bookmark_bar_pinned(false), | 211 bookmark_bar_pinned(false), |
209 append_extra_query_params(false), | 212 append_extra_query_params(false), |
210 force_instant_results(false), | 213 force_instant_results(false), |
211 from_app_list(false) { | 214 from_app_list(false) { |
212 } | 215 } |
213 | 216 |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
559 } else if (parameter == kGoogleBaseURLParameter) { | 562 } else if (parameter == kGoogleBaseURLParameter) { |
560 replacements->push_back(Replacement(GOOGLE_BASE_URL, start)); | 563 replacements->push_back(Replacement(GOOGLE_BASE_URL, start)); |
561 } else if (parameter == kGoogleBaseSuggestURLParameter) { | 564 } else if (parameter == kGoogleBaseSuggestURLParameter) { |
562 replacements->push_back(Replacement(GOOGLE_BASE_SUGGEST_URL, start)); | 565 replacements->push_back(Replacement(GOOGLE_BASE_SUGGEST_URL, start)); |
563 } else if (parameter == kGoogleBookmarkBarPinnedParameter) { | 566 } else if (parameter == kGoogleBookmarkBarPinnedParameter) { |
564 replacements->push_back(Replacement(GOOGLE_BOOKMARK_BAR_PINNED, start)); | 567 replacements->push_back(Replacement(GOOGLE_BOOKMARK_BAR_PINNED, start)); |
565 } else if (parameter == kGoogleCurrentPageUrlParameter) { | 568 } else if (parameter == kGoogleCurrentPageUrlParameter) { |
566 replacements->push_back(Replacement(GOOGLE_CURRENT_PAGE_URL, start)); | 569 replacements->push_back(Replacement(GOOGLE_CURRENT_PAGE_URL, start)); |
567 } else if (parameter == kGoogleCursorPositionParameter) { | 570 } else if (parameter == kGoogleCursorPositionParameter) { |
568 replacements->push_back(Replacement(GOOGLE_CURSOR_POSITION, start)); | 571 replacements->push_back(Replacement(GOOGLE_CURSOR_POSITION, start)); |
| 572 } else if (parameter == kGoogleForceInstantResultsParameter) { |
| 573 replacements->push_back(Replacement(GOOGLE_FORCE_INSTANT_RESULTS, start)); |
569 } else if (parameter == kGoogleImageOriginalHeight) { | 574 } else if (parameter == kGoogleImageOriginalHeight) { |
570 replacements->push_back( | 575 replacements->push_back( |
571 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_HEIGHT, start)); | 576 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_HEIGHT, start)); |
572 } else if (parameter == kGoogleImageOriginalWidth) { | 577 } else if (parameter == kGoogleImageOriginalWidth) { |
573 replacements->push_back( | 578 replacements->push_back( |
574 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_WIDTH, start)); | 579 Replacement(TemplateURLRef::GOOGLE_IMAGE_ORIGINAL_WIDTH, start)); |
575 } else if (parameter == kGoogleImageSearchSource) { | 580 } else if (parameter == kGoogleImageSearchSource) { |
576 url->insert(start, GetGoogleImageSearchSource()); | 581 url->insert(start, GetGoogleImageSearchSource()); |
577 } else if (parameter == kGoogleImageThumbnailParameter) { | 582 } else if (parameter == kGoogleImageThumbnailParameter) { |
578 replacements->push_back( | 583 replacements->push_back( |
579 Replacement(TemplateURLRef::GOOGLE_IMAGE_THUMBNAIL, start)); | 584 Replacement(TemplateURLRef::GOOGLE_IMAGE_THUMBNAIL, start)); |
580 } else if (parameter == kGoogleImageURLParameter) { | 585 } else if (parameter == kGoogleImageURLParameter) { |
581 replacements->push_back(Replacement(TemplateURLRef::GOOGLE_IMAGE_URL, | 586 replacements->push_back(Replacement(TemplateURLRef::GOOGLE_IMAGE_URL, |
582 start)); | 587 start)); |
583 } else if (parameter == kGoogleForceInstantResultsParameter) { | 588 } else if (parameter == kGoogleInputTypeParameter) { |
584 replacements->push_back(Replacement(GOOGLE_FORCE_INSTANT_RESULTS, start)); | 589 replacements->push_back(Replacement(TemplateURLRef::GOOGLE_INPUT_TYPE, |
| 590 start)); |
585 } else if (parameter == kGoogleInstantExtendedEnabledParameter) { | 591 } else if (parameter == kGoogleInstantExtendedEnabledParameter) { |
586 replacements->push_back(Replacement(GOOGLE_INSTANT_EXTENDED_ENABLED, | 592 replacements->push_back(Replacement(GOOGLE_INSTANT_EXTENDED_ENABLED, |
587 start)); | 593 start)); |
588 } else if (parameter == kGoogleInstantExtendedEnabledKey) { | 594 } else if (parameter == kGoogleInstantExtendedEnabledKey) { |
589 url->insert(start, google_util::kInstantExtendedAPIParam); | 595 url->insert(start, google_util::kInstantExtendedAPIParam); |
590 } else if (parameter == kGoogleNTPIsThemedParameter) { | 596 } else if (parameter == kGoogleNTPIsThemedParameter) { |
591 replacements->push_back(Replacement(GOOGLE_NTP_IS_THEMED, start)); | 597 replacements->push_back(Replacement(GOOGLE_NTP_IS_THEMED, start)); |
592 } else if (parameter == kGoogleOmniboxStartMarginParameter) { | 598 } else if (parameter == kGoogleOmniboxStartMarginParameter) { |
593 replacements->push_back(Replacement(GOOGLE_OMNIBOX_START_MARGIN, start)); | 599 replacements->push_back(Replacement(GOOGLE_OMNIBOX_START_MARGIN, start)); |
594 } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) { | 600 } else if (parameter == kGoogleOriginalQueryForSuggestionParameter) { |
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
895 | 901 |
896 case GOOGLE_FORCE_INSTANT_RESULTS: | 902 case GOOGLE_FORCE_INSTANT_RESULTS: |
897 DCHECK(!i->is_post_param); | 903 DCHECK(!i->is_post_param); |
898 HandleReplacement(std::string(), | 904 HandleReplacement(std::string(), |
899 chrome::ForceInstantResultsParam( | 905 chrome::ForceInstantResultsParam( |
900 search_terms_args.force_instant_results), | 906 search_terms_args.force_instant_results), |
901 *i, | 907 *i, |
902 &url); | 908 &url); |
903 break; | 909 break; |
904 | 910 |
| 911 case GOOGLE_INPUT_TYPE: |
| 912 DCHECK(!i->is_post_param); |
| 913 HandleReplacement( |
| 914 "oit", base::IntToString(search_terms_args.input_type), *i, &url); |
| 915 break; |
| 916 |
905 case GOOGLE_INSTANT_EXTENDED_ENABLED: | 917 case GOOGLE_INSTANT_EXTENDED_ENABLED: |
906 DCHECK(!i->is_post_param); | 918 DCHECK(!i->is_post_param); |
907 HandleReplacement(std::string(), | 919 HandleReplacement(std::string(), |
908 chrome::InstantExtendedEnabledParam(type_ == SEARCH), | 920 chrome::InstantExtendedEnabledParam(type_ == SEARCH), |
909 *i, | 921 *i, |
910 &url); | 922 &url); |
911 break; | 923 break; |
912 | 924 |
913 case GOOGLE_NTP_IS_THEMED: | 925 case GOOGLE_NTP_IS_THEMED: |
914 DCHECK(!i->is_post_param); | 926 DCHECK(!i->is_post_param); |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1379 // patterns. This means that given patterns | 1391 // patterns. This means that given patterns |
1380 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], | 1392 // [ "http://foo/#q={searchTerms}", "http://foo/?q={searchTerms}" ], |
1381 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would | 1393 // calling ExtractSearchTermsFromURL() on "http://foo/?q=bar#q=' would |
1382 // return false. This is important for at least Google, where such URLs | 1394 // return false. This is important for at least Google, where such URLs |
1383 // are invalid. | 1395 // are invalid. |
1384 return !search_terms->empty(); | 1396 return !search_terms->empty(); |
1385 } | 1397 } |
1386 } | 1398 } |
1387 return false; | 1399 return false; |
1388 } | 1400 } |
OLD | NEW |