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

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: Patch to run on try bots. 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 protected: 46 protected:
47 virtual void SetUp() 47 virtual void SetUp()
48 { 48 {
49 mockTime = 0; 49 animationClock.clearTimeForTesting();
50 animationClock.resetTimeForTesting(); 50 animationClock.updateTime(blink::WebFrameTime(-1, -1, 0, 0));
eseidel 2014/07/07 16:31:50 This is extremely opaque. Can we have a helper? W
mithro-old 2014/07/07 17:47:15 As you said below, this type of creation only happ
51 } 51 }
52 52
53 static double mockTimeFunction()
54 {
55 return mockTime;
56 }
57
58 static double mockTime;
59 AnimationClock animationClock; 53 AnimationClock animationClock;
60 }; 54 };
61 55
62 double AnimationAnimationClockTest::mockTime;
63
64 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests) 56 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests)
65 { 57 {
66 AnimationClock clock; 58 AnimationClock clock;
59 clock.resetTimeForTesting();
60
67 // unit tests outside core/animation shouldn't need to do anything to get 61 // unit tests outside core/animation shouldn't need to do anything to get
68 // a non-zero currentTime(). 62 // a non-zero currentTime().
63 double lastTime = clock.currentTime();
69 EXPECT_GT(clock.currentTime(), 0); 64 EXPECT_GT(clock.currentTime(), 0);
65
66 clock.tickTimeForTesting();
67 EXPECT_GT(clock.currentTime(), lastTime);
70 } 68 }
71 69
72 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange) 70 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange)
73 { 71 {
74 animationClock.updateTime(100); 72 animationClock.updateTime(blink::WebFrameTime(-1, -1, 100, 200));
eseidel 2014/07/07 16:31:50 Or if these are only used in unittests at least a
mithro-old 2014/07/07 17:47:15 The only code which should be creating blink::WebF
75 EXPECT_EQ(100, animationClock.currentTime()); 73 EXPECT_EQ(100, animationClock.currentTime());
76 EXPECT_EQ(100, animationClock.currentTime()); 74 EXPECT_EQ(100, animationClock.currentTime());
77 } 75 }
78 76
79 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated) 77 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated)
80 { 78 {
81 animationClock.updateTime(100); 79 animationClock.updateTime(blink::WebFrameTime(-1, -1, 100, 200));
82 EXPECT_EQ(100, animationClock.currentTime()); 80 EXPECT_EQ(100, animationClock.currentTime());
83 81
84 animationClock.updateTime(200); 82 animationClock.updateTime(blink::WebFrameTime(-1, -1, 200, 300));
85 EXPECT_EQ(200, animationClock.currentTime()); 83 EXPECT_EQ(200, animationClock.currentTime());
86 } 84 }
87 85
88 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime) 86 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime)
89 { 87 {
90 animationClock.updateTime(100); 88 animationClock.updateTime(blink::WebFrameTime(-1, -1, 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()); 89 EXPECT_EQ(100, animationClock.currentTime());
102 90
103 AnimationClock::notifyTaskStart(); 91 AnimationClock::notifyTaskStart();
104 animationClock.updateTime(125); 92 EXPECT_EQ(animationClock.currentTime(), 150);
105 EXPECT_EQ(125, animationClock.currentTime()); 93
94 AnimationClock::notifyTaskStart();
95 EXPECT_EQ(animationClock.currentTime(), 150);
106 } 96 }
107 97
108 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic) 98 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic)
109 { 99 {
110 animationClock.updateTime(100); 100 animationClock.updateTime(blink::WebFrameTime(-1, -1, 100, 150));
111 EXPECT_EQ(100, animationClock.currentTime()); 101 EXPECT_EQ(100, animationClock.currentTime());
102 EXPECT_DEATH({
103 animationClock.updateTime(blink::WebFrameTime(-1, -1, 50, 150));
104 }, "");
112 105
113 // Update can't go backwards.
114 animationClock.updateTime(50);
115 EXPECT_EQ(100, animationClock.currentTime());
116
117 mockTime = 50;
118 AnimationClock::notifyTaskStart(); 106 AnimationClock::notifyTaskStart();
119 EXPECT_EQ(100, animationClock.currentTime()); 107 EXPECT_DEATH({
120 108 animationClock.updateTime(blink::WebFrameTime(-1, -1, 149, 150));
121 mockTime = 150; 109 }, "");
122 AnimationClock::notifyTaskStart();
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 } 110 }
142 111
143 } 112 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698