Index: Source/core/animation/AnimationTest.cpp |
diff --git a/Source/core/animation/AnimationTest.cpp b/Source/core/animation/AnimationTest.cpp |
index 292e453a90b0c1e6b174ef3e7f68bfccca18167a..bc4d164ecaf45d0d0f0f2b4e89e407904db5acc3 100644 |
--- a/Source/core/animation/AnimationTest.cpp |
+++ b/Source/core/animation/AnimationTest.cpp |
@@ -11,6 +11,7 @@ |
#include "core/animation/AnimationHelpers.h" |
#include "core/animation/DocumentTimeline.h" |
#include "core/animation/KeyframeEffectModel.h" |
+#include "core/animation/TimedItemTiming.h" |
#include "platform/animation/TimingFunctionTestHelper.h" |
#include <gtest/gtest.h> |
@@ -159,7 +160,7 @@ TEST_F(AnimationAnimationTest, CanSetDuration) |
RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, duration); |
- EXPECT_EQ(duration, animation->specified().iterationDuration); |
+ EXPECT_EQ(duration, animation->specifiedTiming().iterationDuration); |
} |
TEST_F(AnimationAnimationTest, CanOmitSpecifiedDuration) |
@@ -173,7 +174,7 @@ TEST_F(AnimationAnimationTest, CanOmitSpecifiedDuration) |
RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes); |
- EXPECT_TRUE(std::isnan(animation->specified().iterationDuration)); |
+ EXPECT_TRUE(std::isnan(animation->specifiedTiming().iterationDuration)); |
} |
TEST_F(AnimationAnimationTest, ClipNegativeDurationToZero) |
@@ -187,7 +188,84 @@ TEST_F(AnimationAnimationTest, ClipNegativeDurationToZero) |
RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, -2); |
- EXPECT_EQ(0, animation->specified().iterationDuration); |
+ EXPECT_EQ(0, animation->specifiedTiming().iterationDuration); |
+} |
+ |
+TEST_F(AnimationAnimationTest, SpecifiedGetters) |
+{ |
+ v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
+ v8::HandleScope scope(isolate); |
+ v8::Local<v8::Context> context = v8::Context::New(isolate); |
+ v8::Context::Scope contextScope(context); |
+ |
+ Vector<Dictionary, 0> jsKeyframes; |
+ |
+ v8::Handle<v8::Object> timingInput = v8::Object::New(isolate); |
+ setV8ObjectPropertyAsNumber(timingInput, "delay", 2); |
+ setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5); |
+ setV8ObjectPropertyAsString(timingInput, "fill", "backwards"); |
+ setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2); |
+ setV8ObjectPropertyAsNumber(timingInput, "iterations", 10); |
+ setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2); |
+ setV8ObjectPropertyAsString(timingInput, "direction", "reverse"); |
+ setV8ObjectPropertyAsString(timingInput, "easing", "step-start"); |
+ Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(timingInput), isolate); |
+ |
+ RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, timingInputDictionary); |
+ |
+ RefPtr<TimedItemTiming> specified = animation->specified(); |
+ EXPECT_EQ(2, specified->delay()); |
+ EXPECT_EQ(0.5, specified->endDelay()); |
+ EXPECT_EQ("backwards", specified->fill()); |
+ EXPECT_EQ(2, specified->iterationStart()); |
+ EXPECT_EQ(10, specified->iterations()); |
+ EXPECT_EQ(2, specified->playbackRate()); |
+ EXPECT_EQ("reverse", specified->direction()); |
+ EXPECT_EQ("step-start", specified->easing()); |
+} |
+ |
+TEST_F(AnimationAnimationTest, SpecifiedDurationGetter) |
+{ |
+ v8::Isolate* isolate = v8::Isolate::GetCurrent(); |
+ v8::HandleScope scope(isolate); |
+ v8::Local<v8::Context> context = v8::Context::New(isolate); |
+ v8::Context::Scope contextScope(context); |
+ |
+ Vector<Dictionary, 0> jsKeyframes; |
+ |
+ v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(isolate); |
+ setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); |
+ Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Value>::Cast(timingInputWithDuration), isolate); |
+ |
+ RefPtr<Animation> animationWithDuration = createAnimation(element.get(), jsKeyframes, timingInputDictionaryWithDuration); |
+ |
+ RefPtr<TimedItemTiming> specifiedWithDuration = animationWithDuration->specified(); |
+ bool isNumber = false; |
+ double numberDuration = std::numeric_limits<double>::quiet_NaN(); |
+ bool isString = false; |
+ String stringDuration = ""; |
+ specifiedWithDuration->duration("duration", isNumber, numberDuration, isString, stringDuration); |
+ EXPECT_TRUE(isNumber); |
+ EXPECT_EQ(2.5, numberDuration); |
+ EXPECT_FALSE(isString); |
+ EXPECT_EQ("", stringDuration); |
+ |
+ |
+ v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(isolate); |
+ Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value>::Cast(timingInputNoDuration), isolate); |
+ |
+ RefPtr<Animation> animationNoDuration = createAnimation(element.get(), jsKeyframes, timingInputDictionaryNoDuration); |
+ |
+ RefPtr<TimedItemTiming> specifiedNoDuration = animationNoDuration->specified(); |
+ isNumber = false; |
+ numberDuration = std::numeric_limits<double>::quiet_NaN(); |
+ isString = false; |
+ stringDuration = ""; |
+ specifiedNoDuration->duration("duration", isNumber, numberDuration, isString, stringDuration); |
+ EXPECT_FALSE(isNumber); |
+ EXPECT_TRUE(std::isnan(numberDuration)); |
+ EXPECT_TRUE(isString); |
+ EXPECT_EQ("auto", stringDuration); |
} |
TEST_F(AnimationAnimationTest, TimingInputStartDelay) |