diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWebView/GeneratePublicSuffixData.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWebView/GeneratePublicSuffixData.cpp index 893de3b965b..28dba8b8e88 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWebView/GeneratePublicSuffixData.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWebView/GeneratePublicSuffixData.cpp @@ -66,6 +66,7 @@ public: return s_the; } + bool is_public_suffix(StringView host); ErrorOr> get_public_suffix(StringView string); private: @@ -127,17 +128,18 @@ PublicSuffixData::PublicSuffixData() } } +bool PublicSuffixData::is_public_suffix(StringView host) +{ + auto it = host.begin(); + auto& node = m_dictionary.traverse_until_last_accessible_node(it, host.end()); + return it.is_end() && node.metadata().has_value(); +} + ErrorOr> PublicSuffixData::get_public_suffix(StringView string) { auto input = string.split_view("."sv); input.reverse(); - auto can_find = [&](StringView input) -> bool { - auto it = input.begin(); - auto& node = m_dictionary.traverse_until_last_accessible_node(it, input.end()); - return it.is_end() && node.metadata().has_value(); - }; - StringBuilder overall_search_string; StringBuilder search_string; for (auto part : input) { @@ -145,7 +147,7 @@ ErrorOr> PublicSuffixData::get_public_suffix(StringView string) TRY(search_string.try_append(TRY(overall_search_string.to_string()))); TRY(search_string.try_append(part)); - if (can_find(search_string.string_view())) { + if (is_public_suffix(search_string.string_view())) { overall_search_string.append(TRY(String::from_utf8(part))); overall_search_string.append("."sv); continue; @@ -155,7 +157,7 @@ ErrorOr> PublicSuffixData::get_public_suffix(StringView string) TRY(search_string.try_append(TRY(overall_search_string.to_string()))); TRY(search_string.try_append("*"sv)); - if (can_find(search_string.string_view())) { + if (is_public_suffix(search_string.string_view())) { overall_search_string.append(TRY(String::from_utf8(part))); overall_search_string.append("."sv); continue; diff --git a/Userland/Libraries/LibWebView/URL.cpp b/Userland/Libraries/LibWebView/URL.cpp index 0d0602172e4..780907d939e 100644 --- a/Userland/Libraries/LibWebView/URL.cpp +++ b/Userland/Libraries/LibWebView/URL.cpp @@ -45,6 +45,15 @@ static Optional query_public_suffix_list(StringView url_string) return {}; } +bool is_public_suffix([[maybe_unused]] StringView host) +{ +#if defined(ENABLE_PUBLIC_SUFFIX) + return PublicSuffixData::the()->is_public_suffix(host); +#else + return false; +#endif +} + Optional get_public_suffix([[maybe_unused]] StringView host) { #if defined(ENABLE_PUBLIC_SUFFIX) diff --git a/Userland/Libraries/LibWebView/URL.h b/Userland/Libraries/LibWebView/URL.h index 6562c4f5d99..742d014cbb9 100644 --- a/Userland/Libraries/LibWebView/URL.h +++ b/Userland/Libraries/LibWebView/URL.h @@ -12,6 +12,7 @@ namespace WebView { +bool is_public_suffix(StringView host); Optional get_public_suffix(StringView host); enum class AppendTLD {