LibURL: Don't return early parsing a URL with an empty input

We can't simply use the base URL as it may need to be modified in some
form. For example - for the included test, the fragment was previously
being included in the resulting URL.

This fixes 1 test on https://wpt.live/url/url-constructor.any.html
This commit is contained in:
Shannon Booth 2024-08-06 22:35:11 +12:00 committed by Tim Ledbetter
parent d161602b6d
commit 1dc4959e91
Notes: github-actions[bot] 2024-08-06 22:09:23 +00:00
3 changed files with 21 additions and 2 deletions

View file

@ -128,6 +128,16 @@ port => ''
pathname => '/c:/foo/bar'
search => ''
hash => ''
new URL('', 'file:///test?test#test')
protocol => 'file:'
username => ''
password => ''
host => ''
hostname => ''
port => ''
pathname => '/test'
search => '?test'
hash => ''
=========================================
URL.parse('ftp://serenityos.org:21', undefined)
protocol => 'ftp:'
@ -259,3 +269,13 @@ port => ''
pathname => '/c:/foo/bar'
search => ''
hash => ''
URL.parse('', 'file:///test?test#test')
protocol => 'file:'
username => ''
password => ''
host => ''
hostname => ''
port => ''
pathname => '/test'
search => '?test'
hash => ''

View file

@ -34,6 +34,7 @@
{ input: 'h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg' },
{ input: ' \t', base: 'http://ladybird.org/foo/bar' },
{ input: '/c:/foo/bar', base: 'file:///c:/baz/qux' },
{ input: '', base: 'file:///test?test#test' },
];
for (url of urls) {

View file

@ -794,8 +794,6 @@ ErrorOr<String> Parser::percent_encode_after_encoding(StringView input, PercentE
URL Parser::basic_parse(StringView raw_input, Optional<URL> const& base_url, Optional<URL> url, Optional<State> state_override)
{
dbgln_if(URL_PARSER_DEBUG, "URL::Parser::basic_parse: Parsing '{}'", raw_input);
if (raw_input.is_empty())
return base_url.has_value() ? *base_url : URL {};
size_t start_index = 0;
size_t end_index = raw_input.length();