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

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

Powered by Google App Engine
This is Rietveld 408576698