LibWeb: Compute display: contents as none for unusual elements

https://drafts.csswg.org/css-display-3/#unbox-html specifies certain
elements that have their `display` style computed as `none` when
specified as `contents`.

This fixes at least one WPT test:
http://wpt.live/css/css-display/display-contents-suppression-dynamic-001.html
This commit is contained in:
Michael Watt 2024-11-08 20:14:37 +08:00 committed by Andreas Kling
parent eef9a53eec
commit 3b1d1d4582
Notes: github-actions[bot] 2024-11-13 10:12:00 +00:00
31 changed files with 156 additions and 0 deletions

View file

@ -11,6 +11,7 @@
#include <LibWeb/Bindings/HTMLImageElementPrototype.h>
#include <LibWeb/CSS/Parser/Parser.h>
#include <LibWeb/CSS/StyleComputer.h>
#include <LibWeb/CSS/StyleValues/DisplayStyleValue.h>
#include <LibWeb/DOM/Document.h>
#include <LibWeb/DOM/Event.h>
#include <LibWeb/Fetch/Fetching/Fetching.h>
@ -116,6 +117,13 @@ JS::GCPtr<Layout::Node> HTMLImageElement::create_layout_node(CSS::StylePropertie
return heap().allocate_without_realm<Layout::ImageBox>(document(), *this, move(style), *this);
}
void HTMLImageElement::adjust_computed_style(CSS::StyleProperties& style)
{
// https://drafts.csswg.org/css-display-3/#unbox
if (style.display().is_contents())
style.set_property(CSS::PropertyID::Display, CSS::DisplayStyleValue::create(CSS::Display::from_short(CSS::Display::Short::None)));
}
RefPtr<Gfx::ImmutableBitmap> HTMLImageElement::immutable_bitmap() const
{
return current_image_bitmap();