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

Side by Side Diff: Source/core/animation/AnimationTest.cpp

Issue 225073004: Oilpan: Completely move core/animations/ to oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/animation/Animation.h" 6 #include "core/animation/Animation.h"
7 7
8 #include "bindings/v8/Dictionary.h" 8 #include "bindings/v8/Dictionary.h"
9 #include "core/animation/AnimatableLength.h" 9 #include "core/animation/AnimatableLength.h"
10 #include "core/animation/AnimationClock.h" 10 #include "core/animation/AnimationClock.h"
(...skipping 26 matching lines...) Expand all
37 37
38 class AnimationAnimationV8Test : public AnimationAnimationTest { 38 class AnimationAnimationV8Test : public AnimationAnimationTest {
39 protected: 39 protected:
40 AnimationAnimationV8Test() 40 AnimationAnimationV8Test()
41 : m_isolate(v8::Isolate::GetCurrent()) 41 : m_isolate(v8::Isolate::GetCurrent())
42 , m_scope(V8ExecutionScope::create(m_isolate)) 42 , m_scope(V8ExecutionScope::create(m_isolate))
43 { 43 {
44 } 44 }
45 45
46 template<typename T> 46 template<typename T>
47 static PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictio nary> keyframeDictionaryVector, T timingInput, ExceptionState& exceptionState) 47 static PassRefPtrWillBeRawPtr<Animation> createAnimation(Element* element, V ector<Dictionary> keyframeDictionaryVector, T timingInput, ExceptionState& excep tionState)
48 { 48 {
49 return Animation::create(element, EffectInput::convert(element, keyframe DictionaryVector, exceptionState, true), timingInput); 49 return Animation::create(element, EffectInput::convert(element, keyframe DictionaryVector, exceptionState, true), timingInput);
50 } 50 }
51 static PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictio nary> keyframeDictionaryVector, ExceptionState& exceptionState) 51 static PassRefPtrWillBeRawPtr<Animation> createAnimation(Element* element, V ector<Dictionary> keyframeDictionaryVector, ExceptionState& exceptionState)
52 { 52 {
53 return Animation::create(element, EffectInput::convert(element, keyframe DictionaryVector, exceptionState, true)); 53 return Animation::create(element, EffectInput::convert(element, keyframe DictionaryVector, exceptionState, true));
54 } 54 }
55 55
56 v8::Isolate* m_isolate; 56 v8::Isolate* m_isolate;
57 57
58 private: 58 private:
59 OwnPtr<V8ExecutionScope> m_scope; 59 OwnPtr<V8ExecutionScope> m_scope;
60 }; 60 };
61 61
(...skipping 14 matching lines...) Expand all
76 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); 76 jsKeyframes.append(Dictionary(keyframe2, m_isolate));
77 77
78 String value1; 78 String value1;
79 ASSERT_TRUE(jsKeyframes[0].get("width", value1)); 79 ASSERT_TRUE(jsKeyframes[0].get("width", value1));
80 ASSERT_EQ("100px", value1); 80 ASSERT_EQ("100px", value1);
81 81
82 String value2; 82 String value2;
83 ASSERT_TRUE(jsKeyframes[1].get("width", value2)); 83 ASSERT_TRUE(jsKeyframes[1].get("width", value2));
84 ASSERT_EQ("0px", value2); 84 ASSERT_EQ("0px", value2);
85 85
86 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0, exceptionState); 86 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, 0, exceptionState);
87 87
88 Element* target = animation->target(); 88 Element* target = animation->target();
89 EXPECT_EQ(*element.get(), *target); 89 EXPECT_EQ(*element.get(), *target);
90 90
91 const KeyframeVector keyframes = toKeyframeEffectModelBase(animation->effect ())->getFrames(); 91 const KeyframeVector keyframes = toKeyframeEffectModelBase(animation->effect ())->getFrames();
92 92
93 EXPECT_EQ(0, keyframes[0]->offset()); 93 EXPECT_EQ(0, keyframes[0]->offset());
94 EXPECT_EQ(1, keyframes[1]->offset()); 94 EXPECT_EQ(1, keyframes[1]->offset());
95 95
96 const CSSValue* keyframe1Width = toStringKeyframe(keyframes[0].get())->prope rtyValue(CSSPropertyWidth); 96 const CSSValue* keyframe1Width = toStringKeyframe(keyframes[0].get())->prope rtyValue(CSSPropertyWidth);
97 const CSSValue* keyframe2Width = toStringKeyframe(keyframes[1].get())->prope rtyValue(CSSPropertyWidth); 97 const CSSValue* keyframe2Width = toStringKeyframe(keyframes[1].get())->prope rtyValue(CSSPropertyWidth);
98 ASSERT(keyframe1Width); 98 ASSERT(keyframe1Width);
99 ASSERT(keyframe2Width); 99 ASSERT(keyframe2Width);
100 100
101 EXPECT_EQ("100px", keyframe1Width->cssText()); 101 EXPECT_EQ("100px", keyframe1Width->cssText());
102 EXPECT_EQ("0px", keyframe2Width->cssText()); 102 EXPECT_EQ("0px", keyframe2Width->cssText());
103 103
104 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eInOut)), *keyframes[0]->easing()); 104 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eInOut)), *keyframes[0]->easing());
105 EXPECT_EQ(*(CubicBezierTimingFunction::create(1, 1, 0.3, 0.3).get()), *keyfr ames[1]->easing()); 105 EXPECT_EQ(*(CubicBezierTimingFunction::create(1, 1, 0.3, 0.3).get()), *keyfr ames[1]->easing());
106 } 106 }
107 107
108 TEST_F(AnimationAnimationV8Test, CanSetDuration) 108 TEST_F(AnimationAnimationV8Test, CanSetDuration)
109 { 109 {
110 Vector<Dictionary, 0> jsKeyframes; 110 Vector<Dictionary, 0> jsKeyframes;
111 double duration = 2000; 111 double duration = 2000;
112 112
113 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, du ration, exceptionState); 113 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, duration, exceptionState);
114 114
115 EXPECT_EQ(duration / 1000, animation->specifiedTiming().iterationDuration); 115 EXPECT_EQ(duration / 1000, animation->specifiedTiming().iterationDuration);
116 } 116 }
117 117
118 TEST_F(AnimationAnimationV8Test, CanOmitSpecifiedDuration) 118 TEST_F(AnimationAnimationV8Test, CanOmitSpecifiedDuration)
119 { 119 {
120 Vector<Dictionary, 0> jsKeyframes; 120 Vector<Dictionary, 0> jsKeyframes;
121 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ex ceptionState); 121 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, exceptionState);
122 EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration)); 122 EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration));
123 } 123 }
124 124
125 TEST_F(AnimationAnimationV8Test, NegativeDurationIsAuto) 125 TEST_F(AnimationAnimationV8Test, NegativeDurationIsAuto)
126 { 126 {
127 Vector<Dictionary, 0> jsKeyframes; 127 Vector<Dictionary, 0> jsKeyframes;
128 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, -2 , exceptionState); 128 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, -2, exceptionState);
129 EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration)); 129 EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration));
130 } 130 }
131 131
132 TEST_F(AnimationAnimationV8Test, MismatchedKeyframePropertyRaisesException) 132 TEST_F(AnimationAnimationV8Test, MismatchedKeyframePropertyRaisesException)
133 { 133 {
134 Vector<Dictionary> jsKeyframes; 134 Vector<Dictionary> jsKeyframes;
135 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); 135 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate);
136 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); 136 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate);
137 137
138 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); 138 setV8ObjectPropertyAsString(keyframe1, "width", "100px");
139 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); 139 setV8ObjectPropertyAsString(keyframe1, "offset", "0");
140 140
141 // Height property appears only in keyframe2 141 // Height property appears only in keyframe2
142 setV8ObjectPropertyAsString(keyframe2, "height", "100px"); 142 setV8ObjectPropertyAsString(keyframe2, "height", "100px");
143 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); 143 setV8ObjectPropertyAsString(keyframe2, "width", "0px");
144 setV8ObjectPropertyAsString(keyframe2, "offset", "1"); 144 setV8ObjectPropertyAsString(keyframe2, "offset", "1");
145 145
146 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); 146 jsKeyframes.append(Dictionary(keyframe1, m_isolate));
147 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); 147 jsKeyframes.append(Dictionary(keyframe2, m_isolate));
148 148
149 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0, exceptionState); 149 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, 0, exceptionState);
150 150
151 EXPECT_TRUE(exceptionState.hadException()); 151 EXPECT_TRUE(exceptionState.hadException());
152 EXPECT_EQ(NotSupportedError, exceptionState.code()); 152 EXPECT_EQ(NotSupportedError, exceptionState.code());
153 } 153 }
154 154
155 TEST_F(AnimationAnimationV8Test, MissingOffsetZeroRaisesException) 155 TEST_F(AnimationAnimationV8Test, MissingOffsetZeroRaisesException)
156 { 156 {
157 Vector<Dictionary> jsKeyframes; 157 Vector<Dictionary> jsKeyframes;
158 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); 158 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate);
159 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); 159 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate);
160 160
161 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); 161 setV8ObjectPropertyAsString(keyframe1, "width", "100px");
162 setV8ObjectPropertyAsString(keyframe1, "offset", "0.1"); 162 setV8ObjectPropertyAsString(keyframe1, "offset", "0.1");
163 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); 163 setV8ObjectPropertyAsString(keyframe2, "width", "0px");
164 setV8ObjectPropertyAsString(keyframe2, "offset", "1"); 164 setV8ObjectPropertyAsString(keyframe2, "offset", "1");
165 165
166 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); 166 jsKeyframes.append(Dictionary(keyframe1, m_isolate));
167 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); 167 jsKeyframes.append(Dictionary(keyframe2, m_isolate));
168 168
169 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0, exceptionState); 169 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, 0, exceptionState);
170 170
171 EXPECT_TRUE(exceptionState.hadException()); 171 EXPECT_TRUE(exceptionState.hadException());
172 EXPECT_EQ(NotSupportedError, exceptionState.code()); 172 EXPECT_EQ(NotSupportedError, exceptionState.code());
173 } 173 }
174 174
175 TEST_F(AnimationAnimationV8Test, MissingOffsetOneRaisesException) 175 TEST_F(AnimationAnimationV8Test, MissingOffsetOneRaisesException)
176 { 176 {
177 Vector<Dictionary> jsKeyframes; 177 Vector<Dictionary> jsKeyframes;
178 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); 178 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate);
179 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); 179 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate);
180 180
181 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); 181 setV8ObjectPropertyAsString(keyframe1, "width", "100px");
182 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); 182 setV8ObjectPropertyAsString(keyframe1, "offset", "0");
183 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); 183 setV8ObjectPropertyAsString(keyframe2, "width", "0px");
184 setV8ObjectPropertyAsString(keyframe2, "offset", "0.1"); 184 setV8ObjectPropertyAsString(keyframe2, "offset", "0.1");
185 185
186 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); 186 jsKeyframes.append(Dictionary(keyframe1, m_isolate));
187 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); 187 jsKeyframes.append(Dictionary(keyframe2, m_isolate));
188 188
189 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0, exceptionState); 189 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, 0, exceptionState);
190 190
191 EXPECT_TRUE(exceptionState.hadException()); 191 EXPECT_TRUE(exceptionState.hadException());
192 EXPECT_EQ(NotSupportedError, exceptionState.code()); 192 EXPECT_EQ(NotSupportedError, exceptionState.code());
193 } 193 }
194 194
195 TEST_F(AnimationAnimationV8Test, MissingOffsetZeroAndOneRaisesException) 195 TEST_F(AnimationAnimationV8Test, MissingOffsetZeroAndOneRaisesException)
196 { 196 {
197 Vector<Dictionary> jsKeyframes; 197 Vector<Dictionary> jsKeyframes;
198 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); 198 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate);
199 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); 199 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate);
200 200
201 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); 201 setV8ObjectPropertyAsString(keyframe1, "width", "100px");
202 setV8ObjectPropertyAsString(keyframe1, "offset", "0.1"); 202 setV8ObjectPropertyAsString(keyframe1, "offset", "0.1");
203 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); 203 setV8ObjectPropertyAsString(keyframe2, "width", "0px");
204 setV8ObjectPropertyAsString(keyframe2, "offset", "0.2"); 204 setV8ObjectPropertyAsString(keyframe2, "offset", "0.2");
205 205
206 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); 206 jsKeyframes.append(Dictionary(keyframe1, m_isolate));
207 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); 207 jsKeyframes.append(Dictionary(keyframe2, m_isolate));
208 208
209 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0, exceptionState); 209 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, 0, exceptionState);
210 210
211 EXPECT_TRUE(exceptionState.hadException()); 211 EXPECT_TRUE(exceptionState.hadException());
212 EXPECT_EQ(NotSupportedError, exceptionState.code()); 212 EXPECT_EQ(NotSupportedError, exceptionState.code());
213 } 213 }
214 214
215 TEST_F(AnimationAnimationV8Test, SpecifiedGetters) 215 TEST_F(AnimationAnimationV8Test, SpecifiedGetters)
216 { 216 {
217 Vector<Dictionary, 0> jsKeyframes; 217 Vector<Dictionary, 0> jsKeyframes;
218 218
219 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); 219 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
220 setV8ObjectPropertyAsNumber(timingInput, "delay", 2); 220 setV8ObjectPropertyAsNumber(timingInput, "delay", 2);
221 setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5); 221 setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5);
222 setV8ObjectPropertyAsString(timingInput, "fill", "backwards"); 222 setV8ObjectPropertyAsString(timingInput, "fill", "backwards");
223 setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2); 223 setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2);
224 setV8ObjectPropertyAsNumber(timingInput, "iterations", 10); 224 setV8ObjectPropertyAsNumber(timingInput, "iterations", 10);
225 setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2); 225 setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2);
226 setV8ObjectPropertyAsString(timingInput, "direction", "reverse"); 226 setV8ObjectPropertyAsString(timingInput, "direction", "reverse");
227 setV8ObjectPropertyAsString(timingInput, "easing", "step-start"); 227 setV8ObjectPropertyAsString(timingInput, "easing", "step-start");
228 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate); 228 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate);
229 229
230 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary, exceptionState); 230 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState);
231 231
232 RefPtr<TimedItemTiming> specified = animation->timing(); 232 RefPtrWillBeRawPtr<TimedItemTiming> specified = animation->timing();
233 EXPECT_EQ(2, specified->delay()); 233 EXPECT_EQ(2, specified->delay());
234 EXPECT_EQ(0.5, specified->endDelay()); 234 EXPECT_EQ(0.5, specified->endDelay());
235 EXPECT_EQ("backwards", specified->fill()); 235 EXPECT_EQ("backwards", specified->fill());
236 EXPECT_EQ(2, specified->iterationStart()); 236 EXPECT_EQ(2, specified->iterationStart());
237 EXPECT_EQ(10, specified->iterations()); 237 EXPECT_EQ(10, specified->iterations());
238 EXPECT_EQ(2, specified->playbackRate()); 238 EXPECT_EQ(2, specified->playbackRate());
239 EXPECT_EQ("reverse", specified->direction()); 239 EXPECT_EQ("reverse", specified->direction());
240 EXPECT_EQ("step-start", specified->easing()); 240 EXPECT_EQ("step-start", specified->easing());
241 } 241 }
242 242
243 TEST_F(AnimationAnimationV8Test, SpecifiedDurationGetter) 243 TEST_F(AnimationAnimationV8Test, SpecifiedDurationGetter)
244 { 244 {
245 Vector<Dictionary, 0> jsKeyframes; 245 Vector<Dictionary, 0> jsKeyframes;
246 246
247 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate); 247 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate);
248 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); 248 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5);
249 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val ue>::Cast(timingInputWithDuration), m_isolate); 249 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val ue>::Cast(timingInputWithDuration), m_isolate);
250 250
251 RefPtr<Animation> animationWithDuration = createAnimation(element.get(), jsK eyframes, timingInputDictionaryWithDuration, exceptionState); 251 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState);
252 252
253 RefPtr<TimedItemTiming> specifiedWithDuration = animationWithDuration->timin g(); 253 RefPtrWillBeRawPtr<TimedItemTiming> specifiedWithDuration = animationWithDur ation->timing();
254 bool isNumber = false; 254 bool isNumber = false;
255 double numberDuration = std::numeric_limits<double>::quiet_NaN(); 255 double numberDuration = std::numeric_limits<double>::quiet_NaN();
256 bool isString = false; 256 bool isString = false;
257 String stringDuration = ""; 257 String stringDuration = "";
258 specifiedWithDuration->getDuration("duration", isNumber, numberDuration, isS tring, stringDuration); 258 specifiedWithDuration->getDuration("duration", isNumber, numberDuration, isS tring, stringDuration);
259 EXPECT_TRUE(isNumber); 259 EXPECT_TRUE(isNumber);
260 EXPECT_EQ(2.5, numberDuration); 260 EXPECT_EQ(2.5, numberDuration);
261 EXPECT_FALSE(isString); 261 EXPECT_FALSE(isString);
262 EXPECT_EQ("", stringDuration); 262 EXPECT_EQ("", stringDuration);
263 263
264 264
265 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate); 265 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate);
266 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value >::Cast(timingInputNoDuration), m_isolate); 266 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value >::Cast(timingInputNoDuration), m_isolate);
267 267
268 RefPtr<Animation> animationNoDuration = createAnimation(element.get(), jsKey frames, timingInputDictionaryNoDuration, exceptionState); 268 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element. get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState);
269 269
270 RefPtr<TimedItemTiming> specifiedNoDuration = animationNoDuration->timing(); 270 RefPtrWillBeRawPtr<TimedItemTiming> specifiedNoDuration = animationNoDuratio n->timing();
271 isNumber = false; 271 isNumber = false;
272 numberDuration = std::numeric_limits<double>::quiet_NaN(); 272 numberDuration = std::numeric_limits<double>::quiet_NaN();
273 isString = false; 273 isString = false;
274 stringDuration = ""; 274 stringDuration = "";
275 specifiedNoDuration->getDuration("duration", isNumber, numberDuration, isStr ing, stringDuration); 275 specifiedNoDuration->getDuration("duration", isNumber, numberDuration, isStr ing, stringDuration);
276 EXPECT_FALSE(isNumber); 276 EXPECT_FALSE(isNumber);
277 EXPECT_TRUE(std::isnan(numberDuration)); 277 EXPECT_TRUE(std::isnan(numberDuration));
278 EXPECT_TRUE(isString); 278 EXPECT_TRUE(isString);
279 EXPECT_EQ("auto", stringDuration); 279 EXPECT_EQ("auto", stringDuration);
280 } 280 }
281 281
282 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) 282 TEST_F(AnimationAnimationV8Test, SpecifiedSetters)
283 { 283 {
284 Vector<Dictionary, 0> jsKeyframes; 284 Vector<Dictionary, 0> jsKeyframes;
285 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); 285 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
286 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate); 286 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate);
287 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary, exceptionState); 287 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState);
288 288
289 RefPtr<TimedItemTiming> specified = animation->timing(); 289 RefPtrWillBeRawPtr<TimedItemTiming> specified = animation->timing();
290 290
291 EXPECT_EQ(0, specified->delay()); 291 EXPECT_EQ(0, specified->delay());
292 specified->setDelay(2); 292 specified->setDelay(2);
293 EXPECT_EQ(2, specified->delay()); 293 EXPECT_EQ(2, specified->delay());
294 294
295 EXPECT_EQ(0, specified->endDelay()); 295 EXPECT_EQ(0, specified->endDelay());
296 specified->setEndDelay(0.5); 296 specified->setEndDelay(0.5);
297 EXPECT_EQ(0.5, specified->endDelay()); 297 EXPECT_EQ(0.5, specified->endDelay());
298 298
299 EXPECT_EQ("auto", specified->fill()); 299 EXPECT_EQ("auto", specified->fill());
(...skipping 19 matching lines...) Expand all
319 EXPECT_EQ("linear", specified->easing()); 319 EXPECT_EQ("linear", specified->easing());
320 specified->setEasing("step-start"); 320 specified->setEasing("step-start");
321 EXPECT_EQ("step-start", specified->easing()); 321 EXPECT_EQ("step-start", specified->easing());
322 } 322 }
323 323
324 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) 324 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration)
325 { 325 {
326 Vector<Dictionary, 0> jsKeyframes; 326 Vector<Dictionary, 0> jsKeyframes;
327 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); 327 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
328 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate); 328 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate);
329 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary, exceptionState); 329 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState);
330 330
331 RefPtr<TimedItemTiming> specified = animation->timing(); 331 RefPtrWillBeRawPtr<TimedItemTiming> specified = animation->timing();
332 332
333 bool isNumber = false; 333 bool isNumber = false;
334 double numberDuration = std::numeric_limits<double>::quiet_NaN(); 334 double numberDuration = std::numeric_limits<double>::quiet_NaN();
335 bool isString = false; 335 bool isString = false;
336 String stringDuration = ""; 336 String stringDuration = "";
337 specified->getDuration("duration", isNumber, numberDuration, isString, strin gDuration); 337 specified->getDuration("duration", isNumber, numberDuration, isString, strin gDuration);
338 EXPECT_FALSE(isNumber); 338 EXPECT_FALSE(isNumber);
339 EXPECT_TRUE(std::isnan(numberDuration)); 339 EXPECT_TRUE(std::isnan(numberDuration));
340 EXPECT_TRUE(isString); 340 EXPECT_TRUE(isString);
341 EXPECT_EQ("auto", stringDuration); 341 EXPECT_EQ("auto", stringDuration);
(...skipping 10 matching lines...) Expand all
352 EXPECT_EQ("", stringDuration); 352 EXPECT_EQ("", stringDuration);
353 } 353 }
354 354
355 TEST_F(AnimationAnimationTest, TimeToEffectChange) 355 TEST_F(AnimationAnimationTest, TimeToEffectChange)
356 { 356 {
357 Timing timing; 357 Timing timing;
358 timing.iterationDuration = 100; 358 timing.iterationDuration = 100;
359 timing.startDelay = 100; 359 timing.startDelay = 100;
360 timing.endDelay = 100; 360 timing.endDelay = 100;
361 timing.fillMode = Timing::FillModeNone; 361 timing.fillMode = Timing::FillModeNone;
362 RefPtr<Animation> animation = Animation::create(0, nullptr, timing); 362 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi ng);
363 RefPtr<AnimationPlayer> player = document->timeline().play(animation.get()); 363 RefPtrWillBeRawPtr<AnimationPlayer> player = document->timeline().play(anima tion.get());
364 double inf = std::numeric_limits<double>::infinity(); 364 double inf = std::numeric_limits<double>::infinity();
365 365
366 EXPECT_EQ(100, animation->timeToForwardsEffectChange()); 366 EXPECT_EQ(100, animation->timeToForwardsEffectChange());
367 EXPECT_EQ(inf, animation->timeToReverseEffectChange()); 367 EXPECT_EQ(inf, animation->timeToReverseEffectChange());
368 368
369 player->setCurrentTimeInternal(100); 369 player->setCurrentTimeInternal(100);
370 EXPECT_EQ(0, animation->timeToForwardsEffectChange()); 370 EXPECT_EQ(0, animation->timeToForwardsEffectChange());
371 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 371 EXPECT_EQ(0, animation->timeToReverseEffectChange());
372 372
373 player->setCurrentTimeInternal(199); 373 player->setCurrentTimeInternal(199);
(...skipping 11 matching lines...) Expand all
385 } 385 }
386 386
387 TEST_F(AnimationAnimationTest, TimeToEffectChangeWithPlaybackRate) 387 TEST_F(AnimationAnimationTest, TimeToEffectChangeWithPlaybackRate)
388 { 388 {
389 Timing timing; 389 Timing timing;
390 timing.iterationDuration = 100; 390 timing.iterationDuration = 100;
391 timing.startDelay = 100; 391 timing.startDelay = 100;
392 timing.endDelay = 100; 392 timing.endDelay = 100;
393 timing.playbackRate = 2; 393 timing.playbackRate = 2;
394 timing.fillMode = Timing::FillModeNone; 394 timing.fillMode = Timing::FillModeNone;
395 RefPtr<Animation> animation = Animation::create(0, nullptr, timing); 395 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi ng);
396 RefPtr<AnimationPlayer> player = document->timeline().play(animation.get()); 396 RefPtrWillBeRawPtr<AnimationPlayer> player = document->timeline().play(anima tion.get());
397 double inf = std::numeric_limits<double>::infinity(); 397 double inf = std::numeric_limits<double>::infinity();
398 398
399 EXPECT_EQ(100, animation->timeToForwardsEffectChange()); 399 EXPECT_EQ(100, animation->timeToForwardsEffectChange());
400 EXPECT_EQ(inf, animation->timeToReverseEffectChange()); 400 EXPECT_EQ(inf, animation->timeToReverseEffectChange());
401 401
402 player->setCurrentTimeInternal(100); 402 player->setCurrentTimeInternal(100);
403 EXPECT_EQ(0, animation->timeToForwardsEffectChange()); 403 EXPECT_EQ(0, animation->timeToForwardsEffectChange());
404 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 404 EXPECT_EQ(0, animation->timeToReverseEffectChange());
405 405
406 player->setCurrentTimeInternal(149); 406 player->setCurrentTimeInternal(149);
(...skipping 11 matching lines...) Expand all
418 } 418 }
419 419
420 TEST_F(AnimationAnimationTest, TimeToEffectChangeWithNegativePlaybackRate) 420 TEST_F(AnimationAnimationTest, TimeToEffectChangeWithNegativePlaybackRate)
421 { 421 {
422 Timing timing; 422 Timing timing;
423 timing.iterationDuration = 100; 423 timing.iterationDuration = 100;
424 timing.startDelay = 100; 424 timing.startDelay = 100;
425 timing.endDelay = 100; 425 timing.endDelay = 100;
426 timing.playbackRate = -2; 426 timing.playbackRate = -2;
427 timing.fillMode = Timing::FillModeNone; 427 timing.fillMode = Timing::FillModeNone;
428 RefPtr<Animation> animation = Animation::create(0, nullptr, timing); 428 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi ng);
429 RefPtr<AnimationPlayer> player = document->timeline().play(animation.get()); 429 RefPtrWillBeRawPtr<AnimationPlayer> player = document->timeline().play(anima tion.get());
430 double inf = std::numeric_limits<double>::infinity(); 430 double inf = std::numeric_limits<double>::infinity();
431 431
432 EXPECT_EQ(100, animation->timeToForwardsEffectChange()); 432 EXPECT_EQ(100, animation->timeToForwardsEffectChange());
433 EXPECT_EQ(inf, animation->timeToReverseEffectChange()); 433 EXPECT_EQ(inf, animation->timeToReverseEffectChange());
434 434
435 player->setCurrentTimeInternal(100); 435 player->setCurrentTimeInternal(100);
436 EXPECT_EQ(0, animation->timeToForwardsEffectChange()); 436 EXPECT_EQ(0, animation->timeToForwardsEffectChange());
437 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 437 EXPECT_EQ(0, animation->timeToReverseEffectChange());
438 438
439 player->setCurrentTimeInternal(149); 439 player->setCurrentTimeInternal(149);
440 EXPECT_EQ(0, animation->timeToForwardsEffectChange()); 440 EXPECT_EQ(0, animation->timeToForwardsEffectChange());
441 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 441 EXPECT_EQ(0, animation->timeToReverseEffectChange());
442 442
443 player->setCurrentTimeInternal(150); 443 player->setCurrentTimeInternal(150);
444 EXPECT_EQ(inf, animation->timeToForwardsEffectChange()); 444 EXPECT_EQ(inf, animation->timeToForwardsEffectChange());
445 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 445 EXPECT_EQ(0, animation->timeToReverseEffectChange());
446 446
447 player->setCurrentTimeInternal(200); 447 player->setCurrentTimeInternal(200);
448 EXPECT_EQ(inf, animation->timeToForwardsEffectChange()); 448 EXPECT_EQ(inf, animation->timeToForwardsEffectChange());
449 EXPECT_EQ(50, animation->timeToReverseEffectChange()); 449 EXPECT_EQ(50, animation->timeToReverseEffectChange());
450 } 450 }
451 451
452 TEST_F(AnimationAnimationTest, ElementDestructorClearsAnimationTarget) 452 TEST_F(AnimationAnimationTest, ElementDestructorClearsAnimationTarget)
453 { 453 {
454 // This test expects incorrect behaviour should be removed once Element 454 // This test expects incorrect behaviour should be removed once Element
455 // and Animation are moved to Oilpan. See crbug.com/362404 for context. 455 // and Animation are moved to Oilpan. See crbug.com/362404 for context.
456 Timing timing; 456 Timing timing;
457 timing.iterationDuration = 5; 457 timing.iterationDuration = 5;
458 RefPtr<Animation> animation = Animation::create(element.get(), nullptr, timi ng); 458 RefPtrWillBeRawPtr<Animation> animation = Animation::create(element.get(), n ullptr, timing);
459 EXPECT_EQ(element.get(), animation->target()); 459 EXPECT_EQ(element.get(), animation->target());
460 RefPtr<AnimationPlayer> player = document->timeline().play(animation.get()); 460 RefPtrWillBeRawPtr<AnimationPlayer> player = document->timeline().play(anima tion.get());
461 document.clear(); 461 document.clear();
462 element.clear(); 462 element.clear();
463 Heap::collectAllGarbage(); 463 Heap::collectAllGarbage();
464 EXPECT_EQ(0, animation->target()); 464 EXPECT_EQ(0, animation->target());
465 } 465 }
466 466
467 } // namespace WebCore 467 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698