diff --git a/Tests/LibWeb/Text/expected/HTML/dimension-attributes.txt b/Tests/LibWeb/Text/expected/HTML/dimension-attributes.txt new file mode 100644 index 00000000000..8a0f341ff1e --- /dev/null +++ b/Tests/LibWeb/Text/expected/HTML/dimension-attributes.txt @@ -0,0 +1,3 @@ +Test hr.width = "100" maps to width: 100px +Test hr.width = " 00110 " maps to width: 110px +Test hr.width = "120." maps to width: 120px diff --git a/Tests/LibWeb/Text/input/HTML/dimension-attributes.html b/Tests/LibWeb/Text/input/HTML/dimension-attributes.html new file mode 100644 index 00000000000..b4e81573132 --- /dev/null +++ b/Tests/LibWeb/Text/input/HTML/dimension-attributes.html @@ -0,0 +1,21 @@ + + + diff --git a/Userland/Libraries/LibWeb/HTML/HTMLHRElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLHRElement.cpp index 4ad79b1e2d3..deaee9cd1c6 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLHRElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLHRElement.cpp @@ -6,7 +6,10 @@ #include #include +#include +#include #include +#include namespace Web::HTML { @@ -25,4 +28,16 @@ void HTMLHRElement::initialize(JS::Realm& realm) WEB_SET_PROTOTYPE_FOR_INTERFACE(HTMLHRElement); } +void HTMLHRElement::apply_presentational_hints(CSS::StyleProperties& style) const +{ + for_each_attribute([&](auto& name, auto& value) { + // https://html.spec.whatwg.org/multipage/rendering.html#the-hr-element-2:maps-to-the-dimension-property + if (name == HTML::AttributeNames::width) { + if (auto parsed_value = parse_dimension_value(value)) { + style.set_property(CSS::PropertyID::Width, *parsed_value); + } + } + }); +} + } diff --git a/Userland/Libraries/LibWeb/HTML/HTMLHRElement.h b/Userland/Libraries/LibWeb/HTML/HTMLHRElement.h index 17b8f9da4ae..e770e309c5a 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLHRElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLHRElement.h @@ -25,6 +25,8 @@ private: HTMLHRElement(DOM::Document&, DOM::QualifiedName); virtual void initialize(JS::Realm&) override; + + virtual void apply_presentational_hints(CSS::StyleProperties&) const override; }; }