| Index: Source/core/svg/SVGImageElement.cpp
|
| diff --git a/Source/core/svg/SVGImageElement.cpp b/Source/core/svg/SVGImageElement.cpp
|
| index e1197b20bed74499a94f4a134c4440879f22b192..35f21ce7717c931c5dea71e859efb1c008424a1e 100644
|
| --- a/Source/core/svg/SVGImageElement.cpp
|
| +++ b/Source/core/svg/SVGImageElement.cpp
|
| @@ -74,20 +74,6 @@ bool SVGImageElement::currentFrameHasSingleSecurityOrigin() const
|
| return true;
|
| }
|
|
|
| -bool SVGImageElement::isSupportedAttribute(const QualifiedName& attrName)
|
| -{
|
| - DEFINE_STATIC_LOCAL(HashSet<QualifiedName>, supportedAttributes, ());
|
| - if (supportedAttributes.isEmpty()) {
|
| - SVGURIReference::addSupportedAttributes(supportedAttributes);
|
| - supportedAttributes.add(SVGNames::xAttr);
|
| - supportedAttributes.add(SVGNames::yAttr);
|
| - supportedAttributes.add(SVGNames::widthAttr);
|
| - supportedAttributes.add(SVGNames::heightAttr);
|
| - supportedAttributes.add(SVGNames::preserveAspectRatioAttr);
|
| - }
|
| - return supportedAttributes.contains<SVGAttributeHashTranslator>(attrName);
|
| -}
|
| -
|
| bool SVGImageElement::isPresentationAttribute(const QualifiedName& attrName) const
|
| {
|
| if (attrName == SVGNames::xAttr || attrName == SVGNames::yAttr
|
| @@ -122,47 +108,43 @@ void SVGImageElement::collectStyleForPresentationAttribute(const QualifiedName&
|
|
|
| void SVGImageElement::svgAttributeChanged(const QualifiedName& attrName)
|
| {
|
| - if (!isSupportedAttribute(attrName)) {
|
| - SVGGraphicsElement::svgAttributeChanged(attrName);
|
| - return;
|
| - }
|
| -
|
| - SVGElement::InvalidationGuard invalidationGuard(this);
|
| -
|
| bool isLengthAttribute = attrName == SVGNames::xAttr
|
| || attrName == SVGNames::yAttr
|
| || attrName == SVGNames::widthAttr
|
| || attrName == SVGNames::heightAttr;
|
|
|
| - if (isLengthAttribute) {
|
| - invalidateSVGPresentationAttributeStyle();
|
| - setNeedsStyleRecalc(LocalStyleChange,
|
| - StyleChangeReasonForTracing::fromAttribute(attrName));
|
| - updateRelativeLengthsInformation();
|
| - }
|
| + if (isLengthAttribute || attrName == SVGNames::preserveAspectRatioAttr) {
|
| + SVGElement::InvalidationGuard invalidationGuard(this);
|
|
|
| - if (SVGURIReference::isKnownAttribute(attrName)) {
|
| - if (inDocument())
|
| - imageLoader().updateFromElement(ImageLoader::UpdateIgnorePreviousError);
|
| - else
|
| - m_needsLoaderURIUpdate = true;
|
| - return;
|
| - }
|
| + if (isLengthAttribute) {
|
| + invalidateSVGPresentationAttributeStyle();
|
| + setNeedsStyleRecalc(LocalStyleChange,
|
| + StyleChangeReasonForTracing::fromAttribute(attrName));
|
| + updateRelativeLengthsInformation();
|
| + }
|
|
|
| - LayoutObject* renderer = this->layoutObject();
|
| - if (!renderer)
|
| - return;
|
| + LayoutObject* object = this->layoutObject();
|
| + if (!object)
|
| + return;
|
|
|
| - if (isLengthAttribute || attrName == SVGNames::preserveAspectRatioAttr) {
|
| // FIXME: if isLengthAttribute then we should avoid this
|
| // call if the viewport didn't change, however since we don't
|
| // have the computed style yet we can't use updateImageViewport.
|
| // See http://crbug.com/466200.
|
| - markForLayoutAndParentResourceInvalidation(renderer);
|
| + markForLayoutAndParentResourceInvalidation(object);
|
| + return;
|
| + }
|
| +
|
| + if (SVGURIReference::isKnownAttribute(attrName)) {
|
| + SVGElement::InvalidationGuard invalidationGuard(this);
|
| + if (inDocument())
|
| + imageLoader().updateFromElement(ImageLoader::UpdateIgnorePreviousError);
|
| + else
|
| + m_needsLoaderURIUpdate = true;
|
| return;
|
| }
|
|
|
| - ASSERT_NOT_REACHED();
|
| + SVGGraphicsElement::svgAttributeChanged(attrName);
|
| }
|
|
|
| bool SVGImageElement::selfHasRelativeLengths() const
|
|
|