LibURL: Also remove carriage returns from URL input

The definition of an "ASCII tab or newline" also includes U+000D CR.

This fixes 3 subtests in:

https://wpt.live/url/url-constructor.any.html
This commit is contained in:
Shannon Booth 2024-08-05 19:44:12 +12:00 committed by Andreas Kling
commit 41cf9f6fe3
Notes: github-actions[bot] 2024-08-05 12:56:58 +00:00
3 changed files with 34 additions and 6 deletions

View file

@ -1,6 +1,13 @@
<script src="../include.js"></script>
<script>
test(() => {
function escapeWhitespace(str) {
return str
.replace(/\t/g, '\\t')
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r');
}
function printURL(url) {
println(`protocol => '${url.protocol}'`);
println(`username => '${url.username}'`);
@ -24,13 +31,14 @@
{ input: '//d:/..', base: 'file:///C:/a/b' },
{ input: 'file://a%C2%ADb/p' },
{ input: 'http://user%20name:pa%40ss%3Aword@www.ladybird.org' },
{ 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' },
];
for (url of urls) {
if (url.base === undefined)
println(`new URL('${url.input}', ${url.base})`);
println(`new URL('${escapeWhitespace(url.input)}', ${url.base})`);
else
println(`new URL('${url.input}', '${url.base}')`);
println(`new URL('${escapeWhitespace(url.input)}', '${escapeWhitespace(url.base)}')`);
printURL(new URL(url.input, url.base));
}
@ -39,9 +47,9 @@
for (url of urls) {
if (url.base === undefined)
println(`URL.parse('${url.input}', ${url.base})`);
println(`URL.parse('${escapeWhitespace(url.input)}', ${url.base})`);
else
println(`URL.parse('${url.input}', '${url.base}')`);
println(`URL.parse('${escapeWhitespace(url.input)}', '${escapeWhitespace(url.base)}')`);
printURL(URL.parse(url.input, url.base));
}