Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / Source / core / css / CSSBasicShapes.cpp
index 692fff7..7f7644d 100644 (file)
@@ -37,7 +37,7 @@
 
 using namespace WTF;
 
-namespace WebCore {
+namespace blink {
 
 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(CSSBasicShape)
 
@@ -93,16 +93,16 @@ static PassRefPtrWillBeRawPtr<CSSPrimitiveValue> buildSerializablePositionOffset
 
     if (side == CSSValueCenter) {
         side = defaultSide;
-        amount = cssValuePool().createValue(Length(50, Percent));
+        amount = cssValuePool().createValue(50, CSSPrimitiveValue::CSS_PERCENTAGE);
     } else if ((side == CSSValueRight || side == CSSValueBottom)
         && amount->isPercentage()) {
         side = defaultSide;
-        amount = cssValuePool().createValue(Length(100 - amount->getFloatValue(), Percent));
+        amount = cssValuePool().createValue(100 - amount->getFloatValue(), CSSPrimitiveValue::CSS_PERCENTAGE);
     } else if (amount->isLength() && !amount->getFloatValue()) {
         if (side == CSSValueRight || side == CSSValueBottom)
-            amount = cssValuePool().createValue(Length(100, Percent));
+            amount = cssValuePool().createValue(100, CSSPrimitiveValue::CSS_PERCENTAGE);
         else
-            amount = cssValuePool().createValue(Length(0, Percent));
+            amount = cssValuePool().createValue(0, CSSPrimitiveValue::CSS_PERCENTAGE);
         side = defaultSide;
     }
 
@@ -114,7 +114,11 @@ String CSSBasicShapeCircle::cssText() const
     RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositionOffset(m_centerX, CSSValueLeft);
     RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositionOffset(m_centerY, CSSValueTop);
 
-    return buildCircleString(m_radius ? m_radius->cssText() : String(),
+    String radius;
+    if (m_radius && m_radius->getValueID() != CSSValueClosestSide)
+        radius = m_radius->cssText();
+
+    return buildCircleString(radius,
         serializePositionOffset(*normalizedCX->getPairValue(), *normalizedCY->getPairValue()),
         serializePositionOffset(*normalizedCY->getPairValue(), *normalizedCX->getPairValue()),
         m_referenceBox ? m_referenceBox->cssText() : String());
@@ -180,8 +184,22 @@ String CSSBasicShapeEllipse::cssText() const
     RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCX = buildSerializablePositionOffset(m_centerX, CSSValueLeft);
     RefPtrWillBeRawPtr<CSSPrimitiveValue> normalizedCY = buildSerializablePositionOffset(m_centerY, CSSValueTop);
 
-    return buildEllipseString(m_radiusX ? m_radiusX->cssText() : String(),
-        m_radiusY ? m_radiusY->cssText() : String(),
+    String radiusX;
+    String radiusY;
+    if (m_radiusX) {
+        bool shouldSerializeRadiusXValue = m_radiusX->getValueID() != CSSValueClosestSide;
+        bool shouldSerializeRadiusYValue = false;
+
+        if (m_radiusY) {
+            shouldSerializeRadiusYValue = m_radiusY->getValueID() != CSSValueClosestSide;
+            if (shouldSerializeRadiusYValue)
+                radiusY = m_radiusY->cssText();
+        }
+        if (shouldSerializeRadiusXValue || (!shouldSerializeRadiusXValue && shouldSerializeRadiusYValue))
+            radiusX = m_radiusX->cssText();
+    }
+
+    return buildEllipseString(radiusX, radiusY,
         serializePositionOffset(*normalizedCX->getPairValue(), *normalizedCY->getPairValue()),
         serializePositionOffset(*normalizedCY->getPairValue(), *normalizedCX->getPairValue()),
         m_referenceBox ? m_referenceBox->cssText() : String());
@@ -430,5 +448,5 @@ void CSSBasicShapeInset::trace(Visitor* visitor)
     CSSBasicShape::trace(visitor);
 }
 
-} // namespace WebCore
+} // namespace blink