1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 18:57:45 +00:00

LibWeb: Match WebKit and Blink re: absence of width/height on <svg>

This commit is contained in:
Andreas Kling 2022-07-11 12:26:53 +02:00
parent 17a6fcfde3
commit 67de1131b9

View file

@ -1,5 +1,6 @@
/*
* Copyright (c) 2020, Matthew Olsson <matthewcolsson@gmail.com>
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
@ -28,17 +29,24 @@ RefPtr<Layout::Node> SVGSVGElement::create_layout_node(NonnullRefPtr<CSS::StyleP
void SVGSVGElement::apply_presentational_hints(CSS::StyleProperties& style) const
{
// Width defaults to 100%
if (auto width_value = HTML::parse_dimension_value(attribute(SVG::AttributeNames::width))) {
auto width_attribute = attribute(SVG::AttributeNames::width);
if (auto width_value = HTML::parse_dimension_value(width_attribute)) {
style.set_property(CSS::PropertyID::Width, width_value.release_nonnull());
} else {
} else if (width_attribute == "") {
// If the `width` attribute is an empty string, it defaults to 100%.
// This matches WebKit and Blink, but not Firefox. The spec is unclear.
// FIXME: Figure out what to do here.
style.set_property(CSS::PropertyID::Width, CSS::PercentageStyleValue::create(CSS::Percentage { 100 }));
}
// Height defaults to 100%
if (auto height_value = HTML::parse_dimension_value(attribute(SVG::AttributeNames::height))) {
auto height_attribute = attribute(SVG::AttributeNames::height);
if (auto height_value = HTML::parse_dimension_value(height_attribute)) {
style.set_property(CSS::PropertyID::Height, height_value.release_nonnull());
} else {
} else if (height_attribute == "") {
// If the `height` attribute is an empty string, it defaults to 100%.
// This matches WebKit and Blink, but not Firefox. The spec is unclear.
// FIXME: Figure out what to do here.
style.set_property(CSS::PropertyID::Height, CSS::PercentageStyleValue::create(CSS::Percentage { 100 }));
}
}