Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(718)

Side by Side Diff: components/omnibox/browser/autocomplete_result.cc

Issue 2266083002: Avoid DCHECK failure for chrome:// URLs in autocomplete suggestions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: changes for pkasting@ Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "components/omnibox/browser/autocomplete_result.h" 5 #include "components/omnibox/browser/autocomplete_result.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
159 if (default_match_ != matches_.end()) { 159 if (default_match_ != matches_.end()) {
160 const base::string16 debug_info = 160 const base::string16 debug_info =
161 base::ASCIIToUTF16("fill_into_edit=") + 161 base::ASCIIToUTF16("fill_into_edit=") +
162 default_match_->fill_into_edit + 162 default_match_->fill_into_edit +
163 base::ASCIIToUTF16(", provider=") + 163 base::ASCIIToUTF16(", provider=") +
164 ((default_match_->provider != NULL) 164 ((default_match_->provider != NULL)
165 ? base::ASCIIToUTF16(default_match_->provider->GetName()) 165 ? base::ASCIIToUTF16(default_match_->provider->GetName())
166 : base::string16()) + 166 : base::string16()) +
167 base::ASCIIToUTF16(", input=") + 167 base::ASCIIToUTF16(", input=") +
168 input.text(); 168 input.text();
169 DCHECK(default_match_->allowed_to_be_default_match) << debug_info; 169
170 // If the default match is valid (i.e., not a prompt/placeholder), make 170 // We should only get here with an empty omnibox for automatic suggestions
171 // sure the type of destination is what the user would expect given the 171 // on focus on the NTP; in these cases hitting enter should do nothing, so
172 // input. 172 // there should be no default match. Otherwise, we're doing automatic
173 if (default_match_->destination_url.is_valid()) { 173 // suggestions for the currently visible URL (and hitting enter should
174 // reload it), or the user is typing; in either of these cases, there should
175 // be a default match.
176 DCHECK_NE(input.text().empty(), default_match_->allowed_to_be_default_match)
177 << debug_info;
178
179 // For navigable default matches, make sure the destination type is what the
180 // user would expect given the input.
181 if (default_match_->allowed_to_be_default_match &&
182 default_match_->destination_url.is_valid()) {
174 if (AutocompleteMatch::IsSearchType(default_match_->type)) { 183 if (AutocompleteMatch::IsSearchType(default_match_->type)) {
175 // We shouldn't get query matches for URL inputs. 184 // We shouldn't get query matches for URL inputs.
176 DCHECK_NE(metrics::OmniboxInputType::URL, input.type()) << debug_info; 185 DCHECK_NE(metrics::OmniboxInputType::URL, input.type()) << debug_info;
177 } else { 186 } else {
178 // If the user explicitly typed a scheme, the default match should 187 // If the user explicitly typed a scheme, the default match should
179 // have the same scheme. 188 // have the same scheme.
180 if ((input.type() == metrics::OmniboxInputType::URL) && 189 if ((input.type() == metrics::OmniboxInputType::URL) &&
181 input.parts().scheme.is_nonempty()) { 190 input.parts().scheme.is_nonempty()) {
182 const std::string& in_scheme = base::UTF16ToUTF8(input.scheme()); 191 const std::string& in_scheme = base::UTF16ToUTF8(input.scheme());
183 const std::string& dest_scheme = 192 const std::string& dest_scheme =
(...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after
379 i != old_matches.rend() && delta > 0; ++i) { 388 i != old_matches.rend() && delta > 0; ++i) {
380 if (!HasMatchByDestination(*i, new_matches)) { 389 if (!HasMatchByDestination(*i, new_matches)) {
381 AutocompleteMatch match = *i; 390 AutocompleteMatch match = *i;
382 match.relevance = std::min(max_relevance, match.relevance); 391 match.relevance = std::min(max_relevance, match.relevance);
383 match.from_previous = true; 392 match.from_previous = true;
384 matches_.push_back(match); 393 matches_.push_back(match);
385 delta--; 394 delta--;
386 } 395 }
387 } 396 }
388 } 397 }
OLDNEW
« no previous file with comments | « components/omnibox/browser/autocomplete_controller.cc ('k') | components/omnibox/browser/autocomplete_result_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698