LibWeb: Resolve SVGImageElement source URL correctly

This fixes an issue where an SVGImageElement, whose source was a
relative URL would not load inside an iframe.
This commit is contained in:
Tim Ledbetter 2025-01-19 08:29:19 +00:00 committed by Alexander Kalenik
commit 400aefb784
Notes: github-actions[bot] 2025-01-19 14:03:31 +00:00
3 changed files with 13 additions and 2 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2024, Tim Ledbetter <tim.ledbetter@ladybird.org>
* Copyright (c) 2024-2025, Tim Ledbetter <tim.ledbetter@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -140,7 +140,13 @@ Gfx::Rect<CSSPixels> SVGImageElement::bounding_box() const
// https://www.w3.org/TR/SVG2/linking.html#processingURL
void SVGImageElement::process_the_url(Optional<String> const& href)
{
m_href = document().url().complete_url(href.value_or(String {}));
if (!href.has_value()) {
m_href = {};
return;
}
m_href = document().parse_url(*href);
if (!m_href.is_valid())
return;

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<iframe srcdoc="<svg xmlns='http://www.w3.org/2000/svg'><rect width='150' height='100' fill='green' /></svg>"></iframe>

View file

@ -0,0 +1,3 @@
<!DOCTYPE html>
<link rel="match" href="../expected/svg-image-in-iframe-ref.html" />
<iframe srcdoc="<svg xmlns='http://www.w3.org/2000/svg'><image href='../data/rectangle.png' width='150' height='100' /></svg>"></iframe>