diff --git a/Userland/Libraries/LibWebView/SearchEngine.cpp b/Userland/Libraries/LibWebView/SearchEngine.cpp index ca461dbd1a..8ce9afe66c 100644 --- a/Userland/Libraries/LibWebView/SearchEngine.cpp +++ b/Userland/Libraries/LibWebView/SearchEngine.cpp @@ -5,6 +5,7 @@ */ #include +#include #include namespace WebView { @@ -46,4 +47,35 @@ Optional find_search_engine_by_name(StringView name) return *it; } +Optional find_search_engine_by_query_url(StringView query_url) +{ + auto it = AK::find_if(builtin_search_engines.begin(), builtin_search_engines.end(), + [&](auto const& engine) { + return engine.query_url == query_url; + }); + + if (it == builtin_search_engines.end()) + return {}; + + return *it; +} + +String format_search_query_for_display(StringView query_url, StringView query) +{ + static constexpr auto MAX_SEARCH_STRING_LENGTH = 32; + + if (auto search_engine = find_search_engine_by_query_url(query_url); search_engine.has_value()) { + return MUST(String::formatted("Search {} for \"{:.{}}{}\"", + search_engine->name, + query, + MAX_SEARCH_STRING_LENGTH, + query.length() > MAX_SEARCH_STRING_LENGTH ? "..."sv : ""sv)); + } + + return MUST(String::formatted("Search for \"{:.{}}{}\"", + query, + MAX_SEARCH_STRING_LENGTH, + query.length() > MAX_SEARCH_STRING_LENGTH ? "..."sv : ""sv)); +} + } diff --git a/Userland/Libraries/LibWebView/SearchEngine.h b/Userland/Libraries/LibWebView/SearchEngine.h index ff8daaa95e..c02354c573 100644 --- a/Userland/Libraries/LibWebView/SearchEngine.h +++ b/Userland/Libraries/LibWebView/SearchEngine.h @@ -19,5 +19,7 @@ struct SearchEngine { ReadonlySpan search_engines(); SearchEngine const& default_search_engine(); Optional find_search_engine_by_name(StringView name); +Optional find_search_engine_by_query_url(StringView query_url); +String format_search_query_for_display(StringView query_url, StringView query); }