Index: third_party/WebKit/Source/core/css/resolver/TransformBuilder.cpp |
diff --git a/third_party/WebKit/Source/core/css/resolver/TransformBuilder.cpp b/third_party/WebKit/Source/core/css/resolver/TransformBuilder.cpp |
index b5b220ffdfbc2adafe200ddd16c7a2374391e30c..0c00516edf56a13f409d28cad8b80c05c6cab350 100644 |
--- a/third_party/WebKit/Source/core/css/resolver/TransformBuilder.cpp |
+++ b/third_party/WebKit/Source/core/css/resolver/TransformBuilder.cpp |
@@ -102,6 +102,30 @@ static TransformOperation::OperationType getTransformOperationType( |
} |
} |
+bool TransformBuilder::hasRelativeLengths(const CSSValueList& valueList) { |
+ for (auto& value : valueList) { |
+ const CSSFunctionValue* transformValue = toCSSFunctionValue(value.get()); |
+ |
+ for (const CSSValue* item : *transformValue) { |
+ const CSSPrimitiveValue& primitiveValue = toCSSPrimitiveValue(*item); |
+ |
+ // TODO(hs1217.lee) : to prevent relative unit like calc(10px + 1em). |
+ // but when calc() not take parameter of ralative unit like calc(1px +1 |
+ // px), |
+ // shoud be return false; |
+ if (primitiveValue.isCalculated()) { |
+ return true; |
+ } |
+ |
+ if (CSSPrimitiveValue::isRelativeUnit( |
+ primitiveValue.typeWithCalcResolved())) { |
+ return true; |
+ } |
+ } |
+ } |
+ return false; |
+} |
+ |
TransformOperations TransformBuilder::createTransformOperations( |
const CSSValue& inValue, |
const CSSToLengthConversionData& conversionData) { |