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:
parent
d161602b6d
commit
1dc4959e91
Notes:
github-actions[bot]
2024-08-06 22:09:23 +00:00
Author: https://github.com/shannonbooth Commit: https://github.com/LadybirdBrowser/ladybird/commit/1dc4959e915 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/987 Reviewed-by: https://github.com/tcl3 ✅
3 changed files with 21 additions and 2 deletions
|
@ -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 => ''
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue