OLD | NEW |
---|---|
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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
81 { | 81 { |
82 ScriptWrappable::init(this); | 82 ScriptWrappable::init(this); |
83 addToPropertyMap(m_className); | 83 addToPropertyMap(m_className); |
84 setHasCustomStyleCallbacks(); | 84 setHasCustomStyleCallbacks(); |
85 } | 85 } |
86 | 86 |
87 SVGElement::~SVGElement() | 87 SVGElement::~SVGElement() |
88 { | 88 { |
89 ASSERT(inDocument() || !hasRelativeLengths()); | 89 ASSERT(inDocument() || !hasRelativeLengths()); |
90 | 90 |
91 if (correspondingElement() && correspondingElement()->instancesForElement(). contains(this)) | |
92 correspondingElement()->removeInstanceMapping(this); | |
91 // The below teardown is all handled by weak pointer processing in oilpan. | 93 // The below teardown is all handled by weak pointer processing in oilpan. |
92 #if !ENABLE(OILPAN) | 94 #if !ENABLE(OILPAN) |
93 if (hasSVGRareData()) { | 95 if (hasSVGRareData()) { |
94 if (SVGCursorElement* cursorElement = svgRareData()->cursorElement()) | 96 if (SVGCursorElement* cursorElement = svgRareData()->cursorElement()) |
95 cursorElement->removeReferencedElement(this); | 97 cursorElement->removeReferencedElement(this); |
96 if (CSSCursorImageValue* cursorImageValue = svgRareData()->cursorImageVa lue()) | 98 if (CSSCursorImageValue* cursorImageValue = svgRareData()->cursorImageVa lue()) |
97 cursorImageValue->removeReferencedElement(this); | 99 cursorImageValue->removeReferencedElement(this); |
98 // Clear the rare data now so that we are in a consistent state when | 100 // Clear the rare data now so that we are in a consistent state when |
99 // calling rebuildAllElementReferencesForTarget() below. | 101 // calling rebuildAllElementReferencesForTarget() below. |
100 m_SVGRareData.clear(); | 102 m_SVGRareData.clear(); |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
516 | 518 |
517 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& instances = ensureSV GRareData()->elementInstances(); | 519 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& instances = ensureSV GRareData()->elementInstances(); |
518 ASSERT(!instances.contains(instance)); | 520 ASSERT(!instances.contains(instance)); |
519 | 521 |
520 instances.add(instance); | 522 instances.add(instance); |
521 } | 523 } |
522 | 524 |
523 void SVGElement::removeInstanceMapping(SVGElement* instance) | 525 void SVGElement::removeInstanceMapping(SVGElement* instance) |
524 { | 526 { |
525 ASSERT(instance); | 527 ASSERT(instance); |
526 ASSERT(instance->inUseShadowTree()); | 528 // ASSERT(instance->inUseShadowTree()); |
eseidel
2014/06/03 18:20:25
Why commit commented out code?
| |
527 | 529 |
528 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& instances = svgRareD ata()->elementInstances(); | 530 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& instances = svgRareD ata()->elementInstances(); |
529 ASSERT(instances.contains(instance)); | 531 ASSERT(instances.contains(instance)); |
530 | 532 |
531 instances.remove(instance); | 533 instances.remove(instance); |
532 } | 534 } |
533 | 535 |
534 static WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& emptyInstances() | 536 static WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >& emptyInstances() |
535 { | 537 { |
536 #if ENABLE(OILPAN) | 538 #if ENABLE(OILPAN) |
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
591 | 593 |
592 #if !ENABLE(OILPAN) | 594 #if !ENABLE(OILPAN) |
593 void SVGElement::cursorImageValueRemoved() | 595 void SVGElement::cursorImageValueRemoved() |
594 { | 596 { |
595 svgRareData()->setCursorImageValue(0); | 597 svgRareData()->setCursorImageValue(0); |
596 } | 598 } |
597 #endif | 599 #endif |
598 | 600 |
599 SVGElement* SVGElement::correspondingElement() | 601 SVGElement* SVGElement::correspondingElement() |
600 { | 602 { |
601 ASSERT(!hasSVGRareData() || !svgRareData()->correspondingElement() || contai ningShadowRoot()); | 603 // ASSERT(!hasSVGRareData() || !svgRareData()->correspondingElement() || cont ainingShadowRoot()); |
602 return hasSVGRareData() ? svgRareData()->correspondingElement() : 0; | 604 return hasSVGRareData() ? svgRareData()->correspondingElement() : 0; |
603 } | 605 } |
604 | 606 |
605 SVGUseElement* SVGElement::correspondingUseElement() const | 607 SVGUseElement* SVGElement::correspondingUseElement() const |
606 { | 608 { |
607 if (ShadowRoot* root = containingShadowRoot()) { | 609 if (ShadowRoot* root = containingShadowRoot()) { |
608 if (isSVGUseElement(root->host()) && (root->type() == ShadowRoot::UserAg entShadowRoot)) | 610 if (isSVGUseElement(root->host()) && (root->type() == ShadowRoot::UserAg entShadowRoot)) |
609 return toSVGUseElement(root->host()); | 611 return toSVGUseElement(root->host()); |
610 } | 612 } |
611 return 0; | 613 return 0; |
(...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1035 const WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >::const_iterator end = set.end(); | 1037 const WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >::const_iterator end = set.end(); |
1036 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >::const_iterator it = set.begin(); it != end; ++it) { | 1038 for (WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> >::const_iterator it = set.begin(); it != end; ++it) { |
1037 (*it)->setCorrespondingElement(0); | 1039 (*it)->setCorrespondingElement(0); |
1038 | 1040 |
1039 if (SVGUseElement* element = (*it)->correspondingUseElement()) { | 1041 if (SVGUseElement* element = (*it)->correspondingUseElement()) { |
1040 ASSERT(element->inDocument()); | 1042 ASSERT(element->inDocument()); |
1041 element->invalidateShadowTree(); | 1043 element->invalidateShadowTree(); |
1042 } | 1044 } |
1043 } | 1045 } |
1044 | 1046 |
1047 svgRareData()->elementInstances().clear(); | |
1048 | |
1045 document().updateRenderTreeIfNeeded(); | 1049 document().updateRenderTreeIfNeeded(); |
1046 } | 1050 } |
1047 | 1051 |
1048 SVGElement::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement* targetEleme nt) | 1052 SVGElement::InstanceUpdateBlocker::InstanceUpdateBlocker(SVGElement* targetEleme nt) |
1049 : m_targetElement(targetElement) | 1053 : m_targetElement(targetElement) |
1050 { | 1054 { |
1051 if (m_targetElement) | 1055 if (m_targetElement) |
1052 m_targetElement->setInstanceUpdatesBlocked(true); | 1056 m_targetElement->setInstanceUpdatesBlocked(true); |
1053 } | 1057 } |
1054 | 1058 |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1166 #endif | 1170 #endif |
1167 | 1171 |
1168 void SVGElement::trace(Visitor* visitor) | 1172 void SVGElement::trace(Visitor* visitor) |
1169 { | 1173 { |
1170 visitor->trace(m_elementsWithRelativeLengths); | 1174 visitor->trace(m_elementsWithRelativeLengths); |
1171 visitor->trace(m_SVGRareData); | 1175 visitor->trace(m_SVGRareData); |
1172 Element::trace(visitor); | 1176 Element::trace(visitor); |
1173 } | 1177 } |
1174 | 1178 |
1175 } | 1179 } |
OLD | NEW |