Issue #2489: Allow color-mix() to differentiate color spaces

This commit is contained in:
erixreyes 2025-07-25 10:41:30 +08:00 committed by roytam1
commit 01b0b8251d
2 changed files with 79 additions and 27 deletions

View file

@ -7457,7 +7457,18 @@ CSSParserImpl::ParseColor(nsCSSValue& aValue)
return CSSParseResult::Error;
}
if (!GetToken(true) || mToken.mType != eCSSToken_Ident || !mToken.mIdent.LowerCaseEqualsLiteral("srgb")) {
// Check for supported color spaces: srgb or hsl
if (!GetToken(true) || mToken.mType != eCSSToken_Ident) {
SkipUntil(')');
return CSSParseResult::Error;
}
mozilla::css::ColorMixColorSpace colorSpace;
if (mToken.mIdent.LowerCaseEqualsLiteral("srgb")) {
colorSpace = mozilla::css::ColorMixColorSpace::sRGB;
} else if (mToken.mIdent.LowerCaseEqualsLiteral("hsl")) {
colorSpace = mozilla::css::ColorMixColorSpace::HSL;
} else {
SkipUntil(')');
return CSSParseResult::Error;
}
@ -7528,7 +7539,7 @@ CSSParserImpl::ParseColor(nsCSSValue& aValue)
}
RefPtr<mozilla::css::ColorMixValue> colorMix = new mozilla::css::ColorMixValue(
mozilla::css::ColorMixColorSpace::sRGB, color1, color2, w1, w2);
colorSpace, color1, color2, w1, w2);
aValue.SetColorMixValue(colorMix.forget());
return CSSParseResult::Ok;
}