mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1210575 part 5: Allow CSS -webkit-{linear|radial}-gradient expressions (& 'repeating' variants) to make it to our gradient-parsing code, if webkit prefix support is preffed on. r=heycam
This commit is contained in:
parent
7d47dd45fc
commit
85c2b01606
@ -1126,6 +1126,7 @@ protected:
|
||||
enum GradientParsingFlags {
|
||||
eGradient_Repeating = 1 << 0, // repeating-{linear|radial}-gradient
|
||||
eGradient_MozLegacy = 1 << 1, // -moz-{linear|radial}-gradient
|
||||
eGradient_WebkitLegacy = 1 << 2, // -webkit-{linear|radial}-gradient
|
||||
};
|
||||
bool ParseLinearGradient(nsCSSValue& aValue, uint8_t aFlags);
|
||||
bool ParseRadialGradient(nsCSSValue& aValue, uint8_t aFlags);
|
||||
@ -7481,6 +7482,10 @@ CSSParserImpl::ParseVariant(nsCSSValue& aValue,
|
||||
StringBeginsWith(tmp, NS_LITERAL_STRING("-moz-"))) {
|
||||
tmp.Rebind(tmp, 5);
|
||||
gradientFlags |= eGradient_MozLegacy;
|
||||
} else if (sWebkitPrefixedAliasesEnabled &&
|
||||
StringBeginsWith(tmp, NS_LITERAL_STRING("-webkit-"))) {
|
||||
tmp.Rebind(tmp, 8);
|
||||
gradientFlags |= eGradient_WebkitLegacy;
|
||||
}
|
||||
if (StringBeginsWith(tmp, NS_LITERAL_STRING("repeating-"))) {
|
||||
tmp.Rebind(tmp, 10);
|
||||
@ -10681,10 +10686,12 @@ CSSParserImpl::IsFunctionTokenValidForBackgroundImage(
|
||||
funcName.LowerCaseEqualsLiteral("-moz-repeating-radial-gradient") ||
|
||||
funcName.LowerCaseEqualsLiteral("-moz-image-rect") ||
|
||||
funcName.LowerCaseEqualsLiteral("-moz-element") ||
|
||||
(ShouldUseUnprefixingService() &&
|
||||
((sWebkitPrefixedAliasesEnabled || ShouldUseUnprefixingService()) &&
|
||||
(funcName.LowerCaseEqualsLiteral("-webkit-gradient") ||
|
||||
funcName.LowerCaseEqualsLiteral("-webkit-linear-gradient") ||
|
||||
funcName.LowerCaseEqualsLiteral("-webkit-radial-gradient")));
|
||||
funcName.LowerCaseEqualsLiteral("-webkit-radial-gradient") ||
|
||||
funcName.LowerCaseEqualsLiteral("-webkit-repeating-linear-gradient") ||
|
||||
funcName.LowerCaseEqualsLiteral("-webkit-repeating-radial-gradient")));
|
||||
}
|
||||
|
||||
// Parse one item of the background shorthand property.
|
||||
|
@ -616,6 +616,49 @@ var unbalancedGradientAndElementValues = [
|
||||
"-moz-element(#a()",
|
||||
];
|
||||
|
||||
if (IsCSSPropertyPrefEnabled("layout.css.prefixes.webkit")) {
|
||||
// Extend gradient lists with valid/invalid webkit-prefixed expressions:
|
||||
validGradientAndElementValues.push(
|
||||
// Basic linear-gradient syntax (valid when prefixed or unprefixed):
|
||||
"-webkit-linear-gradient(red, green, blue)",
|
||||
|
||||
// Angled linear-gradients (valid when prefixed or unprefixed):
|
||||
"-webkit-linear-gradient(135deg, red, blue)",
|
||||
"-webkit-linear-gradient(280deg, red 60%, blue)",
|
||||
|
||||
// Basic radial-gradient syntax (valid when prefixed or unprefixed):
|
||||
"-webkit-radial-gradient(circle, white, black)",
|
||||
"-webkit-radial-gradient(circle, white, black)",
|
||||
"-webkit-radial-gradient(ellipse closest-side, white, black)",
|
||||
"-webkit-radial-gradient(circle farthest-corner, white, black)",
|
||||
|
||||
// Repeating examples:
|
||||
"-webkit-repeating-linear-gradient(red 10%, blue 30%)",
|
||||
"-webkit-repeating-linear-gradient(30deg, pink 20px, orange 70px)",
|
||||
"-webkit-repeating-radial-gradient(circle, red, blue 10%, red 20%)",
|
||||
"-webkit-repeating-radial-gradient(circle farthest-corner, gray 10px, yellow 20px)"
|
||||
);
|
||||
|
||||
invalidGradientAndElementValues.push(
|
||||
// Syntax that's invalid for all types of gradients:
|
||||
// * empty gradient expressions:
|
||||
"-webkit-linear-gradient()",
|
||||
"-webkit-radial-gradient()",
|
||||
"-webkit-repeating-linear-gradient()",
|
||||
"-webkit-repeating-radial-gradient()",
|
||||
|
||||
// Syntax that's invalid for both -webkit & -moz, but valid for unprefixed:
|
||||
// XXXdholbert (populated in a later patch)
|
||||
|
||||
// Syntax that's invalid for both -webkit & unprefixed, but valid for -moz:
|
||||
// * initial length
|
||||
"-webkit-linear-gradient(10px, red, blue)"
|
||||
|
||||
// Syntax that's invalid for -webkit, but valid for -moz & unprefixed:
|
||||
// XXXdholbert (populated in a later patch)
|
||||
);
|
||||
}
|
||||
|
||||
var gCSSProperties = {
|
||||
"animation": {
|
||||
domProp: "animation",
|
||||
|
Loading…
Reference in New Issue
Block a user