| Index: net/base/net_util_unittest.cc | 
| diff --git a/net/base/net_util_unittest.cc b/net/base/net_util_unittest.cc | 
| index d7fc76f55441f14b659dff6d6e4e751df281d38f..7c6bb572d77c363dc39d14560497966f16953702 100644 | 
| --- a/net/base/net_util_unittest.cc | 
| +++ b/net/base/net_util_unittest.cc | 
| @@ -3498,4 +3498,72 @@ TEST(NetUtilTest, IsSafePortableRelativePath) { | 
| } | 
| } | 
|  | 
| +struct NonUniqueNameTestData { | 
| +  bool is_unique; | 
| +  const char* hostname; | 
| +}; | 
| + | 
| +// Google Test pretty-printer. | 
| +void PrintTo(const NonUniqueNameTestData& data, std::ostream* os) { | 
| +  ASSERT_TRUE(data.hostname); | 
| +  *os << " hostname: " << testing::PrintToString(data.hostname) | 
| +      << "; is_unique: " << testing::PrintToString(data.is_unique); | 
| +} | 
| + | 
| +const NonUniqueNameTestData kNonUniqueNameTestData[] = { | 
| +    // Domains under ICANN-assigned domains. | 
| +    { true, "google.com" }, | 
| +    { true, "google.co.uk" }, | 
| +    // Domains under private registries. | 
| +    { true, "appspot.com" }, | 
| +    { true, "test.appspot.com" }, | 
| +    // IPv4 addresses (in various forms). | 
| +    { true, "8.8.8.8" }, | 
| +    { true, "1.2.3" }, | 
| +    { true, "14.15" }, | 
| +    { true, "676768" }, | 
| +    // IPv6 addresses. | 
| +    { true, "FEDC:ba98:7654:3210:FEDC:BA98:7654:3210" }, | 
| +    { true, "::192.9.5.5" }, | 
| +    { true, "FEED::BEEF" }, | 
| +    // 'internal'/non-IANA assigned domains. | 
| +    { false, "intranet" }, | 
| +    { false, "intranet." }, | 
| +    { false, "intranet.example" }, | 
| +    { false, "host.intranet.example" }, | 
| +    // gTLDs under discussion, but not yet assigned. | 
| +    { false, "intranet.corp" }, | 
| +    { false, "example.tech" }, | 
| +    { false, "intranet.internal" }, | 
| +    // Invalid host names are treated as unique - but expected to be | 
| +    // filtered out before then. | 
| +    { true, "junk)(£)$*!@~#" }, | 
| +    { true, "w$w.example.com" }, | 
| +    { true, "nocolonsallowed:example" }, | 
| +    { true, "[::4.5.6.9]" }, | 
| +}; | 
| + | 
| +class NetUtilNonUniqueNameTest | 
| +    : public testing::TestWithParam<NonUniqueNameTestData> { | 
| + public: | 
| +  virtual ~NetUtilNonUniqueNameTest() {} | 
| + | 
| + protected: | 
| +  bool IsUnique(const std::string& hostname) { | 
| +    return !IsHostnameNonUnique(hostname); | 
| +  } | 
| +}; | 
| + | 
| +// Test that internal/non-unique names are properly identified as such, but | 
| +// that IP addresses and hosts beneath registry-controlled domains are flagged | 
| +// as unique names. | 
| +TEST_P(NetUtilNonUniqueNameTest, IsHostnameNonUnique) { | 
| +  const NonUniqueNameTestData& test_data = GetParam(); | 
| + | 
| +  EXPECT_EQ(test_data.is_unique, IsUnique(test_data.hostname)); | 
| +} | 
| + | 
| +INSTANTIATE_TEST_CASE_P(, NetUtilNonUniqueNameTest, | 
| +                        testing::ValuesIn(kNonUniqueNameTestData)); | 
| + | 
| }  // namespace net | 
|  |