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

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

Issue 947923002: Add AnimationTimingProperties dictionary (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 10 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
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/core/v8/Dictionary.h" 8 #include "bindings/core/v8/Dictionary.h"
9 #include "bindings/core/v8/UnionTypesCore.h" 9 #include "bindings/core/v8/UnionTypesCore.h"
10 #include "bindings/core/v8/V8AnimationTimingProperties.h"
10 #include "core/animation/AnimationClock.h" 11 #include "core/animation/AnimationClock.h"
11 #include "core/animation/AnimationNodeTiming.h" 12 #include "core/animation/AnimationNodeTiming.h"
12 #include "core/animation/AnimationTestHelper.h" 13 #include "core/animation/AnimationTestHelper.h"
13 #include "core/animation/AnimationTimeline.h" 14 #include "core/animation/AnimationTimeline.h"
14 #include "core/animation/KeyframeEffectModel.h" 15 #include "core/animation/KeyframeEffectModel.h"
15 #include "core/animation/Timing.h" 16 #include "core/animation/Timing.h"
16 #include "core/dom/Document.h" 17 #include "core/dom/Document.h"
17 #include "core/dom/ExceptionCode.h" 18 #include "core/dom/ExceptionCode.h"
18 #include "core/testing/DummyPageHolder.h" 19 #include "core/testing/DummyPageHolder.h"
19 #include <gtest/gtest.h> 20 #include <gtest/gtest.h>
(...skipping 22 matching lines...) Expand all
42 protected: 43 protected:
43 AnimationAnimationV8Test() 44 AnimationAnimationV8Test()
44 : m_isolate(v8::Isolate::GetCurrent()) 45 : m_isolate(v8::Isolate::GetCurrent())
45 , m_scope(m_isolate) 46 , m_scope(m_isolate)
46 { 47 {
47 } 48 }
48 49
49 template<typename T> 50 template<typename T>
50 static PassRefPtrWillBeRawPtr<Animation> createAnimation(Element* element, V ector<Dictionary> keyframeDictionaryVector, T timingInput, ExceptionState& excep tionState) 51 static PassRefPtrWillBeRawPtr<Animation> createAnimation(Element* element, V ector<Dictionary> keyframeDictionaryVector, T timingInput, ExceptionState& excep tionState)
51 { 52 {
52 return Animation::create(element, EffectInput::convert(element, keyframe DictionaryVector, exceptionState), timingInput); 53 return Animation::create(element, keyframeDictionaryVector, timingInput, exceptionState);
53 } 54 }
54 static PassRefPtrWillBeRawPtr<Animation> createAnimation(Element* element, V ector<Dictionary> keyframeDictionaryVector, ExceptionState& exceptionState) 55 static PassRefPtrWillBeRawPtr<Animation> createAnimation(Element* element, V ector<Dictionary> keyframeDictionaryVector, ExceptionState& exceptionState)
55 { 56 {
56 return Animation::create(element, EffectInput::convert(element, keyframe DictionaryVector, exceptionState)); 57 return Animation::create(element, keyframeDictionaryVector, exceptionSta te);
57 } 58 }
58 59
59 v8::Isolate* m_isolate; 60 v8::Isolate* m_isolate;
60 61
61 private: 62 private:
62 V8TestingScope m_scope; 63 V8TestingScope m_scope;
63 }; 64 };
64 65
65 TEST_F(AnimationAnimationV8Test, CanCreateAnAnimation) 66 TEST_F(AnimationAnimationV8Test, CanCreateAnAnimation)
66 { 67 {
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
221 222
222 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); 223 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
223 setV8ObjectPropertyAsNumber(timingInput, "delay", 2); 224 setV8ObjectPropertyAsNumber(timingInput, "delay", 2);
224 setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5); 225 setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5);
225 setV8ObjectPropertyAsString(timingInput, "fill", "backwards"); 226 setV8ObjectPropertyAsString(timingInput, "fill", "backwards");
226 setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2); 227 setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2);
227 setV8ObjectPropertyAsNumber(timingInput, "iterations", 10); 228 setV8ObjectPropertyAsNumber(timingInput, "iterations", 10);
228 setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2); 229 setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2);
229 setV8ObjectPropertyAsString(timingInput, "direction", "reverse"); 230 setV8ObjectPropertyAsString(timingInput, "direction", "reverse");
230 setV8ObjectPropertyAsString(timingInput, "easing", "step-start"); 231 setV8ObjectPropertyAsString(timingInput, "easing", "step-start");
231 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate, exceptionState); 232 AnimationTimingProperties timingInputDictionary;
233 V8AnimationTimingProperties::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
232 234
233 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState); 235 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState);
234 236
235 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); 237 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing();
236 EXPECT_EQ(2, specified->delay()); 238 EXPECT_EQ(2, specified->delay());
237 EXPECT_EQ(0.5, specified->endDelay()); 239 EXPECT_EQ(0.5, specified->endDelay());
238 EXPECT_EQ("backwards", specified->fill()); 240 EXPECT_EQ("backwards", specified->fill());
239 EXPECT_EQ(2, specified->iterationStart()); 241 EXPECT_EQ(2, specified->iterationStart());
240 EXPECT_EQ(10, specified->iterations()); 242 EXPECT_EQ(10, specified->iterations());
241 EXPECT_EQ(2, specified->playbackRate()); 243 EXPECT_EQ(2, specified->playbackRate());
242 EXPECT_EQ("reverse", specified->direction()); 244 EXPECT_EQ("reverse", specified->direction());
243 EXPECT_EQ("step-start", specified->easing()); 245 EXPECT_EQ("step-start", specified->easing());
244 } 246 }
245 247
246 TEST_F(AnimationAnimationV8Test, SpecifiedDurationGetter) 248 TEST_F(AnimationAnimationV8Test, SpecifiedDurationGetter)
247 { 249 {
248 Vector<Dictionary, 0> jsKeyframes; 250 Vector<Dictionary, 0> jsKeyframes;
249 251
250 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate); 252 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate);
251 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); 253 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5);
252 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val ue>::Cast(timingInputWithDuration), m_isolate, exceptionState); 254 AnimationTimingProperties timingInputDictionaryWithDuration;
255 V8AnimationTimingProperties::toImpl(m_isolate, timingInputWithDuration, timi ngInputDictionaryWithDuration, exceptionState);
253 256
254 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState); 257 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState);
255 258
256 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedWithDuration = animationWit hDuration->timing(); 259 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedWithDuration = animationWit hDuration->timing();
257 UnrestrictedDoubleOrString duration; 260 UnrestrictedDoubleOrString duration;
258 specifiedWithDuration->duration(duration); 261 specifiedWithDuration->duration(duration);
259 EXPECT_TRUE(duration.isUnrestrictedDouble()); 262 EXPECT_TRUE(duration.isUnrestrictedDouble());
260 EXPECT_EQ(2.5, duration.getAsUnrestrictedDouble()); 263 EXPECT_EQ(2.5, duration.getAsUnrestrictedDouble());
261 EXPECT_FALSE(duration.isString()); 264 EXPECT_FALSE(duration.isString());
262 265
263 266
264 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate); 267 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate);
265 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value >::Cast(timingInputNoDuration), m_isolate, exceptionState); 268 AnimationTimingProperties timingInputDictionaryNoDuration;
269 V8AnimationTimingProperties::toImpl(m_isolate, timingInputNoDuration, timing InputDictionaryNoDuration, exceptionState);
266 270
267 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element. get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState); 271 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element. get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState);
268 272
269 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedNoDuration = animationNoDur ation->timing(); 273 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedNoDuration = animationNoDur ation->timing();
270 UnrestrictedDoubleOrString duration2; 274 UnrestrictedDoubleOrString duration2;
271 specifiedNoDuration->duration(duration2); 275 specifiedNoDuration->duration(duration2);
272 EXPECT_FALSE(duration2.isUnrestrictedDouble()); 276 EXPECT_FALSE(duration2.isUnrestrictedDouble());
273 EXPECT_TRUE(duration2.isString()); 277 EXPECT_TRUE(duration2.isString());
274 EXPECT_EQ("auto", duration2.getAsString()); 278 EXPECT_EQ("auto", duration2.getAsString());
275 } 279 }
276 280
277 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) 281 TEST_F(AnimationAnimationV8Test, SpecifiedSetters)
278 { 282 {
279 Vector<Dictionary, 0> jsKeyframes; 283 Vector<Dictionary, 0> jsKeyframes;
280 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); 284 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
281 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate, exceptionState); 285 AnimationTimingProperties timingInputDictionary;
286 V8AnimationTimingProperties::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
282 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState); 287 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState);
283 288
284 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); 289 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing();
285 290
286 EXPECT_EQ(0, specified->delay()); 291 EXPECT_EQ(0, specified->delay());
287 specified->setDelay(2); 292 specified->setDelay(2);
288 EXPECT_EQ(2, specified->delay()); 293 EXPECT_EQ(2, specified->delay());
289 294
290 EXPECT_EQ(0, specified->endDelay()); 295 EXPECT_EQ(0, specified->endDelay());
291 specified->setEndDelay(0.5); 296 specified->setEndDelay(0.5);
(...skipping 21 matching lines...) Expand all
313 318
314 EXPECT_EQ("linear", specified->easing()); 319 EXPECT_EQ("linear", specified->easing());
315 specified->setEasing("step-start"); 320 specified->setEasing("step-start");
316 EXPECT_EQ("step-start", specified->easing()); 321 EXPECT_EQ("step-start", specified->easing());
317 } 322 }
318 323
319 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) 324 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration)
320 { 325 {
321 Vector<Dictionary, 0> jsKeyframes; 326 Vector<Dictionary, 0> jsKeyframes;
322 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); 327 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
323 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate, exceptionState); 328 AnimationTimingProperties timingInputDictionary;
329 V8AnimationTimingProperties::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
324 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState); 330 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK eyframes, timingInputDictionary, exceptionState);
325 331
326 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); 332 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing();
327 333
328 UnrestrictedDoubleOrString duration; 334 UnrestrictedDoubleOrString duration;
329 specified->duration(duration); 335 specified->duration(duration);
330 EXPECT_FALSE(duration.isUnrestrictedDouble()); 336 EXPECT_FALSE(duration.isUnrestrictedDouble());
331 EXPECT_TRUE(duration.isString()); 337 EXPECT_TRUE(duration.isString());
332 EXPECT_EQ("auto", duration.getAsString()); 338 EXPECT_EQ("auto", duration.getAsString());
333 339
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 EXPECT_EQ(element.get(), animation->target()); 454 EXPECT_EQ(element.get(), animation->target());
449 document.timeline().play(animation.get()); 455 document.timeline().play(animation.get());
450 pageHolder.clear(); 456 pageHolder.clear();
451 element.clear(); 457 element.clear();
452 #if !ENABLE(OILPAN) 458 #if !ENABLE(OILPAN)
453 EXPECT_EQ(0, animation->target()); 459 EXPECT_EQ(0, animation->target());
454 #endif 460 #endif
455 } 461 }
456 462
457 } // namespace blink 463 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698