Commit 5303b682 authored by kouhei@chromium.org's avatar kouhei@chromium.org

SVGElement::parseAttribute resolves property via property map (Step 2.5)

This CL moves SVGFitToViewBox hierarchy to parseAttributeNew.

This is to replace the existing |SVGElement::parseAttribute| implementation,
but as there are many callers, we would like to proceed this incrementally.
a) Introduce |SVGElement::parseAttributeNew| *LANDED*
b) Convert all overrides |SVGElement::parseAttribute| to
   a |parseAttributeNew| call. <-- This patch
c) Replace existing |parseAttribute| with |parseAttributeNew|, and remove all
   overrides simply calling |parseAttributeNew|

This patch is (b).

BUG=397902

Review URL: https://codereview.chromium.org/651353004

git-svn-id: svn://svn.chromium.org/blink/trunk@183860 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 76d370bb
...@@ -86,27 +86,7 @@ bool SVGMarkerElement::isSupportedAttribute(const QualifiedName& attrName) ...@@ -86,27 +86,7 @@ bool SVGMarkerElement::isSupportedAttribute(const QualifiedName& attrName)
void SVGMarkerElement::parseAttribute(const QualifiedName& name, const AtomicString& value) void SVGMarkerElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{ {
SVGParsingError parseError = NoError; parseAttributeNew(name, value);
if (!isSupportedAttribute(name))
SVGElement::parseAttribute(name, value);
else if (name == SVGNames::markerUnitsAttr)
m_markerUnits->setBaseValueAsString(value, parseError);
else if (name == SVGNames::refXAttr)
m_refX->setBaseValueAsString(value, parseError);
else if (name == SVGNames::refYAttr)
m_refY->setBaseValueAsString(value, parseError);
else if (name == SVGNames::markerWidthAttr)
m_markerWidth->setBaseValueAsString(value, parseError);
else if (name == SVGNames::markerHeightAttr)
m_markerHeight->setBaseValueAsString(value, parseError);
else if (name == SVGNames::orientAttr)
m_orientAngle->setBaseValueAsString(value, parseError);
else if (SVGFitToViewBox::parseAttribute(name, value, document(), parseError)) {
} else
ASSERT_NOT_REACHED();
reportAttributeParsingError(parseError, name, value);
} }
void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName) void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName)
......
...@@ -210,8 +210,6 @@ void SVGSVGElement::updateCurrentTranslate() ...@@ -210,8 +210,6 @@ void SVGSVGElement::updateCurrentTranslate()
void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString& value) void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{ {
SVGParsingError parseError = NoError;
if (!nearestViewportElement()) { if (!nearestViewportElement()) {
bool setListener = true; bool setListener = true;
...@@ -235,21 +233,10 @@ void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString ...@@ -235,21 +233,10 @@ void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString
document().setWindowAttributeEventListener(EventTypeNames::abort, createAttributeEventListener(document().frame(), name, value, eventParameterName())); document().setWindowAttributeEventListener(EventTypeNames::abort, createAttributeEventListener(document().frame(), name, value, eventParameterName()));
} else if (name == HTMLNames::onerrorAttr) { } else if (name == HTMLNames::onerrorAttr) {
document().setWindowAttributeEventListener(EventTypeNames::error, createAttributeEventListener(document().frame(), name, value, eventParameterName())); document().setWindowAttributeEventListener(EventTypeNames::error, createAttributeEventListener(document().frame(), name, value, eventParameterName()));
} else if (name == SVGNames::xAttr) {
m_x->setBaseValueAsString(value, parseError);
} else if (name == SVGNames::yAttr) {
m_y->setBaseValueAsString(value, parseError);
} else if (name == SVGNames::widthAttr) {
m_width->setBaseValueAsString(value, parseError);
} else if (name == SVGNames::heightAttr) {
m_height->setBaseValueAsString(value, parseError);
} else if (SVGFitToViewBox::parseAttribute(name, value, document(), parseError)) {
} else if (SVGZoomAndPan::parseAttribute(name, value)) { } else if (SVGZoomAndPan::parseAttribute(name, value)) {
} else { } else {
SVGGraphicsElement::parseAttribute(name, value); parseAttributeNew(name, value);
} }
reportAttributeParsingError(parseError, name, value);
} }
bool SVGSVGElement::isPresentationAttribute(const QualifiedName& name) const bool SVGSVGElement::isPresentationAttribute(const QualifiedName& name) const
......
...@@ -60,27 +60,7 @@ bool SVGTextPositioningElement::isSupportedAttribute(const QualifiedName& attrNa ...@@ -60,27 +60,7 @@ bool SVGTextPositioningElement::isSupportedAttribute(const QualifiedName& attrNa
void SVGTextPositioningElement::parseAttribute(const QualifiedName& name, const AtomicString& value) void SVGTextPositioningElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{ {
if (!isSupportedAttribute(name)) { parseAttributeNew(name, value);
SVGTextContentElement::parseAttribute(name, value);
return;
}
SVGParsingError parseError = NoError;
if (name == SVGNames::xAttr)
m_x->setBaseValueAsString(value, parseError);
else if (name == SVGNames::yAttr)
m_y->setBaseValueAsString(value, parseError);
else if (name == SVGNames::dxAttr)
m_dx->setBaseValueAsString(value, parseError);
else if (name == SVGNames::dyAttr)
m_dy->setBaseValueAsString(value, parseError);
else if (name == SVGNames::rotateAttr)
m_rotate->setBaseValueAsString(value, parseError);
else
ASSERT_NOT_REACHED();
reportAttributeParsingError(parseError, name, value);
} }
void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName) void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName)
...@@ -104,14 +84,11 @@ void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam ...@@ -104,14 +84,11 @@ void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam
if (!renderer) if (!renderer)
return; return;
if (updateRelativeLengths || attrName == SVGNames::rotateAttr) { ASSERT(updateRelativeLengths || attrName == SVGNames::rotateAttr);
if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer))
textRenderer->setNeedsPositioningValuesUpdate();
RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
return;
}
ASSERT_NOT_REACHED(); if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer))
textRenderer->setNeedsPositioningValuesUpdate();
RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
} }
SVGTextPositioningElement* SVGTextPositioningElement::elementFromRenderer(RenderObject* renderer) SVGTextPositioningElement* SVGTextPositioningElement::elementFromRenderer(RenderObject* renderer)
......
...@@ -34,35 +34,12 @@ inline SVGViewElement::SVGViewElement(Document& document) ...@@ -34,35 +34,12 @@ inline SVGViewElement::SVGViewElement(Document& document)
DEFINE_NODE_FACTORY(SVGViewElement) DEFINE_NODE_FACTORY(SVGViewElement)
bool SVGViewElement::isSupportedAttribute(const QualifiedName& attrName)
{
DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
if (supportedAttributes.isEmpty()) {
SVGFitToViewBox::addSupportedAttributes(supportedAttributes);
SVGZoomAndPan::addSupportedAttributes(supportedAttributes);
supportedAttributes.add(SVGNames::viewTargetAttr);
}
return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
}
void SVGViewElement::parseAttribute(const QualifiedName& name, const AtomicString& value) void SVGViewElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{ {
if (!isSupportedAttribute(name)) { if (SVGZoomAndPan::parseAttribute(name, value))
SVGElement::parseAttribute(name, value);
return; return;
}
SVGParsingError parseError = NoError;
if (SVGFitToViewBox::parseAttribute(name, value, document(), parseError)) {
} else if (SVGZoomAndPan::parseAttribute(name, value)) {
} else if (name == SVGNames::viewTargetAttr) {
m_viewTarget->setBaseValueAsString(value, parseError);
} else {
ASSERT_NOT_REACHED();
}
reportAttributeParsingError(parseError, name, value); parseAttributeNew(name, value);
} }
} // namespace blink } // namespace blink
...@@ -47,8 +47,6 @@ public: ...@@ -47,8 +47,6 @@ public:
private: private:
explicit SVGViewElement(Document&); explicit SVGViewElement(Document&);
// FIXME: svgAttributeChanged missing.
bool isSupportedAttribute(const QualifiedName&);
virtual void parseAttribute(const QualifiedName&, const AtomicString&) override; virtual void parseAttribute(const QualifiedName&, const AtomicString&) override;
virtual bool rendererIsNeeded(const RenderStyle&) override { return false; } virtual bool rendererIsNeeded(const RenderStyle&) override { return false; }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment