From 401bc137762f36b352c0c588bb64a8a770875fe2 Mon Sep 17 00:00:00 2001 From: Thiago Henrique Hupner Date: Tue, 27 Dec 2022 16:17:30 -0300 Subject: [PATCH] AK: Use base URL when the specified URL is empty --- AK/URLParser.cpp | 2 +- Tests/AK/TestURL.cpp | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/AK/URLParser.cpp b/AK/URLParser.cpp index 5fcbb9209b..50eec3d167 100644 --- a/AK/URLParser.cpp +++ b/AK/URLParser.cpp @@ -201,7 +201,7 @@ URL URLParser::parse(StringView raw_input, URL const* base_url, Optional ur { dbgln_if(URL_PARSER_DEBUG, "URLParser::parse: Parsing '{}'", raw_input); if (raw_input.is_empty()) - return {}; + return base_url ? *base_url : URL {}; if (raw_input.starts_with("data:"sv)) { auto maybe_url = parse_data_url(raw_input); diff --git a/Tests/AK/TestURL.cpp b/Tests/AK/TestURL.cpp index 1042ac3755..8df7c7212d 100644 --- a/Tests/AK/TestURL.cpp +++ b/Tests/AK/TestURL.cpp @@ -9,6 +9,7 @@ #include #include +#include TEST_CASE(construct) { @@ -406,3 +407,11 @@ TEST_CASE(complete_file_url_with_base) EXPECT(sub_url.is_valid()); EXPECT_EQ(sub_url.path(), "/home/js/app.js"); } + +TEST_CASE(empty_url_with_base_url) +{ + URL base_url { "https://foo.com/"sv }; + URL parsed_url = URLParser::parse(""sv, &base_url); + EXPECT_EQ(parsed_url.is_valid(), true); + EXPECT(base_url.equals(parsed_url)); +}