diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_cpp.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_cpp.cpp index 88c6e156a9..f31cf387d6 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_cpp.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_cpp.cpp @@ -60,6 +60,30 @@ char const* string_from_media_feature_id(MediaFeatureID media_feature_id) VERIFY_NOT_REACHED(); } +bool media_feature_type_is_range(MediaFeatureID media_feature_id) +{ + switch (media_feature_id) {)~~~"); + + json.as_object().for_each_member([&](auto& name, auto& value) { + VERIFY(value.is_object()); + auto& feature = value.as_object(); + + auto member_generator = generator.fork(); + member_generator.set("name:titlecase", title_casify(name)); + VERIFY(feature.has("type")); + auto feature_type = feature.get("type"); + VERIFY(feature_type.is_string()); + member_generator.set("is_range", feature_type.as_string() == "range" ? "true" : "false"); + member_generator.append(R"~~~( + case MediaFeatureID::@name:titlecase@: + return @is_range@;)~~~"); + }); + + generator.append(R"~~~( + } + VERIFY_NOT_REACHED(); +} + } )~~~"); diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_h.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_h.cpp index b94288345a..72d0f3cce9 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_h.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/Generate_CSS_MediaFeatureID_h.cpp @@ -43,6 +43,8 @@ enum class MediaFeatureID {)~~~"); Optional media_feature_id_from_string(StringView); char const* string_from_media_feature_id(MediaFeatureID); +bool media_feature_type_is_range(MediaFeatureID); + } )~~~"); diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 26bafb7251..702c3ec5c8 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -896,7 +896,7 @@ Optional Parser::parse_media_feature(TokenStream Parser::parse_media_feature(TokenStream ` // NOTE: We have to check for first, since all s will also parse as . - if (auto maybe_name = parse_mf_name(tokens, false); maybe_name.has_value()) { + if (auto maybe_name = parse_mf_name(tokens, false); maybe_name.has_value() && media_feature_type_is_range(maybe_name->id)) { tokens.skip_whitespace(); if (auto maybe_comparison = parse_comparison(tokens); maybe_comparison.has_value()) { tokens.skip_whitespace(); @@ -1047,7 +1047,7 @@ Optional Parser::parse_media_feature(TokenStreamid)) { tokens.skip_whitespace(); if (!tokens.has_next_token())