mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-09-03 08:08:43 +00:00
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: 1dc4959e91
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'
|
pathname => '/c:/foo/bar'
|
||||||
search => ''
|
search => ''
|
||||||
hash => ''
|
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)
|
URL.parse('ftp://serenityos.org:21', undefined)
|
||||||
protocol => 'ftp:'
|
protocol => 'ftp:'
|
||||||
|
@ -259,3 +269,13 @@ port => ''
|
||||||
pathname => '/c:/foo/bar'
|
pathname => '/c:/foo/bar'
|
||||||
search => ''
|
search => ''
|
||||||
hash => ''
|
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: '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: ' \t', base: 'http://ladybird.org/foo/bar' },
|
||||||
{ input: '/c:/foo/bar', base: 'file:///c:/baz/qux' },
|
{ input: '/c:/foo/bar', base: 'file:///c:/baz/qux' },
|
||||||
|
{ input: '', base: 'file:///test?test#test' },
|
||||||
];
|
];
|
||||||
|
|
||||||
for (url of urls) {
|
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)
|
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);
|
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 start_index = 0;
|
||||||
size_t end_index = raw_input.length();
|
size_t end_index = raw_input.length();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue