Index: Source/core/animation/AnimationClockTest.cpp |
diff --git a/Source/core/animation/AnimationClockTest.cpp b/Source/core/animation/AnimationClockTest.cpp |
index 7e54cde9876530b9e86b72f61c95ff99063dff96..3ef0b58b4258519928c4abebda65b18b63e36d6d 100644 |
--- a/Source/core/animation/AnimationClockTest.cpp |
+++ b/Source/core/animation/AnimationClockTest.cpp |
@@ -39,11 +39,15 @@ using namespace WebCore; |
namespace { |
class AnimationAnimationClockTest : public ::testing::Test { |
+public: |
+ AnimationAnimationClockTest() |
+ : animationClock(mockTimeFunction) |
+ {} |
protected: |
virtual void SetUp() |
{ |
- animationClock = AnimationClock::create(mockTimeFunction); |
- mockTime = 200; |
+ mockTime = 0; |
+ animationClock.resetTimeForTesting(); |
} |
static double mockTimeFunction() |
@@ -52,36 +56,67 @@ protected: |
} |
static double mockTime; |
- OwnPtr<AnimationClock> animationClock; |
+ AnimationClock animationClock; |
}; |
double AnimationAnimationClockTest::mockTime; |
-TEST_F(AnimationAnimationClockTest, CurrentTime) |
+TEST_F(AnimationAnimationClockTest, TimeDoesNotChange) |
{ |
- // Current time should not advance until minTimeBeforeUnsynchronizedTick has elapsed |
- EXPECT_EQ(200, animationClock->currentTime()); |
- mockTime = 200 + minTimeBeforeUnsynchronizedAnimationClockTick / 2.0; |
- EXPECT_EQ(200, animationClock->currentTime()); |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ animationClock.updateTime(200); |
+ EXPECT_EQ(200, animationClock.currentTime()); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
- mockTime = 200 + minTimeBeforeUnsynchronizedAnimationClockTick; |
- EXPECT_EQ(mockTime, animationClock->currentTime()); |
+ mockTime = 150; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_GE(mockTime, animationClock.currentTime()); |
} |
-TEST_F(AnimationAnimationClockTest, UpdateTime) |
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTimeOnlyWhenRequired) |
{ |
- animationClock->updateTime(100); |
- EXPECT_EQ(100, animationClock->currentTime()); |
- mockTime = 200; |
- EXPECT_EQ(100, animationClock->currentTime()); |
- |
- animationClock->unfreeze(); |
- EXPECT_EQ(200, animationClock->currentTime()); |
- |
- animationClock->updateTime(300); |
- EXPECT_EQ(300, animationClock->currentTime()); |
- mockTime = 400; |
- EXPECT_EQ(300, animationClock->currentTime()); |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ AnimationClock::notifyTaskStart(); |
+ animationClock.updateTime(125); |
+ EXPECT_EQ(125, animationClock.currentTime()); |
+} |
+ |
+TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic) |
+{ |
+ animationClock.updateTime(100); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ // Update can't go backwards. |
+ animationClock.updateTime(50); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 50; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_EQ(100, animationClock.currentTime()); |
+ |
+ mockTime = 150; |
+ AnimationClock::notifyTaskStart(); |
+ EXPECT_GE(150, animationClock.currentTime()); |
+ |
+ // Update can't go backwards after advance to estimate. |
+ animationClock.updateTime(100); |
+ EXPECT_GE(150, animationClock.currentTime()); |
} |
} |