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

Unified Diff: Source/core/animation/AnimationClockTest.cpp

Issue 251183006: Web Animations: Timeline should not advance during task execution (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Use task start time Created 6 years, 8 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 side-by-side diff with in-line comments
Download patch
Index: Source/core/animation/AnimationClockTest.cpp
diff --git a/Source/core/animation/AnimationClockTest.cpp b/Source/core/animation/AnimationClockTest.cpp
index 7e54cde9876530b9e86b72f61c95ff99063dff96..a359e9937128c2ccb7381dcc3a102a4d2f99296a 100644
--- a/Source/core/animation/AnimationClockTest.cpp
+++ b/Source/core/animation/AnimationClockTest.cpp
@@ -42,46 +42,55 @@ class AnimationAnimationClockTest : public ::testing::Test {
protected:
virtual void SetUp()
{
- animationClock = AnimationClock::create(mockTimeFunction);
- mockTime = 200;
+ animationClock = AnimationClock();
+ animationClock.resetTimeForTesting();
}
- static double mockTimeFunction()
- {
- return mockTime;
- }
-
- static double mockTime;
- OwnPtr<AnimationClock> animationClock;
+ AnimationClock animationClock;
};
-double AnimationAnimationClockTest::mockTime;
+TEST_F(AnimationAnimationClockTest, TimeDoesNotChange)
+{
+ animationClock.updateTime(100);
+ EXPECT_EQ(100, animationClock.currentTime());
+ EXPECT_EQ(100, animationClock.currentTime());
shans 2014/04/30 20:43:07 maybe insert an artificial pause between these two
+}
+
+TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated)
+{
+ animationClock.updateTime(100);
+ EXPECT_EQ(100, animationClock.currentTime());
+
+ animationClock.updateTime(200);
+ EXPECT_EQ(200, animationClock.currentTime());
+}
-TEST_F(AnimationAnimationClockTest, CurrentTime)
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime)
{
- // 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());
- mockTime = 200 + minTimeBeforeUnsynchronizedAnimationClockTick;
- EXPECT_EQ(mockTime, animationClock->currentTime());
+ AnimationClock::notifyTaskStartTime(150);
+ EXPECT_EQ(150, 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::notifyTaskStartTime(150);
+ animationClock.updateTime(125);
+ EXPECT_EQ(125, animationClock.currentTime());
+}
+
+TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic)
+{
+ animationClock.updateTime(100);
+ EXPECT_EQ(100, animationClock.currentTime());
+
+ animationClock.updateTime(50);
+ EXPECT_EQ(100, animationClock.currentTime());
}
}

Powered by Google App Engine
This is Rietveld 408576698