diff options
Diffstat (limited to 'chromium/net/base/url_util.cc')
-rw-r--r-- | chromium/net/base/url_util.cc | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/chromium/net/base/url_util.cc b/chromium/net/base/url_util.cc index b8e7d082421..b6c36ea1375 100644 --- a/chromium/net/base/url_util.cc +++ b/chromium/net/base/url_util.cc @@ -12,7 +12,7 @@ #include <ws2tcpip.h> #endif -#include "base/logging.h" +#include "base/check_op.h" #include "base/strings/string_util.h" #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" @@ -266,6 +266,20 @@ std::string GetSuperdomain(base::StringPiece domain) { return domain.substr(dot_pos + 1).as_string(); } +bool IsSubdomainOf(base::StringPiece subdomain, base::StringPiece superdomain) { + // Subdomain must be identical or have strictly more labels than the + // superdomain. + if (subdomain.length() <= superdomain.length()) + return subdomain == superdomain; + + // Superdomain must be suffix of subdomain, and the last character not + // included in the matching substring must be a dot. + if (!subdomain.ends_with(superdomain)) + return false; + subdomain.remove_suffix(superdomain.length()); + return subdomain.back() == '.'; +} + std::string CanonicalizeHost(base::StringPiece host, url::CanonHostInfo* host_info) { // Try to canonicalize the host. |