diff options
Diffstat (limited to 'Userland/Libraries/LibWeb/CSS/StyleResolver.cpp')
-rw-r--r-- | Userland/Libraries/LibWeb/CSS/StyleResolver.cpp | 457 |
1 files changed, 3 insertions, 454 deletions
diff --git a/Userland/Libraries/LibWeb/CSS/StyleResolver.cpp b/Userland/Libraries/LibWeb/CSS/StyleResolver.cpp index d9b84b1cb3..936d77a414 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleResolver.cpp +++ b/Userland/Libraries/LibWeb/CSS/StyleResolver.cpp @@ -8,7 +8,6 @@ #include <AK/QuickSort.h> #include <LibWeb/CSS/CSSStyleRule.h> -#include <LibWeb/CSS/Parser/DeprecatedCSSParser.h> #include <LibWeb/CSS/Parser/Parser.h> #include <LibWeb/CSS/SelectorEngine.h> #include <LibWeb/CSS/StyleResolver.h> @@ -36,7 +35,7 @@ static StyleSheet& default_stylesheet() if (!sheet) { extern char const default_stylesheet_source[]; String css = default_stylesheet_source; - sheet = parse_css(CSS::DeprecatedParsingContext(), css).leak_ref(); + sheet = parse_css(CSS::ParsingContext(), css).leak_ref(); } return *sheet; } @@ -47,7 +46,7 @@ static StyleSheet& quirks_mode_stylesheet() if (!sheet) { extern char const quirks_mode_stylesheet_source[]; String css = quirks_mode_stylesheet_source; - sheet = parse_css(CSS::DeprecatedParsingContext(), css).leak_ref(); + sheet = parse_css(CSS::ParsingContext(), css).leak_ref(); } return *sheet; } @@ -524,7 +523,6 @@ static inline bool is_text_decoration_style(StyleValue const& value) static void set_property_expanding_shorthands(StyleProperties& style, CSS::PropertyID property_id, StyleValue const& value, DOM::Document& document, bool is_internally_generated_pseudo_property = false) { - CSS::DeprecatedParsingContext deprecated_context(document); CSS::ParsingContext context(document); if (is_pseudo_property(property_id) && !is_internally_generated_pseudo_property) { @@ -617,48 +615,7 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope style.set_property(CSS::PropertyID::BorderBottomLeftRadius, value); return; } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 2) { - auto diagonal1 = parse_css_value(deprecated_context, parts[0]); - auto diagonal2 = parse_css_value(deprecated_context, parts[1]); - if (diagonal1 && diagonal2) { - style.set_property(CSS::PropertyID::BorderTopLeftRadius, *diagonal1); - style.set_property(CSS::PropertyID::BorderBottomRightRadius, *diagonal1); - style.set_property(CSS::PropertyID::BorderTopRightRadius, *diagonal2); - style.set_property(CSS::PropertyID::BorderBottomLeftRadius, *diagonal2); - } - return; - } - if (parts.size() == 3) { - auto top_left = parse_css_value(deprecated_context, parts[0]); - auto diagonal = parse_css_value(deprecated_context, parts[1]); - auto bottom_right = parse_css_value(deprecated_context, parts[2]); - if (top_left && diagonal && bottom_right) { - style.set_property(CSS::PropertyID::BorderTopLeftRadius, *top_left); - style.set_property(CSS::PropertyID::BorderBottomRightRadius, *bottom_right); - style.set_property(CSS::PropertyID::BorderTopRightRadius, *diagonal); - style.set_property(CSS::PropertyID::BorderBottomLeftRadius, *diagonal); - } - return; - } - if (parts.size() == 4) { - auto top_left = parse_css_value(deprecated_context, parts[0]); - auto top_right = parse_css_value(deprecated_context, parts[1]); - auto bottom_right = parse_css_value(deprecated_context, parts[2]); - auto bottom_left = parse_css_value(deprecated_context, parts[3]); - if (top_left && top_right && bottom_right && bottom_left) { - style.set_property(CSS::PropertyID::BorderTopLeftRadius, *top_left); - style.set_property(CSS::PropertyID::BorderBottomRightRadius, *bottom_right); - style.set_property(CSS::PropertyID::BorderTopRightRadius, *top_right); - style.set_property(CSS::PropertyID::BorderBottomLeftRadius, *bottom_left); - } - return; - } - dbgln("Unsure what to do with CSS border-radius value '{}'", value.to_string()); - return; - } + if (value.is_value_list()) { auto& parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 2) { @@ -736,54 +693,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope return; } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - - if (parts.size() == 1) { - if (auto value = parse_line_style(deprecated_context, parts[0])) { - set_property_border_style(style, value.release_nonnull(), edge); - set_property_border_color(style, ColorStyleValue::create(Gfx::Color::Black), edge); - set_property_border_width(style, LengthStyleValue::create(Length(3, Length::Type::Px)), edge); - return; - } - } - - RefPtr<LengthStyleValue> line_width_value; - RefPtr<ColorStyleValue> color_value; - RefPtr<IdentifierStyleValue> line_style_value; - - for (auto& part : parts) { - if (auto value = parse_line_width(deprecated_context, part)) { - if (line_width_value) - return; - line_width_value = move(value); - continue; - } - if (auto value = parse_color(deprecated_context, part)) { - if (color_value) - return; - color_value = move(value); - continue; - } - if (auto value = parse_line_style(deprecated_context, part)) { - if (line_style_value) - return; - line_style_value = move(value); - continue; - } - } - - if (line_width_value) - set_property_border_width(style, line_width_value.release_nonnull(), edge); - if (color_value) - set_property_border_color(style, color_value.release_nonnull(), edge); - if (line_style_value) - set_property_border_style(style, line_style_value.release_nonnull(), edge); - - return; - } - if (value.is_value_list()) { auto& parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); @@ -839,49 +748,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::BorderStyle) { - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 4) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto right = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - auto left = parse_css_value(deprecated_context, parts[3]); - if (top && right && bottom && left) { - style.set_property(CSS::PropertyID::BorderTopStyle, *top); - style.set_property(CSS::PropertyID::BorderRightStyle, *right); - style.set_property(CSS::PropertyID::BorderBottomStyle, *bottom); - style.set_property(CSS::PropertyID::BorderLeftStyle, *left); - } - } else if (parts.size() == 3) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto right = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - auto left = parse_css_value(deprecated_context, parts[1]); - if (top && right && bottom && left) { - style.set_property(CSS::PropertyID::BorderTopStyle, *top); - style.set_property(CSS::PropertyID::BorderRightStyle, *right); - style.set_property(CSS::PropertyID::BorderBottomStyle, *bottom); - style.set_property(CSS::PropertyID::BorderLeftStyle, *left); - } - } else if (parts.size() == 2) { - auto vertical = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - if (vertical && horizontal) { - style.set_property(CSS::PropertyID::BorderTopStyle, *vertical); - style.set_property(CSS::PropertyID::BorderRightStyle, *horizontal); - style.set_property(CSS::PropertyID::BorderBottomStyle, *vertical); - style.set_property(CSS::PropertyID::BorderLeftStyle, *horizontal); - } - } else { - style.set_property(CSS::PropertyID::BorderTopStyle, value); - style.set_property(CSS::PropertyID::BorderRightStyle, value); - style.set_property(CSS::PropertyID::BorderBottomStyle, value); - style.set_property(CSS::PropertyID::BorderLeftStyle, value); - } - return; - } - if (value.is_value_list()) { auto& parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 4) { @@ -935,48 +801,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::BorderWidth) { - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 4) { - auto top_border_width = parse_css_value(deprecated_context, parts[0]); - auto right_border_width = parse_css_value(deprecated_context, parts[1]); - auto bottom_border_width = parse_css_value(deprecated_context, parts[2]); - auto left_border_width = parse_css_value(deprecated_context, parts[3]); - if (top_border_width && right_border_width && bottom_border_width && left_border_width) { - style.set_property(CSS::PropertyID::BorderTopWidth, *top_border_width); - style.set_property(CSS::PropertyID::BorderRightWidth, *right_border_width); - style.set_property(CSS::PropertyID::BorderBottomWidth, *bottom_border_width); - style.set_property(CSS::PropertyID::BorderLeftWidth, *left_border_width); - } - } else if (parts.size() == 3) { - auto top_border_width = parse_css_value(deprecated_context, parts[0]); - auto horizontal_border_width = parse_css_value(deprecated_context, parts[1]); - auto bottom_border_width = parse_css_value(deprecated_context, parts[2]); - if (top_border_width && horizontal_border_width && bottom_border_width) { - style.set_property(CSS::PropertyID::BorderTopWidth, *top_border_width); - style.set_property(CSS::PropertyID::BorderRightWidth, *horizontal_border_width); - style.set_property(CSS::PropertyID::BorderBottomWidth, *bottom_border_width); - style.set_property(CSS::PropertyID::BorderLeftWidth, *horizontal_border_width); - } - } else if (parts.size() == 2) { - auto vertical_border_width = parse_css_value(deprecated_context, parts[0]); - auto horizontal_border_width = parse_css_value(deprecated_context, parts[1]); - if (vertical_border_width && horizontal_border_width) { - style.set_property(CSS::PropertyID::BorderTopWidth, *vertical_border_width); - style.set_property(CSS::PropertyID::BorderRightWidth, *horizontal_border_width); - style.set_property(CSS::PropertyID::BorderBottomWidth, *vertical_border_width); - style.set_property(CSS::PropertyID::BorderLeftWidth, *horizontal_border_width); - } - } else { - style.set_property(CSS::PropertyID::BorderTopWidth, value); - style.set_property(CSS::PropertyID::BorderRightWidth, value); - style.set_property(CSS::PropertyID::BorderBottomWidth, value); - style.set_property(CSS::PropertyID::BorderLeftWidth, value); - } - return; - } - if (value.is_value_list()) { auto& parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 4) { @@ -1029,48 +853,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::BorderColor) { - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 4) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto right = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - auto left = parse_css_value(deprecated_context, parts[3]); - if (top && right && bottom && left) { - style.set_property(CSS::PropertyID::BorderTopColor, *top); - style.set_property(CSS::PropertyID::BorderRightColor, *right); - style.set_property(CSS::PropertyID::BorderBottomColor, *bottom); - style.set_property(CSS::PropertyID::BorderLeftColor, *left); - } - } else if (parts.size() == 3) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - if (top && horizontal && bottom) { - style.set_property(CSS::PropertyID::BorderTopColor, *top); - style.set_property(CSS::PropertyID::BorderRightColor, *horizontal); - style.set_property(CSS::PropertyID::BorderBottomColor, *bottom); - style.set_property(CSS::PropertyID::BorderLeftColor, *horizontal); - } - } else if (parts.size() == 2) { - auto vertical = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - if (vertical && horizontal) { - style.set_property(CSS::PropertyID::BorderTopColor, *vertical); - style.set_property(CSS::PropertyID::BorderRightColor, *horizontal); - style.set_property(CSS::PropertyID::BorderBottomColor, *vertical); - style.set_property(CSS::PropertyID::BorderLeftColor, *horizontal); - } - } else { - style.set_property(CSS::PropertyID::BorderTopColor, value); - style.set_property(CSS::PropertyID::BorderRightColor, value); - style.set_property(CSS::PropertyID::BorderBottomColor, value); - style.set_property(CSS::PropertyID::BorderLeftColor, value); - } - return; - } - if (value.is_value_list()) { auto& parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 4) { @@ -1138,46 +920,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope return; } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - NonnullRefPtrVector<StyleValue> values; - for (auto& part : parts) { - auto value = parse_css_value(deprecated_context, part); - if (!value) - return; - values.append(value.release_nonnull()); - } - - // HACK: Disallow more than one color value in a 'background' shorthand - size_t color_value_count = 0; - for (auto& value : values) - color_value_count += value.is_color(); - - if (values[0].is_color() && color_value_count == 1) - style.set_property(CSS::PropertyID::BackgroundColor, values[0]); - - for (auto it = values.begin(); it != values.end(); ++it) { - auto& value = *it; - - if (is_background_repeat(value)) { - if ((it + 1 != values.end()) && is_background_repeat(*(it + 1))) { - ++it; - - set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundRepeatX, value, document, true); - set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundRepeatY, *it, document, true); - } else { - set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundRepeat, value, document); - } - } - - if (!value.is_string()) - continue; - set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundImage, value, document); - } - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); @@ -1319,27 +1061,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope assign_background_repeat_from_single_value(value); } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - NonnullRefPtrVector<StyleValue> values; - for (auto& part : parts) { - auto value = parse_css_value(deprecated_context, part); - if (!value || !is_background_repeat(*value)) - return; - values.append(value.release_nonnull()); - } - - if (values.size() == 1) { - assign_background_repeat_from_single_value(values[0]); - } else if (values.size() == 2) { - set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundRepeatX, values[0], document, true); - set_property_expanding_shorthands(style, CSS::PropertyID::BackgroundRepeatY, values[1], document, true); - } - - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); NonnullRefPtrVector<StyleValue> repeat_values; @@ -1381,47 +1102,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope return; } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 2) { - auto vertical = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - if (vertical && horizontal) { - style.set_property(CSS::PropertyID::MarginTop, *vertical); - style.set_property(CSS::PropertyID::MarginBottom, *vertical); - style.set_property(CSS::PropertyID::MarginLeft, *horizontal); - style.set_property(CSS::PropertyID::MarginRight, *horizontal); - } - return; - } else if (parts.size() == 3) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - if (top && horizontal && bottom) { - style.set_property(CSS::PropertyID::MarginTop, *top); - style.set_property(CSS::PropertyID::MarginBottom, *bottom); - style.set_property(CSS::PropertyID::MarginLeft, *horizontal); - style.set_property(CSS::PropertyID::MarginRight, *horizontal); - } - return; - } else if (parts.size() == 4) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto right = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - auto left = parse_css_value(deprecated_context, parts[3]); - if (top && right && bottom && left) { - style.set_property(CSS::PropertyID::MarginTop, *top); - style.set_property(CSS::PropertyID::MarginBottom, *bottom); - style.set_property(CSS::PropertyID::MarginLeft, *left); - style.set_property(CSS::PropertyID::MarginRight, *right); - } - return; - } - dbgln("Unsure what to do with CSS margin value '{}'", value.to_string()); - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 2) { @@ -1473,47 +1153,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope return; } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 2) { - auto vertical = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - if (vertical && horizontal) { - style.set_property(CSS::PropertyID::PaddingTop, *vertical); - style.set_property(CSS::PropertyID::PaddingBottom, *vertical); - style.set_property(CSS::PropertyID::PaddingLeft, *horizontal); - style.set_property(CSS::PropertyID::PaddingRight, *horizontal); - } - return; - } else if (parts.size() == 3) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto horizontal = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - if (top && bottom && horizontal) { - style.set_property(CSS::PropertyID::PaddingTop, *top); - style.set_property(CSS::PropertyID::PaddingBottom, *bottom); - style.set_property(CSS::PropertyID::PaddingLeft, *horizontal); - style.set_property(CSS::PropertyID::PaddingRight, *horizontal); - } - return; - } else if (parts.size() == 4) { - auto top = parse_css_value(deprecated_context, parts[0]); - auto right = parse_css_value(deprecated_context, parts[1]); - auto bottom = parse_css_value(deprecated_context, parts[2]); - auto left = parse_css_value(deprecated_context, parts[3]); - if (top && bottom && left && right) { - style.set_property(CSS::PropertyID::PaddingTop, *top); - style.set_property(CSS::PropertyID::PaddingBottom, *bottom); - style.set_property(CSS::PropertyID::PaddingLeft, *left); - style.set_property(CSS::PropertyID::PaddingRight, *right); - } - return; - } - dbgln("Unsure what to do with CSS padding value '{}'", value.to_string()); - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 2) { @@ -1557,18 +1196,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::ListStyle) { - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (!parts.is_empty()) { - auto value = parse_css_value(deprecated_context, parts[0]); - if (!value) - return; - style.set_property(CSS::PropertyID::ListStyleType, value.release_nonnull()); - } - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); @@ -1626,30 +1253,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::Font) { - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() < 2) - return; - auto size_parts = parts[0].split_view('/'); - if (size_parts.size() == 2) { - auto size = parse_css_value(deprecated_context, size_parts[0]); - auto line_height = parse_css_value(deprecated_context, size_parts[1]); - if (!size || !line_height) - return; - style.set_property(CSS::PropertyID::FontSize, size.release_nonnull()); - style.set_property(CSS::PropertyID::LineHeight, line_height.release_nonnull()); - } else if (size_parts.size() == 1) { - auto size = parse_css_value(deprecated_context, parts[0]); - if (!size) - return; - style.set_property(CSS::PropertyID::FontSize, size.release_nonnull()); - } - auto family = parse_css_value(deprecated_context, parts[1]); - style.set_property(CSS::PropertyID::FontFamily, family.release_nonnull()); - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); @@ -1779,44 +1382,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope return; } - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.size() == 1) { - auto flex_grow = parse_css_value(deprecated_context, parts[0]); - style.set_property(CSS::PropertyID::FlexGrow, *flex_grow); - return; - } - - if (parts.size() == 2) { - auto flex_grow = parse_css_value(deprecated_context, parts[0]); - style.set_property(CSS::PropertyID::FlexGrow, *flex_grow); - - auto second_value = parse_css_value(deprecated_context, parts[1]); - if (second_value->is_length() || (second_value->is_identifier() && second_value->to_identifier() == CSS::ValueID::Content)) { - style.set_property(CSS::PropertyID::FlexBasis, *second_value); - } else { - auto flex_shrink = parse_css_value(deprecated_context, parts[1]); - style.set_property(CSS::PropertyID::FlexShrink, *flex_shrink); - } - return; - } - - if (parts.size() == 3) { - auto flex_grow = parse_css_value(deprecated_context, parts[0]); - style.set_property(CSS::PropertyID::FlexGrow, *flex_grow); - auto flex_shrink = parse_css_value(deprecated_context, parts[1]); - style.set_property(CSS::PropertyID::FlexShrink, *flex_shrink); - - auto third_value = parse_css_value(deprecated_context, parts[2]); - if (third_value->is_length() || (third_value->is_identifier() && third_value->to_identifier() == CSS::ValueID::Content)) - style.set_property(CSS::PropertyID::FlexBasis, *third_value); - return; - } - - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.size() == 1) { @@ -1871,22 +1436,6 @@ static void set_property_expanding_shorthands(StyleProperties& style, CSS::Prope } if (property_id == CSS::PropertyID::FlexFlow) { - // FIXME: Remove string parsing once DeprecatedCSSParser is gone. - if (value.is_string()) { - auto parts = split_on_whitespace(value.to_string()); - if (parts.is_empty()) - return; - - auto direction = parse_css_value(deprecated_context, parts[0]); - style.set_property(CSS::PropertyID::FlexDirection, direction.release_nonnull()); - - if (parts.size() > 1) { - auto wrap = parse_css_value(deprecated_context, parts[1]); - style.set_property(CSS::PropertyID::FlexWrap, wrap.release_nonnull()); - } - return; - } - if (value.is_value_list()) { auto parts = static_cast<CSS::ValueListStyleValue const&>(value).values(); if (parts.is_empty() || parts.size() > 2) |