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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "core/html/HTMLElement.h" | 42 #include "core/html/HTMLElement.h" |
43 #include "core/layout/LayoutObject.h" | 43 #include "core/layout/LayoutObject.h" |
44 #include "core/layout/svg/LayoutSVGResourceContainer.h" | 44 #include "core/layout/svg/LayoutSVGResourceContainer.h" |
45 #include "core/svg/SVGAnimateElement.h" | 45 #include "core/svg/SVGAnimateElement.h" |
46 #include "core/svg/SVGCursorElement.h" | 46 #include "core/svg/SVGCursorElement.h" |
47 #include "core/svg/SVGDocumentExtensions.h" | 47 #include "core/svg/SVGDocumentExtensions.h" |
48 #include "core/svg/SVGElementRareData.h" | 48 #include "core/svg/SVGElementRareData.h" |
49 #include "core/svg/SVGGraphicsElement.h" | 49 #include "core/svg/SVGGraphicsElement.h" |
50 #include "core/svg/SVGSVGElement.h" | 50 #include "core/svg/SVGSVGElement.h" |
51 #include "core/svg/SVGTitleElement.h" | 51 #include "core/svg/SVGTitleElement.h" |
| 52 #include "core/svg/SVGTreeScopeResources.h" |
52 #include "core/svg/SVGUseElement.h" | 53 #include "core/svg/SVGUseElement.h" |
53 #include "core/svg/properties/SVGProperty.h" | 54 #include "core/svg/properties/SVGProperty.h" |
54 #include "wtf/TemporaryChange.h" | 55 #include "wtf/TemporaryChange.h" |
55 #include "wtf/Threading.h" | 56 #include "wtf/Threading.h" |
56 | 57 |
57 namespace blink { | 58 namespace blink { |
58 | 59 |
59 using namespace HTMLNames; | 60 using namespace HTMLNames; |
60 using namespace SVGNames; | 61 using namespace SVGNames; |
61 | 62 |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
102 if (!hasSVGRareData()) | 103 if (!hasSVGRareData()) |
103 return; | 104 return; |
104 // If the style changes because of a regular property change (not induced by
SMIL animations themselves) | 105 // If the style changes because of a regular property change (not induced by
SMIL animations themselves) |
105 // reset the "computed style without SMIL style properties", so the base val
ue change gets reflected. | 106 // reset the "computed style without SMIL style properties", so the base val
ue change gets reflected. |
106 if (change > NoChange || needsStyleRecalc()) | 107 if (change > NoChange || needsStyleRecalc()) |
107 svgRareData()->setNeedsOverrideComputedStyleUpdate(); | 108 svgRareData()->setNeedsOverrideComputedStyleUpdate(); |
108 } | 109 } |
109 | 110 |
110 void SVGElement::buildPendingResourcesIfNeeded() | 111 void SVGElement::buildPendingResourcesIfNeeded() |
111 { | 112 { |
112 Document& document = this->document(); | |
113 if (!needsPendingResourceHandling() || !inShadowIncludingDocument() || inUse
ShadowTree()) | 113 if (!needsPendingResourceHandling() || !inShadowIncludingDocument() || inUse
ShadowTree()) |
114 return; | 114 return; |
115 | 115 |
116 SVGDocumentExtensions& extensions = document.accessSVGExtensions(); | 116 SVGTreeScopeResources& treeScopeResources = this->treeScope().accessSVGTreeS
copedResources(); |
117 AtomicString resourceId = getIdAttribute(); | 117 AtomicString resourceId = getIdAttribute(); |
118 if (!extensions.hasPendingResource(resourceId)) | 118 if (!treeScopeResources.hasPendingResource(resourceId)) |
119 return; | 119 return; |
120 | 120 |
121 // Mark pending resources as pending for removal. | 121 // Mark pending resources as pending for removal. |
122 extensions.markPendingResourcesForRemoval(resourceId); | 122 treeScopeResources.markPendingResourcesForRemoval(resourceId); |
123 | 123 |
124 // Rebuild pending resources for each client of a pending resource that is b
eing removed. | 124 // Rebuild pending resources for each client of a pending resource that is b
eing removed. |
125 while (Element* clientElement = extensions.removeElementFromPendingResources
ForRemoval(resourceId)) { | 125 while (Element* clientElement = treeScopeResources.removeElementFromPendingR
esourcesForRemoval(resourceId)) { |
126 ASSERT(clientElement->hasPendingResources()); | 126 ASSERT(clientElement->hasPendingResources()); |
127 if (clientElement->hasPendingResources()) { | 127 if (clientElement->hasPendingResources()) { |
128 // FIXME: Ideally we'd always resolve pending resources async instea
d of inside | 128 // FIXME: Ideally we'd always resolve pending resources async instea
d of inside |
129 // insertedInto and svgAttributeChanged. For now we only do it for <
use> since | 129 // insertedInto and svgAttributeChanged. For now we only do it for <
use> since |
130 // that would stamp out DOM. | 130 // that would stamp out DOM. |
131 if (isSVGUseElement(clientElement)) | 131 if (isSVGUseElement(clientElement)) |
132 toSVGUseElement(clientElement)->invalidateShadowTree(); | 132 toSVGUseElement(clientElement)->invalidateShadowTree(); |
133 else | 133 else |
134 clientElement->buildPendingResource(); | 134 clientElement->buildPendingResource(); |
135 extensions.clearHasPendingResourcesIfPossible(clientElement); | 135 treeScopeResources.clearHasPendingResourcesIfPossible(clientElement)
; |
136 } | 136 } |
137 } | 137 } |
138 } | 138 } |
139 | 139 |
140 SVGElementRareData* SVGElement::ensureSVGRareData() | 140 SVGElementRareData* SVGElement::ensureSVGRareData() |
141 { | 141 { |
142 if (hasSVGRareData()) | 142 if (hasSVGRareData()) |
143 return svgRareData(); | 143 return svgRareData(); |
144 | 144 |
145 m_SVGRareData = new SVGElementRareData(this); | 145 m_SVGRareData = new SVGElementRareData(this); |
(...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1175 Element::trace(visitor); | 1175 Element::trace(visitor); |
1176 } | 1176 } |
1177 | 1177 |
1178 const AtomicString& SVGElement::eventParameterName() | 1178 const AtomicString& SVGElement::eventParameterName() |
1179 { | 1179 { |
1180 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt")); | 1180 DEFINE_STATIC_LOCAL(const AtomicString, evtString, ("evt")); |
1181 return evtString; | 1181 return evtString; |
1182 } | 1182 } |
1183 | 1183 |
1184 } // namespace blink | 1184 } // namespace blink |
OLD | NEW |