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

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: [DO NOT REVIEW] Upload only for 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 blink::WebFrameTime createFrameTime(double currentFrameMonotonic, double nex tFrameMonotonic)
48 {
49 // AnimationClock doesn't use the first two fields (lastFrameTime and
50 // renderDeadline).
51 return blink::WebFrameTime(-1, -1, currentFrameMonotonic, nextFrameMonot onic);
52 }
53
47 virtual void SetUp() 54 virtual void SetUp()
48 { 55 {
49 mockTime = 0; 56 animationClock.clearTimeForTesting();
50 animationClock.resetTimeForTesting(); 57 animationClock.updateTime(createFrameTime(0, 0));
51 } 58 }
52 59
53 static double mockTimeFunction()
54 {
55 return mockTime;
56 }
57
58 static double mockTime;
59 AnimationClock animationClock; 60 AnimationClock animationClock;
60 }; 61 };
61 62
62 double AnimationAnimationClockTest::mockTime;
63
64 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests) 63 TEST_F(AnimationAnimationClockTest, TimeIsGreaterThanZeroForUnitTests)
65 { 64 {
66 AnimationClock clock; 65 AnimationClock clock;
66 clock.resetTimeForTesting();
67
67 // unit tests outside core/animation shouldn't need to do anything to get 68 // unit tests outside core/animation shouldn't need to do anything to get
68 // a non-zero currentTime(). 69 // a non-zero currentTime().
70 double lastTime = clock.currentTime();
69 EXPECT_GT(clock.currentTime(), 0); 71 EXPECT_GT(clock.currentTime(), 0);
72
73 clock.tickTimeForTesting();
74 EXPECT_GT(clock.currentTime(), lastTime);
70 } 75 }
71 76
72 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange) 77 TEST_F(AnimationAnimationClockTest, TimeDoesNotChange)
73 { 78 {
74 animationClock.updateTime(100); 79 animationClock.updateTime(createFrameTime(100, 200));
75 EXPECT_EQ(100, animationClock.currentTime()); 80 EXPECT_EQ(100, animationClock.currentTime());
76 EXPECT_EQ(100, animationClock.currentTime()); 81 EXPECT_EQ(100, animationClock.currentTime());
77 } 82 }
78 83
79 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated) 84 TEST_F(AnimationAnimationClockTest, TimeAdvancesWhenUpdated)
80 { 85 {
81 animationClock.updateTime(100); 86 animationClock.updateTime(createFrameTime(100, 200));
82 EXPECT_EQ(100, animationClock.currentTime()); 87 EXPECT_EQ(100, animationClock.currentTime());
83 88
84 animationClock.updateTime(200); 89 animationClock.updateTime(createFrameTime(200, 300));
85 EXPECT_EQ(200, animationClock.currentTime()); 90 EXPECT_EQ(200, animationClock.currentTime());
86 } 91 }
87 92
88 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime) 93 TEST_F(AnimationAnimationClockTest, TimeAdvancesToTaskTime)
89 { 94 {
90 animationClock.updateTime(100); 95 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()); 96 EXPECT_EQ(100, animationClock.currentTime());
102 97
103 AnimationClock::notifyTaskStart(); 98 AnimationClock::notifyTaskStart();
104 animationClock.updateTime(125); 99 EXPECT_EQ(animationClock.currentTime(), 150);
105 EXPECT_EQ(125, animationClock.currentTime()); 100
101 AnimationClock::notifyTaskStart();
102 EXPECT_EQ(animationClock.currentTime(), 150);
106 } 103 }
107 104
108 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic) 105 TEST_F(AnimationAnimationClockTest, UpdateTimeIsMonotonic)
109 { 106 {
110 animationClock.updateTime(100); 107 animationClock.updateTime(createFrameTime(100, 150));
111 EXPECT_EQ(100, animationClock.currentTime()); 108 EXPECT_EQ(100, animationClock.currentTime());
109 EXPECT_DEATH({
110 animationClock.updateTime(createFrameTime(50, 150));
111 }, "");
112 112
113 // Update can't go backwards.
114 animationClock.updateTime(50);
115 EXPECT_EQ(100, animationClock.currentTime());
116
117 mockTime = 50;
118 AnimationClock::notifyTaskStart(); 113 AnimationClock::notifyTaskStart();
119 EXPECT_EQ(100, animationClock.currentTime()); 114 EXPECT_DEATH({
120 115 animationClock.updateTime(createFrameTime(149, 150));
121 mockTime = 150; 116 }, "");
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 } 117 }
142 118
143 } 119 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698