Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Side by Side Diff: Source/WebCore/svg/SVGDocumentExtensions.cpp

Issue 10536212: Merge 120559 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « LayoutTests/svg/text/textpath-reference-crash-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Inc. All rights reserved. 2 * Copyright (C) 2006 Apple Inc. All rights reserved.
3 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
4 * Copyright (C) 2007 Rob Buis <buis@kde.org> 4 * Copyright (C) 2007 Rob Buis <buis@kde.org>
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 392 matching lines...) Expand 10 before | Expand all | Expand 10 after
403 if (it == m_elementDependencies.end()) 403 if (it == m_elementDependencies.end())
404 return; 404 return;
405 ASSERT(it->first == referencedElement); 405 ASSERT(it->first == referencedElement);
406 Vector<SVGElement*> toBeNotified; 406 Vector<SVGElement*> toBeNotified;
407 407
408 HashSet<SVGElement*>* referencingElements = it->second.get(); 408 HashSet<SVGElement*>* referencingElements = it->second.get();
409 HashSet<SVGElement*>::iterator setEnd = referencingElements->end(); 409 HashSet<SVGElement*>::iterator setEnd = referencingElements->end();
410 for (HashSet<SVGElement*>::iterator setIt = referencingElements->begin(); se tIt != setEnd; ++setIt) 410 for (HashSet<SVGElement*>::iterator setIt = referencingElements->begin(); se tIt != setEnd; ++setIt)
411 toBeNotified.append(*setIt); 411 toBeNotified.append(*setIt);
412 412
413 m_elementDependencies.remove(it);
414
415 // Force rebuilding the referencingElement so it knows about this change. 413 // Force rebuilding the referencingElement so it knows about this change.
416 Vector<SVGElement*>::iterator vectorEnd = toBeNotified.end(); 414 Vector<SVGElement*>::iterator vectorEnd = toBeNotified.end();
417 for (Vector<SVGElement*>::iterator vectorIt = toBeNotified.begin(); vectorIt != vectorEnd; ++vectorIt) 415 for (Vector<SVGElement*>::iterator vectorIt = toBeNotified.begin(); vectorIt != vectorEnd; ++vectorIt) {
418 (*vectorIt)->svgAttributeChanged(XLinkNames::hrefAttr); 416 // Before rebuilding referencingElement ensure it was not removed from u nder us.
417 if (HashSet<SVGElement*>* referencingElements = setOfElementsReferencing Target(referencedElement)) {
418 if (referencingElements->contains(*vectorIt))
419 (*vectorIt)->svgAttributeChanged(XLinkNames::hrefAttr);
420 }
421 }
422
423 m_elementDependencies.remove(referencedElement);
419 } 424 }
420 425
421 #if ENABLE(SVG_FONTS) 426 #if ENABLE(SVG_FONTS)
422 void SVGDocumentExtensions::registerSVGFontFaceElement(SVGFontFaceElement* eleme nt) 427 void SVGDocumentExtensions::registerSVGFontFaceElement(SVGFontFaceElement* eleme nt)
423 { 428 {
424 m_svgFontFaceElements.add(element); 429 m_svgFontFaceElements.add(element);
425 } 430 }
426 431
427 void SVGDocumentExtensions::unregisterSVGFontFaceElement(SVGFontFaceElement* ele ment) 432 void SVGDocumentExtensions::unregisterSVGFontFaceElement(SVGFontFaceElement* ele ment)
428 { 433 {
429 ASSERT(m_svgFontFaceElements.contains(element)); 434 ASSERT(m_svgFontFaceElements.contains(element));
430 m_svgFontFaceElements.remove(element); 435 m_svgFontFaceElements.remove(element);
431 } 436 }
432 #endif 437 #endif
433 438
434 } 439 }
435 440
436 #endif 441 #endif
OLDNEW
« no previous file with comments | « LayoutTests/svg/text/textpath-reference-crash-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698