diff --git a/Userland/Libraries/LibWeb/URL/URL.cpp b/Userland/Libraries/LibWeb/URL/URL.cpp index 09bb522f9e..57944b664e 100644 --- a/Userland/Libraries/LibWeb/URL/URL.cpp +++ b/Userland/Libraries/LibWeb/URL/URL.cpp @@ -5,6 +5,8 @@ * SPDX-License-Identifier: BSD-2-Clause */ +#include +#include #include #include #include @@ -340,4 +342,13 @@ HTML::Origin url_origin(AK::URL const& url) return HTML::Origin {}; } +// https://url.spec.whatwg.org/#concept-domain +bool host_is_domain(StringView host) +{ + // A domain is a non-empty ASCII string that identifies a realm within a network. + return !host.is_empty() + && !IPv4Address::from_string(host).has_value() + && !IPv6Address::from_string(host).has_value(); +} + } diff --git a/Userland/Libraries/LibWeb/URL/URL.h b/Userland/Libraries/LibWeb/URL/URL.h index 44d5add4fd..e2af21fa3e 100644 --- a/Userland/Libraries/LibWeb/URL/URL.h +++ b/Userland/Libraries/LibWeb/URL/URL.h @@ -72,5 +72,6 @@ private: }; HTML::Origin url_origin(AK::URL const&); +bool host_is_domain(StringView host); }