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

Side by Side Diff: Source/core/svg/SVGElement.cpp

Issue 924943009: Fix template angle bracket syntax in svg (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 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 | « Source/core/svg/SVGElement.h ('k') | Source/core/svg/SVGElementRareData.h » ('j') | 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) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org> 2 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Nikolas Zimmermann <zimmermann@kde .org>
3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2006, 2008 Rob Buis <buis@kde.org>
4 * Copyright (C) 2008 Apple Inc. All rights reserved. 4 * Copyright (C) 2008 Apple Inc. All rights reserved.
5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com>
6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> 6 * Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
7 * 7 *
8 * This library is free software; you can redistribute it and/or 8 * This library is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Library General Public 9 * modify it under the terms of the GNU Library General Public
10 * License as published by the Free Software Foundation; either 10 * License as published by the Free Software Foundation; either
(...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after
465 // This function is provided for use by SVGAnimatedProperty to avoid 465 // This function is provided for use by SVGAnimatedProperty to avoid
466 // global inclusion of core/dom/Document.h in SVG code. 466 // global inclusion of core/dom/Document.h in SVG code.
467 return document().accessSVGExtensions(); 467 return document().accessSVGExtensions();
468 } 468 }
469 469
470 void SVGElement::mapInstanceToElement(SVGElement* instance) 470 void SVGElement::mapInstanceToElement(SVGElement* instance)
471 { 471 {
472 ASSERT(instance); 472 ASSERT(instance);
473 ASSERT(instance->inUseShadowTree()); 473 ASSERT(instance->inUseShadowTree());
474 474
475 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& instances = ensureSV GRareData()->elementInstances(); 475 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>>& instances = ensureSVG RareData()->elementInstances();
476 ASSERT(!instances.contains(instance)); 476 ASSERT(!instances.contains(instance));
477 477
478 instances.add(instance); 478 instances.add(instance);
479 } 479 }
480 480
481 void SVGElement::removeInstanceMapping(SVGElement* instance) 481 void SVGElement::removeInstanceMapping(SVGElement* instance)
482 { 482 {
483 ASSERT(instance); 483 ASSERT(instance);
484 ASSERT(instance->inUseShadowTree()); 484 ASSERT(instance->inUseShadowTree());
485 485
486 if (!hasSVGRareData()) 486 if (!hasSVGRareData())
487 return; 487 return;
488 488
489 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& instances = svgRareD ata()->elementInstances(); 489 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>>& instances = svgRareDa ta()->elementInstances();
490 490
491 instances.remove(instance); 491 instances.remove(instance);
492 } 492 }
493 493
494 static WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& emptyInstances() 494 static WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>>& emptyInstances()
495 { 495 {
496 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<WillBeHeapHashSet<RawPtrWillBeWea kMember<SVGElement> > >, emptyInstances, (adoptPtrWillBeNoop(new WillBeHeapHashS et<RawPtrWillBeWeakMember<SVGElement> >()))); 496 DEFINE_STATIC_LOCAL(OwnPtrWillBePersistent<WillBeHeapHashSet<RawPtrWillBeWea kMember<SVGElement>>>, emptyInstances, (adoptPtrWillBeNoop(new WillBeHeapHashSet <RawPtrWillBeWeakMember<SVGElement>>())));
497 return *emptyInstances; 497 return *emptyInstances;
498 } 498 }
499 499
500 const WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& SVGElement::instan cesForElement() const 500 const WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>>& SVGElement::instanc esForElement() const
501 { 501 {
502 if (!hasSVGRareData()) 502 if (!hasSVGRareData())
503 return emptyInstances(); 503 return emptyInstances();
504 return svgRareData()->elementInstances(); 504 return svgRareData()->elementInstances();
505 } 505 }
506 506
507 bool SVGElement::getBoundingBox(FloatRect& rect) 507 bool SVGElement::getBoundingBox(FloatRect& rect)
508 { 508 {
509 if (!isSVGGraphicsElement()) 509 if (!isSVGGraphicsElement())
510 return false; 510 return false;
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 731
732 bool SVGElement::haveLoadedRequiredResources() 732 bool SVGElement::haveLoadedRequiredResources()
733 { 733 {
734 for (SVGElement* child = Traversal<SVGElement>::firstChild(*this); child; ch ild = Traversal<SVGElement>::nextSibling(*child)) { 734 for (SVGElement* child = Traversal<SVGElement>::firstChild(*this); child; ch ild = Traversal<SVGElement>::nextSibling(*child)) {
735 if (!child->haveLoadedRequiredResources()) 735 if (!child->haveLoadedRequiredResources())
736 return false; 736 return false;
737 } 737 }
738 return true; 738 return true;
739 } 739 }
740 740
741 static inline void collectInstancesForSVGElement(SVGElement* element, WillBeHeap HashSet<RawPtrWillBeWeakMember<SVGElement> >& instances) 741 static inline void collectInstancesForSVGElement(SVGElement* element, WillBeHeap HashSet<RawPtrWillBeWeakMember<SVGElement>>& instances)
742 { 742 {
743 ASSERT(element); 743 ASSERT(element);
744 if (element->containingShadowRoot()) 744 if (element->containingShadowRoot())
745 return; 745 return;
746 746
747 ASSERT(!element->instanceUpdatesBlocked()); 747 ASSERT(!element->instanceUpdatesBlocked());
748 748
749 instances = element->instancesForElement(); 749 instances = element->instancesForElement();
750 } 750 }
751 751
752 bool SVGElement::addEventListener(const AtomicString& eventType, PassRefPtr<Even tListener> prpListener, bool useCapture) 752 bool SVGElement::addEventListener(const AtomicString& eventType, PassRefPtr<Even tListener> prpListener, bool useCapture)
753 { 753 {
754 RefPtr<EventListener> listener = prpListener; 754 RefPtr<EventListener> listener = prpListener;
755 755
756 // Add event listener to regular DOM element 756 // Add event listener to regular DOM element
757 if (!Node::addEventListener(eventType, listener, useCapture)) 757 if (!Node::addEventListener(eventType, listener, useCapture))
758 return false; 758 return false;
759 759
760 // Add event listener to all shadow tree DOM element instances 760 // Add event listener to all shadow tree DOM element instances
761 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> > instances; 761 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>> instances;
762 collectInstancesForSVGElement(this, instances); 762 collectInstancesForSVGElement(this, instances);
763 for (SVGElement* element : instances) { 763 for (SVGElement* element : instances) {
764 bool result = element->Node::addEventListener(eventType, listener, useCa pture); 764 bool result = element->Node::addEventListener(eventType, listener, useCa pture);
765 ASSERT_UNUSED(result, result); 765 ASSERT_UNUSED(result, result);
766 } 766 }
767 767
768 return true; 768 return true;
769 } 769 }
770 770
771 bool SVGElement::removeEventListener(const AtomicString& eventType, PassRefPtr<E ventListener> prpListener, bool useCapture) 771 bool SVGElement::removeEventListener(const AtomicString& eventType, PassRefPtr<E ventListener> prpListener, bool useCapture)
772 { 772 {
773 RefPtr<EventListener> listener = prpListener; 773 RefPtr<EventListener> listener = prpListener;
774 774
775 // Remove event listener from regular DOM element 775 // Remove event listener from regular DOM element
776 if (!Node::removeEventListener(eventType, listener, useCapture)) 776 if (!Node::removeEventListener(eventType, listener, useCapture))
777 return false; 777 return false;
778 778
779 // Remove event listener from all shadow tree DOM element instances 779 // Remove event listener from all shadow tree DOM element instances
780 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> > instances; 780 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>> instances;
781 collectInstancesForSVGElement(this, instances); 781 collectInstancesForSVGElement(this, instances);
782 for (SVGElement* shadowTreeElement : instances) { 782 for (SVGElement* shadowTreeElement : instances) {
783 ASSERT(shadowTreeElement); 783 ASSERT(shadowTreeElement);
784 784
785 shadowTreeElement->Node::removeEventListener(eventType, listener, useCap ture); 785 shadowTreeElement->Node::removeEventListener(eventType, listener, useCap ture);
786 } 786 }
787 787
788 return true; 788 return true;
789 } 789 }
790 790
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
970 } 970 }
971 971
972 void SVGElement::invalidateInstances() 972 void SVGElement::invalidateInstances()
973 { 973 {
974 if (!inDocument()) 974 if (!inDocument())
975 return; 975 return;
976 976
977 if (instanceUpdatesBlocked()) 977 if (instanceUpdatesBlocked())
978 return; 978 return;
979 979
980 const WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& set = instance sForElement(); 980 const WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement>>& set = instances ForElement();
981 if (set.isEmpty()) 981 if (set.isEmpty())
982 return; 982 return;
983 983
984 // Mark all use elements referencing 'element' for rebuilding 984 // Mark all use elements referencing 'element' for rebuilding
985 for (SVGElement* instance : set) { 985 for (SVGElement* instance : set) {
986 instance->setCorrespondingElement(0); 986 instance->setCorrespondingElement(0);
987 987
988 if (SVGUseElement* element = instance->correspondingUseElement()) { 988 if (SVGUseElement* element = instance->correspondingUseElement()) {
989 ASSERT(element->inDocument()); 989 ASSERT(element->inDocument());
990 element->invalidateShadowTree(); 990 element->invalidateShadowTree();
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
1136 } 1136 }
1137 1137
1138 void SVGElement::rebuildAllIncomingReferences() 1138 void SVGElement::rebuildAllIncomingReferences()
1139 { 1139 {
1140 if (!hasSVGRareData()) 1140 if (!hasSVGRareData())
1141 return; 1141 return;
1142 1142
1143 const SVGElementSet& incomingReferences = svgRareData()->incomingReferences( ); 1143 const SVGElementSet& incomingReferences = svgRareData()->incomingReferences( );
1144 1144
1145 // Iterate on a snapshot as |incomingReferences| may be altered inside loop. 1145 // Iterate on a snapshot as |incomingReferences| may be altered inside loop.
1146 WillBeHeapVector<RawPtrWillBeMember<SVGElement> > incomingReferencesSnapshot ; 1146 WillBeHeapVector<RawPtrWillBeMember<SVGElement>> incomingReferencesSnapshot;
1147 copyToVector(incomingReferences, incomingReferencesSnapshot); 1147 copyToVector(incomingReferences, incomingReferencesSnapshot);
1148 1148
1149 // Force rebuilding the |sourceElement| so it knows about this change. 1149 // Force rebuilding the |sourceElement| so it knows about this change.
1150 for (SVGElement* sourceElement : incomingReferencesSnapshot) { 1150 for (SVGElement* sourceElement : incomingReferencesSnapshot) {
1151 // Before rebuilding |sourceElement| ensure it was not removed from unde r us. 1151 // Before rebuilding |sourceElement| ensure it was not removed from unde r us.
1152 if (incomingReferences.contains(sourceElement)) 1152 if (incomingReferences.contains(sourceElement))
1153 sourceElement->svgAttributeChanged(XLinkNames::hrefAttr); 1153 sourceElement->svgAttributeChanged(XLinkNames::hrefAttr);
1154 } 1154 }
1155 } 1155 }
1156 1156
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1191 Element::trace(visitor); 1191 Element::trace(visitor);
1192 } 1192 }
1193 1193
1194 const AtomicString& SVGElement::eventParameterName() 1194 const AtomicString& SVGElement::eventParameterName()
1195 { 1195 {
1196 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt", AtomicString::Con structFromLiteral)); 1196 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt", AtomicString::Con structFromLiteral));
1197 return evtString; 1197 return evtString;
1198 } 1198 }
1199 1199
1200 } // namespace blink 1200 } // namespace blink
OLDNEW
« no previous file with comments | « Source/core/svg/SVGElement.h ('k') | Source/core/svg/SVGElementRareData.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698