OLD | NEW |
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 Loading... |
34 #include "core/animation/DocumentTimeline.h" | 34 #include "core/animation/DocumentTimeline.h" |
35 #include "core/dom/Document.h" | 35 #include "core/dom/Document.h" |
36 #include "core/dom/QualifiedName.h" | 36 #include "core/dom/QualifiedName.h" |
37 #include "weborigin/KURL.h" | 37 #include "weborigin/KURL.h" |
38 #include <gtest/gtest.h> | 38 #include <gtest/gtest.h> |
39 | 39 |
40 using namespace WebCore; | 40 using namespace WebCore; |
41 | 41 |
42 namespace { | 42 namespace { |
43 | 43 |
44 class PlayerTest : public ::testing::Test { | 44 class CoreAnimationPlayerTest : public ::testing::Test { |
45 protected: | 45 protected: |
46 virtual void SetUp() | 46 virtual void SetUp() |
47 { | 47 { |
48 document = Document::create(); | 48 document = Document::create(); |
49 timeline = DocumentTimeline::create(document.get()); | 49 timeline = DocumentTimeline::create(document.get()); |
50 player = Player::create(timeline.get(), 0); | 50 player = Player::create(timeline.get(), 0); |
51 timeline->setZeroTimeAsPerfTime(0); | 51 timeline->setZeroTimeAsPerfTime(0); |
52 } | 52 } |
53 | 53 |
54 bool updateTimeline(double time) | 54 bool updateTimeline(double time) |
55 { | 55 { |
56 timeline->serviceAnimations(time); | 56 timeline->serviceAnimations(time); |
57 // The timeline does not know about our player, so we have to explicitly
call update(). | 57 // The timeline does not know about our player, so we have to explicitly
call update(). |
58 return player->update(); | 58 return player->update(); |
59 } | 59 } |
60 | 60 |
61 RefPtr<Document> document; | 61 RefPtr<Document> document; |
62 RefPtr<DocumentTimeline> timeline; | 62 RefPtr<DocumentTimeline> timeline; |
63 RefPtr<Player> player; | 63 RefPtr<Player> player; |
64 }; | 64 }; |
65 | 65 |
66 TEST_F(PlayerTest, InitialState) | 66 TEST_F(CoreAnimationPlayerTest, InitialState) |
67 { | 67 { |
68 EXPECT_EQ(0, timeline->currentTime()); | 68 EXPECT_EQ(0, timeline->currentTime()); |
69 EXPECT_EQ(0, player->currentTime()); | 69 EXPECT_EQ(0, player->currentTime()); |
70 EXPECT_FALSE(player->paused()); | 70 EXPECT_FALSE(player->paused()); |
71 EXPECT_EQ(1, player->playbackRate()); | 71 EXPECT_EQ(1, player->playbackRate()); |
72 EXPECT_EQ(0, player->startTime()); | 72 EXPECT_EQ(0, player->startTime()); |
73 EXPECT_EQ(0, player->timeDrift()); | 73 EXPECT_EQ(0, player->timeDrift()); |
74 } | 74 } |
75 | 75 |
76 TEST_F(PlayerTest, CreatePlayerAfterTimelineStarted) | 76 TEST_F(CoreAnimationPlayerTest, CreatePlayerAfterTimelineStarted) |
77 { | 77 { |
78 updateTimeline(1234); | 78 updateTimeline(1234); |
79 EXPECT_EQ(1234, timeline->currentTime()); | 79 EXPECT_EQ(1234, timeline->currentTime()); |
80 RefPtr<Player> player = Player::create(timeline.get(), 0); | 80 RefPtr<Player> player = Player::create(timeline.get(), 0); |
81 EXPECT_EQ(1234, player->startTime()); | 81 EXPECT_EQ(1234, player->startTime()); |
82 EXPECT_EQ(0, player->currentTime()); | 82 EXPECT_EQ(0, player->currentTime()); |
83 } | 83 } |
84 | 84 |
85 TEST_F(PlayerTest, PauseUnpause) | 85 TEST_F(CoreAnimationPlayerTest, PauseUnpause) |
86 { | 86 { |
87 updateTimeline(200); | 87 updateTimeline(200); |
88 player->setPaused(true); | 88 player->setPaused(true); |
89 EXPECT_TRUE(player->paused()); | 89 EXPECT_TRUE(player->paused()); |
90 EXPECT_EQ(200, player->currentTime()); | 90 EXPECT_EQ(200, player->currentTime()); |
91 EXPECT_EQ(0, player->timeDrift()); | 91 EXPECT_EQ(0, player->timeDrift()); |
92 | 92 |
93 updateTimeline(400); | 93 updateTimeline(400); |
94 player->setPaused(false); | 94 player->setPaused(false); |
95 EXPECT_FALSE(player->paused()); | 95 EXPECT_FALSE(player->paused()); |
96 EXPECT_EQ(200, player->currentTime()); | 96 EXPECT_EQ(200, player->currentTime()); |
97 EXPECT_EQ(200, player->timeDrift()); | 97 EXPECT_EQ(200, player->timeDrift()); |
98 | 98 |
99 updateTimeline(600); | 99 updateTimeline(600); |
100 EXPECT_EQ(400, player->currentTime()); | 100 EXPECT_EQ(400, player->currentTime()); |
101 EXPECT_EQ(200, player->timeDrift()); | 101 EXPECT_EQ(200, player->timeDrift()); |
102 } | 102 } |
103 | 103 |
104 TEST_F(PlayerTest, PauseBeforeTimelineStarted) | 104 TEST_F(CoreAnimationPlayerTest, PauseBeforeTimelineStarted) |
105 { | 105 { |
106 player->setPaused(true); | 106 player->setPaused(true); |
107 EXPECT_TRUE(player->paused()); | 107 EXPECT_TRUE(player->paused()); |
108 EXPECT_EQ(0, player->currentTime()); | 108 EXPECT_EQ(0, player->currentTime()); |
109 EXPECT_EQ(0, player->timeDrift()); | 109 EXPECT_EQ(0, player->timeDrift()); |
110 | 110 |
111 player->setPaused(false); | 111 player->setPaused(false); |
112 EXPECT_FALSE(player->paused()); | 112 EXPECT_FALSE(player->paused()); |
113 EXPECT_EQ(0, player->currentTime()); | 113 EXPECT_EQ(0, player->currentTime()); |
114 EXPECT_EQ(0, player->timeDrift()); | 114 EXPECT_EQ(0, player->timeDrift()); |
115 | 115 |
116 player->setPaused(true); | 116 player->setPaused(true); |
117 updateTimeline(100); | 117 updateTimeline(100); |
118 EXPECT_TRUE(player->paused()); | 118 EXPECT_TRUE(player->paused()); |
119 EXPECT_EQ(0, player->currentTime()); | 119 EXPECT_EQ(0, player->currentTime()); |
120 EXPECT_EQ(100, player->timeDrift()); | 120 EXPECT_EQ(100, player->timeDrift()); |
121 | 121 |
122 player->setPaused(false); | 122 player->setPaused(false); |
123 EXPECT_EQ(0, player->currentTime()); | 123 EXPECT_EQ(0, player->currentTime()); |
124 EXPECT_EQ(100, player->timeDrift()); | 124 EXPECT_EQ(100, player->timeDrift()); |
125 } | 125 } |
126 | 126 |
127 TEST_F(PlayerTest, SetCurrentTime) | 127 TEST_F(CoreAnimationPlayerTest, SetCurrentTime) |
128 { | 128 { |
129 updateTimeline(0); | 129 updateTimeline(0); |
130 player->setCurrentTime(250); | 130 player->setCurrentTime(250); |
131 EXPECT_EQ(250, player->currentTime()); | 131 EXPECT_EQ(250, player->currentTime()); |
132 EXPECT_EQ(-250, player->timeDrift()); | 132 EXPECT_EQ(-250, player->timeDrift()); |
133 } | 133 } |
134 | 134 |
135 TEST_F(PlayerTest, SetCurrentTimeBeforeTimelineStarted) | 135 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeBeforeTimelineStarted) |
136 { | 136 { |
137 player->setCurrentTime(250); | 137 player->setCurrentTime(250); |
138 EXPECT_EQ(250, player->currentTime()); | 138 EXPECT_EQ(250, player->currentTime()); |
139 EXPECT_EQ(-250, player->timeDrift()); | 139 EXPECT_EQ(-250, player->timeDrift()); |
140 | 140 |
141 updateTimeline(0); | 141 updateTimeline(0); |
142 EXPECT_EQ(250, player->currentTime()); | 142 EXPECT_EQ(250, player->currentTime()); |
143 } | 143 } |
144 | 144 |
145 TEST_F(PlayerTest, SetPlaybackRate) | 145 TEST_F(CoreAnimationPlayerTest, SetPlaybackRate) |
146 { | 146 { |
147 updateTimeline(0); | 147 updateTimeline(0); |
148 player->setPlaybackRate(2); | 148 player->setPlaybackRate(2); |
149 EXPECT_EQ(2, player->playbackRate()); | 149 EXPECT_EQ(2, player->playbackRate()); |
150 EXPECT_EQ(0, player->currentTime()); | 150 EXPECT_EQ(0, player->currentTime()); |
151 EXPECT_EQ(0, player->timeDrift()); | 151 EXPECT_EQ(0, player->timeDrift()); |
152 | 152 |
153 updateTimeline(100); | 153 updateTimeline(100); |
154 EXPECT_EQ(200, player->currentTime()); | 154 EXPECT_EQ(200, player->currentTime()); |
155 EXPECT_EQ(0, player->timeDrift()); | 155 EXPECT_EQ(0, player->timeDrift()); |
156 } | 156 } |
157 | 157 |
158 TEST_F(PlayerTest, SetPlaybackRateBeforeTimelineStarted) | 158 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateBeforeTimelineStarted) |
159 { | 159 { |
160 player->setPlaybackRate(2); | 160 player->setPlaybackRate(2); |
161 EXPECT_EQ(0, player->currentTime()); | 161 EXPECT_EQ(0, player->currentTime()); |
162 EXPECT_EQ(0, player->timeDrift()); | 162 EXPECT_EQ(0, player->timeDrift()); |
163 | 163 |
164 updateTimeline(100); | 164 updateTimeline(100); |
165 EXPECT_EQ(200, player->currentTime()); | 165 EXPECT_EQ(200, player->currentTime()); |
166 EXPECT_EQ(0, player->timeDrift()); | 166 EXPECT_EQ(0, player->timeDrift()); |
167 } | 167 } |
168 | 168 |
169 TEST_F(PlayerTest, SetPlaybackRateWhilePaused) | 169 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateWhilePaused) |
170 { | 170 { |
171 updateTimeline(100); | 171 updateTimeline(100); |
172 player->setPaused(true); | 172 player->setPaused(true); |
173 player->setPlaybackRate(2); | 173 player->setPlaybackRate(2); |
174 EXPECT_EQ(100, player->currentTime()); | 174 EXPECT_EQ(100, player->currentTime()); |
175 EXPECT_EQ(100, player->timeDrift()); | 175 EXPECT_EQ(100, player->timeDrift()); |
176 | 176 |
177 updateTimeline(200); | 177 updateTimeline(200); |
178 player->setPaused(false); | 178 player->setPaused(false); |
179 EXPECT_EQ(100, player->currentTime()); | 179 EXPECT_EQ(100, player->currentTime()); |
180 EXPECT_EQ(300, player->timeDrift()); | 180 EXPECT_EQ(300, player->timeDrift()); |
181 | 181 |
182 updateTimeline(250); | 182 updateTimeline(250); |
183 EXPECT_EQ(200, player->currentTime()); | 183 EXPECT_EQ(200, player->currentTime()); |
184 EXPECT_EQ(300, player->timeDrift()); | 184 EXPECT_EQ(300, player->timeDrift()); |
185 } | 185 } |
186 | 186 |
187 TEST_F(PlayerTest, SetPlaybackRateNaN) | 187 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateNaN) |
188 { | 188 { |
189 updateTimeline(0); | 189 updateTimeline(0); |
190 player->setPlaybackRate(nullValue()); | 190 player->setPlaybackRate(nullValue()); |
191 EXPECT_TRUE(isNull(player->playbackRate())); | 191 EXPECT_TRUE(isNull(player->playbackRate())); |
192 EXPECT_TRUE(isNull(player->currentTime())); | 192 EXPECT_TRUE(isNull(player->currentTime())); |
193 EXPECT_TRUE(isNull(player->timeDrift())); | 193 EXPECT_TRUE(isNull(player->timeDrift())); |
194 | 194 |
195 updateTimeline(100); | 195 updateTimeline(100); |
196 EXPECT_TRUE(isNull(player->currentTime())); | 196 EXPECT_TRUE(isNull(player->currentTime())); |
197 EXPECT_TRUE(isNull(player->timeDrift())); | 197 EXPECT_TRUE(isNull(player->timeDrift())); |
198 } | 198 } |
199 | 199 |
200 TEST_F(PlayerTest, SetPlaybackRateInfinity) | 200 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateInfinity) |
201 { | 201 { |
202 updateTimeline(0); | 202 updateTimeline(0); |
203 player->setPlaybackRate(std::numeric_limits<double>::infinity()); | 203 player->setPlaybackRate(std::numeric_limits<double>::infinity()); |
204 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->playbackRate()); | 204 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->playbackRate()); |
205 EXPECT_TRUE(isNull(player->currentTime())); | 205 EXPECT_TRUE(isNull(player->currentTime())); |
206 EXPECT_TRUE(isNull(player->timeDrift())); | 206 EXPECT_TRUE(isNull(player->timeDrift())); |
207 | 207 |
208 updateTimeline(100); | 208 updateTimeline(100); |
209 EXPECT_TRUE(isNull(player->currentTime())); | 209 EXPECT_TRUE(isNull(player->currentTime())); |
210 EXPECT_TRUE(isNull(player->timeDrift())); | 210 EXPECT_TRUE(isNull(player->timeDrift())); |
211 } | 211 } |
212 | 212 |
213 TEST_F(PlayerTest, SetPlaybackRateMax) | 213 TEST_F(CoreAnimationPlayerTest, SetPlaybackRateMax) |
214 { | 214 { |
215 updateTimeline(0); | 215 updateTimeline(0); |
216 player->setPlaybackRate(std::numeric_limits<double>::max()); | 216 player->setPlaybackRate(std::numeric_limits<double>::max()); |
217 EXPECT_EQ(std::numeric_limits<double>::max(), player->playbackRate()); | 217 EXPECT_EQ(std::numeric_limits<double>::max(), player->playbackRate()); |
218 EXPECT_EQ(0, player->currentTime()); | 218 EXPECT_EQ(0, player->currentTime()); |
219 EXPECT_EQ(0, player->timeDrift()); | 219 EXPECT_EQ(0, player->timeDrift()); |
220 | 220 |
221 updateTimeline(100); | 221 updateTimeline(100); |
222 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); | 222 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); |
223 } | 223 } |
224 | 224 |
225 TEST_F(PlayerTest, SetCurrentTimeNan) | 225 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeNan) |
226 { | 226 { |
227 updateTimeline(0); | 227 updateTimeline(0); |
228 player->setCurrentTime(nullValue()); | 228 player->setCurrentTime(nullValue()); |
229 EXPECT_TRUE(isNull(player->currentTime())); | 229 EXPECT_TRUE(isNull(player->currentTime())); |
230 EXPECT_TRUE(isNull(player->timeDrift())); | 230 EXPECT_TRUE(isNull(player->timeDrift())); |
231 | 231 |
232 updateTimeline(100); | 232 updateTimeline(100); |
233 EXPECT_TRUE(isNull(player->currentTime())); | 233 EXPECT_TRUE(isNull(player->currentTime())); |
234 EXPECT_TRUE(isNull(player->timeDrift())); | 234 EXPECT_TRUE(isNull(player->timeDrift())); |
235 } | 235 } |
236 | 236 |
237 TEST_F(PlayerTest, SetCurrentTimeInfinity) | 237 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeInfinity) |
238 { | 238 { |
239 updateTimeline(0); | 239 updateTimeline(0); |
240 player->setCurrentTime(std::numeric_limits<double>::infinity()); | 240 player->setCurrentTime(std::numeric_limits<double>::infinity()); |
241 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); | 241 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); |
242 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); | 242 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); |
243 | 243 |
244 updateTimeline(100); | 244 updateTimeline(100); |
245 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); | 245 EXPECT_EQ(std::numeric_limits<double>::infinity(), player->currentTime()); |
246 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); | 246 EXPECT_EQ(-std::numeric_limits<double>::infinity(), player->timeDrift()); |
247 } | 247 } |
248 | 248 |
249 TEST_F(PlayerTest, SetCurrentTimeMax) | 249 TEST_F(CoreAnimationPlayerTest, SetCurrentTimeMax) |
250 { | 250 { |
251 updateTimeline(0); | 251 updateTimeline(0); |
252 player->setCurrentTime(std::numeric_limits<double>::max()); | 252 player->setCurrentTime(std::numeric_limits<double>::max()); |
253 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); | 253 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); |
254 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); | 254 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); |
255 | 255 |
256 updateTimeline(100); | 256 updateTimeline(100); |
257 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); | 257 EXPECT_EQ(std::numeric_limits<double>::max(), player->currentTime()); |
258 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); | 258 EXPECT_EQ(-std::numeric_limits<double>::max(), player->timeDrift()); |
259 } | 259 } |
260 | 260 |
261 } | 261 } |
OLD | NEW |