Index: third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
index 3473d985568a4909a753b20b240b68abb091fbc4..e8b90aa690228ec3e9f30bbfe7298e5c54d78385 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp |
@@ -35,6 +35,7 @@ |
#include "core/css/CSSFunctionValue.h" |
#include "core/css/CSSGridAutoRepeatValue.h" |
#include "core/css/CSSGridLineNamesValue.h" |
+#include "core/css/CSSIdentifierValue.h" |
#include "core/css/CSSPathValue.h" |
#include "core/css/CSSPrimitiveValueMappings.h" |
#include "core/css/CSSQuadValue.h" |
@@ -57,27 +58,27 @@ namespace blink { |
namespace { |
-static GridLength convertGridTrackBreadth(const StyleResolverState& state, const CSSPrimitiveValue& primitiveValue) |
+static GridLength convertGridTrackBreadth(const StyleResolverState& state, const CSSValue& value) |
{ |
- if (primitiveValue.getValueID() == CSSValueMinContent) |
+ // Fractional unit. |
+ if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).isFlex()) |
+ return GridLength(toCSSPrimitiveValue(value).getDoubleValue()); |
+ |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueMinContent) |
return Length(MinContent); |
- if (primitiveValue.getValueID() == CSSValueMaxContent) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueMaxContent) |
return Length(MaxContent); |
- // Fractional unit. |
- if (primitiveValue.isFlex()) |
- return GridLength(primitiveValue.getDoubleValue()); |
- |
- return StyleBuilderConverter::convertLengthOrAuto(state, primitiveValue); |
+ return StyleBuilderConverter::convertLengthOrAuto(state, value); |
} |
} // namespace |
PassRefPtr<StyleReflection> StyleBuilderConverter::convertBoxReflect(StyleResolverState& state, const CSSValue& value) |
{ |
- if (value.isPrimitiveValue()) { |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ if (value.isIdentifierValue()) { |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone); |
return ComputedStyle::initialBoxReflect(); |
} |
@@ -132,7 +133,7 @@ PassRefPtr<ClipPathOperation> StyleBuilderConverter::convertClipPath(StyleResolv |
// TODO(fs): Doesn't work with forward or external SVG references (crbug.com/391604, crbug.com/109212, ...) |
return ReferenceClipPathOperation::create(toCSSURIValue(value).value(), fragmentIdentifier); |
} |
- DCHECK(value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ DCHECK(value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNone); |
return nullptr; |
} |
@@ -170,7 +171,7 @@ static bool convertFontFamilyName(StyleResolverState& state, const CSSValue& val |
genericFamily = FontDescription::NoFamily; |
familyName = AtomicString(toCSSFontFamilyValue(value).value()); |
} else if (state.document().settings()) { |
- genericFamily = convertGenericFamily(toCSSPrimitiveValue(value).getValueID()); |
+ genericFamily = convertGenericFamily(toCSSIdentifierValue(value).getValueID()); |
familyName = state.fontBuilder().genericFontFamilyName(genericFamily); |
} |
@@ -210,7 +211,7 @@ FontDescription::FamilyDescription StyleBuilderConverter::convertFontFamily(Styl |
PassRefPtr<FontFeatureSettings> StyleBuilderConverter::convertFontFeatureSettings(StyleResolverState& state, const CSSValue& value) |
{ |
- if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueNormal) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNormal) |
return FontBuilder::initialFeatureSettings(); |
const CSSValueList& list = toCSSValueList(value); |
@@ -236,15 +237,14 @@ static float computeFontSize(StyleResolverState& state, const CSSPrimitiveValue& |
FontDescription::Size StyleBuilderConverter::convertFontSize(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- |
FontDescription::Size parentSize(0, 0.0f, false); |
// FIXME: Find out when parentStyle could be 0? |
if (state.parentStyle()) |
parentSize = state.parentFontDescription().getSize(); |
- if (CSSValueID valueID = primitiveValue.getValueID()) { |
+ if (value.isIdentifierValue()) { |
+ CSSValueID valueID = toCSSIdentifierValue(value).getValueID(); |
if (FontSize::isValidValueID(valueID)) |
return FontDescription::Size(FontSize::keywordSize(valueID), 0.0f, false); |
if (valueID == CSSValueSmaller) |
@@ -257,6 +257,7 @@ FontDescription::Size StyleBuilderConverter::convertFontSize(StyleResolverState& |
bool parentIsAbsoluteSize = state.parentFontDescription().isAbsoluteSize(); |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
if (primitiveValue.isPercentage()) |
return FontDescription::Size(0, (primitiveValue.getFloatValue() * parentSize.value / 100.0f), parentIsAbsoluteSize); |
@@ -265,31 +266,31 @@ FontDescription::Size StyleBuilderConverter::convertFontSize(StyleResolverState& |
float StyleBuilderConverter::convertFontSizeAdjust(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.getValueID() == CSSValueNone) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNone) |
return FontBuilder::initialSizeAdjust(); |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
ASSERT(primitiveValue.isNumber()); |
return primitiveValue.getFloatValue(); |
} |
FontWeight StyleBuilderConverter::convertFontWeight(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- switch (primitiveValue.getValueID()) { |
+ const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value); |
+ switch (identifierValue.getValueID()) { |
case CSSValueBolder: |
return FontDescription::bolderWeight(state.parentStyle()->getFontDescription().weight()); |
case CSSValueLighter: |
return FontDescription::lighterWeight(state.parentStyle()->getFontDescription().weight()); |
default: |
- return primitiveValue.convertTo<FontWeight>(); |
+ return identifierValue.convertTo<FontWeight>(); |
} |
} |
FontDescription::FontVariantCaps StyleBuilderConverter::convertFontVariantCaps(StyleResolverState&, const CSSValue& value) |
{ |
- ASSERT_WITH_SECURITY_IMPLICATION(value.isPrimitiveValue()); |
- CSSValueID valueID = toCSSPrimitiveValue(value).getValueID(); |
+ SECURITY_DCHECK(value.isIdentifierValue()); |
+ CSSValueID valueID = toCSSIdentifierValue(value).getValueID(); |
switch (valueID) { |
case CSSValueNormal: |
return FontDescription::CapsNormal; |
@@ -317,8 +318,7 @@ FontDescription::VariantLigatures StyleBuilderConverter::convertFontVariantLigat |
const CSSValueList& valueList = toCSSValueList(value); |
for (size_t i = 0; i < valueList.length(); ++i) { |
const CSSValue& item = valueList.item(i); |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(item); |
- switch (primitiveValue.getValueID()) { |
+ switch (toCSSIdentifierValue(item).getValueID()) { |
case CSSValueNoCommonLigatures: |
ligatures.common = FontDescription::DisabledLigaturesState; |
break; |
@@ -351,26 +351,25 @@ FontDescription::VariantLigatures StyleBuilderConverter::convertFontVariantLigat |
return ligatures; |
} |
- ASSERT_WITH_SECURITY_IMPLICATION(value.isPrimitiveValue()); |
- |
- if (toCSSPrimitiveValue(value).getValueID() == CSSValueNone) { |
+ SECURITY_DCHECK(value.isIdentifierValue()); |
+ if (toCSSIdentifierValue(value).getValueID() == CSSValueNone) { |
return FontDescription::VariantLigatures(FontDescription::DisabledLigaturesState); |
} |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNormal); |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNormal); |
return FontDescription::VariantLigatures(); |
} |
FontVariantNumeric StyleBuilderConverter::convertFontVariantNumeric(StyleResolverState&, const CSSValue& value) |
{ |
- if (value.isPrimitiveValue()) { |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNormal); |
+ if (value.isIdentifierValue()) { |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNormal); |
return FontVariantNumeric(); |
} |
FontVariantNumeric variantNumeric; |
for (const CSSValue* feature : toCSSValueList(value)) { |
- switch (toCSSPrimitiveValue(feature)->getValueID()) { |
+ switch (toCSSIdentifierValue(feature)->getValueID()) { |
case CSSValueLiningNums: |
variantNumeric.setNumericFigure(FontVariantNumeric::LiningNums); |
break; |
@@ -408,15 +407,15 @@ StyleSelfAlignmentData StyleBuilderConverter::convertSelfOrDefaultAlignmentData( |
StyleSelfAlignmentData alignmentData = ComputedStyle::initialSelfAlignment(); |
if (value.isValuePair()) { |
const CSSValuePair& pair = toCSSValuePair(value); |
- if (toCSSPrimitiveValue(pair.first()).getValueID() == CSSValueLegacy) { |
+ if (toCSSIdentifierValue(pair.first()).getValueID() == CSSValueLegacy) { |
alignmentData.setPositionType(LegacyPosition); |
- alignmentData.setPosition(toCSSPrimitiveValue(pair.second()).convertTo<ItemPosition>()); |
+ alignmentData.setPosition(toCSSIdentifierValue(pair.second()).convertTo<ItemPosition>()); |
} else { |
- alignmentData.setPosition(toCSSPrimitiveValue(pair.first()).convertTo<ItemPosition>()); |
- alignmentData.setOverflow(toCSSPrimitiveValue(pair.second()).convertTo<OverflowAlignment>()); |
+ alignmentData.setPosition(toCSSIdentifierValue(pair.first()).convertTo<ItemPosition>()); |
+ alignmentData.setOverflow(toCSSIdentifierValue(pair.second()).convertTo<OverflowAlignment>()); |
} |
} else { |
- alignmentData.setPosition(toCSSPrimitiveValue(value).convertTo<ItemPosition>()); |
+ alignmentData.setPosition(toCSSIdentifierValue(value).convertTo<ItemPosition>()); |
} |
return alignmentData; |
} |
@@ -425,17 +424,17 @@ StyleContentAlignmentData StyleBuilderConverter::convertContentAlignmentData(Sty |
{ |
StyleContentAlignmentData alignmentData = ComputedStyle::initialContentAlignment(); |
if (!RuntimeEnabledFeatures::cssGridLayoutEnabled()) { |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- switch (primitiveValue.getValueID()) { |
+ const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value); |
+ switch (identifierValue.getValueID()) { |
case CSSValueStretch: |
case CSSValueSpaceBetween: |
case CSSValueSpaceAround: |
- alignmentData.setDistribution(primitiveValue.convertTo<ContentDistributionType>()); |
+ alignmentData.setDistribution(identifierValue.convertTo<ContentDistributionType>()); |
break; |
case CSSValueFlexStart: |
case CSSValueFlexEnd: |
case CSSValueCenter: |
- alignmentData.setPosition(primitiveValue.convertTo<ContentPosition>()); |
+ alignmentData.setPosition(identifierValue.convertTo<ContentPosition>()); |
break; |
default: |
ASSERT_NOT_REACHED(); |
@@ -457,8 +456,8 @@ GridAutoFlow StyleBuilderConverter::convertGridAutoFlow(StyleResolverState&, con |
const CSSValueList& list = toCSSValueList(value); |
ASSERT(list.length() >= 1); |
- const CSSPrimitiveValue& first = toCSSPrimitiveValue(list.item(0)); |
- const CSSPrimitiveValue* second = list.length() == 2 ? &toCSSPrimitiveValue(list.item(1)) : nullptr; |
+ const CSSIdentifierValue& first = toCSSIdentifierValue(list.item(0)); |
+ const CSSIdentifierValue* second = list.length() == 2 ? &toCSSIdentifierValue(list.item(1)) : nullptr; |
switch (first.getValueID()) { |
case CSSValueRow: |
@@ -493,8 +492,8 @@ GridPosition StyleBuilderConverter::convertGridPosition(StyleResolverState&, con |
return position; |
} |
- if (value.isPrimitiveValue()) { |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueAuto); |
+ if (value.isIdentifierValue()) { |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueAuto); |
return position; |
} |
@@ -508,7 +507,7 @@ GridPosition StyleBuilderConverter::convertGridPosition(StyleResolverState&, con |
auto it = values.begin(); |
const CSSValue* currentValue = it->get(); |
- if (currentValue->isPrimitiveValue() && toCSSPrimitiveValue(currentValue)->getValueID() == CSSValueSpan) { |
+ if (currentValue->isIdentifierValue() && toCSSIdentifierValue(currentValue)->getValueID() == CSSValueSpan) { |
isSpanPosition = true; |
++it; |
currentValue = it != values.end() ? it->get() : nullptr; |
@@ -536,18 +535,18 @@ GridPosition StyleBuilderConverter::convertGridPosition(StyleResolverState&, con |
GridTrackSize StyleBuilderConverter::convertGridTrackSize(StyleResolverState& state, const CSSValue& value) |
{ |
- if (value.isPrimitiveValue()) |
- return GridTrackSize(convertGridTrackBreadth(state, toCSSPrimitiveValue(value))); |
+ if (value.isPrimitiveValue() || value.isIdentifierValue()) |
+ return GridTrackSize(convertGridTrackBreadth(state, value)); |
auto& function = toCSSFunctionValue(value); |
if (function.functionType() == CSSValueFitContent) { |
SECURITY_DCHECK(function.length() == 1); |
- return GridTrackSize(convertGridTrackBreadth(state, toCSSPrimitiveValue(function.item(0))), FitContentTrackSizing); |
+ return GridTrackSize(convertGridTrackBreadth(state, function.item(0)), FitContentTrackSizing); |
} |
SECURITY_DCHECK(function.length() == 2); |
- GridLength minTrackBreadth(convertGridTrackBreadth(state, toCSSPrimitiveValue(function.item(0)))); |
- GridLength maxTrackBreadth(convertGridTrackBreadth(state, toCSSPrimitiveValue(function.item(1)))); |
+ GridLength minTrackBreadth(convertGridTrackBreadth(state, function.item(0))); |
+ GridLength maxTrackBreadth(convertGridTrackBreadth(state, function.item(1))); |
return GridTrackSize(minTrackBreadth, maxTrackBreadth); |
} |
@@ -578,8 +577,8 @@ Vector<GridTrackSize> StyleBuilderConverter::convertGridTrackSizeList(StyleResol |
void StyleBuilderConverter::convertGridTrackList(const CSSValue& value, Vector<GridTrackSize>& trackSizes, NamedGridLinesMap& namedGridLines, OrderedNamedGridLines& orderedNamedGridLines, Vector<GridTrackSize>& autoRepeatTrackSizes, NamedGridLinesMap& autoRepeatNamedGridLines, OrderedNamedGridLines& autoRepeatOrderedNamedGridLines, size_t& autoRepeatInsertionPoint, AutoRepeatType &autoRepeatType, StyleResolverState& state) |
{ |
- if (value.isPrimitiveValue()) { |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ if (value.isIdentifierValue()) { |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone); |
return; |
} |
@@ -666,18 +665,18 @@ UnzoomedLength StyleBuilderConverter::convertUnzoomedLength(const StyleResolverS |
Length StyleBuilderConverter::convertLengthOrAuto(const StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.getValueID() == CSSValueAuto) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueAuto) |
return Length(Auto); |
- return primitiveValue.convertToLength(state.cssToLengthConversionData()); |
+ return toCSSPrimitiveValue(value).convertToLength(state.cssToLengthConversionData()); |
} |
Length StyleBuilderConverter::convertLengthSizing(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- switch (primitiveValue.getValueID()) { |
- case CSSValueInvalid: |
+ if (!value.isIdentifierValue()) |
return convertLength(state, value); |
+ |
+ const CSSIdentifierValue& identifierValue = toCSSIdentifierValue(value); |
+ switch (identifierValue.getValueID()) { |
case CSSValueMinContent: |
case CSSValueWebkitMinContent: |
return Length(MinContent); |
@@ -699,8 +698,7 @@ Length StyleBuilderConverter::convertLengthSizing(StyleResolverState& state, con |
Length StyleBuilderConverter::convertLengthMaxSizing(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.getValueID() == CSSValueNone) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNone) |
return Length(MaxSizeNone); |
return convertLengthSizing(state, value); |
} |
@@ -723,20 +721,21 @@ static CSSToLengthConversionData lineHeightToLengthConversionData(StyleResolverS |
Length StyleBuilderConverter::convertLineHeight(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- |
- if (primitiveValue.isLength()) |
- return primitiveValue.computeLength<Length>(lineHeightToLengthConversionData(state)); |
- if (primitiveValue.isPercentage()) |
- return Length((state.style()->computedFontSize() * primitiveValue.getIntValue()) / 100.0, Fixed); |
- if (primitiveValue.isNumber()) |
- return Length(primitiveValue.getDoubleValue() * 100.0, Percent); |
- if (primitiveValue.isCalculated()) { |
- Length zoomedLength = Length(primitiveValue.cssCalcValue()->toCalcValue(lineHeightToLengthConversionData(state))); |
- return Length(valueForLength(zoomedLength, LayoutUnit(state.style()->computedFontSize())), Fixed); |
+ if (value.isPrimitiveValue()) { |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
+ if (primitiveValue.isLength()) |
+ return primitiveValue.computeLength<Length>(lineHeightToLengthConversionData(state)); |
+ if (primitiveValue.isPercentage()) |
+ return Length((state.style()->computedFontSize() * primitiveValue.getIntValue()) / 100.0, Fixed); |
+ if (primitiveValue.isNumber()) |
+ return Length(primitiveValue.getDoubleValue() * 100.0, Percent); |
+ if (primitiveValue.isCalculated()) { |
+ Length zoomedLength = Length(primitiveValue.cssCalcValue()->toCalcValue(lineHeightToLengthConversionData(state))); |
+ return Length(valueForLength(zoomedLength, LayoutUnit(state.style()->computedFontSize())), Fixed); |
+ } |
} |
- ASSERT(primitiveValue.getValueID() == CSSValueNormal); |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNormal); |
return ComputedStyle::initialLineHeight(); |
} |
@@ -761,13 +760,13 @@ StyleOffsetRotation StyleBuilderConverter::convertOffsetRotation(const CSSValue& |
const CSSValueList& list = toCSSValueList(value); |
ASSERT(list.length() == 1 || list.length() == 2); |
for (const auto& item : list) { |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(*item); |
- if (primitiveValue.getValueID() == CSSValueAuto) { |
+ if (item->isIdentifierValue() && toCSSIdentifierValue(*item).getValueID() == CSSValueAuto) { |
result.type = OffsetRotationAuto; |
- } else if (primitiveValue.getValueID() == CSSValueReverse) { |
+ } else if (item->isIdentifierValue() && toCSSIdentifierValue(*item).getValueID() == CSSValueReverse) { |
result.type = OffsetRotationAuto; |
result.angle += 180; |
} else { |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(*item); |
result.angle += primitiveValue.computeDegrees(); |
} |
} |
@@ -782,15 +781,14 @@ Length StyleBuilderConverter::convertPositionLength(StyleResolverState& state, c |
if (value.isValuePair()) { |
const CSSValuePair& pair = toCSSValuePair(value); |
Length length = StyleBuilderConverter::convertLength(state, pair.second()); |
- if (toCSSPrimitiveValue(pair.first()).getValueID() == cssValueFor0) |
+ if (toCSSIdentifierValue(pair.first()).getValueID() == cssValueFor0) |
return length; |
- ASSERT(toCSSPrimitiveValue(pair.first()).getValueID() == cssValueFor100); |
+ DCHECK_EQ(toCSSIdentifierValue(pair.first()).getValueID(), cssValueFor100); |
return length.subtractFromOneHundredPercent(); |
} |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.isValueID()) { |
- switch (primitiveValue.getValueID()) { |
+ if (value.isIdentifierValue()) { |
+ switch (toCSSIdentifierValue(value).getValueID()) { |
case cssValueFor0: |
return Length(0, Percent); |
case cssValueFor100: |
@@ -802,7 +800,7 @@ Length StyleBuilderConverter::convertPositionLength(StyleResolverState& state, c |
} |
} |
- return StyleBuilderConverter::convertLength(state, primitiveValue); |
+ return StyleBuilderConverter::convertLength(state, toCSSPrimitiveValue(value)); |
} |
LengthPoint StyleBuilderConverter::convertPosition(StyleResolverState& state, const CSSValue& value) |
@@ -818,7 +816,7 @@ LengthPoint StyleBuilderConverter::convertPositionOrAuto(StyleResolverState& sta |
{ |
if (value.isValuePair()) |
return convertPosition(state, value); |
- DCHECK(toCSSPrimitiveValue(value).getValueID() == CSSValueAuto); |
+ DCHECK(toCSSIdentifierValue(value).getValueID() == CSSValueAuto); |
return LengthPoint(Length(Auto), Length(Auto)); |
} |
@@ -829,18 +827,16 @@ static float convertPerspectiveLength(StyleResolverState& state, const CSSPrimit |
float StyleBuilderConverter::convertPerspective(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- |
- if (primitiveValue.getValueID() == CSSValueNone) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNone) |
return ComputedStyle::initialPerspective(); |
- return convertPerspectiveLength(state, primitiveValue); |
+ return convertPerspectiveLength(state, toCSSPrimitiveValue(value)); |
} |
EPaintOrder StyleBuilderConverter::convertPaintOrder(StyleResolverState&, const CSSValue& cssPaintOrder) |
{ |
if (cssPaintOrder.isValueList()) { |
const CSSValueList& orderTypeList = toCSSValueList(cssPaintOrder); |
- switch (toCSSPrimitiveValue(orderTypeList.item(0)).getValueID()) { |
+ switch (toCSSIdentifierValue(orderTypeList.item(0)).getValueID()) { |
case CSSValueFill: |
return orderTypeList.length() > 1 ? PaintOrderFillMarkersStroke : PaintOrderFillStrokeMarkers; |
case CSSValueStroke: |
@@ -860,7 +856,7 @@ Length StyleBuilderConverter::convertQuirkyLength(StyleResolverState& state, con |
{ |
Length length = convertLengthOrAuto(state, value); |
// This is only for margins which use __qem |
- length.setQuirk(toCSSPrimitiveValue(value).isQuirkyEms()); |
+ length.setQuirk(value.isPrimitiveValue() && toCSSPrimitiveValue(value).isQuirkyEms()); |
return length; |
} |
@@ -876,7 +872,7 @@ PassRefPtr<QuotesData> StyleBuilderConverter::convertQuotes(StyleResolverState&, |
} |
return quotes.release(); |
} |
- ASSERT(value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone); |
return QuotesData::create(); |
} |
@@ -890,8 +886,8 @@ LengthSize StyleBuilderConverter::convertRadius(StyleResolverState& state, const |
PassRefPtr<ShadowList> StyleBuilderConverter::convertShadow(StyleResolverState& state, const CSSValue& value) |
{ |
- if (value.isPrimitiveValue()) { |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ if (value.isIdentifierValue()) { |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone); |
return PassRefPtr<ShadowList>(); |
} |
@@ -915,8 +911,8 @@ PassRefPtr<ShadowList> StyleBuilderConverter::convertShadow(StyleResolverState& |
ShapeValue* StyleBuilderConverter::convertShapeValue(StyleResolverState& state, const CSSValue& value) |
{ |
- if (value.isPrimitiveValue()) { |
- ASSERT(toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ if (value.isIdentifierValue()) { |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone); |
return nullptr; |
} |
@@ -931,7 +927,7 @@ ShapeValue* StyleBuilderConverter::convertShapeValue(StyleResolverState& state, |
if (value.isBasicShapeValue()) { |
shape = basicShapeForValue(state, value); |
} else { |
- cssBox = toCSSPrimitiveValue(value).convertTo<CSSBoxType>(); |
+ cssBox = toCSSIdentifierValue(value).convertTo<CSSBoxType>(); |
} |
} |
@@ -944,10 +940,9 @@ ShapeValue* StyleBuilderConverter::convertShapeValue(StyleResolverState& state, |
float StyleBuilderConverter::convertSpacing(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.getValueID() == CSSValueNormal) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNormal) |
return 0; |
- return primitiveValue.computeLength<float>(state.cssToLengthConversionData()); |
+ return toCSSPrimitiveValue(value).computeLength<float>(state.cssToLengthConversionData()); |
} |
PassRefPtr<SVGDashArray> StyleBuilderConverter::convertStrokeDasharray(StyleResolverState& state, const CSSValue& value) |
@@ -968,28 +963,27 @@ PassRefPtr<SVGDashArray> StyleBuilderConverter::convertStrokeDasharray(StyleReso |
StyleColor StyleBuilderConverter::convertStyleColor(StyleResolverState& state, const CSSValue& value, bool forVisitedLink) |
{ |
- if (value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueCurrentcolor) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueCurrentcolor) |
return StyleColor::currentColor(); |
return state.document().textLinkColors().colorFromCSSValue(value, Color(), forVisitedLink); |
} |
float StyleBuilderConverter::convertTextStrokeWidth(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.getValueID()) { |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID()) { |
float multiplier = convertLineWidth<float>(state, value); |
return CSSPrimitiveValue::create(multiplier / 48, CSSPrimitiveValue::UnitType::Ems)->computeLength<float>(state.cssToLengthConversionData()); |
} |
- return primitiveValue.computeLength<float>(state.cssToLengthConversionData()); |
+ return toCSSPrimitiveValue(value).computeLength<float>(state.cssToLengthConversionData()); |
} |
TextSizeAdjust StyleBuilderConverter::convertTextSizeAdjust(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- if (primitiveValue.getValueID() == CSSValueNone) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueNone) |
return TextSizeAdjust::adjustNone(); |
- if (primitiveValue.getValueID() == CSSValueAuto) |
+ if (value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueAuto) |
return TextSizeAdjust::adjustAuto(); |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
DCHECK(primitiveValue.isPercentage()); |
return TextSizeAdjust(primitiveValue.getFloatValue() / 100.0f); |
} |
@@ -997,16 +991,15 @@ TextSizeAdjust StyleBuilderConverter::convertTextSizeAdjust(StyleResolverState& |
TransformOrigin StyleBuilderConverter::convertTransformOrigin(StyleResolverState& state, const CSSValue& value) |
{ |
const CSSValueList& list = toCSSValueList(value); |
- ASSERT(list.length() == 3); |
- |
- const CSSPrimitiveValue& primitiveValueX = toCSSPrimitiveValue(list.item(0)); |
- const CSSPrimitiveValue& primitiveValueY = toCSSPrimitiveValue(list.item(1)); |
- const CSSPrimitiveValue& primitiveValueZ = toCSSPrimitiveValue(list.item(2)); |
+ DCHECK_EQ(list.length(), 3U); |
+ DCHECK(list.item(0).isPrimitiveValue() || list.item(0).isIdentifierValue()); |
+ DCHECK(list.item(1).isPrimitiveValue() || list.item(1).isIdentifierValue()); |
+ DCHECK(list.item(2).isPrimitiveValue()); |
return TransformOrigin( |
- convertPositionLength<CSSValueLeft, CSSValueRight>(state, primitiveValueX), |
- convertPositionLength<CSSValueTop, CSSValueBottom>(state, primitiveValueY), |
- StyleBuilderConverter::convertComputedLength<float>(state, primitiveValueZ) |
+ convertPositionLength<CSSValueLeft, CSSValueRight>(state, list.item(0)), |
+ convertPositionLength<CSSValueTop, CSSValueBottom>(state, list.item(1)), |
+ StyleBuilderConverter::convertComputedLength<float>(state, list.item(2)) |
); |
} |
@@ -1097,15 +1090,14 @@ PassRefPtr<ScaleTransformOperation> StyleBuilderConverter::convertScale(StyleRes |
RespectImageOrientationEnum StyleBuilderConverter::convertImageOrientation(StyleResolverState& state, const CSSValue& value) |
{ |
- const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(value); |
- return primitiveValue.getValueID() == CSSValueFromImage ? RespectImageOrientation : DoNotRespectImageOrientation; |
+ return value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID() == CSSValueFromImage ? RespectImageOrientation : DoNotRespectImageOrientation; |
} |
PassRefPtr<StylePath> StyleBuilderConverter::convertPathOrNone(StyleResolverState& state, const CSSValue& value) |
{ |
if (value.isPathValue()) |
return toCSSPathValue(value).stylePath(); |
- ASSERT(value.isPrimitiveValue() && toCSSPrimitiveValue(value).getValueID() == CSSValueNone); |
+ DCHECK_EQ(toCSSIdentifierValue(value).getValueID(), CSSValueNone); |
return nullptr; |
} |