#include "core/svg/SVGViewElement.h"
-#include "SVGNames.h"
-#include "core/svg/SVGFitToViewBox.h"
-#include "core/svg/SVGStringList.h"
-#include "core/svg/SVGZoomAndPan.h"
+namespace blink {
-namespace WebCore {
-
-// Animated property definitions
-DEFINE_ANIMATED_BOOLEAN(SVGViewElement, SVGNames::externalResourcesRequiredAttr, ExternalResourcesRequired, externalResourcesRequired)
-DEFINE_ANIMATED_RECT(SVGViewElement, SVGNames::viewBoxAttr, ViewBox, viewBox)
-DEFINE_ANIMATED_PRESERVEASPECTRATIO(SVGViewElement, SVGNames::preserveAspectRatioAttr, PreserveAspectRatio, preserveAspectRatio)
-
-BEGIN_REGISTER_ANIMATED_PROPERTIES(SVGViewElement)
- REGISTER_LOCAL_ANIMATED_PROPERTY(externalResourcesRequired)
- REGISTER_LOCAL_ANIMATED_PROPERTY(viewBox)
- REGISTER_LOCAL_ANIMATED_PROPERTY(preserveAspectRatio)
- REGISTER_PARENT_ANIMATED_PROPERTIES(SVGElement)
-END_REGISTER_ANIMATED_PROPERTIES
-
-inline SVGViewElement::SVGViewElement(const QualifiedName& tagName, Document& document)
- : SVGElement(tagName, document)
- , m_zoomAndPan(SVGZoomAndPanMagnify)
- , m_viewTarget(SVGNames::viewTargetAttr)
-{
- ASSERT(hasTagName(SVGNames::viewTag));
- ScriptWrappable::init(this);
- registerAnimatedPropertiesForSVGViewElement();
-}
-
-PassRefPtr<SVGViewElement> SVGViewElement::create(const QualifiedName& tagName, Document& document)
+inline SVGViewElement::SVGViewElement(Document& document)
+ : SVGElement(SVGNames::viewTag, document)
+ , SVGFitToViewBox(this)
+ , m_viewTarget(SVGStaticStringList::create(this, SVGNames::viewTargetAttr))
{
- return adoptRef(new SVGViewElement(tagName, document));
+ addToPropertyMap(m_viewTarget);
}
-bool SVGViewElement::isSupportedAttribute(const QualifiedName& attrName)
-{
- DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
- if (supportedAttributes.isEmpty()) {
- SVGExternalResourcesRequired::addSupportedAttributes(supportedAttributes);
- SVGFitToViewBox::addSupportedAttributes(supportedAttributes);
- SVGZoomAndPan::addSupportedAttributes(supportedAttributes);
- supportedAttributes.add(SVGNames::viewTargetAttr);
- }
- return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
-}
+DEFINE_NODE_FACTORY(SVGViewElement)
void SVGViewElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{
- if (!isSupportedAttribute(name)) {
- SVGElement::parseAttribute(name, value);
+ if (SVGZoomAndPan::parseAttribute(name, value))
return;
- }
- if (name == SVGNames::viewTargetAttr) {
- viewTarget().reset(value);
- return;
- }
-
- if (SVGExternalResourcesRequired::parseAttribute(name, value))
- return;
- if (SVGFitToViewBox::parseAttribute(this, name, value))
- return;
- if (SVGZoomAndPan::parseAttribute(this, name, value))
- return;
-
- ASSERT_NOT_REACHED();
+ parseAttributeNew(name, value);
}
-}
+} // namespace blink