| 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;
|
| }
|
|
|
|
|