diff --git a/Userland/Libraries/LibWebView/URL.cpp b/Userland/Libraries/LibWebView/URL.cpp index 513e095ae1..63e1e6dfb8 100644 --- a/Userland/Libraries/LibWebView/URL.cpp +++ b/Userland/Libraries/LibWebView/URL.cpp @@ -160,4 +160,26 @@ Optional break_url_into_parts(StringView url_string) return {}; } +URLType url_type(URL const& url) +{ + if (url.scheme() == "mailto"sv) + return URLType::Email; + if (url.scheme() == "tel"sv) + return URLType::Telephone; + return URLType::Other; +} + +String url_text_to_copy(URL const& url) +{ + auto url_text = MUST(url.to_string()); + + if (url.scheme() == "mailto"sv) + return MUST(url_text.substring_from_byte_offset("mailto:"sv.length())); + + if (url.scheme() == "tel"sv) + return MUST(url_text.substring_from_byte_offset("tel:"sv.length())); + + return url_text; +} + } diff --git a/Userland/Libraries/LibWebView/URL.h b/Userland/Libraries/LibWebView/URL.h index 742d014cbb..95997a7dfb 100644 --- a/Userland/Libraries/LibWebView/URL.h +++ b/Userland/Libraries/LibWebView/URL.h @@ -28,4 +28,13 @@ struct URLParts { }; Optional break_url_into_parts(StringView url); +// These are both used for the "right-click -> copy FOO" interaction for links. +enum class URLType { + Email, + Telephone, + Other, +}; +URLType url_type(URL const&); +String url_text_to_copy(URL const&); + }