Index: components/google/core/browser/google_util.cc |
diff --git a/components/google/core/browser/google_util.cc b/components/google/core/browser/google_util.cc |
index fc253a310f0136c919b69ee8f0bebfb57e7ac94a..a6654c9f28701ad6a10781ed527a4b6f12e486db 100644 |
--- a/components/google/core/browser/google_util.cc |
+++ b/components/google/core/browser/google_util.cc |
@@ -32,6 +32,7 @@ |
#define LINKDOCTOR_SERVER_REQUEST_URL "" |
#endif |
+namespace google_util { |
// Helpers -------------------------------------------------------------------- |
@@ -43,16 +44,16 @@ bool IsPathHomePageBase(base::StringPiece path) { |
return (path == "/") || (path == "/webhp"); |
} |
-// True if |host| is "[www.]<domain_in_lower_case>.<TLD>" with a valid TLD. If |
-// |subdomain_permission| is ALLOW_SUBDOMAIN, we check against host |
-// "*.<domain_in_lower_case>.<TLD>" instead. |
+// True if the given canonical |host| is "[www.]<domain_in_lower_case>.<TLD>" |
+// with a valid TLD. If |subdomain_permission| is ALLOW_SUBDOMAIN, we check |
+// against host "*.<domain_in_lower_case>.<TLD>" instead. |
bool IsValidHostName(base::StringPiece host, |
base::StringPiece domain_in_lower_case, |
- google_util::SubdomainPermission subdomain_permission) { |
- size_t tld_length = net::registry_controlled_domains::GetRegistryLength( |
- host, |
- net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES, |
- net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); |
+ SubdomainPermission subdomain_permission) { |
+ size_t tld_length = |
+ net::registry_controlled_domains::GetCanonicalHostRegistryLength( |
+ host, net::registry_controlled_domains::EXCLUDE_UNKNOWN_REGISTRIES, |
+ net::registry_controlled_domains::EXCLUDE_PRIVATE_REGISTRIES); |
if ((tld_length == 0) || (tld_length == std::string::npos)) |
return false; |
@@ -62,7 +63,7 @@ bool IsValidHostName(base::StringPiece host, |
if (base::LowerCaseEqualsASCII(host_minus_tld, domain_in_lower_case)) |
return true; |
- if (subdomain_permission == google_util::ALLOW_SUBDOMAIN) { |
+ if (subdomain_permission == ALLOW_SUBDOMAIN) { |
std::string dot_domain("."); |
domain_in_lower_case.AppendToString(&dot_domain); |
return base::EndsWith(host_minus_tld, dot_domain, |
@@ -77,16 +78,21 @@ bool IsValidHostName(base::StringPiece host, |
// True if |url| is a valid URL with HTTP or HTTPS scheme. If |port_permission| |
// is DISALLOW_NON_STANDARD_PORTS, this also requires |url| to use the standard |
// port for its scheme (80 for HTTP, 443 for HTTPS). |
-bool IsValidURL(const GURL& url, google_util::PortPermission port_permission) { |
+bool IsValidURL(const GURL& url, PortPermission port_permission) { |
return url.is_valid() && url.SchemeIsHTTPOrHTTPS() && |
- (url.port().empty() || |
- (port_permission == google_util::ALLOW_NON_STANDARD_PORTS)); |
+ (url.port().empty() || (port_permission == ALLOW_NON_STANDARD_PORTS)); |
} |
-} // namespace |
+bool IsCanonicalHostGoogleHostname(base::StringPiece canonical_host, |
+ SubdomainPermission subdomain_permission) { |
+ const GURL& base_url(CommandLineGoogleBaseURL()); |
+ if (base_url.is_valid() && (canonical_host == base_url.host_piece())) |
+ return true; |
+ return IsValidHostName(canonical_host, "google", subdomain_permission); |
+} |
-namespace google_util { |
+} // namespace |
// Global functions ----------------------------------------------------------- |
@@ -180,18 +186,16 @@ bool StartsWithCommandLineGoogleBaseURL(const GURL& url) { |
bool IsGoogleHostname(base::StringPiece host, |
SubdomainPermission subdomain_permission) { |
- const GURL& base_url(CommandLineGoogleBaseURL()); |
- if (base_url.is_valid() && (host == base_url.host_piece())) |
- return true; |
- |
- return IsValidHostName(host, "google", subdomain_permission); |
+ url::CanonHostInfo host_info; |
+ return IsCanonicalHostGoogleHostname(net::CanonicalizeHost(host, &host_info), |
+ subdomain_permission); |
} |
bool IsGoogleDomainUrl(const GURL& url, |
SubdomainPermission subdomain_permission, |
PortPermission port_permission) { |
return IsValidURL(url, port_permission) && |
- IsGoogleHostname(url.host(), subdomain_permission); |
+ IsCanonicalHostGoogleHostname(url.host_piece(), subdomain_permission); |
} |
bool IsGoogleHomePageUrl(const GURL& url) { |