| Index: Source/core/css/parser/CSSPropertyParser.cpp
|
| diff --git a/Source/core/css/parser/CSSPropertyParser.cpp b/Source/core/css/parser/CSSPropertyParser.cpp
|
| index cf78ded52922421d9af909478063085692492611..013e718a8c84e8c89bf224f686afa2effd336b01 100644
|
| --- a/Source/core/css/parser/CSSPropertyParser.cpp
|
| +++ b/Source/core/css/parser/CSSPropertyParser.cpp
|
| @@ -1096,6 +1096,78 @@ bool CSSPropertyParser::parseValue(CSSPropertyID unresolvedProperty, bool import
|
| addProperty(propId, list.release(), important);
|
| return true;
|
| }
|
| +
|
| + case CSSPropertyTranslate: {
|
| + // translate : [ <length> | <percentage> ] [[ <length> | <percentage> ] <length>? ]?
|
| + // defaults to 0 on all axis, note that the last value CANNOT be a percentage
|
| + ASSERT(RuntimeEnabledFeatures::cssIndependentTransformPropertiesEnabled());
|
| + RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| + if (!validUnit(value, FLength | FPercent))
|
| + return false;
|
| +
|
| + list->append(createPrimitiveNumericValue(value));
|
| + value = m_valueList->next();
|
| +
|
| + if (value) {
|
| + if (!validUnit(value, FLength | FPercent))
|
| + return false;
|
| +
|
| + list->append(createPrimitiveNumericValue(value));
|
| + value = m_valueList->next();
|
| +
|
| + if (value) {
|
| + if (!validUnit(value, FLength))
|
| + return false;
|
| +
|
| + list->append(createPrimitiveNumericValue(value));
|
| + value = m_valueList->next();
|
| + }
|
| + }
|
| +
|
| + parsedValue = list.release();
|
| + break;
|
| + }
|
| +
|
| + case CSSPropertyRotate: { // rotate : <angle> <number>{3}? defaults to a 0 0 1
|
| + ASSERT(RuntimeEnabledFeatures::cssIndependentTransformPropertiesEnabled());
|
| + RefPtrWillBeRawPtr<CSSValueList> list = CSSValueList::createSpaceSeparated();
|
| +
|
| + if (!validUnit(value, FAngle))
|
| + return false;
|
| + list->append(createPrimitiveNumericValue(value));
|
| + value = m_valueList->next();
|
| +
|
| + if (!value) {
|
| + parsedValue = list.release();
|
| + break;
|
| + }
|
| +
|
| + for (unsigned i = 0; i < 3; i++) { // 3 dimensions of rotation
|
| + if (!value || !validUnit(value, FNumber))
|
| + return false;
|
| + list->append(createPrimitiveNumericValue(value));
|
| + value = m_valueList->next();
|
| + }
|
| +
|
| + parsedValue = list.release();
|
| + break;
|
| + }
|
| +
|
| + case CSSPropertyScale: { // scale: <number>{1,3}, default scale for all axis is 1
|
| + ASSERT(RuntimeEnabledFeatures::cssIndependentTransformPropertiesEnabled());
|
| + RefPtrWillBeRawPtr<CSSValueList> scaleList = CSSValueList::createSpaceSeparated();
|
| +
|
| + for (unsigned i = 0; value && i < 3; i++) { // up to 3 dimensions of scale
|
| + if (!validUnit(value, FNumber))
|
| + return false;
|
| + scaleList->append(createPrimitiveNumericValue(value));
|
| + value = m_valueList->next();
|
| + }
|
| +
|
| + parsedValue = scaleList.release();
|
| + break;
|
| + }
|
| +
|
| case CSSPropertyWebkitPerspectiveOriginX:
|
| case CSSPropertyWebkitTransformOriginX:
|
| parsedValue = parseFillPositionX(m_valueList);
|
|
|