diff options
-rw-r--r-- | chrome/browser/autocomplete/autocomplete_unittest.cc | 6 | ||||
-rw-r--r-- | net/base/net_util.cc | 12 | ||||
-rw-r--r-- | net/base/net_util.h | 2 | ||||
-rw-r--r-- | net/base/net_util_unittest.cc | 5 |
4 files changed, 14 insertions, 11 deletions
diff --git a/chrome/browser/autocomplete/autocomplete_unittest.cc b/chrome/browser/autocomplete/autocomplete_unittest.cc index 2783f74..61d984f 100644 --- a/chrome/browser/autocomplete/autocomplete_unittest.cc +++ b/chrome/browser/autocomplete/autocomplete_unittest.cc @@ -412,7 +412,8 @@ TEST_F(AutocompleteTest, InputType) { { ASCIIToUTF16("foo.c"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("foo.com"), AutocompleteInput::URL }, { ASCIIToUTF16("-foo.com"), AutocompleteInput::URL }, - { ASCIIToUTF16("foo-.com"), AutocompleteInput::UNKNOWN }, + { ASCIIToUTF16("foo-.com"), AutocompleteInput::URL }, + { ASCIIToUTF16("foo_.com"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("foo.-com"), AutocompleteInput::QUERY }, { ASCIIToUTF16("foo/"), AutocompleteInput::URL }, { ASCIIToUTF16("foo/bar"), AutocompleteInput::UNKNOWN }, @@ -472,7 +473,8 @@ TEST_F(AutocompleteTest, InputType) { { ASCIIToUTF16("http://foo_bar.com"), AutocompleteInput::URL }, { ASCIIToUTF16("http://foo/bar baz"), AutocompleteInput::URL }, { ASCIIToUTF16("http://-foo.com"), AutocompleteInput::URL }, - { ASCIIToUTF16("http://foo-.com"), AutocompleteInput::UNKNOWN }, + { ASCIIToUTF16("http://foo-.com"), AutocompleteInput::URL }, + { ASCIIToUTF16("http://foo_.com"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("http://foo.-com"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("http://_foo_.com"), AutocompleteInput::UNKNOWN }, { ASCIIToUTF16("http://foo.com:abc"), AutocompleteInput::QUERY }, diff --git a/net/base/net_util.cc b/net/base/net_util.cc index 967eb03..5404204 100644 --- a/net/base/net_util.cc +++ b/net/base/net_util.cc @@ -1305,7 +1305,7 @@ bool IsCanonicalizedHostCompliant(const std::string& host, bool in_component = false; bool most_recent_component_started_alpha = false; - bool last_char_was_hyphen_or_underscore = false; + bool last_char_was_underscore = false; for (std::string::const_iterator i(host.begin()); i != host.end(); ++i) { const char c = *i; @@ -1317,13 +1317,13 @@ bool IsCanonicalizedHostCompliant(const std::string& host, in_component = true; } else { if (c == '.') { - if (last_char_was_hyphen_or_underscore) + if (last_char_was_underscore) return false; in_component = false; - } else if (IsHostCharAlpha(c) || IsHostCharDigit(c)) { - last_char_was_hyphen_or_underscore = false; - } else if ((c == '-') || (c == '_')) { - last_char_was_hyphen_or_underscore = true; + } else if (IsHostCharAlpha(c) || IsHostCharDigit(c) || (c == '-')) { + last_char_was_underscore = false; + } else if (c == '_') { + last_char_was_underscore = true; } else { return false; } diff --git a/net/base/net_util.h b/net/base/net_util.h index f63f860..dabaa0f 100644 --- a/net/base/net_util.h +++ b/net/base/net_util.h @@ -172,7 +172,7 @@ NET_EXPORT std::string CanonicalizeHost(const std::string& host, // * One or more components separated by '.' // * Each component begins with an alphanumeric character or '-' // * Each component contains only alphanumeric characters and '-' or '_' -// * Each component ends with an alphanumeric character +// * Each component ends with an alphanumeric character or '-' // * The last component begins with an alphabetic character // * Optional trailing dot after last component (means "treat as FQDN") // If |desired_tld| is non-NULL, the host will only be considered invalid if diff --git a/net/base/net_util_unittest.cc b/net/base/net_util_unittest.cc index 67d202c..283ac6c 100644 --- a/net/base/net_util_unittest.cc +++ b/net/base/net_util_unittest.cc @@ -774,7 +774,8 @@ TEST(NetUtilTest, CompliantHost) { {"a.9a", "", false}, {"a+9a", "", false}, {"-a.a9", "", true}, - {"1-.a-b", "", false}, + {"1-.a-b", "", true}, + {"1_.a-b", "", false}, {"1-2.a_b", "", true}, {"a.b.c.d.e", "", true}, {"1.2.3.4.e", "", true}, @@ -786,7 +787,7 @@ TEST(NetUtilTest, CompliantHost) { for (size_t i = 0; i < ARRAYSIZE_UNSAFE(compliant_host_cases); ++i) { EXPECT_EQ(compliant_host_cases[i].expected_output, IsCanonicalizedHostCompliant(compliant_host_cases[i].host, - compliant_host_cases[i].desired_tld)); + compliant_host_cases[i].desired_tld)); } } |