diff options
author | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-19 02:45:17 +0000 |
---|---|---|
committer | pkasting@chromium.org <pkasting@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-19 02:45:17 +0000 |
commit | f0953ccbeb01a7a4ed1daa3cb84c2bc42adbed1f (patch) | |
tree | f9751de82a7a1c1dd7a5a0e1d4d33cc65c2836e6 /chrome/browser/autocomplete | |
parent | a2d2e2f9de8dad20f28734486cadcd3c03e45bfa (diff) | |
download | chromium_src-f0953ccbeb01a7a4ed1daa3cb84c2bc42adbed1f.zip chromium_src-f0953ccbeb01a7a4ed1daa3cb84c2bc42adbed1f.tar.gz chromium_src-f0953ccbeb01a7a4ed1daa3cb84c2bc42adbed1f.tar.bz2 |
Force navigation to non-numeric hostnames with ports (e.g. "abc:81"). This restores the pre-Chrome-15 behavior for these inputs.
BUG=103598
TEST=Typing "abcdefg:123" in the address bar should attempt to navigate, not search, by default.
Review URL: http://codereview.chromium.org/8510024
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@110821 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/autocomplete')
-rw-r--r-- | chrome/browser/autocomplete/autocomplete.cc | 7 | ||||
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_unittest.cc | 16 |
2 files changed, 10 insertions, 13 deletions
diff --git a/chrome/browser/autocomplete/autocomplete.cc b/chrome/browser/autocomplete/autocomplete.cc index c8be0f1..260d72e 100644 --- a/chrome/browser/autocomplete/autocomplete.cc +++ b/chrome/browser/autocomplete/autocomplete.cc @@ -371,8 +371,8 @@ AutocompleteInput::Type AutocompleteInput::Parse( if (NumNonHostComponents(*parts) > 1) return URL; - // If the host has a known TLD, it's probably a URL, with the following - // exceptions: + // If the host has a known TLD or a port, it's probably a URL, with the + // following exceptions: // * Any "IP addresses" that make it here are more likely searches // (see above). // * If we reach here with a username, our input looks like "user@host[.tld]". @@ -381,7 +381,8 @@ AutocompleteInput::Type AutocompleteInput::Parse( // default and let users correct us on a case-by-case basis. // Note that we special-case "localhost" as a known hostname. if ((host_info.family != url_canon::CanonHostInfo::IPV4) && - ((registry_length != 0) || (host == ASCIIToUTF16("localhost")))) + ((registry_length != 0) || (host == ASCIIToUTF16("localhost") || + parts->port.is_nonempty()))) return parts->username.is_nonempty() ? UNKNOWN : URL; // If we reach this point, we know there's no known TLD on the input, so if diff --git a/chrome/browser/autocomplete/autocomplete_unittest.cc b/chrome/browser/autocomplete/autocomplete_unittest.cc index 26d0bc7..357e7f7 100644 --- a/chrome/browser/autocomplete/autocomplete_unittest.cc +++ b/chrome/browser/autocomplete/autocomplete_unittest.cc @@ -304,7 +304,7 @@ TEST_F(AutocompleteTest, InputType) { { ASCIIToUTF16("foo+bar.com"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("\"foo:bar\""), AutocompleteInput::QUERY }, { ASCIIToUTF16("link:foo.com"), AutocompleteInput::UNKNOWN }, - { ASCIIToUTF16("foo:81"), AutocompleteInput::UNKNOWN }, + { ASCIIToUTF16("foo:81"), AutocompleteInput::URL }, { ASCIIToUTF16("localhost:8080"), AutocompleteInput::URL }, { ASCIIToUTF16("www.foo.com:81"), AutocompleteInput::URL }, { ASCIIToUTF16("foo.com:123456"), AutocompleteInput::QUERY }, @@ -331,15 +331,13 @@ TEST_F(AutocompleteTest, InputType) { { ASCIIToUTF16("host#ref"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("host/path?query"), AutocompleteInput::URL }, { ASCIIToUTF16("host/path#ref"), AutocompleteInput::URL }, - { ASCIIToUTF16("en.wikipedia.org/wiki/James Bond"), - AutocompleteInput::URL }, + { ASCIIToUTF16("en.wikipedia.org/wiki/Jim Beam"), AutocompleteInput::URL }, // In Chrome itself, mailto: will get handled by ShellExecute, but in // unittest mode, we don't have the data loaded in the external protocol // handler to know this. // { ASCIIToUTF16("mailto:abuse@foo.com"), AutocompleteInput::URL }, { ASCIIToUTF16("view-source:http://www.foo.com/"), AutocompleteInput::URL }, - { ASCIIToUTF16("javascript:alert(\"Hey there!\");"), - AutocompleteInput::URL }, + { ASCIIToUTF16("javascript:alert(\"Hi there\");"), AutocompleteInput::URL }, #if defined(OS_WIN) { ASCIIToUTF16("C:\\Program Files"), AutocompleteInput::URL }, { ASCIIToUTF16("\\\\Server\\Folder\\File"), AutocompleteInput::URL }, @@ -370,12 +368,10 @@ TEST_F(AutocompleteTest, InputType) { { ASCIIToUTF16("127.0.1/"), AutocompleteInput::URL }, { ASCIIToUTF16("browser.tabs.closeButtons"), AutocompleteInput::UNKNOWN }, { WideToUTF16(L"\u6d4b\u8bd5"), AutocompleteInput::UNKNOWN }, - { ASCIIToUTF16("[2001:]"), AutocompleteInput::QUERY }, // Not a valid IP + { ASCIIToUTF16("[2001:]"), AutocompleteInput::QUERY }, { ASCIIToUTF16("[2001:dB8::1]"), AutocompleteInput::URL }, - { ASCIIToUTF16("192.168.0.256"), - AutocompleteInput::QUERY }, // Invalid IPv4 literal. - { ASCIIToUTF16("[foo.com]"), - AutocompleteInput::QUERY }, // Invalid IPv6 literal. + { ASCIIToUTF16("192.168.0.256"), AutocompleteInput::QUERY }, + { ASCIIToUTF16("[foo.com]"), AutocompleteInput::QUERY }, }; for (size_t i = 0; i < ARRAYSIZE_UNSAFE(input_cases); ++i) { |