| OLD | NEW |
| 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/Nullable.h" | 9 #include "bindings/core/v8/UnionTypesCore.h" |
| 10 #include "core/animation/AnimationClock.h" | 10 #include "core/animation/AnimationClock.h" |
| 11 #include "core/animation/AnimationNodeTiming.h" | 11 #include "core/animation/AnimationNodeTiming.h" |
| 12 #include "core/animation/AnimationTestHelper.h" | 12 #include "core/animation/AnimationTestHelper.h" |
| 13 #include "core/animation/AnimationTimeline.h" | 13 #include "core/animation/AnimationTimeline.h" |
| 14 #include "core/animation/KeyframeEffectModel.h" | 14 #include "core/animation/KeyframeEffectModel.h" |
| 15 #include "core/animation/Timing.h" | 15 #include "core/animation/Timing.h" |
| 16 #include "core/dom/Document.h" | 16 #include "core/dom/Document.h" |
| 17 #include "core/testing/DummyPageHolder.h" | 17 #include "core/testing/DummyPageHolder.h" |
| 18 #include <gtest/gtest.h> | 18 #include <gtest/gtest.h> |
| 19 #include <v8.h> | 19 #include <v8.h> |
| (...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 { | 246 { |
| 247 Vector<Dictionary, 0> jsKeyframes; | 247 Vector<Dictionary, 0> jsKeyframes; |
| 248 | 248 |
| 249 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate); | 249 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate); |
| 250 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); | 250 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); |
| 251 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val
ue>::Cast(timingInputWithDuration), m_isolate); | 251 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val
ue>::Cast(timingInputWithDuration), m_isolate); |
| 252 | 252 |
| 253 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen
t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState); | 253 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen
t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState); |
| 254 | 254 |
| 255 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedWithDuration = animationWit
hDuration->timing(); | 255 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedWithDuration = animationWit
hDuration->timing(); |
| 256 Nullable<double> numberDuration; | 256 DoubleOrString duration; |
| 257 String stringDuration; | 257 specifiedWithDuration->getDuration("duration", duration); |
| 258 specifiedWithDuration->getDuration("duration", numberDuration, stringDuratio
n); | 258 EXPECT_TRUE(duration.isDouble()); |
| 259 EXPECT_FALSE(numberDuration.isNull()); | 259 EXPECT_EQ(2.5, duration.getAsDouble()); |
| 260 EXPECT_EQ(2.5, numberDuration.get()); | 260 EXPECT_FALSE(duration.isString()); |
| 261 EXPECT_TRUE(stringDuration.isNull()); | |
| 262 | 261 |
| 263 | 262 |
| 264 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate); | 263 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate); |
| 265 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value
>::Cast(timingInputNoDuration), m_isolate); | 264 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value
>::Cast(timingInputNoDuration), m_isolate); |
| 266 | 265 |
| 267 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element.
get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState); | 266 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element.
get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState); |
| 268 | 267 |
| 269 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedNoDuration = animationNoDur
ation->timing(); | 268 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedNoDuration = animationNoDur
ation->timing(); |
| 270 Nullable<double> numberDuration2; | 269 DoubleOrString duration2; |
| 271 String stringDuration2; | 270 specifiedNoDuration->getDuration("duration", duration2); |
| 272 specifiedNoDuration->getDuration("duration", numberDuration2, stringDuration
2); | 271 EXPECT_FALSE(duration2.isDouble()); |
| 273 EXPECT_TRUE(numberDuration2.isNull()); | 272 EXPECT_TRUE(duration2.isString()); |
| 274 EXPECT_FALSE(stringDuration2.isNull()); | 273 EXPECT_EQ("auto", duration2.getAsString()); |
| 275 EXPECT_EQ("auto", stringDuration2); | |
| 276 } | 274 } |
| 277 | 275 |
| 278 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) | 276 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) |
| 279 { | 277 { |
| 280 Vector<Dictionary, 0> jsKeyframes; | 278 Vector<Dictionary, 0> jsKeyframes; |
| 281 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | 279 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); |
| 282 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); | 280 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); |
| 283 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); | 281 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); |
| 284 | 282 |
| 285 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); | 283 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 319 | 317 |
| 320 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) | 318 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) |
| 321 { | 319 { |
| 322 Vector<Dictionary, 0> jsKeyframes; | 320 Vector<Dictionary, 0> jsKeyframes; |
| 323 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | 321 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); |
| 324 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); | 322 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); |
| 325 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); | 323 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); |
| 326 | 324 |
| 327 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); | 325 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); |
| 328 | 326 |
| 329 Nullable<double> numberDuration; | 327 DoubleOrString duration; |
| 330 String stringDuration; | 328 specified->getDuration("duration", duration); |
| 331 specified->getDuration("duration", numberDuration, stringDuration); | 329 EXPECT_FALSE(duration.isDouble()); |
| 332 EXPECT_TRUE(numberDuration.isNull()); | 330 EXPECT_TRUE(duration.isString()); |
| 333 EXPECT_FALSE(stringDuration.isNull()); | 331 EXPECT_EQ("auto", duration.getAsString()); |
| 334 EXPECT_EQ("auto", stringDuration); | |
| 335 | 332 |
| 336 specified->setDuration("duration", 2.5); | 333 specified->setDuration("duration", 2.5); |
| 337 Nullable<double> numberDuration2; | 334 DoubleOrString duration2; |
| 338 String stringDuration2; | 335 specified->getDuration("duration", duration2); |
| 339 specified->getDuration("duration", numberDuration2, stringDuration2); | 336 EXPECT_TRUE(duration2.isDouble()); |
| 340 EXPECT_FALSE(numberDuration2.isNull()); | 337 EXPECT_EQ(2.5, duration2.getAsDouble()); |
| 341 EXPECT_EQ(2.5, numberDuration2.get()); | 338 EXPECT_FALSE(duration2.isString()); |
| 342 EXPECT_TRUE(stringDuration2.isNull()); | |
| 343 } | 339 } |
| 344 | 340 |
| 345 TEST_F(AnimationAnimationTest, TimeToEffectChange) | 341 TEST_F(AnimationAnimationTest, TimeToEffectChange) |
| 346 { | 342 { |
| 347 Timing timing; | 343 Timing timing; |
| 348 timing.iterationDuration = 100; | 344 timing.iterationDuration = 100; |
| 349 timing.startDelay = 100; | 345 timing.startDelay = 100; |
| 350 timing.endDelay = 100; | 346 timing.endDelay = 100; |
| 351 timing.fillMode = Timing::FillModeNone; | 347 timing.fillMode = Timing::FillModeNone; |
| 352 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi
ng); | 348 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi
ng); |
| (...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 EXPECT_EQ(element.get(), animation->target()); | 445 EXPECT_EQ(element.get(), animation->target()); |
| 450 document.timeline().play(animation.get()); | 446 document.timeline().play(animation.get()); |
| 451 pageHolder.clear(); | 447 pageHolder.clear(); |
| 452 element.clear(); | 448 element.clear(); |
| 453 #if !ENABLE(OILPAN) | 449 #if !ENABLE(OILPAN) |
| 454 EXPECT_EQ(0, animation->target()); | 450 EXPECT_EQ(0, animation->target()); |
| 455 #endif | 451 #endif |
| 456 } | 452 } |
| 457 | 453 |
| 458 } // namespace blink | 454 } // namespace blink |
| OLD | NEW |