Index: Source/core/svg/SVGLengthTearOff.cpp |
diff --git a/Source/core/svg/SVGLengthTearOff.cpp b/Source/core/svg/SVGLengthTearOff.cpp |
index bf29952cee2d56b5a17dbf0eaaf5fdd9b13ef7bb..26bc58013a5bb8e59a4fa9e07c3036a6c0358067 100644 |
--- a/Source/core/svg/SVGLengthTearOff.cpp |
+++ b/Source/core/svg/SVGLengthTearOff.cpp |
@@ -40,22 +40,51 @@ namespace blink { |
namespace { |
-inline SVGLengthType toSVGLengthType(unsigned short type) |
+inline bool canResolveRelativeUnits(const SVGElement* contextElement) |
{ |
- ASSERT(type >= LengthTypeUnknown && type <= LengthTypePC); |
- return static_cast<SVGLengthType>(type); |
+ return contextElement && contextElement->inDocument(); |
} |
-inline bool canResolveRelativeUnits(const SVGElement* contextElement) |
+inline CSSPrimitiveValue::UnitType toCSSUnitType(unsigned short type) |
{ |
- return contextElement && contextElement->inDocument(); |
+ ASSERT(type >= CSSPrimitiveValue::CSS_UNKNOWN && type <= CSSPrimitiveValue::CSS_PC); |
+ return static_cast<CSSPrimitiveValue::UnitType>(type); |
} |
+inline SVGLengthType toSVGLengthType(CSSPrimitiveValue::UnitType type) |
+{ |
+ switch (type) { |
+ case CSSPrimitiveValue::UnitType::CSS_UNKNOWN: |
+ return LengthTypeUnknown; |
+ case CSSPrimitiveValue::UnitType::CSS_NUMBER: |
+ return LengthTypeNumber; |
+ case CSSPrimitiveValue::UnitType::CSS_PERCENTAGE: |
+ return LengthTypePercentage; |
+ case CSSPrimitiveValue::UnitType::CSS_EMS: |
+ return LengthTypeEMS; |
+ case CSSPrimitiveValue::UnitType::CSS_EXS: |
+ return LengthTypeEXS; |
+ case CSSPrimitiveValue::UnitType::CSS_PX: |
+ return LengthTypePX; |
+ case CSSPrimitiveValue::UnitType::CSS_CM: |
+ return LengthTypeCM; |
+ case CSSPrimitiveValue::UnitType::CSS_MM: |
+ return LengthTypeMM; |
+ case CSSPrimitiveValue::UnitType::CSS_IN: |
+ return LengthTypeIN; |
+ case CSSPrimitiveValue::UnitType::CSS_PT: |
+ return LengthTypePT; |
+ case CSSPrimitiveValue::UnitType::CSS_PC: |
+ return LengthTypePC; |
+ default: |
+ return LengthTypeUnknown; |
+ } |
+} |
} // namespace |
SVGLengthType SVGLengthTearOff::unitType() |
{ |
- return hasExposedLengthUnit() ? target()->unitType() : LengthTypeUnknown; |
+ return hasExposedLengthUnit() ? toSVGLengthType(target()->primitiveType()) : LengthTypeUnknown; |
} |
SVGLengthMode SVGLengthTearOff::unitMode() |
@@ -139,12 +168,12 @@ void SVGLengthTearOff::newValueSpecifiedUnits(unsigned short unitType, float val |
return; |
} |
- if (unitType == LengthTypeUnknown || unitType > LengthTypePC) { |
+ if (unitType == CSSPrimitiveValue::CSS_UNKNOWN || unitType > CSSPrimitiveValue::CSS_PC) { |
fs
2015/06/02 18:20:08
This is a bit theoretical perhaps, but this should
Erik Dahlström
2015/06/03 14:51:30
The unknown unit is a "valid" unit, however one is
fs
2015/06/03 15:15:10
More to check against what is considered the "exte
|
exceptionState.throwDOMException(NotSupportedError, "Cannot set value with unknown or invalid units (" + String::number(unitType) + ")."); |
return; |
} |
- target()->newValueSpecifiedUnits(toSVGLengthType(unitType), valueInSpecifiedUnits); |
+ target()->newValueSpecifiedUnits(toCSSUnitType(unitType), valueInSpecifiedUnits); |
commitChange(); |
} |
@@ -155,19 +184,19 @@ void SVGLengthTearOff::convertToSpecifiedUnits(unsigned short unitType, Exceptio |
return; |
} |
- if (unitType == LengthTypeUnknown || unitType > LengthTypePC) { |
+ if (unitType == CSSPrimitiveValue::CSS_UNKNOWN || unitType > CSSPrimitiveValue::CSS_PC) { |
exceptionState.throwDOMException(NotSupportedError, "Cannot convert to unknown or invalid units (" + String::number(unitType) + ")."); |
return; |
} |
- if ((target()->isRelative() || SVGLength::isRelativeUnit(toSVGLengthType(unitType))) |
+ if ((target()->isRelative() || SVGLength::isRelativeUnit(toCSSUnitType(unitType))) |
&& !canResolveRelativeUnits(contextElement())) { |
exceptionState.throwDOMException(NotSupportedError, "Could not resolve relative length."); |
return; |
} |
SVGLengthContext lengthContext(contextElement()); |
- target()->convertToSpecifiedUnits(toSVGLengthType(unitType), lengthContext); |
+ target()->convertToSpecifiedUnits(toCSSUnitType(unitType), lengthContext); |
commitChange(); |
} |