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 8ad8a55bf0a551466c9c7e5245ecc8d39658f51b..2121f095dc74f83727ae8b8e5f76e2628ad547b6 100644 |
--- a/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc |
+++ b/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc |
@@ -18,29 +18,41 @@ namespace net { |
namespace { |
std::string GetDomainFromURL(const std::string& url) { |
- return RegistryControlledDomainService::GetDomainAndRegistry(GURL(url)); |
+ return RegistryControlledDomainService::GetDomainAndRegistry( |
+ GURL(url), RCDS::EXCLUDE_PRIVATE_REGISTRIES); |
} |
std::string GetDomainFromHost(const std::string& host) { |
- return RegistryControlledDomainService::GetDomainAndRegistry(host); |
+ return RegistryControlledDomainService::GetDomainAndRegistry( |
+ host, RCDS::EXCLUDE_PRIVATE_REGISTRIES); |
} |
-size_t GetRegistryLengthFromURL(const std::string& url, |
- bool allow_unknown_registries) { |
- return RegistryControlledDomainService::GetRegistryLength(GURL(url), |
- allow_unknown_registries); |
+size_t GetRegistryLengthFromURL( |
+ const std::string& url, |
+ RegistryControlledDomainService::UnknownRegistryFilter unknown_filter) { |
+ return RegistryControlledDomainService::GetRegistryLength( |
+ GURL(url), unknown_filter, RCDS::EXCLUDE_PRIVATE_REGISTRIES); |
} |
-size_t GetRegistryLengthFromHost(const std::string& host, |
- bool allow_unknown_registries) { |
- return RegistryControlledDomainService::GetRegistryLength(host, |
- allow_unknown_registries); |
+size_t GetRegistryLengthFromURLIncludingPrivate( |
+ const std::string& url, |
+ RegistryControlledDomainService::UnknownRegistryFilter unknown_filter) { |
+ return RegistryControlledDomainService::GetRegistryLength( |
+ GURL(url), unknown_filter, RCDS::INCLUDE_PRIVATE_REGISTRIES); |
+} |
+ |
+size_t GetRegistryLengthFromHost( |
+ const std::string& host, |
+ RegistryControlledDomainService::UnknownRegistryFilter unknown_filter) { |
+ return RegistryControlledDomainService::GetRegistryLength( |
+ host, unknown_filter, RCDS::EXCLUDE_PRIVATE_REGISTRIES); |
} |
bool CompareDomains(const std::string& url1, const std::string& url2) { |
GURL g1 = GURL(url1); |
GURL g2 = GURL(url2); |
- return RegistryControlledDomainService::SameDomainOrHost(g1, g2); |
+ return RegistryControlledDomainService::SameDomainOrHost( |
+ g1, g2, RCDS::EXCLUDE_PRIVATE_REGISTRIES); |
} |
} // namespace |
@@ -120,71 +132,119 @@ TEST_F(RegistryControlledDomainTest, TestGetRegistryLength) { |
UseDomainData(Perfect_Hash_Test1::FindDomain); |
// Test GURL version of GetRegistryLength(). |
- EXPECT_EQ(2U, GetRegistryLengthFromURL("http://a.baz.jp/file.html", false)); |
- // 1 |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.baz.jp./file.html", false)); |
- // 1 |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://ac.jp", false)); // 2 |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://a.bar.jp", false)); // 3 |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://bar.jp", false)); // 3 |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.bar.jp", false)); // 3 4 |
- EXPECT_EQ(12U, GetRegistryLengthFromURL("http://a.b.baz.bar.jp", false)); |
- // 4 |
- EXPECT_EQ(6U, GetRegistryLengthFromURL("http://baz.pref.bar.jp", false)); |
- // 5 |
- EXPECT_EQ(11U, GetRegistryLengthFromURL("http://a.b.bar.baz.com", false)); |
- // 6 |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.d.c", false)); // 7 |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://.a.d.c", false)); // 7 |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://..a.d.c", false)); // 7 |
- EXPECT_EQ(1U, GetRegistryLengthFromURL("http://a.b.c", false)); // 7 8 |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com", false)); // none |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com.", false)); // none |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://baz.com", true)); // none |
- EXPECT_EQ(4U, GetRegistryLengthFromURL("http://baz.com.", true)); // none |
- |
- EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL(std::string(), false)); |
- EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL("http://", false)); |
- EXPECT_EQ(std::string::npos, |
- GetRegistryLengthFromURL("file:///C:/file.html", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://foo.com..", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://...", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://192.168.0.1", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", true)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", true)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http:////Comment", false)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromURL( |
+ "http://a.baz.jp/file.html", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://a.baz.jp./file.html", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://ac.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 2 |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://a.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://baz.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 |
+ EXPECT_EQ(12U, GetRegistryLengthFromURL( |
+ "http://a.b.baz.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 4 |
+ EXPECT_EQ(6U, GetRegistryLengthFromURL( |
+ "http://baz.pref.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 5 |
+ EXPECT_EQ(11U, GetRegistryLengthFromURL( |
+ "http://a.b.bar.baz.com", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 6 |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://a.d.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://.a.d.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://..a.d.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
+ EXPECT_EQ(1U, GetRegistryLengthFromURL( |
+ "http://a.b.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8 |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://baz.com", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // none |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://baz.com.", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // none |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://baz.com", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); // none |
+ EXPECT_EQ(4U, GetRegistryLengthFromURL( |
+ "http://baz.com.", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); // none |
+ |
+ EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL( |
+ std::string(), RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL( |
+ "http://", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL( |
+ "file:///C:/file.html", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://foo.com..", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://...", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://192.168.0.1", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://localhost", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://localhost", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://localhost.", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://localhost.", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http:////Comment", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
// 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", false)); // 1 |
- EXPECT_EQ(3U, GetRegistryLengthFromHost("a.baz.jp.", false)); // 1 |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("ac.jp", false)); // 2 |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("a.bar.jp", false)); // 3 |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("bar.jp", false)); // 3 |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.bar.jp", false)); // 3 4 |
- EXPECT_EQ(12U, GetRegistryLengthFromHost("a.b.baz.bar.jp", false)); // 4 |
- EXPECT_EQ(6U, GetRegistryLengthFromHost("baz.pref.bar.jp", false)); // 5 |
- EXPECT_EQ(11U, GetRegistryLengthFromHost("a.b.bar.baz.com", false)); // 6 |
- EXPECT_EQ(3U, GetRegistryLengthFromHost("a.d.c", false)); // 7 |
- EXPECT_EQ(3U, GetRegistryLengthFromHost(".a.d.c", false)); // 7 |
- EXPECT_EQ(3U, GetRegistryLengthFromHost("..a.d.c", false)); // 7 |
- EXPECT_EQ(1U, GetRegistryLengthFromHost("a.b.c", false)); // 7 8 |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com", false)); // none |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com.", false)); // none |
- EXPECT_EQ(3U, GetRegistryLengthFromHost("baz.com", true)); // none |
- EXPECT_EQ(4U, GetRegistryLengthFromHost("baz.com.", true)); // none |
- |
- EXPECT_EQ(std::string::npos, GetRegistryLengthFromHost(std::string(), false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("foo.com..", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("..", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("192.168.0.1", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost", true)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.", true)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromHost( |
+ "a.baz.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
+ EXPECT_EQ(3U, GetRegistryLengthFromHost( |
+ "a.baz.jp.", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "ac.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 2 |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "a.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "baz.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 |
+ EXPECT_EQ(12U, GetRegistryLengthFromHost( |
+ "a.b.baz.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 4 |
+ EXPECT_EQ(6U, GetRegistryLengthFromHost( |
+ "baz.pref.bar.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 5 |
+ EXPECT_EQ(11U, GetRegistryLengthFromHost( |
+ "a.b.bar.baz.com", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 6 |
+ EXPECT_EQ(3U, GetRegistryLengthFromHost( |
+ "a.d.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
+ EXPECT_EQ(3U, GetRegistryLengthFromHost( |
+ ".a.d.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
+ EXPECT_EQ(3U, GetRegistryLengthFromHost( |
+ "..a.d.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
+ EXPECT_EQ(1U, GetRegistryLengthFromHost( |
+ "a.b.c", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8 |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "baz.com", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // none |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "baz.com.", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); // none |
+ EXPECT_EQ(3U, GetRegistryLengthFromHost( |
+ "baz.com", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); // none |
+ EXPECT_EQ(4U, GetRegistryLengthFromHost( |
+ "baz.com.", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); // none |
+ |
+ EXPECT_EQ(std::string::npos, |
+ GetRegistryLengthFromHost(std::string(), |
+ RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "foo.com..", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "..", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "192.168.0.1", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "localhost", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "localhost", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "localhost.", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromHost( |
+ "localhost.", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
} |
TEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) { |
@@ -218,13 +278,65 @@ TEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) { |
TEST_F(RegistryControlledDomainTest, TestDefaultData) { |
// Note that no data is set: we're using the default rules. |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://google.com", false)); |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://stanford.edu", false)); |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ustreas.gov", false)); |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://icann.net", false)); |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ferretcentral.org", false)); |
- EXPECT_EQ(0U, GetRegistryLengthFromURL("http://nowhere.foo", false)); |
- EXPECT_EQ(3U, GetRegistryLengthFromURL("http://nowhere.foo", true)); |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://google.com", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://stanford.edu", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://ustreas.gov", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://icann.net", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://ferretcentral.org", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://nowhere.foo", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(3U, GetRegistryLengthFromURL( |
+ "http://nowhere.foo", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
} |
+TEST_F(RegistryControlledDomainTest, TestPrivateRegistryHandling) { |
+ UseDomainData(Perfect_Hash_Test1::FindDomain); |
+ // Testing the same dataset for INCLUDE_PRIVATE_REGISTRIES and |
+ // EXCLUDE_PRIVATE_REGISTRIES arguments. |
+ // For the domain data used for this test, the private registries are |
+ // 'priv.no' and 'private'. |
+ |
+ // Non-private registries. |
+ EXPECT_EQ(2U, GetRegistryLengthFromURL( |
+ "http://priv.no", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromURL( |
+ "http://foo.priv.no", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromURL( |
+ "http://foo.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromURL( |
+ "http://www.foo.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://private", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://foo.private", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURL( |
+ "http://private", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(7U, GetRegistryLengthFromURL( |
+ "http://foo.private", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+ |
+ // Private registries. |
+ EXPECT_EQ(0U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://priv.no", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(7U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://foo.priv.no", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://foo.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(2U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://www.foo.jp", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://private", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(7U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://foo.private", RCDS::EXCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(0U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://private", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+ EXPECT_EQ(7U, GetRegistryLengthFromURLIncludingPrivate( |
+ "http://foo.private", RCDS::INCLUDE_UNKNOWN_REGISTRIES)); |
+} |
+ |
+ |
} // namespace net |