Index: chrome/browser/autocomplete/autocomplete_result.cc |
diff --git a/chrome/browser/autocomplete/autocomplete_result.cc b/chrome/browser/autocomplete/autocomplete_result.cc |
index 7238c1ea87144b6e314c5903edeff610f5d8f1f5..86d3c12589001b7b804529666e71a54524ef1c90 100644 |
--- a/chrome/browser/autocomplete/autocomplete_result.cc |
+++ b/chrome/browser/autocomplete/autocomplete_result.cc |
@@ -11,6 +11,7 @@ |
#include "chrome/browser/autocomplete/autocomplete_input.h" |
#include "chrome/browser/autocomplete/autocomplete_match.h" |
#include "chrome/browser/autocomplete/autocomplete_provider.h" |
+#include "chrome/browser/omnibox/omnibox_field_trial.h" |
#include "chrome/browser/search/search.h" |
#include "chrome/common/autocomplete_match_type.h" |
@@ -102,12 +103,25 @@ void AutocompleteResult::SortAndCull(const AutocompleteInput& input, |
matches_.end()); |
// Sort and trim to the most relevant kMaxMatches matches. |
- const size_t num_matches = std::min(kMaxMatches, matches_.size()); |
- std::partial_sort(matches_.begin(), matches_.begin() + num_matches, |
- matches_.end(), &AutocompleteMatch::MoreRelevant); |
- matches_.resize(num_matches); |
+ std::sort(matches_.begin(), matches_.end(), &AutocompleteMatch::MoreRelevant); |
+ if (!empty() && !begin()->allowed_to_be_default_match && |
H Fung
2013/08/06 22:53:00
Nit: matches_.begin() here too?
Peter Kasting
2013/08/06 22:56:16
Nit: Fix this use of begin() too?
Mark P
2013/08/07 00:44:31
Done.
Mark P
2013/08/07 00:44:31
Done.
|
+ OmniboxFieldTrial::ReorderForLegalDefaultMatch( |
+ input.current_page_classification())) { |
+ // Top match is not allowed to be the default match. Find the most |
+ // relevance legal match and shift it to the front. |
Peter Kasting
2013/08/06 22:56:16
Nit: relevance -> relevant
Mark P
2013/08/07 00:44:31
Done.
|
+ for (AutocompleteResult::iterator it = matches_.begin() + 1; |
+ it != matches_.end(); ++it) { |
+ if (it->allowed_to_be_default_match) { |
+ std::rotate(matches_.begin(), it, it + 1); |
+ break; |
+ } |
+ } |
+ } |
+ matches_.resize(std::min(kMaxMatches, matches_.size())); |
default_match_ = begin(); |
+ DCHECK((default_match_ == end()) || |
+ default_match_->allowed_to_be_default_match); |
// Set the alternate nav URL. |
alternate_nav_url_ = (default_match_ == end()) ? |