diff --git a/Tests/LibWebView/TestWebViewURL.cpp b/Tests/LibWebView/TestWebViewURL.cpp index 6267c66c16..9a3816745c 100644 --- a/Tests/LibWebView/TestWebViewURL.cpp +++ b/Tests/LibWebView/TestWebViewURL.cpp @@ -79,3 +79,20 @@ TEST_CASE(http_url) compare_url_parts("http://abc.def.com#anchor"sv, { "http://abc."sv, "def.com"sv, "#anchor"sv }); compare_url_parts("http://abc.def.com?query"sv, { "http://abc."sv, "def.com"sv, "?query"sv }); } + +TEST_CASE(about_url) +{ + auto is_sanitized_url_the_same = [](StringView url) { + auto sanitized_url = WebView::sanitize_url(url); + if (!sanitized_url.has_value()) + return false; + return sanitized_url->to_string().value() == url; + }; + + EXPECT(!is_sanitized_url_the_same("about"sv)); + EXPECT(!is_sanitized_url_the_same("about blabla:"sv)); + EXPECT(!is_sanitized_url_the_same("blabla about:"sv)); + + EXPECT(is_sanitized_url_the_same("about:about"sv)); + EXPECT(is_sanitized_url_the_same("about:version"sv)); +} diff --git a/Userland/Libraries/LibWebView/URL.cpp b/Userland/Libraries/LibWebView/URL.cpp index 17451ba98b..8898d23216 100644 --- a/Userland/Libraries/LibWebView/URL.cpp +++ b/Userland/Libraries/LibWebView/URL.cpp @@ -35,7 +35,7 @@ static Optional create_url_with_url_or_path(String const& url_or_path) static Optional query_public_suffix_list(StringView url_string) { auto out = MUST(String::from_utf8(url_string)); - if (!out.contains("://"sv)) + if (!out.starts_with_bytes("about:"sv) && !out.contains("://"sv)) out = MUST(String::formatted("https://{}"sv, out)); auto maybe_url = create_url_with_url_or_path(out);