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

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

Issue 678163002: Oilpan: move SVG property hierarchy to the heap. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased upto r185213 Created 6 years, 1 month 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 | Annotate | Revision Log
« no previous file with comments | « Source/core/svg/SVGCursorElement.cpp ('k') | Source/core/svg/SVGElement.cpp » ('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, 2008 Nikolas Zimmermann <zimmermann@kde.org> 2 * Copyright (C) 2004, 2005, 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org>
3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org> 3 * Copyright (C) 2004, 2005, 2006 Rob Buis <buis@kde.org>
4 * Copyright (C) 2009, 2014 Apple Inc. All rights reserved. 4 * Copyright (C) 2009, 2014 Apple Inc. All rights reserved.
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 10 matching lines...) Expand all
21 21
22 #ifndef SVGElement_h 22 #ifndef SVGElement_h
23 #define SVGElement_h 23 #define SVGElement_h
24 24
25 #include "core/SVGNames.h" 25 #include "core/SVGNames.h"
26 #include "core/dom/Element.h" 26 #include "core/dom/Element.h"
27 #include "core/svg/SVGAnimatedString.h" 27 #include "core/svg/SVGAnimatedString.h"
28 #include "core/svg/SVGParsingError.h" 28 #include "core/svg/SVGParsingError.h"
29 #include "core/svg/properties/SVGPropertyInfo.h" 29 #include "core/svg/properties/SVGPropertyInfo.h"
30 #include "platform/Timer.h" 30 #include "platform/Timer.h"
31 #include "platform/heap/Handle.h"
31 #include "wtf/HashMap.h" 32 #include "wtf/HashMap.h"
32 #include "wtf/OwnPtr.h" 33 #include "wtf/OwnPtr.h"
33 34
34 namespace blink { 35 namespace blink {
35 36
36 class AffineTransform; 37 class AffineTransform;
37 class CSSCursorImageValue; 38 class CSSCursorImageValue;
38 class Document; 39 class Document;
39 class SVGAnimatedPropertyBase; 40 class SVGAnimatedPropertyBase;
40 class SubtreeLayoutScope; 41 class SubtreeLayoutScope;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
85 virtual bool isFilterEffect() const { return false; } 86 virtual bool isFilterEffect() const { return false; }
86 virtual bool isTextContent() const { return false; } 87 virtual bool isTextContent() const { return false; }
87 virtual bool isTextPositioning() const { return false; } 88 virtual bool isTextPositioning() const { return false; }
88 virtual bool isStructurallyExternal() const { return false; } 89 virtual bool isStructurallyExternal() const { return false; }
89 90
90 // For SVGTests 91 // For SVGTests
91 virtual bool isValid() const { return true; } 92 virtual bool isValid() const { return true; }
92 93
93 virtual void svgAttributeChanged(const QualifiedName&); 94 virtual void svgAttributeChanged(const QualifiedName&);
94 95
95 PassRefPtr<SVGAnimatedPropertyBase> propertyFromAttribute(const QualifiedNam e& attributeName); 96 PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase> propertyFromAttribute(const QualifiedName& attributeName);
96 static AnimatedPropertyType animatedPropertyTypeForCSSAttribute(const Qualif iedName& attributeName); 97 static AnimatedPropertyType animatedPropertyTypeForCSSAttribute(const Qualif iedName& attributeName);
97 98
98 void sendSVGLoadEventToSelfAndAncestorChainIfPossible(); 99 void sendSVGLoadEventToSelfAndAncestorChainIfPossible();
99 bool sendSVGLoadEventIfPossible(); 100 bool sendSVGLoadEventIfPossible();
100 void sendSVGLoadEventIfPossibleAsynchronously(); 101 void sendSVGLoadEventIfPossibleAsynchronously();
101 void svgLoadEventTimerFired(Timer<SVGElement>*); 102 void svgLoadEventTimerFired(Timer<SVGElement>*);
102 virtual Timer<SVGElement>* svgLoadEventTimer(); 103 virtual Timer<SVGElement>* svgLoadEventTimer();
103 104
104 virtual AffineTransform* animateMotionTransform() { return 0; } 105 virtual AffineTransform* animateMotionTransform() { return 0; }
105 106
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
140 MutableStylePropertySet* ensureAnimatedSMILStyleProperties(); 141 MutableStylePropertySet* ensureAnimatedSMILStyleProperties();
141 void setUseOverrideComputedStyle(bool); 142 void setUseOverrideComputedStyle(bool);
142 143
143 virtual bool haveLoadedRequiredResources(); 144 virtual bool haveLoadedRequiredResources();
144 145
145 virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<Even tListener>, bool useCapture = false) override final; 146 virtual bool addEventListener(const AtomicString& eventType, PassRefPtr<Even tListener>, bool useCapture = false) override final;
146 virtual bool removeEventListener(const AtomicString& eventType, PassRefPtr<E ventListener>, bool useCapture = false) override final; 147 virtual bool removeEventListener(const AtomicString& eventType, PassRefPtr<E ventListener>, bool useCapture = false) override final;
147 148
148 void invalidateRelativeLengthClients(SubtreeLayoutScope* = 0); 149 void invalidateRelativeLengthClients(SubtreeLayoutScope* = 0);
149 150
150 void addToPropertyMap(PassRefPtr<SVGAnimatedPropertyBase>); 151 void addToPropertyMap(PassRefPtrWillBeRawPtr<SVGAnimatedPropertyBase>);
151 152
152 SVGAnimatedString* className() { return m_className.get(); } 153 SVGAnimatedString* className() { return m_className.get(); }
153 154
154 bool inUseShadowTree() const; 155 bool inUseShadowTree() const;
155 156
156 SVGElementSet* setOfIncomingReferences() const; 157 SVGElementSet* setOfIncomingReferences() const;
157 void addReferenceTo(SVGElement*); 158 void addReferenceTo(SVGElement*);
158 void rebuildAllIncomingReferences(); 159 void rebuildAllIncomingReferences();
159 void removeAllIncomingReferences(); 160 void removeAllIncomingReferences();
160 void removeAllOutgoingReferences(); 161 void removeAllOutgoingReferences();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 bool isStyledElement() const WTF_DELETED_FUNCTION; // This will catch anyone doing an unnecessary check. 232 bool isStyledElement() const WTF_DELETED_FUNCTION; // This will catch anyone doing an unnecessary check.
232 233
233 RenderStyle* computedStyle(PseudoId = NOPSEUDO); 234 RenderStyle* computedStyle(PseudoId = NOPSEUDO);
234 virtual RenderStyle* virtualComputedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) override final { return computedStyle(pseudoElementSpecifier); } 235 virtual RenderStyle* virtualComputedStyle(PseudoId pseudoElementSpecifier = NOPSEUDO) override final { return computedStyle(pseudoElementSpecifier); }
235 virtual void willRecalcStyle(StyleRecalcChange) override; 236 virtual void willRecalcStyle(StyleRecalcChange) override;
236 237
237 void buildPendingResourcesIfNeeded(); 238 void buildPendingResourcesIfNeeded();
238 239
239 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> > m_elementsWithRelativ eLengths; 240 WillBeHeapHashSet<RawPtrWillBeWeakMember<SVGElement> > m_elementsWithRelativ eLengths;
240 241
241 typedef HashMap<QualifiedName, RefPtr<SVGAnimatedPropertyBase> > AttributeTo PropertyMap; 242 typedef WillBeHeapHashMap<QualifiedName, RefPtrWillBeMember<SVGAnimatedPrope rtyBase> > AttributeToPropertyMap;
242 AttributeToPropertyMap m_attributeToPropertyMap; 243 AttributeToPropertyMap m_attributeToPropertyMap;
243 244
244 #if ENABLE(ASSERT) 245 #if ENABLE(ASSERT)
245 bool m_inRelativeLengthClientsInvalidation; 246 bool m_inRelativeLengthClientsInvalidation;
246 #endif 247 #endif
247 248
248 OwnPtrWillBeMember<SVGElementRareData> m_SVGRareData; 249 OwnPtrWillBeMember<SVGElementRareData> m_SVGRareData;
249 RefPtr<SVGAnimatedString> m_className; 250 RefPtrWillBeMember<SVGAnimatedString> m_className;
250 }; 251 };
251 252
252 struct SVGAttributeHashTranslator { 253 struct SVGAttributeHashTranslator {
253 static unsigned hash(const QualifiedName& key) 254 static unsigned hash(const QualifiedName& key)
254 { 255 {
255 if (key.hasPrefix()) { 256 if (key.hasPrefix()) {
256 QualifiedNameComponents components = { nullAtom.impl(), key.localNam e().impl(), key.namespaceURI().impl() }; 257 QualifiedNameComponents components = { nullAtom.impl(), key.localNam e().impl(), key.namespaceURI().impl() };
257 return hashComponents(components); 258 return hashComponents(components);
258 } 259 }
259 return DefaultHash<QualifiedName>::Hash::hash(key); 260 return DefaultHash<QualifiedName>::Hash::hash(key);
(...skipping 11 matching lines...) Expand all
271 return isSVGElement() && toSVGElement(*this).hasTagName(name); 272 return isSVGElement() && toSVGElement(*this).hasTagName(name);
272 } 273 }
273 274
274 // This requires isSVG*Element(const SVGElement&). 275 // This requires isSVG*Element(const SVGElement&).
275 #define DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) \ 276 #define DEFINE_SVGELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) \
276 inline bool is##thisType(const thisType* element); \ 277 inline bool is##thisType(const thisType* element); \
277 inline bool is##thisType(const thisType& element); \ 278 inline bool is##thisType(const thisType& element); \
278 inline bool is##thisType(const SVGElement* element) { return element && is## thisType(*element); } \ 279 inline bool is##thisType(const SVGElement* element) { return element && is## thisType(*element); } \
279 inline bool is##thisType(const Node& node) { return node.isSVGElement() ? is ##thisType(toSVGElement(node)) : false; } \ 280 inline bool is##thisType(const Node& node) { return node.isSVGElement() ? is ##thisType(toSVGElement(node)) : false; } \
280 inline bool is##thisType(const Node* node) { return node && is##thisType(*no de); } \ 281 inline bool is##thisType(const Node* node) { return node && is##thisType(*no de); } \
281 template<typename T> inline bool is##thisType(const PassRefPtr<T>& node) { r eturn is##thisType(node.get()); } \ 282 template<typename T> inline bool is##thisType(const PassRefPtrWillBeRawPtr<T >& node) { return is##thisType(node.get()); } \
282 template<typename T> inline bool is##thisType(const RefPtr<T>& node) { retur n is##thisType(node.get()); } \ 283 template<typename T> inline bool is##thisType(const RefPtrWillBeMember<T>& n ode) { return is##thisType(node.get()); } \
283 template <> inline bool isElementOfType<const thisType>(const SVGElement& el ement) { return is##thisType(element); } \ 284 template <> inline bool isElementOfType<const thisType>(const SVGElement& el ement) { return is##thisType(element); } \
284 DEFINE_ELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType) 285 DEFINE_ELEMENT_TYPE_CASTS_WITH_FUNCTION(thisType)
285 286
286 } // namespace blink 287 } // namespace blink
287 288
288 #include "core/SVGElementTypeHelpers.h" 289 #include "core/SVGElementTypeHelpers.h"
289 290
290 #endif // SVGElement_h 291 #endif // SVGElement_h
OLDNEW
« no previous file with comments | « Source/core/svg/SVGCursorElement.cpp ('k') | Source/core/svg/SVGElement.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698