Index: Source/core/svg/SVGUseElement.cpp |
diff --git a/Source/core/svg/SVGUseElement.cpp b/Source/core/svg/SVGUseElement.cpp |
index 4a542322f55870b779777f4f0a2939602a0361b4..40c4cdcf3dfd8d757ce094140b7ea74c1edaba16 100644 |
--- a/Source/core/svg/SVGUseElement.cpp |
+++ b/Source/core/svg/SVGUseElement.cpp |
@@ -167,10 +167,10 @@ Node::InsertionNotificationRequest SVGUseElement::insertedInto(ContainerNode* ro |
if (!m_wasInsertedByParser) { |
buildPendingResource(); |
- m_haveFiredLoadEvent = true; |
- sendSVGLoadEventIfPossibleAsynchronously(); |
+ if (!isStructurallyExternal()) { |
+ sendSVGLoadEventIfPossibleAsynchronously(); |
+ } |
} |
- |
return InsertionDone; |
} |
@@ -934,10 +934,14 @@ void SVGUseElement::notifyFinished(Resource* resource) |
if (resource->errorOccurred()) |
dispatchEvent(Event::create(EventTypeNames::error)); |
else if (!resource->wasCanceled()) { |
- if (!m_wasInsertedByParser) |
- ASSERT(m_haveFiredLoadEvent); |
- else if (m_haveFiredLoadEvent) |
+ if (m_wasInsertedByParser && m_haveFiredLoadEvent) |
return; |
+ if (!isStructurallyExternal()) |
+ return; |
+ |
+ ASSERT(!m_haveFiredLoadEvent); |
+ m_haveFiredLoadEvent = true; |
+ sendSVGLoadEventIfPossible(); |
} |
} |
@@ -964,7 +968,6 @@ bool SVGUseElement::instanceTreeIsLoading(SVGElementInstance* targetElementInsta |
void SVGUseElement::finishParsingChildren() |
{ |
SVGGraphicsElement::finishParsingChildren(); |
- m_haveFiredLoadEvent = true; |
if (m_wasInsertedByParser) { |
buildPendingResource(); |
m_wasInsertedByParser = false; |