LibWeb: Update existing style object when setting style attribute

Previously any existing ElementInlineCSSStyleDeclaration would get
overwritten by e.setAttribute("style", ...), while it should be updated
instead.

This fixes 2 WPT subtests.
This commit is contained in:
Milo van der Tier 2024-11-25 14:35:56 +01:00 committed by Andreas Kling
commit aa33acf3a2
Notes: github-actions[bot] 2024-11-25 16:18:19 +00:00
4 changed files with 25 additions and 9 deletions

View file

@ -2740,7 +2740,12 @@ void Element::attribute_changed(FlyString const& local_name, Optional<String> co
// https://drafts.csswg.org/cssom/#ref-for-cssstyledeclaration-updating-flag
if (m_inline_style && m_inline_style->is_updating())
return;
m_inline_style = parse_css_style_attribute(CSS::Parser::ParsingContext(document()), *value, *this);
if (!m_inline_style) {
m_inline_style = parse_css_style_attribute(CSS::Parser::ParsingContext(document()), *value, *this);
} else {
// NOTE: ElementInlineCSSStyleDeclaration::set_css_text should never throw an exception.
m_inline_style->set_declarations_from_text(*value);
}
set_needs_style_update(true);
}
} else if (local_name == HTML::AttributeNames::dir) {