From 5a832a6e244f7e7d62483d7adeb677c4e1494478 Mon Sep 17 00:00:00 2001 From: Moonchild Date: Tue, 23 Dec 2025 11:09:23 +0100 Subject: [PATCH] Issue #2857 - Implement `inset-block` and `inset-inline` CSS shorthand Resolves #2857 --- .../shared/css/generated/properties-db.js | 40 +++++++++++++++++++ layout/style/Declaration.cpp | 2 + layout/style/nsCSSParser.cpp | 24 +++++++++++ layout/style/nsCSSPropList.h | 12 ++++++ layout/style/nsCSSProps.cpp | 12 ++++++ 5 files changed, 90 insertions(+) diff --git a/devtools/shared/css/generated/properties-db.js b/devtools/shared/css/generated/properties-db.js index 9dd28d1b34..28f65bc341 100644 --- a/devtools/shared/css/generated/properties-db.js +++ b/devtools/shared/css/generated/properties-db.js @@ -7223,6 +7223,26 @@ exports.CSS_PROPERTIES = { "unset" ] }, + "inset-block": { + "isInherited": false, + "subproperties": [ + "inset-block-start", + "inset-block-end" + ], + "supports": [ + 6, + 8 + ], + "values": [ + "-moz-calc", + "auto", + "calc", + "inherit", + "initial", + "revert", + "unset" + ] + }, "inset-block-end": { "isInherited": false, "subproperties": [ @@ -7261,6 +7281,26 @@ exports.CSS_PROPERTIES = { "unset" ] }, + "inset-inline": { + "isInherited": false, + "subproperties": [ + "inset-inline-start", + "inset-inline-end" + ], + "supports": [ + 6, + 8 + ], + "values": [ + "-moz-calc", + "auto", + "calc", + "inherit", + "initial", + "revert", + "unset" + ] + }, "inset-inline-end": { "isInherited": false, "subproperties": [ diff --git a/layout/style/Declaration.cpp b/layout/style/Declaration.cpp index c42af33be7..bdd98eab05 100644 --- a/layout/style/Declaration.cpp +++ b/layout/style/Declaration.cpp @@ -1555,6 +1555,8 @@ Declaration::GetPropertyValueInternal( } MOZ_FALLTHROUGH; } + case eCSSProperty_inset_block: + case eCSSProperty_inset_inline: case eCSSProperty_margin_block: case eCSSProperty_margin_inline: case eCSSProperty_padding_block: diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index f885cb45e3..ba9ce8dd9f 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -1098,6 +1098,8 @@ protected: bool ParseFontSrcFormat(InfallibleTArray& values); bool ParseFontRanges(nsCSSValue& aValue); bool ParseInset(); + bool ParseInsetBlock(); + bool ParseInsetInline(); bool ParseListStyle(); bool ParseListStyleType(nsCSSValue& aValue); bool ParseMargin(); @@ -12664,6 +12666,10 @@ CSSParserImpl::ParsePropertyByFunction(nsCSSPropertyID aPropID) return ParseJustifyItems(); case eCSSProperty_inset: return ParseInset(); + case eCSSProperty_inset_block: + return ParseInsetBlock(); + case eCSSProperty_inset_inline: + return ParseInsetInline(); case eCSSProperty_list_style: return ParseListStyle(); case eCSSProperty_margin: @@ -16120,6 +16126,24 @@ CSSParserImpl::ParseInset() return ParseBoxProperties(kInsetSideIDs); } +bool +CSSParserImpl::ParseInsetBlock() +{ + return ParseBoxPairProperties(VARIANT_AUTO | VARIANT_INHERIT, + VARIANT_AUTO | VARIANT_LPCALC, + eCSSProperty_inset_block_start, + eCSSProperty_inset_block_end); +} + +bool +CSSParserImpl::ParseInsetInline() +{ + return ParseBoxPairProperties(VARIANT_AUTO | VARIANT_INHERIT, + VARIANT_AUTO | VARIANT_LPCALC, + eCSSProperty_inset_inline_start, + eCSSProperty_inset_inline_end); +} + bool CSSParserImpl::ParseListStyleType(nsCSSValue& aValue) { diff --git a/layout/style/nsCSSPropList.h b/layout/style/nsCSSPropList.h index b4a24ca0d1..1b4f3a2967 100644 --- a/layout/style/nsCSSPropList.h +++ b/layout/style/nsCSSPropList.h @@ -2999,6 +2999,12 @@ CSS_PROP_POSITION( kImageLayerPositionKTable, offsetof(nsStylePosition, mObjectPosition), eStyleAnimType_Custom) +CSS_PROP_SHORTHAND( + inset-block, + inset_block, + InsetBlock, + CSS_PROPERTY_PARSE_FUNCTION, + "") CSS_PROP_LOGICAL( inset-block-end, inset_block_end, @@ -3032,6 +3038,12 @@ CSS_PROP_LOGICAL( Position, CSS_PROP_NO_OFFSET, eStyleAnimType_None) +CSS_PROP_SHORTHAND( + inset-inline, + inset_inline, + InsetInline, + CSS_PROPERTY_PARSE_FUNCTION, + "") CSS_PROP_LOGICAL( inset-inline-end, inset_inline_end, diff --git a/layout/style/nsCSSProps.cpp b/layout/style/nsCSSProps.cpp index 1e798504b4..dca949f7f4 100644 --- a/layout/style/nsCSSProps.cpp +++ b/layout/style/nsCSSProps.cpp @@ -2911,6 +2911,18 @@ static const nsCSSPropertyID gInsetSubpropTable[] = { eCSSProperty_UNKNOWN }; +static const nsCSSPropertyID gInsetBlockSubpropTable[] = { + eCSSProperty_inset_block_start, + eCSSProperty_inset_block_end, + eCSSProperty_UNKNOWN +}; + +static const nsCSSPropertyID gInsetInlineSubpropTable[] = { + eCSSProperty_inset_inline_start, + eCSSProperty_inset_inline_end, + eCSSProperty_UNKNOWN +}; + static const nsCSSPropertyID gListStyleSubpropTable[] = { eCSSProperty_list_style_type, eCSSProperty_list_style_image,