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

Unified Diff: net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc

Issue 2451353002: Reduce buggy usage of the registry controlled domain service. (Closed)
Patch Set: Fix 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/registry_controlled_domains/registry_controlled_domain.cc ('k') | net/base/url_util.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc
diff --git a/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc b/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc
index 0d553cb255b3b8f79a4a1c95dd2fad807323a986..261a05e7fa66324baa29eecf869d306e1530b34c 100644
--- a/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc
+++ b/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc
@@ -2,12 +2,15 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+#include "base/strings/utf_string_conversions.h"
#include "net/base/registry_controlled_domains/registry_controlled_domain.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
#include "url/origin.h"
+#include "url/url_features.h"
namespace {
+
namespace test1 {
#include "net/base/registry_controlled_domains/effective_tld_names_unittest1-inc.cc"
}
@@ -26,10 +29,12 @@ namespace test5 {
namespace test6 {
#include "net/base/registry_controlled_domains/effective_tld_names_unittest6-inc.cc"
}
+
} // namespace
namespace net {
namespace registry_controlled_domains {
+
namespace {
std::string GetDomainFromURL(const std::string& url) {
@@ -56,16 +61,28 @@ size_t GetRegistryLengthFromURLIncludingPrivate(
INCLUDE_PRIVATE_REGISTRIES);
}
-size_t GetRegistryLengthFromHost(
- const std::string& host,
- UnknownRegistryFilter unknown_filter) {
- return GetRegistryLength(host, unknown_filter, EXCLUDE_PRIVATE_REGISTRIES);
+size_t PermissiveGetHostRegistryLength(base::StringPiece host) {
+ return PermissiveGetHostRegistryLength(host, EXCLUDE_UNKNOWN_REGISTRIES,
+ EXCLUDE_PRIVATE_REGISTRIES);
}
-size_t GetRegistryLengthFromHostIncludingPrivate(
- const std::string& host,
- UnknownRegistryFilter unknown_filter) {
- return GetRegistryLength(host, unknown_filter, INCLUDE_PRIVATE_REGISTRIES);
+// Only called when using ICU (avoids unused static function error).
+#if !BUILDFLAG(USE_PLATFORM_ICU_ALTERNATIVES)
+size_t PermissiveGetHostRegistryLength(base::StringPiece16 host) {
+ return PermissiveGetHostRegistryLength(host, EXCLUDE_UNKNOWN_REGISTRIES,
+ EXCLUDE_PRIVATE_REGISTRIES);
+}
+#endif
+
+size_t GetCanonicalHostRegistryLength(const std::string& host,
+ UnknownRegistryFilter unknown_filter) {
+ return GetCanonicalHostRegistryLength(host, unknown_filter,
+ EXCLUDE_PRIVATE_REGISTRIES);
+}
+
+size_t GetCanonicalHostRegistryLengthIncludingPrivate(const std::string& host) {
+ return GetCanonicalHostRegistryLength(host, EXCLUDE_UNKNOWN_REGISTRIES,
+ INCLUDE_PRIVATE_REGISTRIES);
}
} // namespace
@@ -216,57 +233,89 @@ TEST_F(RegistryControlledDomainTest, TestGetRegistryLength) {
// Test std::string version of GetRegistryLength(). Uses the same
// underpinnings as the GURL version, so this is really more of a check of
// CanonicalizeHost().
- EXPECT_EQ(2U, GetRegistryLengthFromHost("a.baz.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 1
- EXPECT_EQ(3U, GetRegistryLengthFromHost("a.baz.jp.",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 1
- EXPECT_EQ(0U, GetRegistryLengthFromHost("ac.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 2
- EXPECT_EQ(0U, GetRegistryLengthFromHost("a.bar.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 3
- EXPECT_EQ(0U, GetRegistryLengthFromHost("bar.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 3
- EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.bar.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4
- EXPECT_EQ(12U, GetRegistryLengthFromHost("a.b.baz.bar.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 4
- EXPECT_EQ(6U, GetRegistryLengthFromHost("baz.pref.bar.jp",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 5
- EXPECT_EQ(11U, GetRegistryLengthFromHost("a.b.bar.baz.com",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 6
- EXPECT_EQ(3U, GetRegistryLengthFromHost("a.d.c",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 7
- EXPECT_EQ(3U, GetRegistryLengthFromHost(".a.d.c",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 7
- EXPECT_EQ(3U, GetRegistryLengthFromHost("..a.d.c",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 7
- EXPECT_EQ(1U, GetRegistryLengthFromHost("a.b.c",
- EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8
- EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com",
- EXCLUDE_UNKNOWN_REGISTRIES)); // none
- EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com.",
- EXCLUDE_UNKNOWN_REGISTRIES)); // none
- EXPECT_EQ(3U, GetRegistryLengthFromHost("baz.com",
- INCLUDE_UNKNOWN_REGISTRIES)); // none
- EXPECT_EQ(4U, GetRegistryLengthFromHost("baz.com.",
- INCLUDE_UNKNOWN_REGISTRIES)); // none
+ EXPECT_EQ(2U, GetCanonicalHostRegistryLength(
+ "a.baz.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 1
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLength(
+ "a.baz.jp.", EXCLUDE_UNKNOWN_REGISTRIES)); // 1
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength(
+ "ac.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 2
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength(
+ "a.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength(
+ "bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength(
+ "baz.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4
+ EXPECT_EQ(12U, GetCanonicalHostRegistryLength(
+ "a.b.baz.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 4
+ EXPECT_EQ(6U, GetCanonicalHostRegistryLength(
+ "baz.pref.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 5
+ EXPECT_EQ(11U, GetCanonicalHostRegistryLength(
+ "a.b.bar.baz.com", EXCLUDE_UNKNOWN_REGISTRIES)); // 6
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLength(
+ "a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLength(
+ ".a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLength(
+ "..a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7
+ EXPECT_EQ(1U, GetCanonicalHostRegistryLength(
+ "a.b.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength(
+ "baz.com", EXCLUDE_UNKNOWN_REGISTRIES)); // none
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength(
+ "baz.com.", EXCLUDE_UNKNOWN_REGISTRIES)); // none
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLength(
+ "baz.com", INCLUDE_UNKNOWN_REGISTRIES)); // none
+ EXPECT_EQ(4U, GetCanonicalHostRegistryLength(
+ "baz.com.", INCLUDE_UNKNOWN_REGISTRIES)); // none
+
+ EXPECT_EQ(std::string::npos, GetCanonicalHostRegistryLength(
+ std::string(), EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength("foo.com..",
+ EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U,
+ GetCanonicalHostRegistryLength("..", EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength("192.168.0.1",
+ EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost",
+ EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost",
+ INCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost.",
+ EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLength("localhost.",
+ INCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(std::string::npos,
- GetRegistryLengthFromHost(std::string(), EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("foo.com..",
- EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("..",
- EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("192.168.0.1",
- EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost",
- EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost",
- INCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.",
- EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.",
- INCLUDE_UNKNOWN_REGISTRIES));
+ // IDN case.
+ EXPECT_EQ(10U, GetCanonicalHostRegistryLength("foo.xn--fiqs8s",
+ EXCLUDE_UNKNOWN_REGISTRIES));
+}
+
+TEST_F(RegistryControlledDomainTest, HostHasRegistryControlledDomain) {
+ UseDomainData(test1::kDafsa);
+
+ // Invalid hosts.
+ EXPECT_FALSE(HostHasRegistryControlledDomain(
+ std::string(), EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES));
+ EXPECT_FALSE(HostHasRegistryControlledDomain(
+ "%00asdf", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES));
+
+ // Invalid host but valid R.C.D.
+ EXPECT_TRUE(HostHasRegistryControlledDomain(
+ "%00foo.jp", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES));
+
+ // Valid R.C.D. when canonicalized, even with an invalid prefix and an
+ // escaped dot.
+ EXPECT_TRUE(HostHasRegistryControlledDomain("%00foo.Google%2EjP",
+ EXCLUDE_UNKNOWN_REGISTRIES,
+ EXCLUDE_PRIVATE_REGISTRIES));
+
+ // Regular, no match.
+ EXPECT_FALSE(HostHasRegistryControlledDomain(
+ "bar.notatld", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES));
+
+ // Regular, match.
+ EXPECT_TRUE(HostHasRegistryControlledDomain(
+ "www.Google.Jp", EXCLUDE_UNKNOWN_REGISTRIES, EXCLUDE_PRIVATE_REGISTRIES));
}
TEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) {
@@ -388,12 +437,13 @@ TEST_F(RegistryControlledDomainTest, TestDafsaTwoByteOffsets) {
"a.b.a____________________________________________________"
"________________________________________________8";
- EXPECT_EQ(102U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(102U,
- GetRegistryLengthFromHostIncludingPrivate(
- key1, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U,
+ GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(102U, GetCanonicalHostRegistryLengthIncludingPrivate(key1));
+ EXPECT_EQ(0U,
+ GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES));
}
TEST_F(RegistryControlledDomainTest, TestDafsaThreeByteOffsets) {
@@ -412,21 +462,22 @@ TEST_F(RegistryControlledDomainTest, TestDafsaThreeByteOffsets) {
// offset.
const char key0[] =
- "a.b.Z6___________________________________________________"
- "_________________________________________________Z6";
+ "a.b.z6___________________________________________________"
+ "_________________________________________________z6";
const char key1[] =
- "a.b.Z7___________________________________________________"
- "_________________________________________________Z7";
+ "a.b.z7___________________________________________________"
+ "_________________________________________________z7";
const char key2[] =
- "a.b.Za___________________________________________________"
- "_________________________________________________Z8";
+ "a.b.za___________________________________________________"
+ "_________________________________________________z8";
- EXPECT_EQ(104U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(104U,
- GetRegistryLengthFromHostIncludingPrivate(
- key1, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(0U,
+ GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(104U, GetCanonicalHostRegistryLengthIncludingPrivate(key1));
+ EXPECT_EQ(0U,
+ GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES));
}
TEST_F(RegistryControlledDomainTest, TestDafsaJoinedPrefixes) {
@@ -446,24 +497,22 @@ TEST_F(RegistryControlledDomainTest, TestDafsaJoinedPrefixes) {
const char key6[] = "a.b.aaaam";
const char key7[] = "a.b.bbbbn";
- EXPECT_EQ(2U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(2U,
- GetRegistryLengthFromHostIncludingPrivate(
- key1, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(3U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key3, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(3U,
- GetRegistryLengthFromHostIncludingPrivate(
- key3, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(0U,
- GetRegistryLengthFromHostIncludingPrivate(
- key4, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(2U, GetCanonicalHostRegistryLengthIncludingPrivate(key1));
+ EXPECT_EQ(3U,
+ GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(0U,
- GetRegistryLengthFromHostIncludingPrivate(
- key5, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(5U, GetRegistryLengthFromHost(key6, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(5U, GetRegistryLengthFromHost(key7, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key3, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLengthIncludingPrivate(key3));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key4));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key5));
+ EXPECT_EQ(5U,
+ GetCanonicalHostRegistryLength(key6, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(5U,
+ GetCanonicalHostRegistryLength(key7, EXCLUDE_UNKNOWN_REGISTRIES));
}
TEST_F(RegistryControlledDomainTest, TestDafsaJoinedSuffixes) {
@@ -483,24 +532,74 @@ TEST_F(RegistryControlledDomainTest, TestDafsaJoinedSuffixes) {
const char key6[] = "a.b.maaaa";
const char key7[] = "a.b.nbbbb";
- EXPECT_EQ(2U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(2U,
- GetRegistryLengthFromHostIncludingPrivate(
- key1, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(3U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(0U, GetRegistryLengthFromHost(key3, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(3U,
- GetRegistryLengthFromHostIncludingPrivate(
- key3, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key0, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(0U,
- GetRegistryLengthFromHostIncludingPrivate(
- key4, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key1, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(2U, GetCanonicalHostRegistryLengthIncludingPrivate(key1));
+ EXPECT_EQ(3U,
+ GetCanonicalHostRegistryLength(key2, EXCLUDE_UNKNOWN_REGISTRIES));
EXPECT_EQ(0U,
- GetRegistryLengthFromHostIncludingPrivate(
- key5, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(5U, GetRegistryLengthFromHost(key6, EXCLUDE_UNKNOWN_REGISTRIES));
- EXPECT_EQ(5U, GetRegistryLengthFromHost(key7, EXCLUDE_UNKNOWN_REGISTRIES));
+ GetCanonicalHostRegistryLength(key3, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(3U, GetCanonicalHostRegistryLengthIncludingPrivate(key3));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key4));
+ EXPECT_EQ(0U, GetCanonicalHostRegistryLengthIncludingPrivate(key5));
+ EXPECT_EQ(5U,
+ GetCanonicalHostRegistryLength(key6, EXCLUDE_UNKNOWN_REGISTRIES));
+ EXPECT_EQ(5U,
+ GetCanonicalHostRegistryLength(key7, EXCLUDE_UNKNOWN_REGISTRIES));
+}
+
+TEST_F(RegistryControlledDomainTest, Permissive) {
+ UseDomainData(test1::kDafsa);
+
+ EXPECT_EQ(std::string::npos, PermissiveGetHostRegistryLength(""));
+
+ // Regular non-canonical host name.
+ EXPECT_EQ(2U, PermissiveGetHostRegistryLength("Www.Google.Jp"));
+ EXPECT_EQ(3U, PermissiveGetHostRegistryLength("Www.Google.Jp."));
+
+ // Empty returns npos.
+ EXPECT_EQ(std::string::npos, PermissiveGetHostRegistryLength(""));
+
+ // Trailing spaces are counted as part of the hostname, meaning this will
+ // not match a known registry.
+ EXPECT_EQ(0U, PermissiveGetHostRegistryLength("Www.Google.Jp "));
+
+ // Invalid characters at the beginning are OK if the suffix still matches.
+ EXPECT_EQ(2U, PermissiveGetHostRegistryLength("*%00#?.Jp"));
+
+ // Escaped period, this will add new components.
+ EXPECT_EQ(4U, PermissiveGetHostRegistryLength("Www.Googl%45%2e%4Ap"));
+
+// IDN cases (not supported when not linking ICU).
+#if !BUILDFLAG(USE_PLATFORM_ICU_ALTERNATIVES)
+ EXPECT_EQ(10U, PermissiveGetHostRegistryLength("foo.xn--fiqs8s"));
+ EXPECT_EQ(11U, PermissiveGetHostRegistryLength("foo.xn--fiqs8s."));
+ EXPECT_EQ(18U, PermissiveGetHostRegistryLength("foo.%E4%B8%AD%E5%9B%BD"));
+ EXPECT_EQ(19U, PermissiveGetHostRegistryLength("foo.%E4%B8%AD%E5%9B%BD."));
+ EXPECT_EQ(6U,
+ PermissiveGetHostRegistryLength("foo.\xE4\xB8\xAD\xE5\x9B\xBD"));
+ EXPECT_EQ(7U,
+ PermissiveGetHostRegistryLength("foo.\xE4\xB8\xAD\xE5\x9B\xBD."));
+ // UTF-16 IDN.
+ EXPECT_EQ(2U, PermissiveGetHostRegistryLength(
+ base::WideToUTF16(L"foo.\x4e2d\x56fd")));
+
+ // Fullwidth dot (u+FF0E) that will get canonicalized to a dot.
+ EXPECT_EQ(2U, PermissiveGetHostRegistryLength("Www.Google\xEF\xBC\x8Ejp"));
+ // Same but also ending in a fullwidth dot.
+ EXPECT_EQ(5U, PermissiveGetHostRegistryLength(
+ "Www.Google\xEF\xBC\x8Ejp\xEF\xBC\x8E"));
+ // Escaped UTF-8, also with an escaped fullwidth "Jp".
+ // "Jp" = U+FF2A, U+FF50, UTF-8 = EF BC AA EF BD 90
+ EXPECT_EQ(27U, PermissiveGetHostRegistryLength(
+ "Www.Google%EF%BC%8E%EF%BC%AA%EF%BD%90%EF%BC%8E"));
+ // UTF-16 (ending in a dot).
+ EXPECT_EQ(3U, PermissiveGetHostRegistryLength(
+ base::WideToUTF16(L"Www.Google\xFF0E\xFF2A\xFF50\xFF0E")));
+#endif
}
+
} // namespace registry_controlled_domains
} // namespace net
« no previous file with comments | « net/base/registry_controlled_domains/registry_controlled_domain.cc ('k') | net/base/url_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698