Sfoglia il codice sorgente

LibWeb: Properly handle the <td align> attribute

When valid, this attribute needs to result in an IdentifierStyleValue.
Before this change we were turning it into a StringStyleValue, which
then defaulted to left alignment for all values.

For "center" and "middle", we turn it into -libweb-center. All other
values are passed verbatim to the CSS parser.
Andreas Kling 3 anni fa
parent
commit
5c132724ea
1 ha cambiato i file con 7 aggiunte e 4 eliminazioni
  1. 7 4
      Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp

+ 7 - 4
Userland/Libraries/LibWeb/HTML/HTMLTableCellElement.cpp

@@ -28,10 +28,13 @@ void HTMLTableCellElement::apply_presentational_hints(CSS::StyleProperties& styl
             return;
         }
         if (name == HTML::AttributeNames::align) {
-            if (value.equals_ignoring_case("center") || value.equals_ignoring_case("middle"))
-                style.set_property(CSS::PropertyID::TextAlign, StringView("-libweb-center"));
-            else
-                style.set_property(CSS::PropertyID::TextAlign, value.view());
+            if (value.equals_ignoring_case("center"sv) || value.equals_ignoring_case("middle"sv)) {
+                style.set_property(CSS::PropertyID::TextAlign, CSS::IdentifierStyleValue::create(CSS::ValueID::LibwebCenter));
+            } else {
+                CSS::Parser parser(CSS::ParsingContext(document()), value.view());
+                if (auto parsed_value = parser.parse_as_css_value(CSS::PropertyID::TextAlign))
+                    style.set_property(CSS::PropertyID::TextAlign, parsed_value.release_nonnull());
+            }
             return;
         }
         if (name == HTML::AttributeNames::width) {