Index: Source/core/svg/SVGElement.cpp |
diff --git a/Source/core/svg/SVGElement.cpp b/Source/core/svg/SVGElement.cpp |
index 6d17e44590dc6a7c8efaed8a10da361d0bfed7ec..0c94bd4a4ad5071af6737fc8976cbbf23e51559f 100644 |
--- a/Source/core/svg/SVGElement.cpp |
+++ b/Source/core/svg/SVGElement.cpp |
@@ -929,7 +929,8 @@ void SVGElement::sendSVGLoadEventIfPossible(bool sendParentLoadEvents) |
RefPtr<Element> parent; |
if (sendParentLoadEvents) |
parent = currentTarget->parentOrShadowHostElement(); // save the next parent to dispatch too incase dispatching the event changes the tree |
- if (hasLoadListener(currentTarget.get())) |
+ if (hasLoadListener(currentTarget.get()) |
+ && (currentTarget->isStructurallyExternal() || currentTarget->isSVGSVGElement())) |
currentTarget->dispatchEvent(Event::create(EventTypeNames::load)); |
currentTarget = (parent && parent->isSVGElement()) ? static_pointer_cast<SVGElement>(parent) : RefPtr<SVGElement>(); |
SVGElement* element = currentTarget.get(); |
@@ -975,7 +976,8 @@ void SVGElement::finishParsingChildren() |
// finishParsingChildren() is called when the close tag is reached for an element (e.g. </svg>) |
// we send SVGLoad events here if we can, otherwise they'll be sent when any required loads finish |
- sendSVGLoadEventIfPossible(); |
+ if (isSVGSVGElement()) |
+ sendSVGLoadEventIfPossible(); |
} |
bool SVGElement::childShouldCreateRenderer(const Node& child) const |
@@ -1158,7 +1160,6 @@ bool SVGElement::isAnimatableAttribute(const QualifiedName& name) const |
animatableAttributes.add(SVGNames::edgeModeAttr); |
animatableAttributes.add(SVGNames::elevationAttr); |
animatableAttributes.add(SVGNames::exponentAttr); |
- animatableAttributes.add(SVGNames::externalResourcesRequiredAttr); |
animatableAttributes.add(SVGNames::filterResAttr); |
animatableAttributes.add(SVGNames::filterUnitsAttr); |
animatableAttributes.add(SVGNames::fxAttr); |