diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp index 61e21b000f..60e8ac8610 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp @@ -20,7 +20,10 @@ ErrorOr generate_bounds_checking_function(JsonObject& properties, SourceGe static bool type_name_is_enum(StringView type_name) { - return !AK::first_is_one_of(type_name, "angle"sv, "color"sv, "custom-ident"sv, "frequency"sv, "image"sv, "integer"sv, "length"sv, "number"sv, "paint"sv, "percentage"sv, "ratio"sv, "rect"sv, "resolution"sv, "string"sv, "time"sv, "url"sv); + return !AK::first_is_one_of(type_name, + "angle"sv, "color"sv, "custom-ident"sv, "easing-function"sv, "frequency"sv, "image"sv, + "integer"sv, "length"sv, "number"sv, "paint"sv, "percentage"sv, "ratio"sv, "rect"sv, + "resolution"sv, "string"sv, "time"sv, "url"sv); } ErrorOr serenity_main(Main::Arguments arguments) @@ -158,6 +161,7 @@ enum class ValueType { Angle, Color, CustomIdent, + EasingFunction, FilterValueList, Frequency, Image, @@ -614,6 +618,8 @@ bool property_accepts_type(PropertyID property_id, ValueType value_type) TRY(property_generator.try_appendln(" case ValueType::Color:")); } else if (type_name == "custom-ident") { TRY(property_generator.try_appendln(" case ValueType::CustomIdent:")); + } else if (type_name == "easing-function") { + TRY(property_generator.try_appendln(" case ValueType::EasingFunction:")); } else if (type_name == "frequency") { TRY(property_generator.try_appendln(" case ValueType::Frequency:")); } else if (type_name == "image") { diff --git a/Userland/Libraries/LibWeb/CSS/CSSNumericType.cpp b/Userland/Libraries/LibWeb/CSS/CSSNumericType.cpp index 04cbba79c5..5479155d12 100644 --- a/Userland/Libraries/LibWeb/CSS/CSSNumericType.cpp +++ b/Userland/Libraries/LibWeb/CSS/CSSNumericType.cpp @@ -33,6 +33,7 @@ Optional CSSNumericType::base_type_from_value_type(Val case ValueType::Color: case ValueType::CustomIdent: + case ValueType::EasingFunction: case ValueType::FilterValueList: case ValueType::Image: case ValueType::Integer: diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 4470515286..d250bcf407 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -8329,6 +8329,11 @@ ErrorOr Parser::parse_css_value_for_properties(Readonl auto& peek_token = tokens.peek_token(); + if (auto property = any_property_accepts_type(property_ids, ValueType::EasingFunction); property.has_value()) { + if (auto maybe_easing_function = TRY(parse_easing_value(tokens))) + return PropertyAndValue { *property, maybe_easing_function }; + } + if (peek_token.is(Token::Type::Ident)) { // NOTE: We do not try to parse "CSS-wide keywords" here. https://www.w3.org/TR/css-values-4/#common-keywords // These are only valid on their own, and so should be parsed directly in `parse_css_value()`.