summaryrefslogtreecommitdiff
path: root/chromium/net/base/url_util.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/base/url_util.cc')
-rw-r--r--chromium/net/base/url_util.cc16
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.