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

Side by Side Diff: third_party/WebKit/Source/core/animation/AnimationTimelineTest.cpp

Issue 1417613005: Revert of Web Animations: Use a single animation clock (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 1 month 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 20 matching lines...) Expand all
31 #include "config.h" 31 #include "config.h"
32 #include "core/animation/AnimationTimeline.h" 32 #include "core/animation/AnimationTimeline.h"
33 33
34 #include "core/animation/AnimationClock.h" 34 #include "core/animation/AnimationClock.h"
35 #include "core/animation/AnimationEffect.h" 35 #include "core/animation/AnimationEffect.h"
36 #include "core/animation/KeyframeEffect.h" 36 #include "core/animation/KeyframeEffect.h"
37 #include "core/animation/KeyframeEffectModel.h" 37 #include "core/animation/KeyframeEffectModel.h"
38 #include "core/dom/Document.h" 38 #include "core/dom/Document.h"
39 #include "core/dom/Element.h" 39 #include "core/dom/Element.h"
40 #include "core/dom/QualifiedName.h" 40 #include "core/dom/QualifiedName.h"
41 #include "core/testing/DummyPageHolder.h"
42 #include "platform/weborigin/KURL.h" 41 #include "platform/weborigin/KURL.h"
43 42
44 #include <gmock/gmock.h> 43 #include <gmock/gmock.h>
45 #include <gtest/gtest.h> 44 #include <gtest/gtest.h>
46 45
47 namespace blink { 46 namespace blink {
48 47
49 class MockPlatformTiming : public AnimationTimeline::PlatformTiming { 48 class MockPlatformTiming : public AnimationTimeline::PlatformTiming {
50 public: 49 public:
51 50
(...skipping 16 matching lines...) Expand all
68 DEFINE_INLINE_TRACE() 67 DEFINE_INLINE_TRACE()
69 { 68 {
70 AnimationTimeline::PlatformTiming::trace(visitor); 69 AnimationTimeline::PlatformTiming::trace(visitor);
71 } 70 }
72 }; 71 };
73 72
74 class AnimationAnimationTimelineTest : public ::testing::Test { 73 class AnimationAnimationTimelineTest : public ::testing::Test {
75 protected: 74 protected:
76 virtual void SetUp() 75 virtual void SetUp()
77 { 76 {
78 pageHolder = DummyPageHolder::create(); 77 document = Document::create();
79 document = &pageHolder->document();
80 document->animationClock().resetTimeForTesting(); 78 document->animationClock().resetTimeForTesting();
81 updateClock(0);
82 element = Element::create(QualifiedName::null() , document.get()); 79 element = Element::create(QualifiedName::null() , document.get());
83 platformTiming = new MockPlatformTiming; 80 platformTiming = new MockPlatformTiming;
84 timeline = AnimationTimeline::create(document.get(), platformTiming); 81 timeline = AnimationTimeline::create(document.get(), platformTiming);
85 ASSERT_EQ(0, timeline->currentTimeInternal()); 82 ASSERT_EQ(0, timeline->currentTimeInternal());
86 } 83 }
87 84
88 virtual void TearDown() 85 virtual void TearDown()
89 { 86 {
90 document.release(); 87 document.release();
91 element.release(); 88 element.release();
92 timeline.release(); 89 timeline.release();
93 #if ENABLE(OILPAN) 90 #if ENABLE(OILPAN)
94 Heap::collectAllGarbage(); 91 Heap::collectAllGarbage();
95 #endif 92 #endif
96 } 93 }
97 94
98 void updateClock(double time)
99 {
100 document->animationClock().updateTime(document->timeline().zeroTime() + time);
101 }
102
103 void updateClockAndService(double time) 95 void updateClockAndService(double time)
104 { 96 {
105 updateClock(time); 97 document->animationClock().updateTime(time);
106 document->compositorPendingAnimations().update(false); 98 document->compositorPendingAnimations().update(false);
107 timeline->serviceAnimations(TimingUpdateForAnimationFrame); 99 timeline->serviceAnimations(TimingUpdateForAnimationFrame);
108 timeline->scheduleNextService(); 100 timeline->scheduleNextService();
109 } 101 }
110 102
111 OwnPtr<DummyPageHolder> pageHolder;
112 RefPtrWillBePersistent<Document> document; 103 RefPtrWillBePersistent<Document> document;
113 RefPtrWillBePersistent<Element> element; 104 RefPtrWillBePersistent<Element> element;
114 Persistent<AnimationTimeline> timeline; 105 Persistent<AnimationTimeline> timeline;
115 Timing timing; 106 Timing timing;
116 Persistent<MockPlatformTiming> platformTiming; 107 Persistent<MockPlatformTiming> platformTiming;
117 108
118 void wake() 109 void wake()
119 { 110 {
120 timeline->wake(); 111 timeline->wake();
121 } 112 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 platformTiming->expectNoMoreActions(); 155 platformTiming->expectNoMoreActions();
165 updateClockAndService(100); 156 updateClockAndService(100);
166 EXPECT_FLOAT_EQ(100, timeline->currentTimeInternal()); 157 EXPECT_FLOAT_EQ(100, timeline->currentTimeInternal());
167 } 158 }
168 159
169 TEST_F(AnimationAnimationTimelineTest, ZeroTime) 160 TEST_F(AnimationAnimationTimelineTest, ZeroTime)
170 { 161 {
171 timeline = AnimationTimeline::create(document.get()); 162 timeline = AnimationTimeline::create(document.get());
172 bool isNull; 163 bool isNull;
173 164
174 updateClock(100); 165 document->animationClock().updateTime(100);
175 EXPECT_EQ(100, timeline->currentTimeInternal()); 166 EXPECT_EQ(100, timeline->currentTimeInternal());
176 EXPECT_EQ(100, timeline->currentTimeInternal(isNull)); 167 EXPECT_EQ(100, timeline->currentTimeInternal(isNull));
177 EXPECT_FALSE(isNull); 168 EXPECT_FALSE(isNull);
178 169
179 updateClock(200); 170 document->animationClock().updateTime(200);
180 EXPECT_EQ(200, timeline->currentTimeInternal()); 171 EXPECT_EQ(200, timeline->currentTimeInternal());
181 EXPECT_EQ(200, timeline->currentTimeInternal(isNull)); 172 EXPECT_EQ(200, timeline->currentTimeInternal(isNull));
182 EXPECT_FALSE(isNull); 173 EXPECT_FALSE(isNull);
183 } 174 }
184 175
185 TEST_F(AnimationAnimationTimelineTest, PlaybackRateNormal) 176 TEST_F(AnimationAnimationTimelineTest, PlaybackRateNormal)
186 { 177 {
187 timeline = AnimationTimeline::create(document.get()); 178 timeline = AnimationTimeline::create(document.get());
188 double zeroTime = timeline->zeroTime(); 179 double zeroTime = timeline->zeroTime();
189 bool isNull; 180 bool isNull;
190 181
191 timeline->setPlaybackRate(1.0); 182 timeline->setPlaybackRate(1.0);
192 EXPECT_EQ(1.0, timeline->playbackRate()); 183 EXPECT_EQ(1.0, timeline->playbackRate());
193 updateClock(100); 184 document->animationClock().updateTime(100);
194 EXPECT_EQ(zeroTime, timeline->zeroTime()); 185 EXPECT_EQ(zeroTime, timeline->zeroTime());
195 EXPECT_EQ(100, timeline->currentTimeInternal()); 186 EXPECT_EQ(100, timeline->currentTimeInternal());
196 EXPECT_EQ(100, timeline->currentTimeInternal(isNull)); 187 EXPECT_EQ(100, timeline->currentTimeInternal(isNull));
197 EXPECT_FALSE(isNull); 188 EXPECT_FALSE(isNull);
198 189
199 updateClock(200); 190 document->animationClock().updateTime(200);
200 EXPECT_EQ(zeroTime, timeline->zeroTime()); 191 EXPECT_EQ(zeroTime, timeline->zeroTime());
201 EXPECT_EQ(200, timeline->currentTimeInternal()); 192 EXPECT_EQ(200, timeline->currentTimeInternal());
202 EXPECT_EQ(200, timeline->currentTimeInternal(isNull)); 193 EXPECT_EQ(200, timeline->currentTimeInternal(isNull));
203 EXPECT_FALSE(isNull); 194 EXPECT_FALSE(isNull);
204 } 195 }
205 196
206 TEST_F(AnimationAnimationTimelineTest, PlaybackRatePause) 197 TEST_F(AnimationAnimationTimelineTest, PlaybackRatePause)
207 { 198 {
208 timeline = AnimationTimeline::create(document.get()); 199 timeline = AnimationTimeline::create(document.get());
209 bool isNull; 200 bool isNull;
210 double zeroTime = timeline->zeroTime();
211 201
212 updateClock(100); 202 document->animationClock().updateTime(100);
213 EXPECT_EQ(zeroTime, timeline->zeroTime()); 203 EXPECT_EQ(0, timeline->zeroTime());
214 EXPECT_EQ(100, timeline->currentTimeInternal()); 204 EXPECT_EQ(100, timeline->currentTimeInternal());
215 EXPECT_EQ(100, timeline->currentTimeInternal(isNull)); 205 EXPECT_EQ(100, timeline->currentTimeInternal(isNull));
216 EXPECT_FALSE(isNull); 206 EXPECT_FALSE(isNull);
217 207
218 timeline->setPlaybackRate(0.0); 208 timeline->setPlaybackRate(0.0);
219 EXPECT_EQ(0.0, timeline->playbackRate()); 209 EXPECT_EQ(0.0, timeline->playbackRate());
220 updateClock(200); 210 document->animationClock().updateTime(200);
221 EXPECT_EQ(100, timeline->zeroTime()); 211 EXPECT_EQ(100, timeline->zeroTime());
222 EXPECT_EQ(100, timeline->currentTimeInternal()); 212 EXPECT_EQ(100, timeline->currentTimeInternal());
223 EXPECT_EQ(100, timeline->currentTimeInternal(isNull)); 213 EXPECT_EQ(100, timeline->currentTimeInternal(isNull));
224 214
225 timeline->setPlaybackRate(1.0); 215 timeline->setPlaybackRate(1.0);
226 EXPECT_EQ(1.0, timeline->playbackRate()); 216 EXPECT_EQ(1.0, timeline->playbackRate());
227 updateClock(400); 217 document->animationClock().updateTime(400);
228 EXPECT_EQ(zeroTime + 100, timeline->zeroTime()); 218 EXPECT_EQ(100, timeline->zeroTime());
229 EXPECT_EQ(300, timeline->currentTimeInternal()); 219 EXPECT_EQ(300, timeline->currentTimeInternal());
230 EXPECT_EQ(300, timeline->currentTimeInternal(isNull)); 220 EXPECT_EQ(300, timeline->currentTimeInternal(isNull));
231 221
232 EXPECT_FALSE(isNull); 222 EXPECT_FALSE(isNull);
233 } 223 }
234 224
235 TEST_F(AnimationAnimationTimelineTest, PlaybackRateSlow) 225 TEST_F(AnimationAnimationTimelineTest, PlaybackRateSlow)
236 { 226 {
237 timeline = AnimationTimeline::create(document.get()); 227 timeline = AnimationTimeline::create(document.get());
238 bool isNull; 228 bool isNull;
239 double zeroTime = timeline->zeroTime();
240 229
241 updateClock(100); 230 document->animationClock().updateTime(100);
242 EXPECT_EQ(zeroTime, timeline->zeroTime()); 231 EXPECT_EQ(0, timeline->zeroTime());
243 EXPECT_EQ(100, timeline->currentTimeInternal()); 232 EXPECT_EQ(100, timeline->currentTimeInternal());
244 EXPECT_EQ(100, timeline->currentTimeInternal(isNull)); 233 EXPECT_EQ(100, timeline->currentTimeInternal(isNull));
245 EXPECT_FALSE(isNull); 234 EXPECT_FALSE(isNull);
246 235
247 timeline->setPlaybackRate(0.5); 236 timeline->setPlaybackRate(0.5);
248 EXPECT_EQ(0.5, timeline->playbackRate()); 237 EXPECT_EQ(0.5, timeline->playbackRate());
249 updateClock(300); 238 document->animationClock().updateTime(300);
250 EXPECT_EQ(zeroTime - 100, timeline->zeroTime()); 239 EXPECT_EQ(-100, timeline->zeroTime());
251 EXPECT_EQ(200, timeline->currentTimeInternal()); 240 EXPECT_EQ(200, timeline->currentTimeInternal());
252 EXPECT_EQ(200, timeline->currentTimeInternal(isNull)); 241 EXPECT_EQ(200, timeline->currentTimeInternal(isNull));
253 242
254 timeline->setPlaybackRate(1.0); 243 timeline->setPlaybackRate(1.0);
255 EXPECT_EQ(1.0, timeline->playbackRate()); 244 EXPECT_EQ(1.0, timeline->playbackRate());
256 updateClock(400); 245 document->animationClock().updateTime(400);
257 EXPECT_EQ(zeroTime + 100, timeline->zeroTime()); 246 EXPECT_EQ(100, timeline->zeroTime());
258 EXPECT_EQ(300, timeline->currentTimeInternal()); 247 EXPECT_EQ(300, timeline->currentTimeInternal());
259 EXPECT_EQ(300, timeline->currentTimeInternal(isNull)); 248 EXPECT_EQ(300, timeline->currentTimeInternal(isNull));
260 249
261 EXPECT_FALSE(isNull); 250 EXPECT_FALSE(isNull);
262 } 251 }
263 252
264 TEST_F(AnimationAnimationTimelineTest, PlaybackRateFast) 253 TEST_F(AnimationAnimationTimelineTest, PlaybackRateFast)
265 { 254 {
266 timeline = AnimationTimeline::create(document.get()); 255 timeline = AnimationTimeline::create(document.get());
267 bool isNull; 256 bool isNull;
268 double zeroTime = timeline->zeroTime();
269 257
270 updateClock(100); 258 document->animationClock().updateTime(100);
271 EXPECT_EQ(zeroTime, timeline->zeroTime()); 259 EXPECT_EQ(0, timeline->zeroTime());
272 EXPECT_EQ(100, timeline->currentTimeInternal()); 260 EXPECT_EQ(100, timeline->currentTimeInternal());
273 EXPECT_EQ(100, timeline->currentTimeInternal(isNull)); 261 EXPECT_EQ(100, timeline->currentTimeInternal(isNull));
274 EXPECT_FALSE(isNull); 262 EXPECT_FALSE(isNull);
275 263
276 timeline->setPlaybackRate(2.0); 264 timeline->setPlaybackRate(2.0);
277 EXPECT_EQ(2.0, timeline->playbackRate()); 265 EXPECT_EQ(2.0, timeline->playbackRate());
278 updateClock(300); 266 document->animationClock().updateTime(300);
279 EXPECT_EQ(zeroTime + 50, timeline->zeroTime()); 267 EXPECT_EQ(50, timeline->zeroTime());
280 EXPECT_EQ(500, timeline->currentTimeInternal()); 268 EXPECT_EQ(500, timeline->currentTimeInternal());
281 EXPECT_EQ(500, timeline->currentTimeInternal(isNull)); 269 EXPECT_EQ(500, timeline->currentTimeInternal(isNull));
282 270
283 timeline->setPlaybackRate(1.0); 271 timeline->setPlaybackRate(1.0);
284 EXPECT_EQ(1.0, timeline->playbackRate()); 272 EXPECT_EQ(1.0, timeline->playbackRate());
285 updateClock(400); 273 document->animationClock().updateTime(400);
286 EXPECT_EQ(zeroTime - 200, timeline->zeroTime()); 274 EXPECT_EQ(-200, timeline->zeroTime());
287 EXPECT_EQ(600, timeline->currentTimeInternal()); 275 EXPECT_EQ(600, timeline->currentTimeInternal());
288 EXPECT_EQ(600, timeline->currentTimeInternal(isNull)); 276 EXPECT_EQ(600, timeline->currentTimeInternal(isNull));
289 277
290 EXPECT_FALSE(isNull); 278 EXPECT_FALSE(isNull);
291 } 279 }
292 280
293 TEST_F(AnimationAnimationTimelineTest, SetCurrentTime) 281 TEST_F(AnimationAnimationTimelineTest, SetCurrentTime)
294 { 282 {
295 timeline = AnimationTimeline::create(document.get()); 283 timeline = AnimationTimeline::create(document.get());
296 double zeroTime = timeline->zeroTime(); 284 double zeroTime = timeline->zeroTime();
297 285
298 updateClock(100); 286 document->animationClock().updateTime(100);
299 EXPECT_EQ(zeroTime, timeline->zeroTime()); 287 EXPECT_EQ(zeroTime, timeline->zeroTime());
300 EXPECT_EQ(100, timeline->currentTimeInternal()); 288 EXPECT_EQ(100, timeline->currentTimeInternal());
301 289
302 timeline->setCurrentTimeInternal(0); 290 timeline->setCurrentTimeInternal(0);
303 EXPECT_EQ(0, timeline->currentTimeInternal()); 291 EXPECT_EQ(0, timeline->currentTimeInternal());
304 EXPECT_EQ(zeroTime + 100, timeline->zeroTime()); 292 EXPECT_EQ(zeroTime + 100, timeline->zeroTime());
305 293
306 timeline->setCurrentTimeInternal(100); 294 timeline->setCurrentTimeInternal(100);
307 EXPECT_EQ(100, timeline->currentTimeInternal()); 295 EXPECT_EQ(100, timeline->currentTimeInternal());
308 EXPECT_EQ(zeroTime, timeline->zeroTime()); 296 EXPECT_EQ(zeroTime, timeline->zeroTime());
309 297
310 timeline->setCurrentTimeInternal(200); 298 timeline->setCurrentTimeInternal(200);
311 EXPECT_EQ(200, timeline->currentTimeInternal()); 299 EXPECT_EQ(200, timeline->currentTimeInternal());
312 EXPECT_EQ(zeroTime - 100, timeline->zeroTime()); 300 EXPECT_EQ(zeroTime - 100, timeline->zeroTime());
313 301
314 updateClock(200); 302 document->animationClock().updateTime(200);
315 EXPECT_EQ(300, timeline->currentTimeInternal()); 303 EXPECT_EQ(300, timeline->currentTimeInternal());
316 EXPECT_EQ(zeroTime - 100, timeline->zeroTime()); 304 EXPECT_EQ(zeroTime - 100, timeline->zeroTime());
317 305
318 timeline->setCurrentTimeInternal(0); 306 timeline->setCurrentTimeInternal(0);
319 EXPECT_EQ(0, timeline->currentTimeInternal()); 307 EXPECT_EQ(0, timeline->currentTimeInternal());
320 EXPECT_EQ(zeroTime + 200, timeline->zeroTime()); 308 EXPECT_EQ(zeroTime + 200, timeline->zeroTime());
321 309
322 timeline->setCurrentTimeInternal(100); 310 timeline->setCurrentTimeInternal(100);
323 EXPECT_EQ(100, timeline->currentTimeInternal()); 311 EXPECT_EQ(100, timeline->currentTimeInternal());
324 EXPECT_EQ(zeroTime + 100, timeline->zeroTime()); 312 EXPECT_EQ(zeroTime + 100, timeline->zeroTime());
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 381
394 TEST_F(AnimationAnimationTimelineTest, UseAnimationAfterTimelineDeref) 382 TEST_F(AnimationAnimationTimelineTest, UseAnimationAfterTimelineDeref)
395 { 383 {
396 Animation* animation = timeline->play(0); 384 Animation* animation = timeline->play(0);
397 timeline.clear(); 385 timeline.clear();
398 // Test passes if this does not crash. 386 // Test passes if this does not crash.
399 animation->setStartTime(0); 387 animation->setStartTime(0);
400 } 388 }
401 389
402 } 390 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698