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

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

Issue 2378213002: Mark URLs with empty schemes as invalid. (Closed)
Patch Set: Comments Created 4 years, 2 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
« no previous file with comments | « no previous file | components/omnibox/browser/autocomplete_input_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_input.h" 5 #include "components/omnibox/browser/autocomplete_input.h"
6 6
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/strings/string_split.h" 8 #include "base/strings/string_split.h"
9 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
10 #include "base/strings/utf_string_conversions.h" 10 #include "base/strings/utf_string_conversions.h"
(...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after
247 // the option of treating it as a URL if we're wrong. 247 // the option of treating it as a URL if we're wrong.
248 // Note that SegmentURL() is smart so we aren't tricked by "c:\foo" or 248 // Note that SegmentURL() is smart so we aren't tricked by "c:\foo" or
249 // "www.example.com:81" in this case. 249 // "www.example.com:81" in this case.
250 return metrics::OmniboxInputType::UNKNOWN; 250 return metrics::OmniboxInputType::UNKNOWN;
251 } 251 }
252 252
253 // Either the user didn't type a scheme, in which case we need to distinguish 253 // Either the user didn't type a scheme, in which case we need to distinguish
254 // between an HTTP URL and a query, or the scheme is HTTP or HTTPS, in which 254 // between an HTTP URL and a query, or the scheme is HTTP or HTTPS, in which
255 // case we should reject invalid formulations. 255 // case we should reject invalid formulations.
256 256
257 // If we have an empty host it can't be a valid HTTP[S] URL. (This should
258 // only trigger for input that begins with a colon, which GURL will parse as a
259 // valid, non-standard URL; for standard URLs, an empty host would have
260 // resulted in an invalid |canonicalized_url| above.)
261 if (!canonicalized_url->has_host())
262 return metrics::OmniboxInputType::QUERY;
263
264 // Determine the host family. We get this information by (re-)canonicalizing 257 // Determine the host family. We get this information by (re-)canonicalizing
265 // the already-canonicalized host rather than using the user's original input, 258 // the already-canonicalized host rather than using the user's original input,
266 // in case fixup affected the result here (e.g. an input that looks like an 259 // in case fixup affected the result here (e.g. an input that looks like an
267 // IPv4 address but with a non-empty desired TLD would return IPV4 before 260 // IPv4 address but with a non-empty desired TLD would return IPV4 before
268 // fixup and NEUTRAL afterwards, and we want to treat it as NEUTRAL). 261 // fixup and NEUTRAL afterwards, and we want to treat it as NEUTRAL).
269 url::CanonHostInfo host_info; 262 url::CanonHostInfo host_info;
270 net::CanonicalizeHost(canonicalized_url->host(), &host_info); 263 net::CanonicalizeHost(canonicalized_url->host(), &host_info);
271 264
272 // Check if the canonicalized host has a known TLD, which we'll want to know 265 // Check if the canonicalized host has a known TLD, which we'll want to know
273 // below. 266 // below.
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 parts_ = url::Parsed(); 519 parts_ = url::Parsed();
527 scheme_.clear(); 520 scheme_.clear();
528 canonicalized_url_ = GURL(); 521 canonicalized_url_ = GURL();
529 prevent_inline_autocomplete_ = false; 522 prevent_inline_autocomplete_ = false;
530 prefer_keyword_ = false; 523 prefer_keyword_ = false;
531 allow_exact_keyword_match_ = false; 524 allow_exact_keyword_match_ = false;
532 want_asynchronous_matches_ = true; 525 want_asynchronous_matches_ = true;
533 from_omnibox_focus_ = false; 526 from_omnibox_focus_ = false;
534 terms_prefixed_by_http_or_https_.clear(); 527 terms_prefixed_by_http_or_https_.clear();
535 } 528 }
OLDNEW
« no previous file with comments | « no previous file | components/omnibox/browser/autocomplete_input_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698