LibWeb: Strip trailing spaces from opaque URL path on query change

This was added in https://github.com/whatwg/url/commit/fdaa0e5a
to fix a case where roundtrips could fail. We had already partially
implemented these steps - but it seems this was missed in the update of
URLSearchParams.

Fixes the last failing WPT test for:

https://wpt.live/url/urlsearchparams-delete.any.html
This commit is contained in:
Shannon Booth 2024-08-14 17:41:48 +12:00 committed by Andreas Kling
parent 1c5a7cd31b
commit cff3e78a14
Notes: github-actions[bot] 2024-08-17 05:45:33 +00:00
3 changed files with 26 additions and 0 deletions

View file

@ -0,0 +1,6 @@
URL pathname is 'space '
URL href is 'data:space ?test'
true
false
URL pathname is 'space'
URL href is 'data:space'

View file

@ -0,0 +1,16 @@
<script src="../include.js"></script>
<script>
test(() => {
const url = new URL('data:space ?test');
println(`URL pathname is '${url.pathname}'`);
println(`URL href is '${url.href}'`);
println(url.searchParams.has('test'));
url.searchParams.delete('test');
println(url.searchParams.has('test'));
println(`URL pathname is '${url.pathname}'`);
println(`URL href is '${url.href}'`);
});
</script>

View file

@ -229,6 +229,10 @@ void URLSearchParams::update()
// 4. Set querys URL objects URLs query to serializedQuery.
m_url->set_query({}, move(serialized_query));
// 5. If serializedQuery is null, then potentially strip trailing spaces from an opaque path with querys URL object.
if (!serialized_query.has_value())
strip_trailing_spaces_from_an_opaque_path(*m_url);
}
// https://url.spec.whatwg.org/#dom-urlsearchparams-delete