Issue #2829 - Support revert-layer in CSS-wide parsing

This commit is contained in:
Basilisk-Dev committed 2026-07-10 09:59:03 -04:00
1 parent ddf5d6256e
commit edb82fd1c9
3 files changed
+22 -11

No files matched your search

+1 -1
View File
@@ -481,6 +481,7 @@ CSS_KEY(repeat-x, repeat_x)
CSS_KEY(repeat-y, repeat_y)
CSS_KEY(reverse, reverse)
CSS_KEY(revert, revert)
CSS_KEY(revert-layer, revert_layer)
CSS_KEY(ridge, ridge)
CSS_KEY(right, right)
CSS_KEY(rl, rl)
@@ -814,4 +815,3 @@ CSS_KEY(text-before-edge, text_before_edge)
CSS_KEY(use-script, use_script)
CSS_KEY(-moz-crisp-edges, _moz_crisp_edges)
CSS_KEY(space, space)
+16 -9
View File
@@ -9122,7 +9122,8 @@ CSSParserImpl::ParseVariant(nsCSSValue& aValue,
aValue.SetUnsetValue();
return CSSParseResult::Ok;
}
else if (eCSSKeyword_revert == keyword) {
else if (eCSSKeyword_revert == keyword ||
eCSSKeyword_revert_layer == keyword) {
aValue.SetRevertValue(mLevel);
return CSSParseResult::Ok;
}
@@ -9330,7 +9331,8 @@ CSSParserImpl::ParseVariant(nsCSSValue& aValue,
tk->mIdent.LowerCaseEqualsLiteral("initial") ||
(tk->mIdent.LowerCaseEqualsLiteral("unset") &&
nsLayoutUtils::UnsetValueEnabled()) ||
tk->mIdent.LowerCaseEqualsLiteral("revert")))) {
tk->mIdent.LowerCaseEqualsLiteral("revert") ||
tk->mIdent.LowerCaseEqualsLiteral("revert-layer")))) {
aValue.SetStringValue(tk->mIdent, eCSSUnit_Ident);
return CSSParseResult::Ok;
}
@@ -9406,6 +9408,7 @@ CSSParserImpl::ParseCustomIdent(nsCSSValue& aValue,
keyword == eCSSKeyword_initial ||
keyword == eCSSKeyword_unset ||
keyword == eCSSKeyword_revert ||
keyword == eCSSKeyword_revert_layer ||
keyword == eCSSKeyword_default ||
(aPropertyKTable &&
nsCSSProps::FindIndexOfKeyword(keyword, aPropertyKTable) >= 0)) {
@@ -13905,7 +13908,8 @@ CSSParserImpl::ParseImageLayersItem(
if (keyword == eCSSKeyword_inherit ||
keyword == eCSSKeyword_initial ||
keyword == eCSSKeyword_unset ||
keyword == eCSSKeyword_revert) {
keyword == eCSSKeyword_revert ||
keyword == eCSSKeyword_revert_layer) {
return false;
} else if (keyword == eCSSKeyword_none) {
if (haveImage)
@@ -16655,6 +16659,7 @@ CSSParserImpl::ParseFamily(nsCSSValue& aValue)
}
break;
case eCSSKeyword_revert:
case eCSSKeyword_revert_layer:
aValue.SetRevertValue(mLevel);
return true;
case eCSSKeyword__moz_use_system_font:
@@ -16691,6 +16696,7 @@ CSSParserImpl::ParseFamily(nsCSSValue& aValue)
case eCSSKeyword_initial:
case eCSSKeyword_default:
case eCSSKeyword_revert:
case eCSSKeyword_revert_layer:
case eCSSKeyword__moz_use_system_font:
return false;
case eCSSKeyword_unset:
@@ -18564,14 +18570,15 @@ CSSParserImpl::ParseTransitionProperty()
}
if (cur->mValue.GetUnit() == eCSSUnit_Ident) {
nsDependentString str(cur->mValue.GetStringBufferValue());
// Exclude 'none', 'inherit', 'initial', 'unset', and 'revert'
// according to the same rules as for 'counter-reset' in CSS 2.1.
// Exclude CSS-wide keywords and 'none' according to the same rules
// as for 'counter-reset' in CSS 2.1.
if (str.LowerCaseEqualsLiteral("none") ||
str.LowerCaseEqualsLiteral("inherit") ||
str.LowerCaseEqualsLiteral("initial") ||
(str.LowerCaseEqualsLiteral("unset") &&
nsLayoutUtils::UnsetValueEnabled()) ||
str.LowerCaseEqualsLiteral("revert")) {
str.LowerCaseEqualsLiteral("revert") ||
str.LowerCaseEqualsLiteral("revert-layer")) {
return false;
}
}
@@ -19484,8 +19491,7 @@ CSSParserImpl::ParseValueWithVariables(CSSVariableDeclarations::Type* aType,
}
}
// Look for 'initial', 'inherit', 'unset', or 'revert' as the first
// non-white space token.
// Look for CSS-wide keywords as the first non-white space token.
CSSVariableDeclarations::Type type = CSSVariableDeclarations::eTokenStream;
if (mToken.mType == eCSSToken_Ident) {
if (mToken.mIdent.LowerCaseEqualsLiteral("initial")) {
@@ -19494,7 +19500,8 @@ CSSParserImpl::ParseValueWithVariables(CSSVariableDeclarations::Type* aType,
type = CSSVariableDeclarations::eInherit;
} else if (mToken.mIdent.LowerCaseEqualsLiteral("unset")) {
type = CSSVariableDeclarations::eUnset;
} else if (mToken.mIdent.LowerCaseEqualsLiteral("revert")) {
} else if (mToken.mIdent.LowerCaseEqualsLiteral("revert") ||
mToken.mIdent.LowerCaseEqualsLiteral("revert-layer")) {
type = CSSVariableDeclarations::eRevert;
}
}
+5 -1
View File
@@ -37,6 +37,7 @@ function runTest()
"(unknown:) or (color: green)",
"(unknown) or (color: green)",
"(font: 16px serif)",
"(all: revert-layer)",
"(color:) or (color: green)",
"not (@page)",
"not ({ something @with [ balanced ] brackets })",
@@ -69,6 +70,7 @@ function runTest()
"not ({ something @with (unbalanced brackets })",
"(color: green) or an-extension(that is [unbalanced)",
"not(unknown: unknown)",
"not (all: revert-layer)",
"(color: green) or(color: blue)",
"(color: green;)",
"(font-family: 'Helvetica\n",
@@ -87,7 +89,9 @@ function runTest()
["font", "16px serif"],
["font", "16px /* comment */ serif"],
["font", "16px\nserif"],
["color", "\\0067reen"]
["color", "\\0067reen"],
["all", "revert-layer"],
["color", "revert-layer"]
];
var failingDeclarations = [