| Index: Source/core/svg/SVGDocumentExtensions.cpp
|
| diff --git a/Source/core/svg/SVGDocumentExtensions.cpp b/Source/core/svg/SVGDocumentExtensions.cpp
|
| index 6f678e64e5167d0c64efa8a5029687b7485050a9..b05c0ba5ee43044e814311ccd76cc2118e57a7e6 100644
|
| --- a/Source/core/svg/SVGDocumentExtensions.cpp
|
| +++ b/Source/core/svg/SVGDocumentExtensions.cpp
|
| @@ -31,6 +31,7 @@
|
| #include "core/svg/SVGViewSpec.h"
|
| #include "core/svg/SVGZoomAndPan.h"
|
| #include "core/svg/animation/SMILTimeContainer.h"
|
| +#include "core/svg/animation/SVGSMILElement.h"
|
| #include "wtf/TemporaryChange.h"
|
| #include "wtf/text/AtomicString.h"
|
|
|
| @@ -351,7 +352,7 @@ void SVGDocumentExtensions::removeAllTargetReferencesForElement(SVGElement* refe
|
| m_elementDependencies.removeAll(toBeRemoved);
|
| }
|
|
|
| -void SVGDocumentExtensions::rebuildAllElementReferencesForTarget(SVGElement* referencedElement)
|
| +void SVGDocumentExtensions::rebuildAllElementReferencesForTarget(SVGElement* referencedElement, RebuildTargetFilter filter)
|
| {
|
| ASSERT(referencedElement);
|
| HashMap<SVGElement*, OwnPtr<HashSet<SVGElement*> > >::iterator it = m_elementDependencies.find(referencedElement);
|
| @@ -369,10 +370,14 @@ void SVGDocumentExtensions::rebuildAllElementReferencesForTarget(SVGElement* ref
|
| Vector<SVGElement*>::iterator vectorEnd = toBeNotified.end();
|
| for (Vector<SVGElement*>::iterator vectorIt = toBeNotified.begin(); vectorIt != vectorEnd; ++vectorIt) {
|
| // Before rebuilding referencingElement ensure it was not removed from under us.
|
| - if (HashSet<SVGElement*>* referencingElements = setOfElementsReferencingTarget(referencedElement)) {
|
| - if (referencingElements->contains(*vectorIt))
|
| - (*vectorIt)->svgAttributeChanged(XLinkNames::hrefAttr);
|
| - }
|
| + HashSet<SVGElement*>* referencingElements = setOfElementsReferencingTarget(referencedElement);
|
| + if (!referencingElements || !referencingElements->contains(*vectorIt))
|
| + continue;
|
| +
|
| + if (filter == ExcludeUseElements && isSVGUseElement(**vectorIt))
|
| + continue;
|
| +
|
| + (*vectorIt)->svgAttributeChanged(XLinkNames::hrefAttr);
|
| }
|
| }
|
|
|
|
|