| Index: Source/core/svg/SVGViewSpec.cpp
|
| diff --git a/Source/core/svg/SVGViewSpec.cpp b/Source/core/svg/SVGViewSpec.cpp
|
| index 9db13554a3768037ac91037303cccf5f6e647d12..bcd8a7851c77c30c2082d4765bfa73a3de9d5050 100644
|
| --- a/Source/core/svg/SVGViewSpec.cpp
|
| +++ b/Source/core/svg/SVGViewSpec.cpp
|
| @@ -29,21 +29,6 @@
|
|
|
| namespace WebCore {
|
|
|
| -// Define custom non-animated property 'transform'.
|
| -const SVGPropertyInfo* SVGViewSpec::transformPropertyInfo()
|
| -{
|
| - static const SVGPropertyInfo* s_propertyInfo = 0;
|
| - if (!s_propertyInfo) {
|
| - s_propertyInfo = new SVGPropertyInfo(AnimatedTransformList,
|
| - PropertyIsReadOnly,
|
| - SVGNames::transformAttr,
|
| - transformIdentifier(),
|
| - 0,
|
| - 0);
|
| - }
|
| - return s_propertyInfo;
|
| -}
|
| -
|
| SVGViewSpec::SVGViewSpec(SVGSVGElement* contextElement)
|
| : m_contextElement(contextElement)
|
| , m_zoomAndPan(SVGZoomAndPanMagnify)
|
| @@ -51,23 +36,19 @@ SVGViewSpec::SVGViewSpec(SVGSVGElement* contextElement)
|
| // This contextElement will be only used for keeping this alive from the tearoff.
|
| // SVGSVGElement holds a strong-ref to this SVGViewSpec, so this is kept alive as:
|
| // AnimatedProperty tearoff -(contextElement)-> SVGSVGElement -(RefPtr)-> SVGViewSpec.
|
| + , m_transform(SVGAnimatedTransformList::create(contextElement, SVGNames::transformAttr, SVGTransformList::create()))
|
| , m_viewBox(SVGAnimatedRect::create(contextElement, SVGNames::viewBoxAttr))
|
| , m_preserveAspectRatio(SVGAnimatedPreserveAspectRatio::create(contextElement, SVGNames::preserveAspectRatioAttr, SVGPreserveAspectRatio::create()))
|
| {
|
| ASSERT(m_contextElement);
|
| ScriptWrappable::init(this);
|
|
|
| + m_transform->setReadOnly();
|
| m_viewBox->setReadOnly();
|
| m_preserveAspectRatio->setReadOnly();
|
| // Note: addToPropertyMap is not needed, as SVGViewSpec do not correspond to an element.
|
| }
|
|
|
| -const AtomicString& SVGViewSpec::transformIdentifier()
|
| -{
|
| - DEFINE_STATIC_LOCAL(AtomicString, s_identifier, ("SVGViewSpecTransformAttribute", AtomicString::ConstructFromLiteral));
|
| - return s_identifier;
|
| -}
|
| -
|
| void SVGViewSpec::setZoomAndPan(unsigned short, ExceptionState& exceptionState)
|
| {
|
| // SVGViewSpec and all of its content is read-only.
|
| @@ -79,23 +60,12 @@ String SVGViewSpec::preserveAspectRatioString() const
|
| return m_preserveAspectRatio->baseValue()->valueAsString();
|
| }
|
|
|
| -void SVGViewSpec::setTransformString(const String& transform)
|
| -{
|
| - if (!m_contextElement)
|
| - return;
|
| -
|
| - SVGTransformList newList;
|
| - newList.parse(transform);
|
| -
|
| - if (SVGAnimatedProperty* wrapper = SVGAnimatedProperty::lookupWrapper<SVGElement, SVGAnimatedTransformList>(m_contextElement, transformPropertyInfo()))
|
| - static_cast<SVGAnimatedTransformList*>(wrapper)->detachListWrappers(newList.size());
|
| -
|
| - m_transform = newList;
|
| -}
|
| -
|
| String SVGViewSpec::transformString() const
|
| {
|
| - return SVGPropertyTraits<SVGTransformList>::toString(m_transform);
|
| + if (!m_transform)
|
| + return String();
|
| +
|
| + return m_transform->baseValue()->valueAsString();
|
| }
|
|
|
| String SVGViewSpec::viewBoxString() const
|
| @@ -113,23 +83,9 @@ SVGElement* SVGViewSpec::viewTarget() const
|
| return toSVGElement(element);
|
| }
|
|
|
| -SVGTransformListPropertyTearOff* SVGViewSpec::transform()
|
| -{
|
| - if (!m_contextElement)
|
| - return 0;
|
| - // Return the animVal here, as its readonly by default - which is exactly what we want here.
|
| - return static_cast<SVGTransformListPropertyTearOff*>(static_pointer_cast<SVGAnimatedTransformList>(lookupOrCreateTransformWrapper(this))->animVal());
|
| -}
|
| -
|
| -PassRefPtr<SVGAnimatedProperty> SVGViewSpec::lookupOrCreateTransformWrapper(SVGViewSpec* ownerType)
|
| -{
|
| - ASSERT(ownerType);
|
| - ASSERT(ownerType->contextElement());
|
| - return SVGAnimatedProperty::lookupOrCreateWrapper<SVGElement, SVGAnimatedTransformList, SVGTransformList>(ownerType->contextElement(), transformPropertyInfo(), ownerType->m_transform);
|
| -}
|
| -
|
| void SVGViewSpec::detachContextElement()
|
| {
|
| + m_transform = 0;
|
| m_viewBox = 0;
|
| m_preserveAspectRatio = 0;
|
| m_contextElement = 0;
|
| @@ -138,7 +94,7 @@ void SVGViewSpec::detachContextElement()
|
| void SVGViewSpec::reset()
|
| {
|
| m_zoomAndPan = SVGZoomAndPanMagnify;
|
| - m_transform.clear();
|
| + m_transform->baseValue()->clear();
|
| ASSERT(m_viewBox);
|
| m_viewBox->baseValue()->setValue(FloatRect());
|
| ASSERT(m_preserveAspectRatio);
|
| @@ -188,7 +144,7 @@ bool SVGViewSpec::parseViewSpecInternal(const CharType* ptr, const CharType* end
|
| ptr++;
|
| if (ptr >= end)
|
| return false;
|
| - setViewTargetString(String(viewTargetStart, ptr - viewTargetStart));
|
| + m_viewTargetString = String(viewTargetStart, ptr - viewTargetStart);
|
| ptr++;
|
| } else
|
| return false;
|
| @@ -220,7 +176,7 @@ bool SVGViewSpec::parseViewSpecInternal(const CharType* ptr, const CharType* end
|
| if (ptr >= end || *ptr != '(')
|
| return false;
|
| ptr++;
|
| - parseTransformAttribute(m_transform, ptr, end, DoNotClearList);
|
| + m_transform->baseValue()->parse(ptr, end);
|
| if (ptr >= end || *ptr != ')')
|
| return false;
|
| ptr++;
|
|
|