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)
void SVGMarkerElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{
SVGParsingError parseError = NoError;
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);
parseAttributeNew(name, value);
}
void SVGMarkerElement::svgAttributeChanged(const QualifiedName& attrName)
......
......@@ -210,8 +210,6 @@ void SVGSVGElement::updateCurrentTranslate()
void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{
SVGParsingError parseError = NoError;
if (!nearestViewportElement()) {
bool setListener = true;
......@@ -235,21 +233,10 @@ void SVGSVGElement::parseAttribute(const QualifiedName& name, const AtomicString
document().setWindowAttributeEventListener(EventTypeNames::abort, createAttributeEventListener(document().frame(), name, value, eventParameterName()));
} else if (name == HTMLNames::onerrorAttr) {
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 {
SVGGraphicsElement::parseAttribute(name, value);
parseAttributeNew(name, value);
}
reportAttributeParsingError(parseError, name, value);
}
bool SVGSVGElement::isPresentationAttribute(const QualifiedName& name) const
......
......@@ -60,27 +60,7 @@ bool SVGTextPositioningElement::isSupportedAttribute(const QualifiedName& attrNa
void SVGTextPositioningElement::parseAttribute(const QualifiedName& name, const AtomicString& value)
{
if (!isSupportedAttribute(name)) {
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);
parseAttributeNew(name, value);
}
void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrName)
......@@ -104,14 +84,11 @@ void SVGTextPositioningElement::svgAttributeChanged(const QualifiedName& attrNam
if (!renderer)
return;
if (updateRelativeLengths || attrName == SVGNames::rotateAttr) {
if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer))
textRenderer->setNeedsPositioningValuesUpdate();
RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
return;
}
ASSERT(updateRelativeLengths || attrName == SVGNames::rotateAttr);
ASSERT_NOT_REACHED();
if (RenderSVGText* textRenderer = RenderSVGText::locateRenderSVGTextAncestor(renderer))
textRenderer->setNeedsPositioningValuesUpdate();
RenderSVGResource::markForLayoutAndParentResourceInvalidation(renderer);
}
SVGTextPositioningElement* SVGTextPositioningElement::elementFromRenderer(RenderObject* renderer)
......
......@@ -34,35 +34,12 @@ inline SVGViewElement::SVGViewElement(Document& document)
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)
{
if (!isSupportedAttribute(name)) {
SVGElement::parseAttribute(name, value);
if (SVGZoomAndPan::parseAttribute(name, value))
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
......@@ -47,8 +47,6 @@ public:
private:
explicit SVGViewElement(Document&);
// FIXME: svgAttributeChanged missing.
bool isSupportedAttribute(const QualifiedName&);
virtual void parseAttribute(const QualifiedName&, const AtomicString&) override;
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