Chromium Code Reviews| Index: chrome/browser/history/shortcuts_backend.cc |
| diff --git a/chrome/browser/history/shortcuts_backend.cc b/chrome/browser/history/shortcuts_backend.cc |
| index a5abb3fedfe95669d6d40076a76b536daef4a9a1..be90ad070c2e221d6596b2e586fc479134a08366 100644 |
| --- a/chrome/browser/history/shortcuts_backend.cc |
| +++ b/chrome/browser/history/shortcuts_backend.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/guid.h" |
| #include "base/i18n/case_conversion.h" |
| #include "base/strings/string_util.h" |
| +#include "base/strings/utf_string_conversions.h" |
| #include "chrome/browser/autocomplete/autocomplete_match.h" |
| #include "chrome/browser/autocomplete/autocomplete_result.h" |
| #include "chrome/browser/chrome_notification_types.h" |
| @@ -21,6 +22,7 @@ |
| #include "chrome/browser/history/shortcuts_database.h" |
| #include "chrome/browser/omnibox/omnibox_log.h" |
| #include "chrome/browser/profiles/profile.h" |
| +#include "chrome/common/autocomplete_match_type.h" |
| #include "chrome/common/chrome_constants.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/notification_details.h" |
| @@ -31,19 +33,52 @@ using content::BrowserThread; |
| namespace { |
| +bool IsSearchSuggestType(AutocompleteMatchType::Type type) { |
| + switch (type) { |
| + case AutocompleteMatchType::SEARCH_SUGGEST_INFINITE: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_ENTITY: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_PERSONALIZED: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_PROFILE: |
| + return true; |
| + |
| + default: |
| + return false; |
| + } |
| +} |
| + |
| +const GURL GetDestinationURLForShortcut(const AutocompleteMatch& match) { |
| + return IsSearchSuggestType(match.type) ? |
| + match.stripped_destination_url : match.destination_url; |
|
Peter Kasting
2014/02/14 05:35:25
If we needed to do this, I'd expect us to need thi
Anuj
2014/02/14 20:18:07
So the idea was to remove the additional query par
Peter Kasting
2014/02/14 21:40:21
I think the additional query parameters are defini
Anuj
2014/02/14 22:09:55
I think we should strip out these parameters at th
|
| +} |
| + |
| +const base::string16 GetContentsForShortcut(const AutocompleteMatch& match) { |
| + return IsSearchSuggestType(match.type) ? |
| + match.fill_into_edit : match.contents; |
| +} |
| + |
| +const base::string16 GetDescriptionForShortcut(const AutocompleteMatch& match) { |
| + return IsSearchSuggestType(match.type) ? base::string16() : match.description; |
|
Peter Kasting
2014/02/14 05:35:25
Hmm, should we be flattening the description here?
Anuj
2014/02/14 20:18:07
So the description is present for Entity and Profi
|
| +} |
| + |
| // Takes Match classification vector and removes all matched positions, |
| // compacting repetitions if necessary. |
| ACMatchClassifications StripMatchMarkers( |
| - const ACMatchClassifications& matches) { |
| + const ACMatchClassifications& classifications) { |
| ACMatchClassifications unmatched; |
| - for (ACMatchClassifications::const_iterator i(matches.begin()); |
| - i != matches.end(); ++i) { |
| + for (ACMatchClassifications::const_iterator i(classifications.begin()); |
| + i != classifications.end(); ++i) { |
| AutocompleteMatch::AddLastClassificationIfNecessary( |
| &unmatched, i->offset, i->style & ~ACMatchClassification::MATCH); |
| } |
| return unmatched; |
| } |
| +ACMatchClassifications GetClassificationsForShortcut( |
| + AutocompleteMatchType::Type type, |
| + const ACMatchClassifications& classifications) { |
| + return IsSearchSuggestType(type) ? ACMatchClassifications() : classifications; |
| +} |
| + |
| // Normally shortcuts have the same match type as the original match they were |
| // created from, but for certain match types, we should modify the shortcut's |
| // type slightly to reflect that the origin of the shortcut is historical. |
| @@ -55,6 +90,10 @@ AutocompleteMatch::Type GetTypeForShortcut(AutocompleteMatch::Type type) { |
| case AutocompleteMatchType::SEARCH_WHAT_YOU_TYPED: |
| case AutocompleteMatchType::SEARCH_SUGGEST: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_ENTITY: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_INFINITE: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_PERSONALIZED: |
| + case AutocompleteMatchType::SEARCH_SUGGEST_PROFILE: |
| return AutocompleteMatchType::SEARCH_HISTORY; |
| default: |
| @@ -71,11 +110,13 @@ namespace history { |
| ShortcutsBackend::Shortcut::MatchCore::MatchCore( |
| const AutocompleteMatch& match) |
| : fill_into_edit(match.fill_into_edit), |
| - destination_url(match.destination_url), |
| - contents(match.contents), |
| - contents_class(StripMatchMarkers(match.contents_class)), |
| - description(match.description), |
| - description_class(StripMatchMarkers(match.description_class)), |
| + destination_url(GetDestinationURLForShortcut(match)), |
| + contents(GetContentsForShortcut(match)), |
| + contents_class( |
| + GetClassificationsForShortcut(match.type, match.contents_class)), |
| + description(GetDescriptionForShortcut(match)), |
| + description_class( |
| + GetClassificationsForShortcut(match.type, match.description_class)), |
| transition(match.transition), |
| type(GetTypeForShortcut(match.type)), |
| keyword(match.keyword) { |