mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-10-16 13:09:41 +00:00
LibWeb: Disallow spread distance value when parsing text-shadow
`text-shadow` does not support setting a value for spread distance unlike `box-shadow`.
This commit is contained in:
parent
5d8a859457
commit
1ac7b47764
Notes:
github-actions[bot]
2025-09-18 14:23:54 +00:00
Author: https://github.com/Calme1709
Commit: 1ac7b47764
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/6208
Reviewed-by: https://github.com/AtkinsSJ ✅
7 changed files with 23 additions and 27 deletions
|
@ -510,7 +510,7 @@ Parser::ParseErrorOr<NonnullRefPtr<StyleValue const>> Parser::parse_css_value(Pr
|
|||
return parsed_value.release_nonnull();
|
||||
return ParseError::SyntaxError;
|
||||
case PropertyID::BoxShadow:
|
||||
if (auto parsed_value = parse_shadow_value(tokens, AllowInsetKeyword::Yes); parsed_value && !tokens.has_next_token())
|
||||
if (auto parsed_value = parse_shadow_value(tokens, ShadowStyleValue::ShadowType::Normal); parsed_value && !tokens.has_next_token())
|
||||
return parsed_value.release_nonnull();
|
||||
return ParseError::SyntaxError;
|
||||
case PropertyID::ColorScheme:
|
||||
|
@ -747,7 +747,7 @@ Parser::ParseErrorOr<NonnullRefPtr<StyleValue const>> Parser::parse_css_value(Pr
|
|||
return parsed_value.release_nonnull();
|
||||
return ParseError::SyntaxError;
|
||||
case PropertyID::TextShadow:
|
||||
if (auto parsed_value = parse_shadow_value(tokens, AllowInsetKeyword::No); parsed_value && !tokens.has_next_token())
|
||||
if (auto parsed_value = parse_shadow_value(tokens, ShadowStyleValue::ShadowType::Text); parsed_value && !tokens.has_next_token())
|
||||
return parsed_value.release_nonnull();
|
||||
return ParseError::SyntaxError;
|
||||
case PropertyID::TextUnderlinePosition:
|
||||
|
@ -2062,18 +2062,18 @@ RefPtr<StyleValue const> Parser::parse_columns_value(TokenStream<ComponentValue>
|
|||
{ column_count.release_nonnull(), column_width.release_nonnull(), column_height.release_nonnull() });
|
||||
}
|
||||
|
||||
RefPtr<StyleValue const> Parser::parse_shadow_value(TokenStream<ComponentValue>& tokens, AllowInsetKeyword allow_inset_keyword)
|
||||
RefPtr<StyleValue const> Parser::parse_shadow_value(TokenStream<ComponentValue>& tokens, ShadowStyleValue::ShadowType shadow_type)
|
||||
{
|
||||
// "none"
|
||||
if (auto none = parse_all_as_single_keyword_value(tokens, Keyword::None))
|
||||
return none;
|
||||
|
||||
return parse_comma_separated_value_list(tokens, [this, allow_inset_keyword](auto& tokens) {
|
||||
return parse_single_shadow_value(tokens, allow_inset_keyword);
|
||||
return parse_comma_separated_value_list(tokens, [this, shadow_type](auto& tokens) {
|
||||
return parse_single_shadow_value(tokens, shadow_type);
|
||||
});
|
||||
}
|
||||
|
||||
RefPtr<StyleValue const> Parser::parse_single_shadow_value(TokenStream<ComponentValue>& tokens, AllowInsetKeyword allow_inset_keyword)
|
||||
RefPtr<StyleValue const> Parser::parse_single_shadow_value(TokenStream<ComponentValue>& tokens, ShadowStyleValue::ShadowType shadow_type)
|
||||
{
|
||||
auto transaction = tokens.begin_transaction();
|
||||
|
||||
|
@ -2136,13 +2136,17 @@ RefPtr<StyleValue const> Parser::parse_single_shadow_value(TokenStream<Component
|
|||
auto maybe_spread_distance = possibly_dynamic_length(tokens.next_token());
|
||||
if (!maybe_spread_distance)
|
||||
continue;
|
||||
|
||||
if (shadow_type == ShadowStyleValue::ShadowType::Text)
|
||||
return nullptr;
|
||||
|
||||
spread_distance = maybe_spread_distance;
|
||||
tokens.discard_a_token();
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if (allow_inset_keyword == AllowInsetKeyword::Yes && token.is_ident("inset"sv)) {
|
||||
if (shadow_type == ShadowStyleValue::ShadowType::Normal && token.is_ident("inset"sv)) {
|
||||
if (placement.has_value())
|
||||
return nullptr;
|
||||
placement = ShadowPlacement::Inner;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue