1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 10:37:45 +00:00

LibWeb+Meta: Stop discrete media-features from parsing as ranges

Only "range" type media-features are allowed to appear in range syntax,
or have a `min-/max-` prefix.
This commit is contained in:
Sam Atkins 2022-03-08 17:39:08 +00:00 committed by Andreas Kling
parent a451810599
commit 0371d33132
3 changed files with 29 additions and 3 deletions

View file

@ -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();
}
}
)~~~");

View file

@ -43,6 +43,8 @@ enum class MediaFeatureID {)~~~");
Optional<MediaFeatureID> media_feature_id_from_string(StringView);
char const* string_from_media_feature_id(MediaFeatureID);
bool media_feature_type_is_range(MediaFeatureID);
}
)~~~");