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

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

Issue 225073004: Oilpan: Completely move core/animations/ to oilpan's heap (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
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 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 EXPECT_CALL(*this, cancelWake()).InSequence(sequence); 70 EXPECT_CALL(*this, cancelWake()).InSequence(sequence);
71 EXPECT_CALL(*this, serviceOnNextFrame()).InSequence(sequence); 71 EXPECT_CALL(*this, serviceOnNextFrame()).InSequence(sequence);
72 } 72 }
73 73
74 void expectDelayedAction(double when) 74 void expectDelayedAction(double when)
75 { 75 {
76 ::testing::Sequence sequence; 76 ::testing::Sequence sequence;
77 EXPECT_CALL(*this, cancelWake()).InSequence(sequence); 77 EXPECT_CALL(*this, cancelWake()).InSequence(sequence);
78 EXPECT_CALL(*this, wakeAfter(when)).InSequence(sequence); 78 EXPECT_CALL(*this, wakeAfter(when)).InSequence(sequence);
79 } 79 }
80
81 void trace(Visitor* visitor)
82 {
83 }
80 }; 84 };
81 85
82 class AnimationDocumentTimelineTest : public ::testing::Test { 86 class AnimationDocumentTimelineTest : public ::testing::Test {
83 protected: 87 protected:
84 virtual void SetUp() 88 virtual void SetUp()
85 { 89 {
86 document = Document::create(); 90 document = Document::create();
87 document->animationClock().resetTimeForTesting(); 91 document->animationClock().resetTimeForTesting();
88 element = Element::create(nullQName() , document.get()); 92 element = Element::create(nullQName() , document.get());
89 platformTiming = new MockPlatformTiming; 93 platformTiming = new MockPlatformTiming;
90 timeline = DocumentTimeline::create(document.get(), adoptPtr(platformTim ing)); 94 timeline = DocumentTimeline::create(document.get(), adoptPtrWillBeNoop(p latformTiming));
91 timeline->setZeroTime(0); 95 timeline->setZeroTime(0);
92 ASSERT_EQ(0, timeline->currentTimeInternal()); 96 ASSERT_EQ(0, timeline->currentTimeInternal());
93 } 97 }
94 98
95 virtual void TearDown() 99 virtual void TearDown()
96 { 100 {
97 timeline.release(); 101 timeline.release();
98 document.release(); 102 document.release();
99 element.release(); 103 element.release();
100 } 104 }
101 105
102 void updateClockAndService(double time) 106 void updateClockAndService(double time)
103 { 107 {
104 document->animationClock().updateTime(time); 108 document->animationClock().updateTime(time);
105 timeline->serviceAnimations(TimingUpdateForAnimationFrame); 109 timeline->serviceAnimations(TimingUpdateForAnimationFrame);
106 } 110 }
107 111
108 RefPtr<Document> document; 112 RefPtr<Document> document;
109 RefPtr<Element> element; 113 RefPtr<Element> element;
110 RefPtr<DocumentTimeline> timeline; 114 RefPtrWillBePersistent<DocumentTimeline> timeline;
111 Timing timing; 115 Timing timing;
112 MockPlatformTiming* platformTiming; 116 MockPlatformTiming* platformTiming;
113 117
114 void wake() 118 void wake()
115 { 119 {
116 timeline->wake(); 120 timeline->wake();
117 } 121 }
118 122
119 double minimumDelay() 123 double minimumDelay()
120 { 124 {
121 return DocumentTimeline::s_minimumDelay; 125 return DocumentTimeline::s_minimumDelay;
122 } 126 }
123 }; 127 };
124 128
125 TEST_F(AnimationDocumentTimelineTest, HasStarted) 129 TEST_F(AnimationDocumentTimelineTest, HasStarted)
126 { 130 {
127 timeline = DocumentTimeline::create(document.get()); 131 timeline = DocumentTimeline::create(document.get());
128 EXPECT_FALSE(timeline->hasStarted()); 132 EXPECT_FALSE(timeline->hasStarted());
129 timeline->setZeroTime(0); 133 timeline->setZeroTime(0);
130 EXPECT_TRUE(timeline->hasStarted()); 134 EXPECT_TRUE(timeline->hasStarted());
131 } 135 }
132 136
133 TEST_F(AnimationDocumentTimelineTest, EmptyKeyframeAnimation) 137 TEST_F(AnimationDocumentTimelineTest, EmptyKeyframeAnimation)
134 { 138 {
135 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(AnimatableValueKeyframeVector()); 139 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(AnimatableValueKeyframeVector());
136 RefPtr<Animation> anim = Animation::create(element.get(), effect, timing); 140 RefPtrWillBeRawPtr<Animation> anim = Animation::create(element.get(), effect , timing);
137 141
138 timeline->play(anim.get()); 142 timeline->play(anim.get());
139 143
140 platformTiming->expectNoMoreActions(); 144 platformTiming->expectNoMoreActions();
141 updateClockAndService(0); 145 updateClockAndService(0);
142 EXPECT_FLOAT_EQ(0, timeline->currentTimeInternal()); 146 EXPECT_FLOAT_EQ(0, timeline->currentTimeInternal());
143 EXPECT_FALSE(anim->isInEffect()); 147 EXPECT_FALSE(anim->isInEffect());
144 148
145 platformTiming->expectNoMoreActions(); 149 platformTiming->expectNoMoreActions();
146 updateClockAndService(100); 150 updateClockAndService(100);
147 EXPECT_FLOAT_EQ(100, timeline->currentTimeInternal()); 151 EXPECT_FLOAT_EQ(100, timeline->currentTimeInternal());
148 } 152 }
149 153
150 TEST_F(AnimationDocumentTimelineTest, EmptyForwardsKeyframeAnimation) 154 TEST_F(AnimationDocumentTimelineTest, EmptyForwardsKeyframeAnimation)
151 { 155 {
152 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(AnimatableValueKeyframeVector()); 156 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(AnimatableValueKeyframeVector());
153 timing.fillMode = Timing::FillModeForwards; 157 timing.fillMode = Timing::FillModeForwards;
154 RefPtr<Animation> anim = Animation::create(element.get(), effect, timing); 158 RefPtrWillBeRawPtr<Animation> anim = Animation::create(element.get(), effect , timing);
155 159
156 timeline->play(anim.get()); 160 timeline->play(anim.get());
157 161
158 platformTiming->expectNoMoreActions(); 162 platformTiming->expectNoMoreActions();
159 updateClockAndService(0); 163 updateClockAndService(0);
160 EXPECT_FLOAT_EQ(0, timeline->currentTimeInternal()); 164 EXPECT_FLOAT_EQ(0, timeline->currentTimeInternal());
161 EXPECT_TRUE(anim->isInEffect()); 165 EXPECT_TRUE(anim->isInEffect());
162 166
163 platformTiming->expectNoMoreActions(); 167 platformTiming->expectNoMoreActions();
164 updateClockAndService(100); 168 updateClockAndService(100);
(...skipping 20 matching lines...) Expand all
185 EXPECT_FALSE(isNull); 189 EXPECT_FALSE(isNull);
186 190
187 document->animationClock().updateTime(400); 191 document->animationClock().updateTime(400);
188 EXPECT_EQ(100, timeline->currentTimeInternal()); 192 EXPECT_EQ(100, timeline->currentTimeInternal());
189 } 193 }
190 194
191 TEST_F(AnimationDocumentTimelineTest, PauseForTesting) 195 TEST_F(AnimationDocumentTimelineTest, PauseForTesting)
192 { 196 {
193 float seekTime = 1; 197 float seekTime = 1;
194 timing.fillMode = Timing::FillModeForwards; 198 timing.fillMode = Timing::FillModeForwards;
195 RefPtr<Animation> anim1 = Animation::create(element.get(), AnimatableValueKe yframeEffectModel::create(AnimatableValueKeyframeVector()), timing); 199 RefPtrWillBeRawPtr<Animation> anim1 = Animation::create(element.get(), Anima tableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timing);
196 RefPtr<Animation> anim2 = Animation::create(element.get(), AnimatableValueK eyframeEffectModel::create(AnimatableValueKeyframeVector()), timing); 200 RefPtrWillBeRawPtr<Animation> anim2 = Animation::create(element.get(), Anim atableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timing) ;
197 AnimationPlayer* player1 = timeline->play(anim1.get()); 201 AnimationPlayer* player1 = timeline->play(anim1.get());
198 AnimationPlayer* player2 = timeline->play(anim2.get()); 202 AnimationPlayer* player2 = timeline->play(anim2.get());
199 timeline->pauseAnimationsForTesting(seekTime); 203 timeline->pauseAnimationsForTesting(seekTime);
200 204
201 EXPECT_FLOAT_EQ(seekTime, player1->currentTimeInternal()); 205 EXPECT_FLOAT_EQ(seekTime, player1->currentTimeInternal());
202 EXPECT_FLOAT_EQ(seekTime, player2->currentTimeInternal()); 206 EXPECT_FLOAT_EQ(seekTime, player2->currentTimeInternal());
203 } 207 }
204 208
205 TEST_F(AnimationDocumentTimelineTest, NumberOfActiveAnimations) 209 TEST_F(AnimationDocumentTimelineTest, NumberOfActiveAnimations)
206 { 210 {
(...skipping 11 matching lines...) Expand all
218 timingBackwardFillDelay.startDelay = 1; 222 timingBackwardFillDelay.startDelay = 1;
219 223
220 Timing timingNoFillDelay; 224 Timing timingNoFillDelay;
221 timingNoFillDelay.iterationDuration = 1; 225 timingNoFillDelay.iterationDuration = 1;
222 timingNoFillDelay.fillMode = Timing::FillModeNone; 226 timingNoFillDelay.fillMode = Timing::FillModeNone;
223 timingNoFillDelay.startDelay = 1; 227 timingNoFillDelay.startDelay = 1;
224 228
225 Timing timingAutoFill; 229 Timing timingAutoFill;
226 timingAutoFill.iterationDuration = 2; 230 timingAutoFill.iterationDuration = 2;
227 231
228 RefPtr<Animation> anim1 = Animation::create(element.get(), AnimatableValueKe yframeEffectModel::create(AnimatableValueKeyframeVector()), timingForwardFill); 232 RefPtrWillBeRawPtr<Animation> anim1 = Animation::create(element.get(), Anima tableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timingFo rwardFill);
229 RefPtr<Animation> anim2 = Animation::create(element.get(), AnimatableValueKe yframeEffectModel::create(AnimatableValueKeyframeVector()), timingNoFill); 233 RefPtrWillBeRawPtr<Animation> anim2 = Animation::create(element.get(), Anima tableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timingNo Fill);
230 RefPtr<Animation> anim3 = Animation::create(element.get(), AnimatableValueKe yframeEffectModel::create(AnimatableValueKeyframeVector()), timingBackwardFillDe lay); 234 RefPtrWillBeRawPtr<Animation> anim3 = Animation::create(element.get(), Anima tableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timingBa ckwardFillDelay);
231 RefPtr<Animation> anim4 = Animation::create(element.get(), AnimatableValueKe yframeEffectModel::create(AnimatableValueKeyframeVector()), timingNoFillDelay); 235 RefPtrWillBeRawPtr<Animation> anim4 = Animation::create(element.get(), Anima tableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timingNo FillDelay);
232 RefPtr<Animation> anim5 = Animation::create(element.get(), AnimatableValueKe yframeEffectModel::create(AnimatableValueKeyframeVector()), timingAutoFill); 236 RefPtrWillBeRawPtr<Animation> anim5 = Animation::create(element.get(), Anima tableValueKeyframeEffectModel::create(AnimatableValueKeyframeVector()), timingAu toFill);
233 237
234 timeline->play(anim1.get()); 238 timeline->play(anim1.get());
235 timeline->play(anim2.get()); 239 timeline->play(anim2.get());
236 timeline->play(anim3.get()); 240 timeline->play(anim3.get());
237 timeline->play(anim4.get()); 241 timeline->play(anim4.get());
238 timeline->play(anim5.get()); 242 timeline->play(anim5.get());
239 243
240 platformTiming->expectNextFrameAction(); 244 platformTiming->expectNextFrameAction();
241 updateClockAndService(0); 245 updateClockAndService(0);
242 EXPECT_EQ(5U, timeline->numberOfActiveAnimationsForTesting()); 246 EXPECT_EQ(5U, timeline->numberOfActiveAnimationsForTesting());
243 platformTiming->expectNextFrameAction(); 247 platformTiming->expectNextFrameAction();
244 updateClockAndService(0.5); 248 updateClockAndService(0.5);
245 EXPECT_EQ(5U, timeline->numberOfActiveAnimationsForTesting()); 249 EXPECT_EQ(5U, timeline->numberOfActiveAnimationsForTesting());
246 platformTiming->expectNextFrameAction(); 250 platformTiming->expectNextFrameAction();
247 updateClockAndService(1.5); 251 updateClockAndService(1.5);
248 EXPECT_EQ(5U, timeline->numberOfActiveAnimationsForTesting()); 252 EXPECT_EQ(5U, timeline->numberOfActiveAnimationsForTesting());
249 platformTiming->expectNoMoreActions(); 253 platformTiming->expectNoMoreActions();
250 updateClockAndService(3); 254 updateClockAndService(3);
251 EXPECT_EQ(0U, timeline->numberOfActiveAnimationsForTesting()); 255 EXPECT_EQ(0U, timeline->numberOfActiveAnimationsForTesting());
252 } 256 }
253 257
254 TEST_F(AnimationDocumentTimelineTest, DelayBeforeAnimationStart) 258 TEST_F(AnimationDocumentTimelineTest, DelayBeforeAnimationStart)
255 { 259 {
256 timing.iterationDuration = 2; 260 timing.iterationDuration = 2;
257 timing.startDelay = 5; 261 timing.startDelay = 5;
258 262
259 RefPtr<Animation> anim = Animation::create(element.get(), nullptr, timing); 263 RefPtrWillBeRawPtr<Animation> anim = Animation::create(element.get(), nullpt r, timing);
260 264
261 timeline->play(anim.get()); 265 timeline->play(anim.get());
262 266
263 // TODO: Put the player startTime in the future when we add the capability t o change player startTime 267 // TODO: Put the player startTime in the future when we add the capability t o change player startTime
264 platformTiming->expectDelayedAction(timing.startDelay - minimumDelay()); 268 platformTiming->expectDelayedAction(timing.startDelay - minimumDelay());
265 updateClockAndService(0); 269 updateClockAndService(0);
266 270
267 platformTiming->expectDelayedAction(timing.startDelay - minimumDelay() - 1.5 ); 271 platformTiming->expectDelayedAction(timing.startDelay - minimumDelay() - 1.5 );
268 updateClockAndService(1.5); 272 updateClockAndService(1.5);
269 273
270 EXPECT_CALL(*platformTiming, serviceOnNextFrame()); 274 EXPECT_CALL(*platformTiming, serviceOnNextFrame());
271 wake(); 275 wake();
272 276
273 platformTiming->expectNextFrameAction(); 277 platformTiming->expectNextFrameAction();
274 updateClockAndService(4.98); 278 updateClockAndService(4.98);
275 } 279 }
276 280
277 TEST_F(AnimationDocumentTimelineTest, PlayAfterDocumentDeref) 281 TEST_F(AnimationDocumentTimelineTest, PlayAfterDocumentDeref)
278 { 282 {
279 timing.iterationDuration = 2; 283 timing.iterationDuration = 2;
280 timing.startDelay = 5; 284 timing.startDelay = 5;
281 285
282 timeline = &document->timeline(); 286 timeline = &document->timeline();
283 element = nullptr; 287 element = nullptr;
284 document = nullptr; 288 document = nullptr;
285 289
286 RefPtr<Animation> anim = Animation::create(0, nullptr, timing); 290 RefPtrWillBeRawPtr<Animation> anim = Animation::create(0, nullptr, timing);
287 // Test passes if this does not crash. 291 // Test passes if this does not crash.
288 timeline->play(anim.get()); 292 timeline->play(anim.get());
289 } 293 }
290 294
291 TEST_F(AnimationDocumentTimelineTest, UseAnimationPlayerAfterTimelineDeref) 295 TEST_F(AnimationDocumentTimelineTest, UseAnimationPlayerAfterTimelineDeref)
292 { 296 {
293 RefPtr<AnimationPlayer> player = timeline->createAnimationPlayer(0); 297 RefPtrWillBeRawPtr<AnimationPlayer> player = timeline->createAnimationPlayer (0);
294 timeline.clear(); 298 timeline.clear();
295 // Test passes if this does not crash. 299 // Test passes if this does not crash.
296 player->setStartTime(0); 300 player->setStartTime(0);
297 } 301 }
298 302
299 } 303 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698