Index: Source/core/css/ComputedStyleCSSValueMapping.cpp |
diff --git a/Source/core/css/ComputedStyleCSSValueMapping.cpp b/Source/core/css/ComputedStyleCSSValueMapping.cpp |
index 8575bb40ebedcc50a133746ad28065abdeed6253..722bf30ef5c2e0f119b3113148fb3305fdd28452 100644 |
--- a/Source/core/css/ComputedStyleCSSValueMapping.cpp |
+++ b/Source/core/css/ComputedStyleCSSValueMapping.cpp |
@@ -405,7 +405,7 @@ static PassRefPtrWillBeRawPtr<CSSValueList> valuesForGridShorthand(const StylePr |
{ |
RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
for (size_t i = 0; i < shorthand.length(); ++i) { |
- RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(shorthand.properties()[i], style, layoutObject, styledNode, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(shorthand.properties()[i], style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
ASSERT(value); |
list->append(value.release()); |
} |
@@ -416,7 +416,7 @@ static PassRefPtrWillBeRawPtr<CSSValueList> valuesForShorthandProperty(const Sty |
{ |
RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
for (size_t i = 0; i < shorthand.length(); ++i) { |
- RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(shorthand.properties()[i], style, layoutObject, styledNode, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(shorthand.properties()[i], style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
ASSERT(value); |
list->append(value); |
} |
@@ -431,7 +431,7 @@ static PassRefPtrWillBeRawPtr<CSSValueList> valuesForBackgroundShorthand(const C |
RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSlashSeparated(); |
RefPtrWillBeRawPtr<CSSValueList> beforeSlash = CSSValueList::createSpaceSeparated(); |
if (!currLayer->next()) { // color only for final layer |
- RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(CSSPropertyBackgroundColor, style, layoutObject, styledNode, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> value = ComputedStyleCSSValueMapping::get(CSSPropertyBackgroundColor, style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
ASSERT(value); |
beforeSlash->append(value); |
} |
@@ -1083,10 +1083,10 @@ static PassRefPtrWillBeRawPtr<CSSValueList> valuesForSidesShorthand(const StyleP |
{ |
RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated(); |
// Assume the properties are in the usual order top, right, bottom, left. |
- RefPtrWillBeRawPtr<CSSValue> topValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[0], style, layoutObject, styledNode, allowVisitedStyle); |
- RefPtrWillBeRawPtr<CSSValue> rightValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[1], style, layoutObject, styledNode, allowVisitedStyle); |
- RefPtrWillBeRawPtr<CSSValue> bottomValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[2], style, layoutObject, styledNode, allowVisitedStyle); |
- RefPtrWillBeRawPtr<CSSValue> leftValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[3], style, layoutObject, styledNode, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> topValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[0], style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> rightValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[1], style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> bottomValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[2], style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> leftValue = ComputedStyleCSSValueMapping::get(shorthand.properties()[3], style, layoutObject, styledNode, ComputedStyleCSSValueMapping::DoingShorthand, allowVisitedStyle); |
// All 4 properties must be specified. |
if (!topValue || !rightValue || !bottomValue || !leftValue) |
@@ -1318,9 +1318,10 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::valueForFilter(co |
return list.release(); |
} |
-PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID propertyID, const ComputedStyle& style, const LayoutObject* layoutObject, Node* styledNode, bool allowVisitedStyle) |
+PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID unresolvedProperty, const ComputedStyle& style, const LayoutObject* layoutObject, Node* styledNode, ShorthandState shorthandState, bool allowVisitedStyle) |
{ |
const SVGComputedStyle& svgStyle = style.svgStyle(); |
+ CSSPropertyID propertyID = resolveCSSPropertyID(unresolvedProperty); |
propertyID = CSSProperty::resolveDirectionAwareProperty(propertyID, style.direction(), style.writingMode()); |
switch (propertyID) { |
case CSSPropertyInvalid: |
@@ -1491,24 +1492,36 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID |
return cssValuePool().createColorValue(allowVisitedStyle ? style.visitedDependentColor(CSSPropertyColor).rgb() : style.color().rgb()); |
case CSSPropertyWebkitPrintColorAdjust: |
return cssValuePool().createValue(style.printColorAdjust()); |
- case CSSPropertyWebkitColumnCount: |
+ case CSSPropertyColumnCount: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnCount && shorthandState != DoingShorthand && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
if (style.hasAutoColumnCount()) |
return cssValuePool().createIdentifierValue(CSSValueAuto); |
return cssValuePool().createValue(style.columnCount(), CSSPrimitiveValue::CSS_NUMBER); |
case CSSPropertyColumnFill: |
- ASSERT(RuntimeEnabledFeatures::regionBasedColumnsEnabled()); |
+ ASSERT(RuntimeEnabledFeatures::unprefixMulticolEnabled()); |
return cssValuePool().createValue(style.columnFill()); |
- case CSSPropertyWebkitColumnGap: |
+ case CSSPropertyColumnGap: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnGap && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
if (style.hasNormalColumnGap()) |
return cssValuePool().createIdentifierValue(CSSValueNormal); |
return zoomAdjustedPixelValue(style.columnGap(), style); |
- case CSSPropertyWebkitColumnRuleColor: |
+ case CSSPropertyColumnRuleColor: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnRuleColor && shorthandState != DoingShorthand && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
return allowVisitedStyle ? cssValuePool().createColorValue(style.visitedDependentColor(CSSPropertyOutlineColor).rgb()) : currentColorOrValidColor(style, style.columnRuleColor()); |
- case CSSPropertyWebkitColumnRuleStyle: |
+ case CSSPropertyColumnRuleStyle: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnRuleStyle && shorthandState != DoingShorthand && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
return cssValuePool().createValue(style.columnRuleStyle()); |
- case CSSPropertyWebkitColumnRuleWidth: |
+ case CSSPropertyColumnRuleWidth: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnRuleWidth && shorthandState != DoingShorthand && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
return zoomAdjustedPixelValue(style.columnRuleWidth(), style); |
- case CSSPropertyWebkitColumnSpan: |
+ case CSSPropertyColumnSpan: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnSpan && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
return cssValuePool().createIdentifierValue(style.columnSpan() ? CSSValueAll : CSSValueNone); |
case CSSPropertyWebkitColumnBreakAfter: |
return cssValuePool().createValue(style.columnBreakAfter()); |
@@ -1516,7 +1529,9 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID |
return cssValuePool().createValue(style.columnBreakBefore()); |
case CSSPropertyWebkitColumnBreakInside: |
return cssValuePool().createValue(style.columnBreakInside()); |
- case CSSPropertyWebkitColumnWidth: |
+ case CSSPropertyColumnWidth: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnWidth && shorthandState != DoingShorthand && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
if (style.hasAutoColumnWidth()) |
return cssValuePool().createIdentifierValue(CSSValueAuto); |
return zoomAdjustedPixelValue(style.columnWidth(), style); |
@@ -2312,14 +2327,14 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID |
case CSSPropertyBackground: |
return valuesForBackgroundShorthand(style, layoutObject, styledNode, allowVisitedStyle); |
case CSSPropertyBorder: { |
- RefPtrWillBeRawPtr<CSSValue> value = get(CSSPropertyBorderTop, style, layoutObject, styledNode, allowVisitedStyle); |
+ RefPtrWillBeRawPtr<CSSValue> value = get(CSSPropertyBorderTop, style, layoutObject, styledNode, DoingShorthand, allowVisitedStyle); |
const CSSPropertyID properties[] = { |
CSSPropertyBorderRight, |
CSSPropertyBorderBottom, |
CSSPropertyBorderLeft |
}; |
for (size_t i = 0; i < WTF_ARRAY_LENGTH(properties); ++i) { |
- if (!compareCSSValuePtr<CSSValue>(value, get(properties[i], style, layoutObject, styledNode, allowVisitedStyle))) |
+ if (!compareCSSValuePtr<CSSValue>(value, get(properties[i], style, layoutObject, styledNode, DoingShorthand, allowVisitedStyle))) |
return nullptr; |
} |
return value.release(); |
@@ -2342,10 +2357,14 @@ PassRefPtrWillBeRawPtr<CSSValue> ComputedStyleCSSValueMapping::get(CSSPropertyID |
return valuesForShorthandProperty(borderTopShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
case CSSPropertyBorderWidth: |
return valuesForSidesShorthand(borderWidthShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
- case CSSPropertyWebkitColumnRule: |
- return valuesForShorthandProperty(webkitColumnRuleShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
- case CSSPropertyWebkitColumns: |
- return valuesForShorthandProperty(webkitColumnsShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
+ case CSSPropertyColumnRule: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumnRule && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
+ return valuesForShorthandProperty(columnRuleShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
+ case CSSPropertyColumns: |
+ if (unresolvedProperty != CSSPropertyAliasWebkitColumns && !RuntimeEnabledFeatures::unprefixMulticolEnabled()) |
+ return nullptr; |
+ return valuesForShorthandProperty(columnsShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
case CSSPropertyListStyle: |
return valuesForShorthandProperty(listStyleShorthand(), style, layoutObject, styledNode, allowVisitedStyle); |
case CSSPropertyMargin: |