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 dcbe627cf82f7e51a6a49fbc5e601c35b4fb6574..ff350620dc2a211b2aed53dbb0fe38e21e3e2594 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 blink::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; |
+} |
+ |
void TransformBuilder::createTransformOperations( |
const CSSValue& inValue, |
const CSSToLengthConversionData& conversionData, |