| Index: third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp
|
| diff --git a/third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp b/third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp
|
| index d586c1930272168530394366eb06a61ed1552599..de2b40b635716eb88c6b6509bdaa04cc7967b693 100644
|
| --- a/third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp
|
| +++ b/third_party/WebKit/Source/core/css/parser/LegacyCSSPropertyParser.cpp
|
| @@ -773,12 +773,6 @@ bool CSSPropertyParser::parseValue(CSSPropertyID unresolvedProperty, bool import
|
| case CSSPropertyOrder:
|
| validPrimitive = validUnit(value, FInteger);
|
| break;
|
| - case CSSPropertyTransform:
|
| - if (id == CSSValueNone)
|
| - validPrimitive = true;
|
| - else
|
| - parsedValue = parseTransform(unresolvedProperty == CSSPropertyAliasWebkitTransform);
|
| - break;
|
| case CSSPropertyTransformOrigin: {
|
| RefPtrWillBeRawPtr<CSSValueList> list = parseTransformOrigin();
|
| if (!list)
|
| @@ -1172,6 +1166,7 @@ bool CSSPropertyParser::parseValue(CSSPropertyID unresolvedProperty, bool import
|
| case CSSPropertyWebkitTextStroke:
|
| case CSSPropertyWebkitTextStrokeColor:
|
| case CSSPropertyWebkitTextStrokeWidth:
|
| + case CSSPropertyTransform:
|
| validPrimitive = false;
|
| break;
|
|
|
| @@ -5692,195 +5687,4 @@ PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parsePaintOrder() const
|
| return paintOrderList.release();
|
| }
|
|
|
| -class TransformOperationInfo {
|
| -public:
|
| - TransformOperationInfo(CSSValueID id)
|
| - : m_validID(true)
|
| - , m_allowSingleArgument(false)
|
| - , m_argCount(1)
|
| - , m_unit(CSSPropertyParser::FUnknown)
|
| - {
|
| - switch (id) {
|
| - case CSSValueSkew:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - m_allowSingleArgument = true;
|
| - m_argCount = 3;
|
| - break;
|
| - case CSSValueScale:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - m_allowSingleArgument = true;
|
| - m_argCount = 3;
|
| - break;
|
| - case CSSValueSkewX:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - break;
|
| - case CSSValueSkewY:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - break;
|
| - case CSSValueMatrix:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - m_argCount = 11;
|
| - break;
|
| - case CSSValueRotate:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - break;
|
| - case CSSValueScaleX:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - break;
|
| - case CSSValueScaleY:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - break;
|
| - case CSSValueScaleZ:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - break;
|
| - case CSSValueScale3d:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - m_argCount = 5;
|
| - break;
|
| - case CSSValueRotateX:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - break;
|
| - case CSSValueRotateY:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - break;
|
| - case CSSValueRotateZ:
|
| - m_unit = CSSPropertyParser::FAngle;
|
| - break;
|
| - case CSSValueMatrix3d:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - m_argCount = 31;
|
| - break;
|
| - case CSSValueRotate3d:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - m_argCount = 7;
|
| - break;
|
| - case CSSValueTranslate:
|
| - m_unit = CSSPropertyParser::FLength | CSSPropertyParser::FPercent;
|
| - m_allowSingleArgument = true;
|
| - m_argCount = 3;
|
| - break;
|
| - case CSSValueTranslateX:
|
| - m_unit = CSSPropertyParser::FLength | CSSPropertyParser::FPercent;
|
| - break;
|
| - case CSSValueTranslateY:
|
| - m_unit = CSSPropertyParser::FLength | CSSPropertyParser::FPercent;
|
| - break;
|
| - case CSSValueTranslateZ:
|
| - m_unit = CSSPropertyParser::FLength | CSSPropertyParser::FPercent;
|
| - break;
|
| - case CSSValuePerspective:
|
| - m_unit = CSSPropertyParser::FNumber;
|
| - break;
|
| - case CSSValueTranslate3d:
|
| - m_unit = CSSPropertyParser::FLength | CSSPropertyParser::FPercent;
|
| - m_argCount = 5;
|
| - break;
|
| - default:
|
| - m_validID = false;
|
| - break;
|
| - }
|
| - }
|
| -
|
| - bool validID() const { return m_validID; }
|
| - unsigned argCount() const { return m_argCount; }
|
| - CSSPropertyParser::Units unit() const { return m_unit; }
|
| -
|
| - bool hasCorrectArgCount(unsigned argCount) { return m_argCount == argCount || (m_allowSingleArgument && argCount == 1); }
|
| -
|
| -private:
|
| - bool m_validID;
|
| - bool m_allowSingleArgument;
|
| - unsigned m_argCount;
|
| - CSSPropertyParser::Units m_unit;
|
| -};
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSValueList> CSSPropertyParser::parseTransform(bool useLegacyParsing)
|
| -{
|
| - if (!m_valueList)
|
| - return nullptr;
|
| -
|
| - RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| - for (CSSParserValue* value = m_valueList->current(); value; value = m_valueList->next()) {
|
| - RefPtrWillBeRawPtr<CSSValue> parsedTransformValue = parseTransformValue(useLegacyParsing, value);
|
| - if (!parsedTransformValue)
|
| - return nullptr;
|
| -
|
| - list->append(parsedTransformValue.release());
|
| - }
|
| -
|
| - return list.release();
|
| -}
|
| -
|
| -PassRefPtrWillBeRawPtr<CSSValue> CSSPropertyParser::parseTransformValue(bool useLegacyParsing, CSSParserValue *value)
|
| -{
|
| - if (value->m_unit != CSSParserValue::Function || !value->function)
|
| - return nullptr;
|
| -
|
| - // Every primitive requires at least one argument.
|
| - CSSParserValueList* args = value->function->args.get();
|
| - if (!args)
|
| - return nullptr;
|
| -
|
| - // See if the specified primitive is one we understand.
|
| - CSSValueID type = value->function->id;
|
| - TransformOperationInfo info(type);
|
| - if (!info.validID())
|
| - return nullptr;
|
| -
|
| - if (!info.hasCorrectArgCount(args->size()))
|
| - return nullptr;
|
| -
|
| - // The transform is a list of functional primitives that specify transform operations.
|
| - // We collect a list of CSSFunctionValues, where each value specifies a single operation.
|
| -
|
| - // Create the new CSSFunctionValue for this operation and add it to our list.
|
| - RefPtrWillBeRawPtr<CSSFunctionValue> transformValue = CSSFunctionValue::create(type);
|
| -
|
| - // Snag our values.
|
| - CSSParserValue* a = args->current();
|
| - unsigned argNumber = 0;
|
| - while (a) {
|
| - CSSPropertyParser::Units unit = info.unit();
|
| -
|
| - if (type == CSSValueRotate3d && argNumber == 3) {
|
| - // 4th param of rotate3d() is an angle rather than a bare number, validate it as such
|
| - if (!validUnit(a, FAngle, HTMLStandardMode))
|
| - return nullptr;
|
| - } else if (type == CSSValueTranslate3d && argNumber == 2) {
|
| - // 3rd param of translate3d() cannot be a percentage
|
| - if (!validUnit(a, FLength, HTMLStandardMode))
|
| - return nullptr;
|
| - } else if (type == CSSValueTranslateZ && !argNumber) {
|
| - // 1st param of translateZ() cannot be a percentage
|
| - if (!validUnit(a, FLength, HTMLStandardMode))
|
| - return nullptr;
|
| - } else if (type == CSSValuePerspective && !argNumber) {
|
| - // 1st param of perspective() must be a non-negative number (deprecated) or length.
|
| - if (!validUnit(a, FLength | FNonNeg, HTMLStandardMode)) {
|
| - if (useLegacyParsing && validUnit(a, FNumber | FNonNeg, HTMLStandardMode)) {
|
| - a->setUnit(CSSPrimitiveValue::UnitType::Pixels);
|
| - } else {
|
| - return nullptr;
|
| - }
|
| - }
|
| - } else if (!validUnit(a, unit, HTMLStandardMode)) {
|
| - return nullptr;
|
| - }
|
| -
|
| - // Add the value to the current transform operation.
|
| - transformValue->append(createPrimitiveNumericValue(a));
|
| -
|
| - a = args->next();
|
| - if (!a)
|
| - break;
|
| - if (!isComma(a))
|
| - return nullptr;
|
| - a = args->next();
|
| -
|
| - argNumber++;
|
| - }
|
| -
|
| - return transformValue.release();
|
| -}
|
| -
|
| } // namespace blink
|
|
|