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

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

Issue 1120003002: [Oilpan] Migrate most classes under core/animations to Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Intentional nullptr access Created 5 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
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 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 69
70 class AnimationCompositorAnimationsTest : public AnimationCompositorAnimationsTe stBase { 70 class AnimationCompositorAnimationsTest : public AnimationCompositorAnimationsTe stBase {
71 protected: 71 protected:
72 RefPtr<TimingFunction> m_linearTimingFunction; 72 RefPtr<TimingFunction> m_linearTimingFunction;
73 RefPtr<TimingFunction> m_cubicEaseTimingFunction; 73 RefPtr<TimingFunction> m_cubicEaseTimingFunction;
74 RefPtr<TimingFunction> m_cubicCustomTimingFunction; 74 RefPtr<TimingFunction> m_cubicCustomTimingFunction;
75 RefPtr<TimingFunction> m_stepTimingFunction; 75 RefPtr<TimingFunction> m_stepTimingFunction;
76 76
77 Timing m_timing; 77 Timing m_timing;
78 CompositorAnimationsImpl::CompositorTiming m_compositorTiming; 78 CompositorAnimationsImpl::CompositorTiming m_compositorTiming;
79 OwnPtrWillBePersistent<AnimatableValueKeyframeVector> m_keyframeVector2; 79 Persistent<AnimatableValueKeyframeVector> m_keyframeVector2;
80 RefPtrWillBePersistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimati onEffect2; 80 Persistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimationEffect2;
81 OwnPtrWillBePersistent<AnimatableValueKeyframeVector> m_keyframeVector5; 81 Persistent<AnimatableValueKeyframeVector> m_keyframeVector5;
82 RefPtrWillBePersistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimati onEffect5; 82 Persistent<AnimatableValueKeyframeEffectModel> m_keyframeAnimationEffect5;
83 83
84 RefPtrWillBePersistent<Document> m_document; 84 RefPtrWillBePersistent<Document> m_document;
85 RefPtrWillBePersistent<Element> m_element; 85 RefPtrWillBePersistent<Element> m_element;
86 RefPtrWillBePersistent<AnimationTimeline> m_timeline; 86 Persistent<AnimationTimeline> m_timeline;
87 87
88 virtual void SetUp() 88 virtual void SetUp()
89 { 89 {
90 AnimationCompositorAnimationsTestBase::SetUp(); 90 AnimationCompositorAnimationsTestBase::SetUp();
91 91
92 m_linearTimingFunction = LinearTimingFunction::shared(); 92 m_linearTimingFunction = LinearTimingFunction::shared();
93 m_cubicEaseTimingFunction = CubicBezierTimingFunction::preset(CubicBezie rTimingFunction::Ease); 93 m_cubicEaseTimingFunction = CubicBezierTimingFunction::preset(CubicBezie rTimingFunction::Ease);
94 m_cubicCustomTimingFunction = CubicBezierTimingFunction::create(1, 2, 3, 4); 94 m_cubicCustomTimingFunction = CubicBezierTimingFunction::create(1, 2, 3, 4);
95 m_stepTimingFunction = StepsTimingFunction::create(1, StepsTimingFunctio n::End); 95 m_stepTimingFunction = StepsTimingFunction::create(1, StepsTimingFunctio n::End);
96 96
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 } 132 }
133 bool getAnimationBounds(FloatBox& boundingBox, const EffectModel& effect, do uble minValue, double maxValue) 133 bool getAnimationBounds(FloatBox& boundingBox, const EffectModel& effect, do uble minValue, double maxValue)
134 { 134 {
135 return CompositorAnimations::instance()->getAnimatedBoundingBox(bounding Box, effect, minValue, maxValue); 135 return CompositorAnimations::instance()->getAnimatedBoundingBox(bounding Box, effect, minValue, maxValue);
136 } 136 }
137 137
138 bool duplicateSingleKeyframeAndTestIsCandidateOnResult(AnimatableValueKeyfra me* frame) 138 bool duplicateSingleKeyframeAndTestIsCandidateOnResult(AnimatableValueKeyfra me* frame)
139 { 139 {
140 EXPECT_EQ(frame->offset(), 0); 140 EXPECT_EQ(frame->offset(), 0);
141 AnimatableValueKeyframeVector frames; 141 AnimatableValueKeyframeVector frames;
142 RefPtrWillBeRawPtr<Keyframe> second = frame->cloneWithOffset(1); 142 Keyframe* second = frame->cloneWithOffset(1);
143 143
144 frames.append(frame); 144 frames.append(frame);
145 frames.append(toAnimatableValueKeyframe(second.get())); 145 frames.append(toAnimatableValueKeyframe(second));
146 return isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKey frameEffectModel::create(frames).get()); 146 return isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKey frameEffectModel::create(frames));
147 } 147 }
148 148
149 // ------------------------------------------------------------------- 149 // -------------------------------------------------------------------
150 150
151 Timing createCompositableTiming() 151 Timing createCompositableTiming()
152 { 152 {
153 Timing timing; 153 Timing timing;
154 timing.startDelay = 0; 154 timing.startDelay = 0;
155 timing.fillMode = Timing::FillModeNone; 155 timing.fillMode = Timing::FillModeNone;
156 timing.iterationStart = 0; 156 timing.iterationStart = 0;
157 timing.iterationCount = 1; 157 timing.iterationCount = 1;
158 timing.iterationDuration = 1.0; 158 timing.iterationDuration = 1.0;
159 timing.playbackRate = 1.0; 159 timing.playbackRate = 1.0;
160 timing.direction = Timing::PlaybackDirectionNormal; 160 timing.direction = Timing::PlaybackDirectionNormal;
161 ASSERT(m_linearTimingFunction); 161 ASSERT(m_linearTimingFunction);
162 timing.timingFunction = m_linearTimingFunction; 162 timing.timingFunction = m_linearTimingFunction;
163 return timing; 163 return timing;
164 } 164 }
165 165
166 PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> createReplaceOpKeyframe(CSSP ropertyID id, AnimatableValue* value, double offset = 0) 166 AnimatableValueKeyframe* createReplaceOpKeyframe(CSSPropertyID id, Animatabl eValue* value, double offset = 0)
167 { 167 {
168 RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframe = AnimatableValueKe yframe::create(); 168 AnimatableValueKeyframe* keyframe = AnimatableValueKeyframe::create();
169 keyframe->setPropertyValue(id, value); 169 keyframe->setPropertyValue(id, value);
170 keyframe->setComposite(EffectModel::CompositeReplace); 170 keyframe->setComposite(EffectModel::CompositeReplace);
171 keyframe->setOffset(offset); 171 keyframe->setOffset(offset);
172 keyframe->setEasing(LinearTimingFunction::shared()); 172 keyframe->setEasing(LinearTimingFunction::shared());
173 return keyframe; 173 return keyframe;
174 } 174 }
175 175
176 PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> createDefaultKeyframe(CSSPro pertyID id, EffectModel::CompositeOperation op, double offset = 0) 176 AnimatableValueKeyframe* createDefaultKeyframe(CSSPropertyID id, EffectModel ::CompositeOperation op, double offset = 0)
177 { 177 {
178 RefPtrWillBeRawPtr<AnimatableValue> value = nullptr; 178 AnimatableValue* value = nullptr;
179 if (id == CSSPropertyTransform) 179 if (id == CSSPropertyTransform)
180 value = AnimatableTransform::create(TransformOperations()); 180 value = AnimatableTransform::create(TransformOperations());
181 else 181 else
182 value = AnimatableDouble::create(10.0); 182 value = AnimatableDouble::create(10.0);
183 183
184 RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframe = createReplaceOpKe yframe(id, value.get(), offset); 184 AnimatableValueKeyframe* keyframe = createReplaceOpKeyframe(id, value, o ffset);
185 keyframe->setComposite(op); 185 keyframe->setComposite(op);
186 return keyframe; 186 return keyframe;
187 } 187 }
188 188
189 PassOwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> createCompositableFloa tKeyframeVector(size_t n) 189 AnimatableValueKeyframeVector* createCompositableFloatKeyframeVector(size_t n)
190 { 190 {
191 Vector<double> values; 191 Vector<double> values;
192 for (size_t i = 0; i < n; i++) { 192 for (size_t i = 0; i < n; i++) {
193 values.append(static_cast<double>(i)); 193 values.append(static_cast<double>(i));
194 } 194 }
195 return createCompositableFloatKeyframeVector(values); 195 return createCompositableFloatKeyframeVector(values);
196 } 196 }
197 197
198 PassOwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> createCompositableFloa tKeyframeVector(Vector<double>& values) 198 AnimatableValueKeyframeVector* createCompositableFloatKeyframeVector(Vector< double>& values)
199 { 199 {
200 OwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> frames = adoptPtrWillB eNoop(new AnimatableValueKeyframeVector); 200 AnimatableValueKeyframeVector* frames = new AnimatableValueKeyframeVecto r;
201 for (size_t i = 0; i < values.size(); i++) { 201 for (size_t i = 0; i < values.size(); i++) {
202 double offset = 1.0 / (values.size() - 1) * i; 202 double offset = 1.0 / (values.size() - 1) * i;
203 RefPtrWillBeRawPtr<AnimatableDouble> value = AnimatableDouble::creat e(values[i]); 203 AnimatableDouble* value = AnimatableDouble::create(values[i]);
204 frames->append(createReplaceOpKeyframe(CSSPropertyOpacity, value.get (), offset).get()); 204 frames->append(createReplaceOpKeyframe(CSSPropertyOpacity, value, of fset));
205 } 205 }
206 return frames.release(); 206 return frames;
207 } 207 }
208 208
209 PassOwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> createCompositableTran sformKeyframeVector(const Vector<TransformOperations>& values) 209 AnimatableValueKeyframeVector* createCompositableTransformKeyframeVector(con st Vector<TransformOperations>& values)
210 { 210 {
211 OwnPtrWillBeRawPtr<AnimatableValueKeyframeVector> frames = adoptPtrWillB eNoop(new AnimatableValueKeyframeVector); 211 AnimatableValueKeyframeVector* frames = new AnimatableValueKeyframeVecto r;
212 for (size_t i = 0; i < values.size(); ++i) { 212 for (size_t i = 0; i < values.size(); ++i) {
213 double offset = 1.0f / (values.size() - 1) * i; 213 double offset = 1.0f / (values.size() - 1) * i;
214 RefPtrWillBeRawPtr<AnimatableTransform> value = AnimatableTransform: :create(values[i]); 214 AnimatableTransform* value = AnimatableTransform::create(values[i]);
215 frames->append(createReplaceOpKeyframe(CSSPropertyTransform, value.g et(), offset).get()); 215 frames->append(createReplaceOpKeyframe(CSSPropertyTransform, value, offset));
216 } 216 }
217 return frames.release(); 217 return frames;
218 } 218 }
219 219
220 PassRefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> createKeyframeEff ectModel(PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> prpFrom, PassRefPtrWill BeRawPtr<AnimatableValueKeyframe> prpTo, PassRefPtrWillBeRawPtr<AnimatableValueK eyframe> prpC = nullptr, PassRefPtrWillBeRawPtr<AnimatableValueKeyframe> prpD = nullptr) 220 AnimatableValueKeyframeEffectModel* createKeyframeEffectModel(AnimatableValu eKeyframe* prpFrom, AnimatableValueKeyframe* prpTo, AnimatableValueKeyframe* prp C = nullptr, AnimatableValueKeyframe* prpD = nullptr)
221 { 221 {
222 RefPtrWillBeRawPtr<AnimatableValueKeyframe> from = prpFrom; 222 AnimatableValueKeyframe* from = prpFrom;
223 RefPtrWillBeRawPtr<AnimatableValueKeyframe> to = prpTo; 223 AnimatableValueKeyframe* to = prpTo;
224 RefPtrWillBeRawPtr<AnimatableValueKeyframe> c = prpC; 224 AnimatableValueKeyframe* c = prpC;
225 RefPtrWillBeRawPtr<AnimatableValueKeyframe> d = prpD; 225 AnimatableValueKeyframe* d = prpD;
226 226
227 EXPECT_EQ(from->offset(), 0); 227 EXPECT_EQ(from->offset(), 0);
228 AnimatableValueKeyframeVector frames; 228 AnimatableValueKeyframeVector frames;
229 frames.append(from); 229 frames.append(from);
230 EXPECT_LE(from->offset(), to->offset()); 230 EXPECT_LE(from->offset(), to->offset());
231 frames.append(to); 231 frames.append(to);
232 if (c) { 232 if (c) {
233 EXPECT_LE(to->offset(), c->offset()); 233 EXPECT_LE(to->offset(), c->offset());
234 frames.append(c); 234 frames.append(c);
235 } 235 }
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
274 : LayoutObject(node) 274 : LayoutObject(node)
275 { 275 {
276 } 276 }
277 }; 277 };
278 278
279 // ----------------------------------------------------------------------- 279 // -----------------------------------------------------------------------
280 // ----------------------------------------------------------------------- 280 // -----------------------------------------------------------------------
281 281
282 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKey frameMultipleCSSProperties) 282 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKey frameMultipleCSSProperties)
283 { 283 {
284 RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframeGoodMultiple = createDef aultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace); 284 AnimatableValueKeyframe* keyframeGoodMultiple = createDefaultKeyframe(CSSPro pertyOpacity, EffectModel::CompositeReplace);
285 keyframeGoodMultiple->setPropertyValue(CSSPropertyTransform, AnimatableTrans form::create(TransformOperations()).get()); 285 keyframeGoodMultiple->setPropertyValue(CSSPropertyTransform, AnimatableTrans form::create(TransformOperations()));
286 EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeGoodMu ltiple.get())); 286 EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeGoodMu ltiple));
287 287
288 RefPtrWillBeRawPtr<AnimatableValueKeyframe> keyframeBadMultipleID = createDe faultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace); 288 AnimatableValueKeyframe* keyframeBadMultipleID = createDefaultKeyframe(CSSPr opertyColor, EffectModel::CompositeReplace);
289 keyframeBadMultipleID->setPropertyValue(CSSPropertyOpacity, AnimatableDouble ::create(10.0).get()); 289 keyframeBadMultipleID->setPropertyValue(CSSPropertyOpacity, AnimatableDouble ::create(10.0));
290 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeBadMu ltipleID.get())); 290 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(keyframeBadMu ltipleID));
291 } 291 }
292 292
293 TEST_F(AnimationCompositorAnimationsTest, isNotCandidateForCompositorAnimationTr ansformDependsOnBoxSize) 293 TEST_F(AnimationCompositorAnimationsTest, isNotCandidateForCompositorAnimationTr ansformDependsOnBoxSize)
294 { 294 {
295 TransformOperations ops; 295 TransformOperations ops;
296 ops.operations().append(TranslateTransformOperation::create(Length(2, Fixed) , Length(2, Fixed), TransformOperation::TranslateX)); 296 ops.operations().append(TranslateTransformOperation::create(Length(2, Fixed) , Length(2, Fixed), TransformOperation::TranslateX));
297 RefPtrWillBeRawPtr<AnimatableValueKeyframe> goodKeyframe = createReplaceOpKe yframe(CSSPropertyTransform, AnimatableTransform::create(ops).get()); 297 AnimatableValueKeyframe* goodKeyframe = createReplaceOpKeyframe(CSSPropertyT ransform, AnimatableTransform::create(ops));
298 EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(goodKeyframe.g et())); 298 EXPECT_TRUE(duplicateSingleKeyframeAndTestIsCandidateOnResult(goodKeyframe)) ;
299 299
300 ops.operations().append(TranslateTransformOperation::create(Length(50, Perce nt), Length(2, Fixed), TransformOperation::TranslateX)); 300 ops.operations().append(TranslateTransformOperation::create(Length(50, Perce nt), Length(2, Fixed), TransformOperation::TranslateX));
301 RefPtrWillBeRawPtr<AnimatableValueKeyframe> badKeyframe = createReplaceOpKey frame(CSSPropertyTransform, AnimatableTransform::create(ops).get()); 301 AnimatableValueKeyframe* badKeyframe = createReplaceOpKeyframe(CSSPropertyTr ansform, AnimatableTransform::create(ops));
302 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe.g et())); 302 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe)) ;
303 303
304 TransformOperations ops2; 304 TransformOperations ops2;
305 Length calcLength = Length(100, Percent).blend(Length(100, Fixed), 0.5, Valu eRangeAll); 305 Length calcLength = Length(100, Percent).blend(Length(100, Fixed), 0.5, Valu eRangeAll);
306 ops2.operations().append(TranslateTransformOperation::create(calcLength, Len gth(0, Fixed), TransformOperation::TranslateX)); 306 ops2.operations().append(TranslateTransformOperation::create(calcLength, Len gth(0, Fixed), TransformOperation::TranslateX));
307 RefPtrWillBeRawPtr<AnimatableValueKeyframe> badKeyframe2 = createReplaceOpKe yframe(CSSPropertyTransform, AnimatableTransform::create(ops2).get()); 307 AnimatableValueKeyframe* badKeyframe2 = createReplaceOpKeyframe(CSSPropertyT ransform, AnimatableTransform::create(ops2));
308 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe2. get())); 308 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe2) );
309 } 309 }
310 310
311 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKey frameEffectModelMultipleFramesOkay) 311 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKey frameEffectModelMultipleFramesOkay)
312 { 312 {
313 AnimatableValueKeyframeVector framesSame; 313 AnimatableValueKeyframeVector framesSame;
314 framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Com positeReplace, 0.0).get()); 314 framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Com positeReplace, 0.0));
315 framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Com positeReplace, 1.0).get()); 315 framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Com positeReplace, 1.0));
316 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKe yframeEffectModel::create(framesSame).get())); 316 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueKe yframeEffectModel::create(framesSame)));
317 317
318 AnimatableValueKeyframeVector framesMixed; 318 AnimatableValueKeyframeVector framesMixed;
319 framesMixed.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Co mpositeReplace, 0.0).get()); 319 framesMixed.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Co mpositeReplace, 0.0));
320 framesMixed.append(createDefaultKeyframe(CSSPropertyTransform, EffectModel:: CompositeReplace, 1.0).get()); 320 framesMixed.append(createDefaultKeyframe(CSSPropertyTransform, EffectModel:: CompositeReplace, 1.0));
321 EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueK eyframeEffectModel::create(framesMixed).get())); 321 EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueK eyframeEffectModel::create(framesMixed)));
322 } 322 }
323 323
324 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKey frameEffectModel) 324 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositorKey frameEffectModel)
325 { 325 {
326 AnimatableValueKeyframeVector framesSame; 326 AnimatableValueKeyframeVector framesSame;
327 framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::Compo siteReplace, 0.0).get()); 327 framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::Compo siteReplace, 0.0));
328 framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::Compo siteReplace, 1.0).get()); 328 framesSame.append(createDefaultKeyframe(CSSPropertyColor, EffectModel::Compo siteReplace, 1.0));
329 EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueK eyframeEffectModel::create(framesSame).get())); 329 EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueK eyframeEffectModel::create(framesSame)));
330 330
331 AnimatableValueKeyframeVector framesMixedProperties; 331 AnimatableValueKeyframeVector framesMixedProperties;
332 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyOpacity, Effec tModel::CompositeReplace, 0.0).get()); 332 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyOpacity, Effec tModel::CompositeReplace, 0.0));
333 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyColor, EffectM odel::CompositeReplace, 1.0).get()); 333 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyColor, EffectM odel::CompositeReplace, 1.0));
334 EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueK eyframeEffectModel::create(framesMixedProperties).get())); 334 EXPECT_FALSE(isCandidateForAnimationOnCompositor(m_timing, *AnimatableValueK eyframeEffectModel::create(framesMixedProperties)));
335 } 335 }
336 336
337 TEST_F(AnimationCompositorAnimationsTest, AnimatedBoundingBox) 337 TEST_F(AnimationCompositorAnimationsTest, AnimatedBoundingBox)
338 { 338 {
339 Vector<TransformOperations> transformVector; 339 Vector<TransformOperations> transformVector;
340 transformVector.append(TransformOperations()); 340 transformVector.append(TransformOperations());
341 transformVector.last().operations().append(TranslateTransformOperation::crea te(Length(0, Fixed), Length(0, Fixed), 0.0, TransformOperation::Translate3D)); 341 transformVector.last().operations().append(TranslateTransformOperation::crea te(Length(0, Fixed), Length(0, Fixed), 0.0, TransformOperation::Translate3D));
342 transformVector.append(TransformOperations()); 342 transformVector.append(TransformOperations());
343 transformVector.last().operations().append(TranslateTransformOperation::crea te(Length(200, Fixed), Length(200, Fixed), 0.0, TransformOperation::Translate3D) ); 343 transformVector.last().operations().append(TranslateTransformOperation::crea te(Length(200, Fixed), Length(200, Fixed), 0.0, TransformOperation::Translate3D) );
344 OwnPtrWillBePersistent<AnimatableValueKeyframeVector> frames = createComposi tableTransformKeyframeVector(transformVector); 344 Persistent<AnimatableValueKeyframeVector> frames = createCompositableTransfo rmKeyframeVector(transformVector);
345 FloatBox bounds; 345 FloatBox bounds;
346 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames).get(), 0, 1)); 346 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames), 0, 1));
347 EXPECT_EQ(FloatBox(0.0f, 0.f, 0.0f, 200.0f, 200.0f, 0.0f), bounds); 347 EXPECT_EQ(FloatBox(0.0f, 0.f, 0.0f, 200.0f, 200.0f, 0.0f), bounds);
348 bounds = FloatBox(); 348 bounds = FloatBox();
349 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames).get(), -1, 1)); 349 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames), -1, 1));
350 EXPECT_EQ(FloatBox(-200.0f, -200.0, 0.0, 400.0f, 400.0f, 0.0f), bounds); 350 EXPECT_EQ(FloatBox(-200.0f, -200.0, 0.0, 400.0f, 400.0f, 0.0f), bounds);
351 transformVector.append(TransformOperations()); 351 transformVector.append(TransformOperations());
352 transformVector.last().operations().append(TranslateTransformOperation::crea te(Length(-300, Fixed), Length(-400, Fixed), 1.0f, TransformOperation::Translate 3D)); 352 transformVector.last().operations().append(TranslateTransformOperation::crea te(Length(-300, Fixed), Length(-400, Fixed), 1.0f, TransformOperation::Translate 3D));
353 bounds = FloatBox(); 353 bounds = FloatBox();
354 frames = createCompositableTransformKeyframeVector(transformVector); 354 frames = createCompositableTransformKeyframeVector(transformVector);
355 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames).get(), 0, 1)); 355 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames), 0, 1));
356 EXPECT_EQ(FloatBox(-300.0f, -400.f, 0.0f, 500.0f, 600.0f, 1.0f), bounds); 356 EXPECT_EQ(FloatBox(-300.0f, -400.f, 0.0f, 500.0f, 600.0f, 1.0f), bounds);
357 bounds = FloatBox(); 357 bounds = FloatBox();
358 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames).get(), -1, 2)); 358 EXPECT_TRUE(getAnimationBounds(bounds, *AnimatableValueKeyframeEffectModel:: create(*frames), -1, 2));
359 EXPECT_EQ(FloatBox(-1300.0f, -1600.f, 0.0f, 1500.0f, 1800.0f, 3.0f), bounds) ; 359 EXPECT_EQ(FloatBox(-1300.0f, -1600.f, 0.0f, 1500.0f, 1800.0f, 3.0f), bounds) ;
360 } 360 }
361 361
362 TEST_F(AnimationCompositorAnimationsTest, ConvertTimingForCompositorStartDelay) 362 TEST_F(AnimationCompositorAnimationsTest, ConvertTimingForCompositorStartDelay)
363 { 363 {
364 m_timing.iterationDuration = 20.0; 364 m_timing.iterationDuration = 20.0;
365 365
366 m_timing.startDelay = 2.0; 366 m_timing.startDelay = 2.0;
367 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming)); 367 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
368 EXPECT_DOUBLE_EQ(-2.0, m_compositorTiming.scaledTimeOffset); 368 EXPECT_DOUBLE_EQ(-2.0, m_compositorTiming.scaledTimeOffset);
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
600 (*m_keyframeVector5)[3]->setEasing(m_stepTimingFunction.get()); 600 (*m_keyframeVector5)[3]->setEasing(m_stepTimingFunction.get());
601 m_keyframeAnimationEffect5 = AnimatableValueKeyframeEffectModel::create(*m_k eyframeVector5); 601 m_keyframeAnimationEffect5 = AnimatableValueKeyframeEffectModel::create(*m_k eyframeVector5);
602 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimati onEffect5.get())); 602 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *m_keyframeAnimati onEffect5.get()));
603 } 603 }
604 604
605 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor) 605 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor)
606 { 606 {
607 Timing linearTiming(createCompositableTiming()); 607 Timing linearTiming(createCompositableTiming());
608 608
609 AnimatableValueKeyframeVector basicFramesVector; 609 AnimatableValueKeyframeVector basicFramesVector;
610 basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectMod el::CompositeReplace, 0.0).get()); 610 basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectMod el::CompositeReplace, 0.0));
611 basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectMod el::CompositeReplace, 1.0).get()); 611 basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, EffectMod el::CompositeReplace, 1.0));
612 612
613 AnimatableValueKeyframeVector nonBasicFramesVector; 613 AnimatableValueKeyframeVector nonBasicFramesVector;
614 nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, Effect Model::CompositeReplace, 0.0).get()); 614 nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, Effect Model::CompositeReplace, 0.0));
615 nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, Effect Model::CompositeReplace, 0.5).get()); 615 nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, Effect Model::CompositeReplace, 0.5));
616 nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, Effect Model::CompositeReplace, 1.0).get()); 616 nonBasicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, Effect Model::CompositeReplace, 1.0));
617 617
618 basicFramesVector[0]->setEasing(m_linearTimingFunction.get()); 618 basicFramesVector[0]->setEasing(m_linearTimingFunction.get());
619 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> basicFrames = Animata bleValueKeyframeEffectModel::create(basicFramesVector).get(); 619 AnimatableValueKeyframeEffectModel* basicFrames = AnimatableValueKeyframeEff ectModel::create(basicFramesVector);
620 EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames.g et())); 620 EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames)) ;
621 621
622 basicFramesVector[0]->setEasing(CubicBezierTimingFunction::preset(CubicBezie rTimingFunction::EaseIn)); 622 basicFramesVector[0]->setEasing(CubicBezierTimingFunction::preset(CubicBezie rTimingFunction::EaseIn));
623 basicFrames = AnimatableValueKeyframeEffectModel::create(basicFramesVector). get(); 623 basicFrames = AnimatableValueKeyframeEffectModel::create(basicFramesVector);
624 EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames.g et())); 624 EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *basicFrames)) ;
625 625
626 nonBasicFramesVector[0]->setEasing(m_linearTimingFunction.get()); 626 nonBasicFramesVector[0]->setEasing(m_linearTimingFunction.get());
627 nonBasicFramesVector[1]->setEasing(CubicBezierTimingFunction::preset(CubicBe zierTimingFunction::EaseIn)); 627 nonBasicFramesVector[1]->setEasing(CubicBezierTimingFunction::preset(CubicBe zierTimingFunction::EaseIn));
628 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> nonBasicFrames = Anim atableValueKeyframeEffectModel::create(nonBasicFramesVector).get(); 628 AnimatableValueKeyframeEffectModel* nonBasicFrames = AnimatableValueKeyframe EffectModel::create(nonBasicFramesVector);
629 EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *nonBasicFrame s.get())); 629 EXPECT_TRUE(isCandidateForAnimationOnCompositor(linearTiming, *nonBasicFrame s));
630 } 630 }
631 631
632 // ----------------------------------------------------------------------- 632 // -----------------------------------------------------------------------
633 // ----------------------------------------------------------------------- 633 // -----------------------------------------------------------------------
634 634
635 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimation) 635 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimation)
636 { 636 {
637 // KeyframeEffect to convert 637 // KeyframeEffect to convert
638 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 638 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
639 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 639 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
640 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 640 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
641 // -- 641 // --
642 642
643 WebCompositorSupportMock mockCompositor; 643 WebCompositorSupportMock mockCompositor;
644 644
645 // Curve is created 645 // Curve is created
646 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 646 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
647 ExpectationSet usesMockCurve; 647 ExpectationSet usesMockCurve;
648 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 648 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
649 .WillOnce(Return(mockCurvePtr)); 649 .WillOnce(Return(mockCurvePtr));
650 650
(...skipping 15 matching lines...) Expand all
666 EXPECT_CALL(*mockAnimationPtr, delete_()) 666 EXPECT_CALL(*mockAnimationPtr, delete_())
667 .Times(1) 667 .Times(1)
668 .After(usesMockAnimation); 668 .After(usesMockAnimation);
669 EXPECT_CALL(*mockCurvePtr, delete_()) 669 EXPECT_CALL(*mockCurvePtr, delete_())
670 .Times(1) 670 .Times(1)
671 .After(usesMockCurve); 671 .After(usesMockCurve);
672 672
673 // Go! 673 // Go!
674 setCompositorForTesting(mockCompositor); 674 setCompositorForTesting(mockCompositor);
675 Vector<OwnPtr<WebCompositorAnimation>> result; 675 Vector<OwnPtr<WebCompositorAnimation>> result;
676 getAnimationOnCompositor(m_timing, *effect.get(), result); 676 getAnimationOnCompositor(m_timing, *effect, result);
677 EXPECT_EQ(1U, result.size()); 677 EXPECT_EQ(1U, result.size());
678 result[0].clear(); 678 result[0].clear();
679 } 679 }
680 680
681 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration) 681 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationDuration)
682 { 682 {
683 // KeyframeEffect to convert 683 // KeyframeEffect to convert
684 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 684 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
685 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 685 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
686 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 686 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
687 687
688 m_timing.iterationDuration = 10.0; 688 m_timing.iterationDuration = 10.0;
689 // -- 689 // --
690 690
691 WebCompositorSupportMock mockCompositor; 691 WebCompositorSupportMock mockCompositor;
692 692
693 // Curve is created 693 // Curve is created
694 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 694 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
695 ExpectationSet usesMockCurve; 695 ExpectationSet usesMockCurve;
696 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 696 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
(...skipping 17 matching lines...) Expand all
714 EXPECT_CALL(*mockAnimationPtr, delete_()) 714 EXPECT_CALL(*mockAnimationPtr, delete_())
715 .Times(1) 715 .Times(1)
716 .After(usesMockAnimation); 716 .After(usesMockAnimation);
717 EXPECT_CALL(*mockCurvePtr, delete_()) 717 EXPECT_CALL(*mockCurvePtr, delete_())
718 .Times(1) 718 .Times(1)
719 .After(usesMockCurve); 719 .After(usesMockCurve);
720 720
721 // Go! 721 // Go!
722 setCompositorForTesting(mockCompositor); 722 setCompositorForTesting(mockCompositor);
723 Vector<OwnPtr<WebCompositorAnimation>> result; 723 Vector<OwnPtr<WebCompositorAnimation>> result;
724 getAnimationOnCompositor(m_timing, *effect.get(), result); 724 getAnimationOnCompositor(m_timing, *effect, result);
725 EXPECT_EQ(1U, result.size()); 725 EXPECT_EQ(1U, result.size());
726 result[0].clear(); 726 result[0].clear();
727 } 727 }
728 728
729 TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation Linear) 729 TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation Linear)
730 { 730 {
731 // KeyframeEffect to convert 731 // KeyframeEffect to convert
732 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 732 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
733 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 733 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
734 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1. 0).get(), 0.25), 734 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(-1. 0), 0.25),
735 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20. 0).get(), 0.5), 735 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(20. 0), 0.5),
736 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 736 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
737 737
738 m_timing.iterationCount = 5; 738 m_timing.iterationCount = 5;
739 m_timing.direction = Timing::PlaybackDirectionAlternate; 739 m_timing.direction = Timing::PlaybackDirectionAlternate;
740 m_timing.playbackRate = 2.0; 740 m_timing.playbackRate = 2.0;
741 // -- 741 // --
742 742
743 WebCompositorSupportMock mockCompositor; 743 WebCompositorSupportMock mockCompositor;
744 744
745 // Curve is created 745 // Curve is created
746 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock(); 746 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock();
(...skipping 22 matching lines...) Expand all
769 EXPECT_CALL(*mockAnimationPtr, delete_()) 769 EXPECT_CALL(*mockAnimationPtr, delete_())
770 .Times(1) 770 .Times(1)
771 .After(usesMockAnimation); 771 .After(usesMockAnimation);
772 EXPECT_CALL(*mockCurvePtr, delete_()) 772 EXPECT_CALL(*mockCurvePtr, delete_())
773 .Times(1) 773 .Times(1)
774 .After(usesMockCurve); 774 .After(usesMockCurve);
775 775
776 // Go! 776 // Go!
777 setCompositorForTesting(mockCompositor); 777 setCompositorForTesting(mockCompositor);
778 Vector<OwnPtr<WebCompositorAnimation>> result; 778 Vector<OwnPtr<WebCompositorAnimation>> result;
779 getAnimationOnCompositor(m_timing, *effect.get(), result); 779 getAnimationOnCompositor(m_timing, *effect, result);
780 EXPECT_EQ(1U, result.size()); 780 EXPECT_EQ(1U, result.size());
781 result[0].clear(); 781 result[0].clear();
782 } 782 }
783 783
784 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationStartDelay ) 784 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationStartDelay )
785 { 785 {
786 // KeyframeEffect to convert 786 // KeyframeEffect to convert
787 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 787 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
788 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 788 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
789 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 789 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
790 790
791 m_timing.iterationCount = 5.0; 791 m_timing.iterationCount = 5.0;
792 m_timing.iterationDuration = 1.75; 792 m_timing.iterationDuration = 1.75;
793 m_timing.startDelay = 3.25; 793 m_timing.startDelay = 3.25;
794 // -- 794 // --
795 795
796 WebCompositorSupportMock mockCompositor; 796 WebCompositorSupportMock mockCompositor;
797 797
798 // Curve is created 798 // Curve is created
799 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 799 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
(...skipping 19 matching lines...) Expand all
819 EXPECT_CALL(*mockAnimationPtr, delete_()) 819 EXPECT_CALL(*mockAnimationPtr, delete_())
820 .Times(1) 820 .Times(1)
821 .After(usesMockAnimation); 821 .After(usesMockAnimation);
822 EXPECT_CALL(*mockCurvePtr, delete_()) 822 EXPECT_CALL(*mockCurvePtr, delete_())
823 .Times(1) 823 .Times(1)
824 .After(usesMockCurve); 824 .After(usesMockCurve);
825 825
826 // Go! 826 // Go!
827 setCompositorForTesting(mockCompositor); 827 setCompositorForTesting(mockCompositor);
828 Vector<OwnPtr<WebCompositorAnimation>> result; 828 Vector<OwnPtr<WebCompositorAnimation>> result;
829 getAnimationOnCompositor(m_timing, *effect.get(), result); 829 getAnimationOnCompositor(m_timing, *effect, result);
830 EXPECT_EQ(1U, result.size()); 830 EXPECT_EQ(1U, result.size());
831 result[0].clear(); 831 result[0].clear();
832 } 832 }
833 833
834 TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation Chained) 834 TEST_F(AnimationCompositorAnimationsTest, createMultipleKeyframeOpacityAnimation Chained)
835 { 835 {
836 // KeyframeEffect to convert 836 // KeyframeEffect to convert
837 AnimatableValueKeyframeVector frames; 837 AnimatableValueKeyframeVector frames;
838 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(2.0).get(), 0)); 838 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(2.0), 0));
839 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(-1.0).get(), 0.25)); 839 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(-1.0), 0.25));
840 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(20.0).get(), 0.5)); 840 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(20.0), 0.5));
841 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(5.0).get(), 1.0)); 841 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(5.0), 1.0));
842 frames[0]->setEasing(m_cubicEaseTimingFunction.get()); 842 frames[0]->setEasing(m_cubicEaseTimingFunction.get());
843 frames[1]->setEasing(m_linearTimingFunction.get()); 843 frames[1]->setEasing(m_linearTimingFunction.get());
844 frames[2]->setEasing(m_cubicCustomTimingFunction.get()); 844 frames[2]->setEasing(m_cubicCustomTimingFunction.get());
845 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(frames); 845 AnimatableValueKeyframeEffectModel* effect = AnimatableValueKeyframeEffectMo del::create(frames);
846 846
847 m_timing.timingFunction = m_linearTimingFunction.get(); 847 m_timing.timingFunction = m_linearTimingFunction.get();
848 m_timing.iterationDuration = 2.0; 848 m_timing.iterationDuration = 2.0;
849 m_timing.iterationCount = 10; 849 m_timing.iterationCount = 10;
850 m_timing.direction = Timing::PlaybackDirectionAlternate; 850 m_timing.direction = Timing::PlaybackDirectionAlternate;
851 // -- 851 // --
852 852
853 WebCompositorSupportMock mockCompositor; 853 WebCompositorSupportMock mockCompositor;
854 854
855 // Curve is created 855 // Curve is created
(...skipping 23 matching lines...) Expand all
879 EXPECT_CALL(*mockAnimationPtr, delete_()) 879 EXPECT_CALL(*mockAnimationPtr, delete_())
880 .Times(1) 880 .Times(1)
881 .After(usesMockAnimation); 881 .After(usesMockAnimation);
882 EXPECT_CALL(*mockCurvePtr, delete_()) 882 EXPECT_CALL(*mockCurvePtr, delete_())
883 .Times(1) 883 .Times(1)
884 .After(usesMockCurve); 884 .After(usesMockCurve);
885 885
886 // Go! 886 // Go!
887 setCompositorForTesting(mockCompositor); 887 setCompositorForTesting(mockCompositor);
888 Vector<OwnPtr<WebCompositorAnimation>> result; 888 Vector<OwnPtr<WebCompositorAnimation>> result;
889 getAnimationOnCompositor(m_timing, *effect.get(), result); 889 getAnimationOnCompositor(m_timing, *effect, result);
890 EXPECT_EQ(1U, result.size()); 890 EXPECT_EQ(1U, result.size());
891 result[0].clear(); 891 result[0].clear();
892 } 892 }
893 893
894 TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation) 894 TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation)
895 { 895 {
896 RefPtr<TimingFunction> cubicEasyFlipTimingFunction = CubicBezierTimingFuncti on::create(0.0, 0.0, 0.0, 1.0); 896 RefPtr<TimingFunction> cubicEasyFlipTimingFunction = CubicBezierTimingFuncti on::create(0.0, 0.0, 0.0, 1.0);
897 897
898 // KeyframeEffect to convert 898 // KeyframeEffect to convert
899 AnimatableValueKeyframeVector frames; 899 AnimatableValueKeyframeVector frames;
900 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(2.0).get(), 0)); 900 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(2.0), 0));
901 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(-1.0).get(), 0.25)); 901 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(-1.0), 0.25));
902 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(20.0).get(), 0.5)); 902 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(20.0), 0.5));
903 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(5.0).get(), 1.0)); 903 frames.append(createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble:: create(5.0), 1.0));
904 frames[0]->setEasing(CubicBezierTimingFunction::preset(CubicBezierTimingFunc tion::EaseIn)); 904 frames[0]->setEasing(CubicBezierTimingFunction::preset(CubicBezierTimingFunc tion::EaseIn));
905 frames[1]->setEasing(m_linearTimingFunction.get()); 905 frames[1]->setEasing(m_linearTimingFunction.get());
906 frames[2]->setEasing(cubicEasyFlipTimingFunction.get()); 906 frames[2]->setEasing(cubicEasyFlipTimingFunction.get());
907 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = AnimatableVa lueKeyframeEffectModel::create(frames); 907 AnimatableValueKeyframeEffectModel* effect = AnimatableValueKeyframeEffectMo del::create(frames);
908 908
909 m_timing.timingFunction = m_linearTimingFunction.get(); 909 m_timing.timingFunction = m_linearTimingFunction.get();
910 m_timing.iterationCount = 10; 910 m_timing.iterationCount = 10;
911 m_timing.direction = Timing::PlaybackDirectionAlternateReverse; 911 m_timing.direction = Timing::PlaybackDirectionAlternateReverse;
912 // -- 912 // --
913 913
914 WebCompositorSupportMock mockCompositor; 914 WebCompositorSupportMock mockCompositor;
915 915
916 // Curve is created 916 // Curve is created
917 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock(); 917 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock();
(...skipping 22 matching lines...) Expand all
940 EXPECT_CALL(*mockAnimationPtr, delete_()) 940 EXPECT_CALL(*mockAnimationPtr, delete_())
941 .Times(1) 941 .Times(1)
942 .After(usesMockAnimation); 942 .After(usesMockAnimation);
943 EXPECT_CALL(*mockCurvePtr, delete_()) 943 EXPECT_CALL(*mockCurvePtr, delete_())
944 .Times(1) 944 .Times(1)
945 .After(usesMockCurve); 945 .After(usesMockCurve);
946 946
947 // Go! 947 // Go!
948 setCompositorForTesting(mockCompositor); 948 setCompositorForTesting(mockCompositor);
949 Vector<OwnPtr<WebCompositorAnimation>> result; 949 Vector<OwnPtr<WebCompositorAnimation>> result;
950 getAnimationOnCompositor(m_timing, *effect.get(), result); 950 getAnimationOnCompositor(m_timing, *effect, result);
951 EXPECT_EQ(1U, result.size()); 951 EXPECT_EQ(1U, result.size());
952 result[0].clear(); 952 result[0].clear();
953 } 953 }
954 954
955 TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegative StartDelay) 955 TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimationNegative StartDelay)
956 { 956 {
957 // KeyframeEffect to convert 957 // KeyframeEffect to convert
958 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 958 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
959 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 959 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
960 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 960 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
961 961
962 m_timing.iterationCount = 5.0; 962 m_timing.iterationCount = 5.0;
963 m_timing.iterationDuration = 1.5; 963 m_timing.iterationDuration = 1.5;
964 m_timing.startDelay = -3; 964 m_timing.startDelay = -3;
965 m_timing.direction = Timing::PlaybackDirectionAlternateReverse; 965 m_timing.direction = Timing::PlaybackDirectionAlternateReverse;
966 // -- 966 // --
967 967
968 WebCompositorSupportMock mockCompositor; 968 WebCompositorSupportMock mockCompositor;
969 969
970 // Curve is created 970 // Curve is created
(...skipping 20 matching lines...) Expand all
991 EXPECT_CALL(*mockAnimationPtr, delete_()) 991 EXPECT_CALL(*mockAnimationPtr, delete_())
992 .Times(1) 992 .Times(1)
993 .After(usesMockAnimation); 993 .After(usesMockAnimation);
994 EXPECT_CALL(*mockCurvePtr, delete_()) 994 EXPECT_CALL(*mockCurvePtr, delete_())
995 .Times(1) 995 .Times(1)
996 .After(usesMockCurve); 996 .After(usesMockCurve);
997 997
998 // Go! 998 // Go!
999 setCompositorForTesting(mockCompositor); 999 setCompositorForTesting(mockCompositor);
1000 Vector<OwnPtr<WebCompositorAnimation>> result; 1000 Vector<OwnPtr<WebCompositorAnimation>> result;
1001 getAnimationOnCompositor(m_timing, *effect.get(), result); 1001 getAnimationOnCompositor(m_timing, *effect, result);
1002 EXPECT_EQ(1U, result.size()); 1002 EXPECT_EQ(1U, result.size());
1003 result[0].clear(); 1003 result[0].clear();
1004 } 1004 }
1005 1005
1006 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRa tes) 1006 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationPlaybackRa tes)
1007 { 1007 {
1008 // KeyframeEffect to convert 1008 // KeyframeEffect to convert
1009 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 1009 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
1010 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 1010 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
1011 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 1011 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
1012 1012
1013 m_timing.playbackRate = 2; 1013 m_timing.playbackRate = 2;
1014 // -- 1014 // --
1015 1015
1016 WebCompositorSupportMock mockCompositor; 1016 WebCompositorSupportMock mockCompositor;
1017 1017
1018 // Curve is created 1018 // Curve is created
1019 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 1019 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
1020 ExpectationSet usesMockCurve; 1020 ExpectationSet usesMockCurve;
1021 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 1021 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
(...skipping 18 matching lines...) Expand all
1040 .Times(1) 1040 .Times(1)
1041 .After(usesMockAnimation); 1041 .After(usesMockAnimation);
1042 EXPECT_CALL(*mockCurvePtr, delete_()) 1042 EXPECT_CALL(*mockCurvePtr, delete_())
1043 .Times(1) 1043 .Times(1)
1044 .After(usesMockCurve); 1044 .After(usesMockCurve);
1045 1045
1046 // Go! 1046 // Go!
1047 setCompositorForTesting(mockCompositor); 1047 setCompositorForTesting(mockCompositor);
1048 Vector<OwnPtr<WebCompositorAnimation>> result; 1048 Vector<OwnPtr<WebCompositorAnimation>> result;
1049 // Set player plaback rate also 1049 // Set player plaback rate also
1050 getAnimationOnCompositor(m_timing, *effect.get(), result, -1.5); 1050 getAnimationOnCompositor(m_timing, *effect, result, -1.5);
1051 EXPECT_EQ(1U, result.size()); 1051 EXPECT_EQ(1U, result.size());
1052 result[0].clear(); 1052 result[0].clear();
1053 } 1053 }
1054 1054
1055 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNo ne) 1055 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeNo ne)
1056 { 1056 {
1057 // KeyframeEffect to convert 1057 // KeyframeEffect to convert
1058 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 1058 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
1059 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 1059 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
1060 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 1060 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
1061 1061
1062 m_timing.fillMode = Timing::FillModeNone; 1062 m_timing.fillMode = Timing::FillModeNone;
1063 1063
1064 WebCompositorSupportMock mockCompositor; 1064 WebCompositorSupportMock mockCompositor;
1065 1065
1066 // Curve is created 1066 // Curve is created
1067 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 1067 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
1068 ExpectationSet usesMockCurve; 1068 ExpectationSet usesMockCurve;
1069 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 1069 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
1070 .WillOnce(Return(mockCurvePtr)); 1070 .WillOnce(Return(mockCurvePtr));
(...skipping 17 matching lines...) Expand all
1088 EXPECT_CALL(*mockAnimationPtr, delete_()) 1088 EXPECT_CALL(*mockAnimationPtr, delete_())
1089 .Times(1) 1089 .Times(1)
1090 .After(usesMockAnimation); 1090 .After(usesMockAnimation);
1091 EXPECT_CALL(*mockCurvePtr, delete_()) 1091 EXPECT_CALL(*mockCurvePtr, delete_())
1092 .Times(1) 1092 .Times(1)
1093 .After(usesMockCurve); 1093 .After(usesMockCurve);
1094 1094
1095 // Go! 1095 // Go!
1096 setCompositorForTesting(mockCompositor); 1096 setCompositorForTesting(mockCompositor);
1097 Vector<OwnPtr<WebCompositorAnimation>> result; 1097 Vector<OwnPtr<WebCompositorAnimation>> result;
1098 getAnimationOnCompositor(m_timing, *effect.get(), result); 1098 getAnimationOnCompositor(m_timing, *effect, result);
1099 EXPECT_EQ(1U, result.size()); 1099 EXPECT_EQ(1U, result.size());
1100 result[0].clear(); 1100 result[0].clear();
1101 } 1101 }
1102 1102
1103 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAu to) 1103 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationFillModeAu to)
1104 { 1104 {
1105 // KeyframeEffect to convert 1105 // KeyframeEffect to convert
1106 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 1106 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
1107 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 1107 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
1108 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 1108 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
1109 1109
1110 m_timing.fillMode = Timing::FillModeAuto; 1110 m_timing.fillMode = Timing::FillModeAuto;
1111 1111
1112 WebCompositorSupportMock mockCompositor; 1112 WebCompositorSupportMock mockCompositor;
1113 1113
1114 // Curve is created 1114 // Curve is created
1115 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 1115 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
1116 ExpectationSet usesMockCurve; 1116 ExpectationSet usesMockCurve;
1117 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 1117 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
1118 .WillOnce(Return(mockCurvePtr)); 1118 .WillOnce(Return(mockCurvePtr));
(...skipping 17 matching lines...) Expand all
1136 EXPECT_CALL(*mockAnimationPtr, delete_()) 1136 EXPECT_CALL(*mockAnimationPtr, delete_())
1137 .Times(1) 1137 .Times(1)
1138 .After(usesMockAnimation); 1138 .After(usesMockAnimation);
1139 EXPECT_CALL(*mockCurvePtr, delete_()) 1139 EXPECT_CALL(*mockCurvePtr, delete_())
1140 .Times(1) 1140 .Times(1)
1141 .After(usesMockCurve); 1141 .After(usesMockCurve);
1142 1142
1143 // Go! 1143 // Go!
1144 setCompositorForTesting(mockCompositor); 1144 setCompositorForTesting(mockCompositor);
1145 Vector<OwnPtr<WebCompositorAnimation>> result; 1145 Vector<OwnPtr<WebCompositorAnimation>> result;
1146 getAnimationOnCompositor(m_timing, *effect.get(), result); 1146 getAnimationOnCompositor(m_timing, *effect, result);
1147 EXPECT_EQ(1U, result.size()); 1147 EXPECT_EQ(1U, result.size());
1148 result[0].clear(); 1148 result[0].clear();
1149 } 1149 }
1150 1150
1151 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTiming Function) 1151 TEST_F(AnimationCompositorAnimationsTest, createSimpleOpacityAnimationWithTiming Function)
1152 { 1152 {
1153 // KeyframeEffect to convert 1153 // KeyframeEffect to convert
1154 RefPtrWillBeRawPtr<AnimatableValueKeyframeEffectModel> effect = createKeyfra meEffectModel( 1154 AnimatableValueKeyframeEffectModel* effect = createKeyframeEffectModel(
1155 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 1155 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ), 0),
1156 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 1156 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ), 1.0));
1157 1157
1158 m_timing.timingFunction = m_cubicCustomTimingFunction; 1158 m_timing.timingFunction = m_cubicCustomTimingFunction;
1159 1159
1160 WebCompositorSupportMock mockCompositor; 1160 WebCompositorSupportMock mockCompositor;
1161 1161
1162 // Curve is created 1162 // Curve is created
1163 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock; 1163 WebFloatAnimationCurveMock* mockCurvePtr = new WebFloatAnimationCurveMock;
1164 ExpectationSet usesMockCurve; 1164 ExpectationSet usesMockCurve;
1165 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 1165 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
1166 .WillOnce(Return(mockCurvePtr)); 1166 .WillOnce(Return(mockCurvePtr));
(...skipping 17 matching lines...) Expand all
1184 EXPECT_CALL(*mockAnimationPtr, delete_()) 1184 EXPECT_CALL(*mockAnimationPtr, delete_())
1185 .Times(1) 1185 .Times(1)
1186 .After(usesMockAnimation); 1186 .After(usesMockAnimation);
1187 EXPECT_CALL(*mockCurvePtr, delete_()) 1187 EXPECT_CALL(*mockCurvePtr, delete_())
1188 .Times(1) 1188 .Times(1)
1189 .After(usesMockCurve); 1189 .After(usesMockCurve);
1190 1190
1191 // Go! 1191 // Go!
1192 setCompositorForTesting(mockCompositor); 1192 setCompositorForTesting(mockCompositor);
1193 Vector<OwnPtr<WebCompositorAnimation>> result; 1193 Vector<OwnPtr<WebCompositorAnimation>> result;
1194 getAnimationOnCompositor(m_timing, *effect.get(), result); 1194 getAnimationOnCompositor(m_timing, *effect, result);
1195 EXPECT_EQ(1U, result.size()); 1195 EXPECT_EQ(1U, result.size());
1196 result[0].clear(); 1196 result[0].clear();
1197 } 1197 }
1198 1198
1199 TEST_F(AnimationCompositorAnimationsTest, CancelIncompatibleCompositorAnimations ) 1199 TEST_F(AnimationCompositorAnimationsTest, CancelIncompatibleCompositorAnimations )
1200 { 1200 {
1201 WebCompositorSupportMock mockCompositor; 1201 WebCompositorSupportMock mockCompositor;
1202 setCompositorForTesting(mockCompositor); 1202 setCompositorForTesting(mockCompositor);
1203 1203
1204 RefPtrWillBePersistent<Element> element = m_document->createElement("shared" , ASSERT_NO_EXCEPTION); 1204 RefPtrWillBePersistent<Element> element = m_document->createElement("shared" , ASSERT_NO_EXCEPTION);
1205 1205
1206 LayoutObjectProxy* layoutObject = LayoutObjectProxy::create(element.get()); 1206 LayoutObjectProxy* layoutObject = LayoutObjectProxy::create(element.get());
1207 element->setLayoutObject(layoutObject); 1207 element->setLayoutObject(layoutObject);
1208 1208
1209 AnimatableValueKeyframeVector keyFrames; 1209 AnimatableValueKeyframeVector keyFrames;
1210 keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Comp ositeReplace, 0.0).get()); 1210 keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Comp ositeReplace, 0.0));
1211 keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Comp ositeReplace, 1.0).get()); 1211 keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, EffectModel::Comp ositeReplace, 1.0));
1212 RefPtrWillBeRawPtr<EffectModel> animationEffect1 = AnimatableValueKeyframeEf fectModel::create(keyFrames); 1212 EffectModel* animationEffect1 = AnimatableValueKeyframeEffectModel::create(k eyFrames);
1213 RefPtrWillBeRawPtr<EffectModel> animationEffect2 = AnimatableValueKeyframeEf fectModel::create(keyFrames); 1213 EffectModel* animationEffect2 = AnimatableValueKeyframeEffectModel::create(k eyFrames);
1214 1214
1215 Timing timing; 1215 Timing timing;
1216 timing.iterationDuration = 1.f; 1216 timing.iterationDuration = 1.f;
1217 1217
1218 // The first animation for opacity is ok to run on compositor. 1218 // The first animation for opacity is ok to run on compositor.
1219 RefPtrWillBeRawPtr<KeyframeEffect> keyframeEffect1 = KeyframeEffect::create( element.get(), animationEffect1, timing); 1219 KeyframeEffect* keyframeEffect1 = KeyframeEffect::create(element.get(), anim ationEffect1, timing);
1220 RefPtrWillBePersistent<Animation> animation1 = m_timeline->play(keyframeEffe ct1.get()); 1220 RefPtrWillBePersistent<Animation> animation1 = m_timeline->play(keyframeEffe ct1);
1221 EXPECT_TRUE(CompositorAnimations::instance()->isCandidateForAnimationOnCompo sitor(timing, *element.get(), animation1.get(), *animationEffect1.get(), 1)); 1221 EXPECT_TRUE(CompositorAnimations::instance()->isCandidateForAnimationOnCompo sitor(timing, *element.get(), animation1.get(), *animationEffect1, 1));
1222 1222
1223 // simulate KeyframeEffect::maybeStartAnimationOnCompositor 1223 // simulate KeyframeEffect::maybeStartAnimationOnCompositor
1224 Vector<int> compositorAnimationIds; 1224 Vector<int> compositorAnimationIds;
1225 compositorAnimationIds.append(1); 1225 compositorAnimationIds.append(1);
1226 keyframeEffect1->setCompositorAnimationIdsForTesting(compositorAnimationIds) ; 1226 keyframeEffect1->setCompositorAnimationIdsForTesting(compositorAnimationIds) ;
1227 EXPECT_TRUE(animation1->hasActiveAnimationsOnCompositor()); 1227 EXPECT_TRUE(animation1->hasActiveAnimationsOnCompositor());
1228 1228
1229 // The second animation for opacity is not ok to run on compositor. 1229 // The second animation for opacity is not ok to run on compositor.
1230 RefPtrWillBeRawPtr<KeyframeEffect> keyframeEffect2 = KeyframeEffect::create( element.get(), animationEffect2, timing); 1230 KeyframeEffect* keyframeEffect2 = KeyframeEffect::create(element.get(), anim ationEffect2, timing);
1231 RefPtrWillBePersistent<Animation> animation2 = m_timeline->play(keyframeEffe ct2.get()); 1231 RefPtrWillBePersistent<Animation> animation2 = m_timeline->play(keyframeEffe ct2);
1232 EXPECT_FALSE(CompositorAnimations::instance()->isCandidateForAnimationOnComp ositor(timing, *element.get(), animation2.get(), *animationEffect2.get(), 1)); 1232 EXPECT_FALSE(CompositorAnimations::instance()->isCandidateForAnimationOnComp ositor(timing, *element.get(), animation2.get(), *animationEffect2, 1));
1233 EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor()); 1233 EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor());
1234 1234
1235 // A fallback to blink implementation needed, so cancel all compositor-side opacity animations for this element. 1235 // A fallback to blink implementation needed, so cancel all compositor-side opacity animations for this element.
1236 animation2->cancelIncompatibleAnimationsOnCompositor(); 1236 animation2->cancelIncompatibleAnimationsOnCompositor();
1237 1237
1238 EXPECT_FALSE(animation1->hasActiveAnimationsOnCompositor()); 1238 EXPECT_FALSE(animation1->hasActiveAnimationsOnCompositor());
1239 EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor()); 1239 EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor());
1240 1240
1241 simulateFrame(0); 1241 simulateFrame(0);
1242 EXPECT_EQ(2U, element->elementAnimations()->animations().size()); 1242 EXPECT_EQ(2U, element->elementAnimations()->animations().size());
1243 simulateFrame(1.); 1243 simulateFrame(1.);
1244 1244
1245 element->setLayoutObject(nullptr); 1245 element->setLayoutObject(nullptr);
1246 LayoutObjectProxy::dispose(layoutObject); 1246 LayoutObjectProxy::dispose(layoutObject);
1247 1247
1248 animation1.release(); 1248 animation1.release();
1249 animation2.release(); 1249 animation2.release();
1250 Heap::collectAllGarbage(); 1250 Heap::collectAllGarbage();
1251 EXPECT_TRUE(element->elementAnimations()->animations().isEmpty()); 1251 EXPECT_TRUE(element->elementAnimations()->animations().isEmpty());
1252 } 1252 }
1253 1253
1254 } // namespace blink 1254 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698