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 |
index f1d9a1185ce6f88d0134ea34782447eb67d075df..51f905df34d8e58f205782c620c6cc3cec301a2f 100644 |
--- a/net/base/registry_controlled_domains/registry_controlled_domain.h |
+++ b/net/base/registry_controlled_domains/registry_controlled_domain.h |
@@ -124,8 +124,39 @@ struct DomainRule; |
namespace net { |
+class RegistryControlledDomainService; |
+typedef RegistryControlledDomainService RCDS; |
Ryan Sleevi
2013/04/26 19:39:59
So I realize pam@ made the suggestion that this is
Pam (message me for reviews)
2013/04/29 09:25:56
Any intrinsic considerations aside, I wouldn't cha
nyquist
2013/05/06 22:30:56
Changed to namespace, but used the same name as th
|
+ |
class NET_EXPORT RegistryControlledDomainService { |
public: |
+ // 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 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 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 |
@@ -146,11 +177,13 @@ class NET_EXPORT RegistryControlledDomainService { |
// 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) |
- static std::string GetDomainAndRegistry(const GURL& gurl); |
+ static 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. |
- static std::string GetDomainAndRegistry(const std::string& host); |
+ static 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: |
@@ -159,16 +192,18 @@ class NET_EXPORT RegistryControlledDomainService { |
// * 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". |
- static bool SameDomainOrHost(const GURL& gurl1, const GURL& gurl2); |
+ static 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. If no matching rule is found in the effective-TLD data (or in |
+ // 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 |
- // |allow_unknown_registries| is false, or the length of the last subcomponent |
- // if |allow_unknown_registries| is true. |
+ // |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) |
@@ -184,20 +219,24 @@ class NET_EXPORT RegistryControlledDomainService { |
// http://foo.bar/file.html -> 0 or 3, depending (no rule; assume |
// bar) |
static size_t GetRegistryLength(const GURL& gurl, |
- bool allow_unknown_registries); |
+ UnknownRegistryFilter unknown_filter, |
+ PrivateRegistryFilter private_filter); |
// Like the GURL version, but takes a host (which is canonicalized internally) |
// instead of a full GURL. |
static size_t GetRegistryLength(const std::string& host, |
- bool allow_unknown_registries); |
+ UnknownRegistryFilter unknown_filter, |
+ PrivateRegistryFilter private_filter); |
private: |
friend class RegistryControlledDomainTest; |
// Internal workings of the static public methods. See above. |
- static std::string GetDomainAndRegistryImpl(const std::string& host); |
+ static std::string GetDomainAndRegistryImpl(const std::string& host, |
+ PrivateRegistryFilter filter); |
static size_t GetRegistryLengthImpl(const std::string& host, |
- bool allow_unknown_registries); |
+ UnknownRegistryFilter unknown_filter, |
+ PrivateRegistryFilter filter); |
typedef const struct DomainRule* (*FindDomainPtr)(const char *, unsigned int); |