AK: Correctly set host when parsing URL with a base file:// host

We were completely missing this spec step here. Also leave a FIXME for
the pre-existing implementation of this step, as this doesn't match the
spec.
This commit is contained in:
Shannon Booth 2023-09-17 13:47:29 +12:00 committed by Andreas Kling
parent 791ad12031
commit bfdf7779ce
Notes: sideshowbarker 2024-07-16 23:34:49 +09:00
3 changed files with 14 additions and 0 deletions

View file

@ -1377,6 +1377,9 @@ URL URLParser::basic_parse(StringView raw_input, Optional<URL> const& base_url,
// 1. If base is non-null and bases scheme is "file", then:
if (base_url.has_value() && base_url->m_scheme == "file") {
// 1. Set urls host to bases host.
url->m_host = base_url->m_host;
// FIXME: The spec does not seem to mention these steps.
url->m_paths = base_url->m_paths;
url->m_paths.remove(url->m_paths.size() - 1);

View file

@ -58,3 +58,13 @@ port => ''
pathname => '/cat'
search => '?dog'
hash => '#meow%22woof'
new URL('/hello', 'file://friends/')
protocol => 'file:'
username => ''
password => ''
host => 'friends'
hostname => 'friends'
port => ''
pathname => '/hello'
search => ''
hash => ''

View file

@ -26,6 +26,7 @@
{ input: 'http://[1:1:0:0:1:0:0:0]/' },
{ input: 'unknown://serenityos.org:0' },
{ input: 'http://serenityos.org/cat?dog#meow"woof' },
{ input: '/hello', base: 'file://friends/' },
]) {
printURL(url.input, url.base);
}