1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// Use of this source code is governed by a BSD-style license that can be 3c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott// found in the LICENSE file. 4c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 5c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "googleurl/src/gurl.h" 6c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "net/base/registry_controlled_domain.h" 7c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "testing/gtest/include/gtest/gtest.h" 8c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 9c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "effective_tld_names_unittest1.cc" 10c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef TOTAL_KEYWORDS 11c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef MIN_WORD_LENGTH 12c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef MAX_WORD_LENGTH 13c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef MIN_HASH_VALUE 14c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#undef MAX_HASH_VALUE 15c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott#include "effective_tld_names_unittest2.cc" 16c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 17ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsennamespace net { 18c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottnamespace { 19c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 20c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass TestRegistryControlledDomainService : 21ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen public RegistryControlledDomainService { 22c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott public: 23c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Sets the given data. 24c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static void UseDomainData(FindDomainPtr function) { 25ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen RegistryControlledDomainService::UseFindDomainFunction(function); 26c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 27c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 28c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Creates a new dedicated instance to be used for testing, deleting any 29c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // previously-set one. 30c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static void UseDedicatedInstance() { 31c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott delete static_cast<TestRegistryControlledDomainService*>( 32c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott SetInstance(new TestRegistryControlledDomainService())); 33c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 34c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 35c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Restores RegistryControlledDomainService to using its default instance, 36c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // deleting any previously-set test instance. 37c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott static void UseDefaultInstance() { 38c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott delete static_cast<TestRegistryControlledDomainService*>(SetInstance(NULL)); 39c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 40c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 41c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 42c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottclass RegistryControlledDomainTest : public testing::Test { 43c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott protected: 44c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual void SetUp() { 45c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott TestRegistryControlledDomainService::UseDedicatedInstance(); 46c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 47c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 48c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott virtual void TearDown() { 49c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott TestRegistryControlledDomainService::UseDefaultInstance(); 50c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott } 51c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott}; 52c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 53c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 54c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstd::string GetDomainFromURL(const std::string& url) { 55c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return TestRegistryControlledDomainService::GetDomainAndRegistry(GURL(url)); 56c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 57c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 58c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottstd::string GetDomainFromHost(const std::wstring& host) { 59c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return TestRegistryControlledDomainService::GetDomainAndRegistry(host); 60c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 61c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 62c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottsize_t GetRegistryLengthFromURL(const std::string& url, 63c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott bool allow_unknown_registries) { 64c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return TestRegistryControlledDomainService::GetRegistryLength(GURL(url), 65c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott allow_unknown_registries); 66c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 67c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 68c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottsize_t GetRegistryLengthFromHost(const std::wstring& host, 69c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott bool allow_unknown_registries) { 70c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return TestRegistryControlledDomainService::GetRegistryLength(host, 71c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott allow_unknown_registries); 72c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 73c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 74c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scottbool CompareDomains(const std::string& url1, const std::string& url2) { 75c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott GURL g1 = GURL(url1); 76c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott GURL g2 = GURL(url2); 77c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott return TestRegistryControlledDomainService::SameDomainOrHost(g1, g2); 78c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 79c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 80c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(RegistryControlledDomainTest, TestGetDomainAndRegistry) { 81c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott TestRegistryControlledDomainService::UseDomainData( 82c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Perfect_Hash_Test1::FindDomain); 83c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 84c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test GURL version of GetDomainAndRegistry(). 85c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.jp", GetDomainFromURL("http://a.baz.jp/file.html")); // 1 86c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.jp.", GetDomainFromURL("http://a.baz.jp./file.html")); // 1 87c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://ac.jp")); // 2 88c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://a.bar.jp")); // 3 89c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://bar.jp")); // 3 90c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://baz.bar.jp")); // 3 4 91c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.b.baz.bar.jp", GetDomainFromURL("http://a.b.baz.bar.jp")); 92c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 4 93c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("pref.bar.jp", GetDomainFromURL("http://baz.pref.bar.jp")); // 5 94c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("b.bar.baz.com.", GetDomainFromURL("http://a.b.bar.baz.com.")); 95c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 6 96c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.d.c", GetDomainFromURL("http://a.d.c")); // 7 97c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.d.c", GetDomainFromURL("http://.a.d.c")); // 7 98c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.d.c", GetDomainFromURL("http://..a.d.c")); // 7 99c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("b.c", GetDomainFromURL("http://a.b.c")); // 7 8 100c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.com", GetDomainFromURL("http://baz.com")); // none 101c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.com.", GetDomainFromURL("http://baz.com.")); // none 102c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 103c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("")); 104c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://")); 105c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("file:///C:/file.html")); 106c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://foo.com..")); 107c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://...")); 108c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://192.168.0.1")); 109c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://localhost")); 110c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http://localhost.")); 111c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromURL("http:////Comment")); 112c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 113c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test std::wstring version of GetDomainAndRegistry(). Uses the same 114c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // underpinnings as the GURL version, so this is really more of a check of 115c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // CanonicalizeHost(). 116c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.jp", GetDomainFromHost(L"a.baz.jp")); // 1 117c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.jp.", GetDomainFromHost(L"a.baz.jp.")); // 1 118c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"ac.jp")); // 2 119c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"a.bar.jp")); // 3 120c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"bar.jp")); // 3 121c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"baz.bar.jp")); // 3 4 122c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.b.baz.bar.jp", GetDomainFromHost(L"a.b.baz.bar.jp")); // 3 4 123c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("pref.bar.jp", GetDomainFromHost(L"baz.pref.bar.jp")); // 5 124c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("b.bar.baz.com.", GetDomainFromHost(L"a.b.bar.baz.com.")); // 6 125c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.d.c", GetDomainFromHost(L"a.d.c")); // 7 126c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.d.c", GetDomainFromHost(L".a.d.c")); // 7 127c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("a.d.c", GetDomainFromHost(L"..a.d.c")); // 7 128c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("b.c", GetDomainFromHost(L"a.b.c")); // 7 8 129c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.com", GetDomainFromHost(L"baz.com")); // none 130c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("baz.com.", GetDomainFromHost(L"baz.com.")); // none 131c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 132c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"")); 133c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"foo.com..")); 134c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"...")); 135c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"192.168.0.1")); 136c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L"localhost.")); 137c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ("", GetDomainFromHost(L".localhost.")); 138c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 139c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 140c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(RegistryControlledDomainTest, TestGetRegistryLength) { 141c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott TestRegistryControlledDomainService::UseDomainData( 142c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Perfect_Hash_Test1::FindDomain); 143c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 144c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test GURL version of GetRegistryLength(). 145c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(2U, GetRegistryLengthFromURL("http://a.baz.jp/file.html", false)); 146c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 1 147c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.baz.jp./file.html", false)); 148c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 1 149c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://ac.jp", false)); // 2 150c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://a.bar.jp", false)); // 3 151c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://bar.jp", false)); // 3 152c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.bar.jp", false)); // 3 4 153c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(12U, GetRegistryLengthFromURL("http://a.b.baz.bar.jp", false)); 154c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 4 155c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(6U, GetRegistryLengthFromURL("http://baz.pref.bar.jp", false)); 156c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 5 157c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(11U, GetRegistryLengthFromURL("http://a.b.bar.baz.com", false)); 158c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 6 159c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://a.d.c", false)); // 7 160c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://.a.d.c", false)); // 7 161c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://..a.d.c", false)); // 7 162c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(1U, GetRegistryLengthFromURL("http://a.b.c", false)); // 7 8 163c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com", false)); // none 164c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://baz.com.", false)); // none 165c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://baz.com", true)); // none 166c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(4U, GetRegistryLengthFromURL("http://baz.com.", true)); // none 167c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 168c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL("", false)); 169c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(std::string::npos, GetRegistryLengthFromURL("http://", false)); 170c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(std::string::npos, 171c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott GetRegistryLengthFromURL("file:///C:/file.html", false)); 172c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://foo.com..", false)); 173c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://...", false)); 174c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://192.168.0.1", false)); 175c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", false)); 176c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost", true)); 177c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", false)); 178c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://localhost.", true)); 179c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http:////Comment", false)); 180c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 181c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Test std::wstring version of GetRegistryLength(). Uses the same 182c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // underpinnings as the GURL version, so this is really more of a check of 183c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // CanonicalizeHost(). 184c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(2U, GetRegistryLengthFromHost(L"a.baz.jp", false)); // 1 185c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromHost(L"a.baz.jp.", false)); // 1 186c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"ac.jp", false)); // 2 187c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"a.bar.jp", false)); // 3 188c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"bar.jp", false)); // 3 189c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"baz.bar.jp", false)); // 3 4 190c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(12U, GetRegistryLengthFromHost(L"a.b.baz.bar.jp", false)); // 4 191c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(6U, GetRegistryLengthFromHost(L"baz.pref.bar.jp", false)); // 5 192c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(11U, GetRegistryLengthFromHost(L"a.b.bar.baz.com", false)); 193c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // 6 194c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromHost(L"a.d.c", false)); // 7 195c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromHost(L".a.d.c", false)); // 7 196c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromHost(L"..a.d.c", false)); // 7 197c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(1U, GetRegistryLengthFromHost(L"a.b.c", false)); // 7 8 198c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"baz.com", false)); // none 199c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"baz.com.", false)); // none 200c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromHost(L"baz.com", true)); // none 201c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(4U, GetRegistryLengthFromHost(L"baz.com.", true)); // none 202c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 203c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(std::string::npos, GetRegistryLengthFromHost(L"", false)); 204c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"foo.com..", false)); 205c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"..", false)); 206c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"192.168.0.1", false)); 207c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"localhost", false)); 208c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"localhost", true)); 209c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"localhost.", false)); 210c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromHost(L"localhost.", true)); 211c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 212c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 213c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) { 214c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott TestRegistryControlledDomainService::UseDomainData( 215c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott Perfect_Hash_Test2::FindDomain); 216c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 217731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://a.b.bar.jp/file.html", 218731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://a.b.bar.jp/file.html")); // b.bar.jp 219731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://a.b.bar.jp/file.html", 220731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://b.b.bar.jp/file.html")); // b.bar.jp 221731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_FALSE(CompareDomains("http://a.foo.jp/file.html", // foo.jp 222731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://a.not.jp/file.html")); // not.jp 223731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_FALSE(CompareDomains("http://a.foo.jp/file.html", // foo.jp 224731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://a.foo.jp./file.html")); // foo.jp. 225731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_FALSE(CompareDomains("http://a.com/file.html", // a.com 226731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://b.com/file.html")); // b.com 227731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", 228731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://b.x.com/file.html")); // x.com 229731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", 230731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://.x.com/file.html")); // x.com 231731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://a.x.com/file.html", 232731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://..b.x.com/file.html")); // x.com 233731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://intranet/file.html", 234731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://intranet/file.html")); // intranet 235731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_TRUE(CompareDomains("http://127.0.0.1/file.html", 236731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://127.0.0.1/file.html")); // 127.0.0.1 237731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_FALSE(CompareDomains("http://192.168.0.1/file.html", // 192.168.0.1 238731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "http://127.0.0.1/file.html")); // 127.0.0.1 239731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick EXPECT_FALSE(CompareDomains("file:///C:/file.html", 240731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "file:///C:/file.html")); // no host 241c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 242c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 243c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick ScottTEST_F(RegistryControlledDomainTest, TestDefaultData) { 244c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott TestRegistryControlledDomainService::UseDefaultInstance(); 245c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 246c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott // Note that no data is set: we're using the default rules. 247c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://google.com", false)); 248c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://stanford.edu", false)); 249c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ustreas.gov", false)); 250c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://icann.net", false)); 251c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://ferretcentral.org", false)); 252c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(0U, GetRegistryLengthFromURL("http://nowhere.foo", false)); 253c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott EXPECT_EQ(3U, GetRegistryLengthFromURL("http://nowhere.foo", true)); 254c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott} 255c7f5f8508d98d5952d42ed7648c2a8f30a4da156Patrick Scott 256ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace 257ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen} // namespace net 258