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

Side by Side Diff: Source/core/animation/AnimationClockTest.cpp

Issue 369793003: Make the web-animations engine use the passed in blink::WebFrameTime values. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fixing the tests under the release build. Created 6 years, 5 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 23 matching lines...) Expand all
34 #include "wtf/OwnPtr.h" 34 #include "wtf/OwnPtr.h"
35 #include <gtest/gtest.h> 35 #include <gtest/gtest.h>
36 36
37 using namespace WebCore; 37 using namespace WebCore;
38 38
39 namespace { 39 namespace {
40 40
41 class AnimationAnimationClockTest : public ::testing::Test { 41 class AnimationAnimationClockTest : public ::testing::Test {
42 public: 42 public:
43 AnimationAnimationClockTest() 43 AnimationAnimationClockTest()
44 : animationClock(mockTimeFunction) 44 : animationClock()
45 { } 45 { }
46
46 protected: 47 protected:
48 blink::WebFrameTime createFrameTime(double currentFrameMonotonic, double nex tFrameMonotonic)
49 {
50 // AnimationClock doesn't use the first two fields (lastFrameTime and
51 // renderDeadline).
52 return blink::WebFrameTime(
53 blink::WebFrameTime::Undefined(),
54 blink::WebFrameTime::Undefined(),
55 currentFrameMonotonic,
56 nextFrameMonotonic);
57 }
58
47 virtual void SetUp() 59 virtual void SetUp()
48 { 60 {
49 mockTime = 0; 61 animationClock.clearTimeForTesting();
50 animationClock.resetTimeForTesting(); 62 animationClock.updateTime(createFrameTime(0, 0));
51 } 63 }
52 64
53 static double mockTimeFunction()
54 {
55 return mockTime;
56 }
57
58 static double mockTime;
59 AnimationClock animationClock; 65 AnimationClock animationClock;
60 }; 66 };
61 67
62 double AnimationAnimationClockTest::mockTime;
63
64 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests) 68 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests)
65 { 69 {
66 AnimationClock clock; 70 AnimationClock clock;
71 clock.resetTimeForTesting();
72
67 // unit tests outside core/animation shouldn't need to do anything to get 73 // unit tests outside core/animation shouldn't need to do anything to get
68 // a non-zero currentTime(). 74 // a non-zero currentTime().
75 double lastTime = clock.currentTime();
69 EXPECT_GT(clock.currentTime(), 0); 76 EXPECT_GT(clock.currentTime(), 0);
77
78 clock.tickTimeForTesting();
79 EXPECT_GT(clock.currentTime(), lastTime);
70 } 80 }
71 81
72 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange) 82 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange)
73 { 83 {
74 animationClock.updateTime(100); 84 animationClock.updateTime(createFrameTime(100, 200));
75 EXPECT_EQ(100, animationClock.currentTime()); 85 EXPECT_EQ(100, animationClock.currentTime());
76 EXPECT_EQ(100, animationClock.currentTime()); 86 EXPECT_EQ(100, animationClock.currentTime());
77 } 87 }
78 88
79 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated) 89 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated)
80 { 90 {
81 animationClock.updateTime(100); 91 animationClock.updateTime(createFrameTime(100, 200));
82 EXPECT_EQ(100, animationClock.currentTime()); 92 EXPECT_EQ(100, animationClock.currentTime());
83 93
84 animationClock.updateTime(200); 94 animationClock.updateTime(createFrameTime(200, 300));
85 EXPECT_EQ(200, animationClock.currentTime()); 95 EXPECT_EQ(200, animationClock.currentTime());
86 } 96 }
87 97
88 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime) 98 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime)
89 { 99 {
90 animationClock.updateTime(100); 100 animationClock.updateTime(createFrameTime(100, 150));
91 EXPECT_EQ(100, animationClock.currentTime());
92
93 mockTime = 150;
94 AnimationClock::notifyTaskStart();
95 EXPECT_GE(animationClock.currentTime(), mockTime);
96 }
97
98 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTimeOnlyWhenRequired)
99 {
100 animationClock.updateTime(100);
101 EXPECT_EQ(100, animationClock.currentTime()); 101 EXPECT_EQ(100, animationClock.currentTime());
102 102
103 AnimationClock::notifyTaskStart(); 103 AnimationClock::notifyTaskStart();
104 animationClock.updateTime(125); 104 EXPECT_EQ(animationClock.currentTime(), 150);
105 EXPECT_EQ(125, animationClock.currentTime()); 105
106 AnimationClock::notifyTaskStart();
107 EXPECT_EQ(animationClock.currentTime(), 150);
106 } 108 }
107 109
108 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic) 110 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic)
109 { 111 {
110 animationClock.updateTime(100); 112 animationClock.updateTime(createFrameTime(100, 150));
111 EXPECT_EQ(100, animationClock.currentTime()); 113 EXPECT_EQ(100, animationClock.currentTime());
114 #ifndef NDEBUG
115 EXPECT_DEATH({
116 animationClock.updateTime(createFrameTime(50, 150));
117 }, "");
112 118
113 // Update can't go backwards.
114 animationClock.updateTime(50);
115 EXPECT_EQ(100, animationClock.currentTime());
116
117 mockTime = 50;
118 AnimationClock::notifyTaskStart(); 119 AnimationClock::notifyTaskStart();
119 EXPECT_EQ(100, animationClock.currentTime()); 120 EXPECT_DEATH({
120 121 animationClock.updateTime(createFrameTime(149, 150));
121 mockTime = 150; 122 }, "");
122 AnimationClock::notifyTaskStart(); 123 #endif
123 EXPECT_GE(animationClock.currentTime(), mockTime);
124
125 // Update can't go backwards after advance to estimate.
126 animationClock.updateTime(100);
127 EXPECT_GE(animationClock.currentTime(), mockTime);
128 }
129
130 TEST_F(AnimationAnimationClockTest, CurrentTimeUpdatesTask)
131 {
132 animationClock.updateTime(100);
133 EXPECT_EQ(100, animationClock.currentTime());
134
135 mockTime = 100;
136 AnimationClock::notifyTaskStart();
137 EXPECT_EQ(100, animationClock.currentTime());
138
139 mockTime = 150;
140 EXPECT_EQ(100, animationClock.currentTime());
141 } 124 }
142 125
143 } 126 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698