Index: net/base/registry_controlled_domains/registry_controlled_domain.h |
diff --git a/net/base/registry_controlled_domains/registry_controlled_domain.h b/net/base/registry_controlled_domains/registry_controlled_domain.h |
deleted file mode 100644 |
index 639f264047b0255617577fef7f6d6929027bc286..0000000000000000000000000000000000000000 |
--- a/net/base/registry_controlled_domains/registry_controlled_domain.h |
+++ /dev/null |
@@ -1,238 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// NB: Modelled after Mozilla's code (originally written by Pamela Greene, |
-// later modified by others), but almost entirely rewritten for Chrome. |
-// (netwerk/dns/src/nsEffectiveTLDService.h) |
-/* ***** BEGIN LICENSE BLOCK ***** |
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
- * |
- * The contents of this file are subject to the Mozilla Public License Version |
- * 1.1 (the "License"); you may not use this file except in compliance with |
- * the License. You may obtain a copy of the License at |
- * http://www.mozilla.org/MPL/ |
- * |
- * Software distributed under the License is distributed on an "AS IS" basis, |
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License |
- * for the specific language governing rights and limitations under the |
- * License. |
- * |
- * The Original Code is Mozilla TLD Service |
- * |
- * The Initial Developer of the Original Code is |
- * Google Inc. |
- * Portions created by the Initial Developer are Copyright (C) 2006 |
- * the Initial Developer. All Rights Reserved. |
- * |
- * Contributor(s): |
- * Pamela Greene <pamg.bugs@gmail.com> (original author) |
- * |
- * Alternatively, the contents of this file may be used under the terms of |
- * either the GNU General Public License Version 2 or later (the "GPL"), or |
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), |
- * in which case the provisions of the GPL or the LGPL are applicable instead |
- * of those above. If you wish to allow use of your version of this file only |
- * under the terms of either the GPL or the LGPL, and not to allow others to |
- * use your version of this file under the terms of the MPL, indicate your |
- * decision by deleting the provisions above and replace them with the notice |
- * and other provisions required by the GPL or the LGPL. If you do not delete |
- * the provisions above, a recipient may use your version of this file under |
- * the terms of any one of the MPL, the GPL or the LGPL. |
- * |
- * ***** END LICENSE BLOCK ***** */ |
- |
-/* |
- (Documentation based on the Mozilla documentation currently at |
- http://wiki.mozilla.org/Gecko:Effective_TLD_Service, written by the same |
- author.) |
- |
- The RegistryControlledDomainService examines the hostname of a GURL passed to |
- it and determines the longest portion that is controlled by a registrar. |
- Although technically the top-level domain (TLD) for a hostname is the last |
- dot-portion of the name (such as .com or .org), many domains (such as co.uk) |
- function as though they were TLDs, allocating any number of more specific, |
- essentially unrelated names beneath them. For example, .uk is a TLD, but |
- nobody is allowed to register a domain directly under .uk; the "effective" |
- TLDs are ac.uk, co.uk, and so on. We wouldn't want to allow any site in |
- *.co.uk to set a cookie for the entire co.uk domain, so it's important to be |
- able to identify which higher-level domains function as effective TLDs and |
- which can be registered. |
- |
- The service obtains its information about effective TLDs from a text resource |
- that must be in the following format: |
- |
- * It should use plain ASCII. |
- * It should contain one domain rule per line, terminated with \n, with nothing |
- else on the line. (The last rule in the file may omit the ending \n.) |
- * Rules should have been normalized using the same canonicalization that GURL |
- applies. For ASCII, that means they're not case-sensitive, among other |
- things; other normalizations are applied for other characters. |
- * Each rule should list the entire TLD-like domain name, with any subdomain |
- portions separated by dots (.) as usual. |
- * Rules should neither begin nor end with a dot. |
- * If a hostname matches more than one rule, the most specific rule (that is, |
- the one with more dot-levels) will be used. |
- * Other than in the case of wildcards (see below), rules do not implicitly |
- include their subcomponents. For example, "bar.baz.uk" does not imply |
- "baz.uk", and if "bar.baz.uk" is the only rule in the list, "foo.bar.baz.uk" |
- will match, but "baz.uk" and "qux.baz.uk" won't. |
- * The wildcard character '*' will match any valid sequence of characters. |
- * Wildcards may only appear as the entire most specific level of a rule. That |
- is, a wildcard must come at the beginning of a line and must be followed by |
- a dot. (You may not use a wildcard as the entire rule.) |
- * A wildcard rule implies a rule for the entire non-wildcard portion. For |
- example, the rule "*.foo.bar" implies the rule "foo.bar" (but not the rule |
- "bar"). This is typically important in the case of exceptions (see below). |
- * The exception character '!' before a rule marks an exception to a wildcard |
- rule. If your rules are "*.tokyo.jp" and "!pref.tokyo.jp", then |
- "a.b.tokyo.jp" has an effective TLD of "b.tokyo.jp", but "a.pref.tokyo.jp" |
- has an effective TLD of "tokyo.jp" (the exception prevents the wildcard |
- match, and we thus fall through to matching on the implied "tokyo.jp" rule |
- from the wildcard). |
- * If you use an exception rule without a corresponding wildcard rule, the |
- behavior is undefined. |
- |
- Firefox has a very similar service, and it's their data file we use to |
- construct our resource. However, the data expected by this implementation |
- differs from the Mozilla file in several important ways: |
- (1) We require that all single-level TLDs (com, edu, etc.) be explicitly |
- listed. As of this writing, Mozilla's file includes the single-level |
- TLDs too, but that might change. |
- (2) Our data is expected be in pure ASCII: all UTF-8 or otherwise encoded |
- items must already have been normalized. |
- (3) We do not allow comments, rule notes, blank lines, or line endings other |
- than LF. |
- Rules are also expected to be syntactically valid. |
- |
- The utility application tld_cleanup.exe converts a Mozilla-style file into a |
- Chrome one, making sure that single-level TLDs are explicitly listed, using |
- GURL to normalize rules, and validating the rules. |
-*/ |
- |
-#ifndef NET_BASE_REGISTRY_CONTROLLED_DOMAINS_REGISTRY_CONTROLLED_DOMAIN_H_ |
-#define NET_BASE_REGISTRY_CONTROLLED_DOMAINS_REGISTRY_CONTROLLED_DOMAIN_H_ |
- |
-#include <string> |
- |
-#include "base/basictypes.h" |
-#include "net/base/net_export.h" |
- |
-class GURL; |
- |
-struct DomainRule; |
- |
-namespace net { |
-namespace registry_controlled_domains { |
- |
-// This enum is a required parameter to all public methods declared for this |
-// service. The Public Suffix List (http://publicsuffix.org/) this service |
-// uses as a data source splits all effective-TLDs into two groups. The main |
-// group describes registries that are acknowledged by ICANN. The second group |
-// contains a list of private additions for domains that enable external users |
-// to create subdomains, such as appspot.com. |
-// The RegistryFilter enum lets you choose whether you want to include the |
-// private additions in your lookup. |
-// See this for example use cases: |
-// https://wiki.mozilla.org/Public_Suffix_List/Use_Cases |
-enum NET_EXPORT PrivateRegistryFilter { |
- EXCLUDE_PRIVATE_REGISTRIES = 0, |
- INCLUDE_PRIVATE_REGISTRIES |
-}; |
- |
-// This enum is a required parameter to the GetRegistryLength functions |
-// declared for this service. Whenever there is no matching rule in the |
-// effective-TLD data (or in the default data, if the resource failed to |
-// load), the result will be dependent on which enum value was passed in. |
-// If EXCLUDE_UNKNOWN_REGISTRIES was passed in, the resulting registry length |
-// will be 0. If INCLUDE_UNKNOWN_REGISTRIES was passed in, the resulting |
-// registry length will be the length of the last subcomponent (eg. 3 for |
-// foobar.baz). |
-enum NET_EXPORT UnknownRegistryFilter { |
- EXCLUDE_UNKNOWN_REGISTRIES = 0, |
- INCLUDE_UNKNOWN_REGISTRIES |
-}; |
- |
-// Returns the registered, organization-identifying host and all its registry |
-// information, but no subdomains, from the given GURL. Returns an empty |
-// string if the GURL is invalid, has no host (e.g. a file: URL), has multiple |
-// trailing dots, is an IP address, has only one subcomponent (i.e. no dots |
-// other than leading/trailing ones), or is itself a recognized registry |
-// identifier. If no matching rule is found in the effective-TLD data (or in |
-// the default data, if the resource failed to load), the last subcomponent of |
-// the host is assumed to be the registry. |
-// |
-// Examples: |
-// http://www.google.com/file.html -> "google.com" (com) |
-// http://..google.com/file.html -> "google.com" (com) |
-// http://google.com./file.html -> "google.com." (com) |
-// http://a.b.co.uk/file.html -> "b.co.uk" (co.uk) |
-// file:///C:/bar.html -> "" (no host) |
-// http://foo.com../file.html -> "" (multiple trailing dots) |
-// http://192.168.0.1/file.html -> "" (IP address) |
-// http://bar/file.html -> "" (no subcomponents) |
-// http://co.uk/file.html -> "" (host is a registry) |
-// http://foo.bar/file.html -> "foo.bar" (no rule; assume bar) |
-NET_EXPORT std::string GetDomainAndRegistry(const GURL& gurl, |
- PrivateRegistryFilter filter); |
- |
-// Like the GURL version, but takes a host (which is canonicalized internally) |
-// instead of a full GURL. |
-NET_EXPORT std::string GetDomainAndRegistry(const std::string& host, |
- PrivateRegistryFilter filter); |
- |
-// This convenience function returns true if the two GURLs both have hosts |
-// and one of the following is true: |
-// * They each have a known domain and registry, and it is the same for both |
-// URLs. Note that this means the trailing dot, if any, must match too. |
-// * They don't have known domains/registries, but the hosts are identical. |
-// Effectively, callers can use this function to check whether the input URLs |
-// represent hosts "on the same site". |
-NET_EXPORT bool SameDomainOrHost(const GURL& gurl1, const GURL& gurl2, |
- PrivateRegistryFilter filter); |
- |
-// Finds the length in bytes of the registrar portion of the host in the |
-// given GURL. Returns std::string::npos if the GURL is invalid or has no |
-// host (e.g. a file: URL). Returns 0 if the GURL has multiple trailing dots, |
-// is an IP address, has no subcomponents, or is itself a recognized registry |
-// identifier. The result is also dependent on the UnknownRegistryFilter. |
-// If no matching rule is found in the effective-TLD data (or in |
-// the default data, if the resource failed to load), returns 0 if |
-// |unknown_filter| is EXCLUDE_UNKNOWN_REGISTRIES, or the length of the last |
-// subcomponent if |unknown_filter| is INCLUDE_UNKNOWN_REGISTRIES. |
-// |
-// Examples: |
-// http://www.google.com/file.html -> 3 (com) |
-// http://..google.com/file.html -> 3 (com) |
-// http://google.com./file.html -> 4 (com) |
-// http://a.b.co.uk/file.html -> 5 (co.uk) |
-// file:///C:/bar.html -> std::string::npos (no host) |
-// http://foo.com../file.html -> 0 (multiple trailing |
-// dots) |
-// http://192.168.0.1/file.html -> 0 (IP address) |
-// http://bar/file.html -> 0 (no subcomponents) |
-// http://co.uk/file.html -> 0 (host is a registry) |
-// http://foo.bar/file.html -> 0 or 3, depending (no rule; assume |
-// bar) |
-NET_EXPORT size_t GetRegistryLength(const GURL& gurl, |
- UnknownRegistryFilter unknown_filter, |
- PrivateRegistryFilter private_filter); |
- |
-// Like the GURL version, but takes a host (which is canonicalized internally) |
-// instead of a full GURL. |
-NET_EXPORT size_t GetRegistryLength(const std::string& host, |
- UnknownRegistryFilter unknown_filter, |
- PrivateRegistryFilter private_filter); |
- |
-typedef const struct DomainRule* (*FindDomainPtr)(const char *, unsigned int); |
- |
-// Used for unit tests. Use default domains. |
-NET_EXPORT_PRIVATE void SetFindDomainGraph(); |
- |
-// Used for unit tests, so that a frozen list of domains is used. |
-NET_EXPORT_PRIVATE void SetFindDomainGraph(const unsigned char* domains, |
- size_t length); |
-} // namespace registry_controlled_domains |
-} // namespace net |
- |
-#endif // NET_BASE_REGISTRY_CONTROLLED_DOMAINS_REGISTRY_CONTROLLED_DOMAIN_H_ |