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

Side by Side Diff: Source/core/svg/properties/SVGAnimatedProperty.h

Issue 298873003: SVG: SVGAnimateElement should not cache |m_animatedElements| (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: remove more asserts Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 G* * Redistributions in binary form must reproduce the above 10 G* * Redistributions in binary form must reproduce the above
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
43 43
44 namespace WebCore { 44 namespace WebCore {
45 45
46 class SVGElement; 46 class SVGElement;
47 47
48 class SVGAnimatedPropertyBase : public RefCounted<SVGAnimatedPropertyBase> { 48 class SVGAnimatedPropertyBase : public RefCounted<SVGAnimatedPropertyBase> {
49 public: 49 public:
50 virtual ~SVGAnimatedPropertyBase(); 50 virtual ~SVGAnimatedPropertyBase();
51 51
52 virtual SVGPropertyBase* currentValueBase() = 0; 52 virtual SVGPropertyBase* currentValueBase() = 0;
53 virtual bool isAnimating() const = 0;
53 54
54 virtual void animationStarted(); 55 virtual void animationStarted();
55 virtual PassRefPtr<SVGPropertyBase> createAnimatedValue() = 0; 56 virtual PassRefPtr<SVGPropertyBase> createAnimatedValue() = 0;
56 virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase>) = 0; 57 virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase>) = 0;
57 virtual void animationEnded(); 58 virtual void animationEnded();
58 59
59 virtual bool needsSynchronizeAttribute() = 0; 60 virtual bool needsSynchronizeAttribute() = 0;
60 virtual void synchronizeAttribute(); 61 virtual void synchronizeAttribute();
61 62
62 AnimatedPropertyType type() const 63 AnimatedPropertyType type() const
63 { 64 {
64 return m_type; 65 return m_type;
65 } 66 }
66 67
67 SVGElement* contextElement() const 68 SVGElement* contextElement() const
68 { 69 {
69 return m_contextElement; 70 return m_contextElement;
70 } 71 }
71 72
72 const QualifiedName& attributeName() const 73 const QualifiedName& attributeName() const
73 { 74 {
74 return m_attributeName; 75 return m_attributeName;
75 } 76 }
76 77
77 bool isAnimating() const
78 {
79 return m_isAnimating;
80 }
81
82 bool isReadOnly() const 78 bool isReadOnly() const
83 { 79 {
84 return m_isReadOnly; 80 return m_isReadOnly;
85 } 81 }
86 82
87 void setReadOnly() 83 void setReadOnly()
88 { 84 {
89 m_isReadOnly = true; 85 m_isReadOnly = true;
90 } 86 }
91 87
92 bool isSpecified() const; 88 bool isSpecified() const;
93 89
94 protected: 90 protected:
95 SVGAnimatedPropertyBase(AnimatedPropertyType, SVGElement*, const QualifiedNa me& attributeName); 91 SVGAnimatedPropertyBase(AnimatedPropertyType, SVGElement*, const QualifiedNa me& attributeName);
96 92
97 private: 93 private:
98 const AnimatedPropertyType m_type; 94 const AnimatedPropertyType m_type;
99 bool m_isReadOnly; 95 bool m_isReadOnly;
100 bool m_isAnimating;
101 96
102 // This reference is kept alive from V8 wrapper 97 // This reference is kept alive from V8 wrapper
103 SVGElement* m_contextElement; 98 SVGElement* m_contextElement;
104 99
105 const QualifiedName& m_attributeName; 100 const QualifiedName& m_attributeName;
106 101
107 WTF_MAKE_NONCOPYABLE(SVGAnimatedPropertyBase); 102 WTF_MAKE_NONCOPYABLE(SVGAnimatedPropertyBase);
108 }; 103 };
109 104
110 template <typename Property> 105 template <typename Property>
(...skipping 12 matching lines...) Expand all
123 const Property* currentValue() const 118 const Property* currentValue() const
124 { 119 {
125 return const_cast<SVGAnimatedPropertyCommon*>(this)->currentValue(); 120 return const_cast<SVGAnimatedPropertyCommon*>(this)->currentValue();
126 } 121 }
127 122
128 virtual SVGPropertyBase* currentValueBase() OVERRIDE 123 virtual SVGPropertyBase* currentValueBase() OVERRIDE
129 { 124 {
130 return currentValue(); 125 return currentValue();
131 } 126 }
132 127
128 virtual bool isAnimating() const OVERRIDE
129 {
130 return m_currentValue;
131 }
132
133 void setBaseValueAsString(const String& value, SVGParsingError& parseError) 133 void setBaseValueAsString(const String& value, SVGParsingError& parseError)
134 { 134 {
135 TrackExceptionState es; 135 TrackExceptionState es;
136 136
137 m_baseValue->setValueAsString(value, es); 137 m_baseValue->setValueAsString(value, es);
138 138
139 if (es.hadException()) 139 if (es.hadException())
140 parseError = ParsingAttributeFailedError; 140 parseError = ParsingAttributeFailedError;
141 } 141 }
142 142
143 virtual PassRefPtr<SVGPropertyBase> createAnimatedValue() OVERRIDE 143 virtual PassRefPtr<SVGPropertyBase> createAnimatedValue() OVERRIDE
144 { 144 {
145 return m_baseValue->clone(); 145 return m_baseValue->clone();
146 } 146 }
147 147
148 virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase> passValue) OVERRID E 148 virtual void setAnimatedValue(PassRefPtr<SVGPropertyBase> passValue) OVERRID E
149 { 149 {
150 ASSERT(isAnimating());
151
152 RefPtr<SVGPropertyBase> value = passValue; 150 RefPtr<SVGPropertyBase> value = passValue;
153 ASSERT(value->type() == Property::classType()); 151 ASSERT(value->type() == Property::classType());
154 m_currentValue = static_pointer_cast<Property>(value.release()); 152 m_currentValue = static_pointer_cast<Property>(value.release());
155 } 153 }
156 154
157 virtual void animationEnded() OVERRIDE 155 virtual void animationEnded() OVERRIDE
158 { 156 {
159 ASSERT(m_currentValue);
160 m_currentValue.clear(); 157 m_currentValue.clear();
161 158
162 SVGAnimatedPropertyBase::animationEnded(); 159 SVGAnimatedPropertyBase::animationEnded();
163 } 160 }
164 161
165 protected: 162 protected:
166 SVGAnimatedPropertyCommon(SVGElement* contextElement, const QualifiedName& a ttributeName, PassRefPtr<Property> initialValue) 163 SVGAnimatedPropertyCommon(SVGElement* contextElement, const QualifiedName& a ttributeName, PassRefPtr<Property> initialValue)
167 : SVGAnimatedPropertyBase(Property::classType(), contextElement, attribu teName) 164 : SVGAnimatedPropertyBase(Property::classType(), contextElement, attribu teName)
168 , m_baseValue(initialValue) 165 , m_baseValue(initialValue)
169 { 166 {
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
304 // When animated: 301 // When animated:
305 // m_animValTearOff targets m_currentValue. 302 // m_animValTearOff targets m_currentValue.
306 // m_baseValTearOff targets m_baseValue. 303 // m_baseValTearOff targets m_baseValue.
307 RefPtr<TearOffType> m_baseValTearOff; 304 RefPtr<TearOffType> m_baseValTearOff;
308 RefPtr<TearOffType> m_animValTearOff; 305 RefPtr<TearOffType> m_animValTearOff;
309 }; 306 };
310 307
311 } 308 }
312 309
313 #endif // SVGAnimatedProperty_h 310 #endif // SVGAnimatedProperty_h
OLDNEW
« no previous file with comments | « Source/core/svg/SVGStaticStringList.cpp ('k') | Source/core/svg/properties/SVGAnimatedProperty.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698