Index: chrome/browser/autocomplete/autocomplete_popup_model.cc |
diff --git a/chrome/browser/autocomplete/autocomplete_popup_model.cc b/chrome/browser/autocomplete/autocomplete_popup_model.cc |
index ea8492fe942a66b2e4ec9a927a26a64518f8c98b..459560fe83584d6fe8ff841dbdb8bbd6d84e6c2a 100644 |
--- a/chrome/browser/autocomplete/autocomplete_popup_model.cc |
+++ b/chrome/browser/autocomplete/autocomplete_popup_model.cc |
@@ -131,10 +131,30 @@ void AutocompletePopupModel::ResetToDefaultMatch() { |
bool AutocompletePopupModel::GetKeywordForMatch(const AutocompleteMatch& match, |
string16* keyword) const { |
- // If the current match is a keyword, return that as the selected keyword. |
- if (TemplateURL::SupportsReplacement(match.template_url)) { |
- keyword->assign(match.template_url->keyword()); |
- return false; |
+ // Assume we have no keyword until we find otherwise. |
+ keyword->clear(); |
+ |
+ if (match.template_url) { |
+ TemplateURLService* url_service = |
+ TemplateURLServiceFactory::GetForProfile(profile_); |
+ if (!url_service) |
+ return false; |
+ |
+ // Only show the keyword for the default provider if the user typed in |
+ // the keyword and it isn't SEARCH_WHAT_YOU_TYPED. |
+ const TemplateURL* default_url = url_service->GetDefaultSearchProvider(); |
+ if (default_url && (default_url->id() == match.template_url->id())) { |
+ if (StartsWith(autocomplete_controller()->input().text(), |
+ default_url->keyword(), false) && |
+ (match.type != AutocompleteMatch::SEARCH_WHAT_YOU_TYPED)) { |
+ keyword->assign(match.template_url->keyword()); |
+ return false; |
+ } |
+ } else if (TemplateURL::SupportsReplacement(match.template_url)) { |
+ // The current match is a keyword, return that as the selected keyword. |
+ keyword->assign(match.template_url->keyword()); |
+ return false; |
+ } |
} |
// See if the current match's fill_into_edit corresponds to a keyword. |