Chromium Code Reviews| Index: Source/core/svg/SVGImageElement.cpp |
| diff --git a/Source/core/svg/SVGImageElement.cpp b/Source/core/svg/SVGImageElement.cpp |
| index e4313786a3e0633ace4db4a1e2210ca7e76c39df..1af4d6121d446f7b307ef5cb3e6e21c583e6ee86 100644 |
| --- a/Source/core/svg/SVGImageElement.cpp |
| +++ b/Source/core/svg/SVGImageElement.cpp |
| @@ -89,21 +89,28 @@ bool SVGImageElement::isSupportedAttribute(const QualifiedName& attrName) |
| return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName); |
| } |
| -bool SVGImageElement::isPresentationAttribute(const QualifiedName& name) const |
| +bool SVGImageElement::isPresentationAttribute(const QualifiedName& attrName) const |
| { |
| - if (name == SVGNames::widthAttr || name == SVGNames::heightAttr) |
| + if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr |
| + || attrName == SVGNames::widthAttr || attrName == SVGNames::heightAttr) |
| return true; |
| - return SVGGraphicsElement::isPresentationAttribute(name); |
| + return SVGGraphicsElement::isPresentationAttribute(attrName); |
| } |
| void SVGImageElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style) |
| { |
| - if (!isSupportedAttribute(name)) |
| - SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style); |
| - else if (name == SVGNames::widthAttr) |
| + RefPtrWillBeRawPtr<SVGAnimatedPropertyBase> property = propertyFromAttribute(name); |
| + |
| + if (property == m_width) |
| addPropertyToPresentationAttributeStyle(style, CSSPropertyWidth, value); |
| - else if (name == SVGNames::heightAttr) |
| + else if (property == m_height) |
| addPropertyToPresentationAttributeStyle(style, CSSPropertyHeight, value); |
| + else if (property == m_x) |
| + addPropertyToPresentationAttributeStyle(style, CSSPropertyX, m_x->currentValue()->valueInSpecifiedUnits(), m_x->currentValue()->cssUnitTypeQuirk()); |
| + else if (property == m_y) |
| + addPropertyToPresentationAttributeStyle(style, CSSPropertyY, m_y->currentValue()->valueInSpecifiedUnits(), m_y->currentValue()->cssUnitTypeQuirk()); |
| + else |
| + SVGGraphicsElement::collectStyleForPresentationAttribute(name, value, style); |
| } |
| void SVGImageElement::parseAttribute(const QualifiedName& name, const AtomicString& value) |
| @@ -120,6 +127,13 @@ void SVGImageElement::svgAttributeChanged(const QualifiedName& attrName) |
| SVGElement::InvalidationGuard invalidationGuard(this); |
| + if (attrName == SVGNames::xAttr |
|
fs
2015/02/04 13:24:53
Not sure how the 'width' and 'height' values shoul
Erik Dahlström (inactive)
2015/02/05 16:09:02
Agreed, that looks like a bug. Will fix.
|
| + || attrName == SVGNames::yAttr) { |
| + invalidateSVGPresentationAttributeStyle(); |
| + setNeedsStyleRecalc(LocalStyleChange, |
| + StyleChangeReasonForTracing::fromAttribute(attrName)); |
| + } |
| + |
| bool isLengthAttribute = attrName == SVGNames::xAttr |
| || attrName == SVGNames::yAttr |
| || attrName == SVGNames::widthAttr |