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

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

Issue 275753002: Web Animations: Timeline should not advance during task execution (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Add back missing test changes. Created 6 years, 7 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
« no previous file with comments | « Source/core/animation/AnimationClock.cpp ('k') | Source/core/animation/DocumentAnimations.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/animation/AnimationClockTest.cpp
diff --git a/Source/core/animation/AnimationClockTest.cpp b/Source/core/animation/AnimationClockTest.cpp
index 7e54cde9876530b9e86b72f61c95ff99063dff96..89412585331072bc0e902da99d193b2fcdad4e71 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,88 @@ protected:
}
static double mockTime;
- OwnPtr<AnimationClock> animationClock;
+ AnimationClock animationClock;
};
double AnimationAnimationClockTest::mockTime;
-TEST_F(AnimationAnimationClockTest, CurrentTime)
+TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests)
{
- // 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 clock;
+ // unit tests outside core/animation shouldn't need to do anything to get
+ // a non-zero currentTime().
+ EXPECT_GT(clock.currentTime(), 0);
+}
+
+TEST_F(AnimationAnimationClockTest, TimeDoesNotChange)
+{
+ 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());
- mockTime = 200 + minTimeBeforeUnsynchronizedAnimationClockTick;
- EXPECT_EQ(mockTime, animationClock->currentTime());
+ animationClock.updateTime(200);
+ EXPECT_EQ(200, animationClock.currentTime());
}
-TEST_F(AnimationAnimationClockTest, UpdateTime)
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime)
{
- 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());
+
+ mockTime = 150;
+ AnimationClock::notifyTaskStart();
+ EXPECT_GE(animationClock.currentTime(), mockTime);
+}
+
+TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTimeOnlyWhenRequired)
+{
+ 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(animationClock.currentTime(), mockTime);
+
+ // Update can't go backwards after advance to estimate.
+ animationClock.updateTime(100);
+ EXPECT_GE(animationClock.currentTime(), mockTime);
+}
+
+TEST_F(AnimationAnimationClockTest, CurrentTimeUpdatesTask)
+{
+ animationClock.updateTime(100);
+ EXPECT_EQ(100, animationClock.currentTime());
+
+ mockTime = 100;
+ AnimationClock::notifyTaskStart();
+ EXPECT_EQ(100, animationClock.currentTime());
+
+ mockTime = 150;
+ EXPECT_EQ(100, animationClock.currentTime());
}
}
« no previous file with comments | « Source/core/animation/AnimationClock.cpp ('k') | Source/core/animation/DocumentAnimations.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698