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

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

Issue 2562773002: Migrate WTF::Vector::append() to ::push_back() [part 2 of N] (Closed)
Patch Set: rebase Created 4 years 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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 return CompositorAnimations::getAnimatedBoundingBox(boundingBox, effect, 141 return CompositorAnimations::getAnimatedBoundingBox(boundingBox, effect,
142 minValue, maxValue); 142 minValue, maxValue);
143 } 143 }
144 144
145 bool duplicateSingleKeyframeAndTestIsCandidateOnResult( 145 bool duplicateSingleKeyframeAndTestIsCandidateOnResult(
146 AnimatableValueKeyframe* frame) { 146 AnimatableValueKeyframe* frame) {
147 EXPECT_EQ(frame->offset(), 0); 147 EXPECT_EQ(frame->offset(), 0);
148 AnimatableValueKeyframeVector frames; 148 AnimatableValueKeyframeVector frames;
149 RefPtr<Keyframe> second = frame->cloneWithOffset(1); 149 RefPtr<Keyframe> second = frame->cloneWithOffset(1);
150 150
151 frames.append(frame); 151 frames.push_back(frame);
152 frames.append(toAnimatableValueKeyframe(second.get())); 152 frames.push_back(toAnimatableValueKeyframe(second.get()));
153 return isCandidateForAnimationOnCompositor( 153 return isCandidateForAnimationOnCompositor(
154 m_timing, *AnimatableValueKeyframeEffectModel::create(frames)); 154 m_timing, *AnimatableValueKeyframeEffectModel::create(frames));
155 } 155 }
156 156
157 // ------------------------------------------------------------------- 157 // -------------------------------------------------------------------
158 158
159 Timing createCompositableTiming() { 159 Timing createCompositableTiming() {
160 Timing timing; 160 Timing timing;
161 timing.startDelay = 0; 161 timing.startDelay = 0;
162 timing.fillMode = Timing::FillMode::NONE; 162 timing.fillMode = Timing::FillMode::NONE;
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 RefPtr<AnimatableValueKeyframe> keyframe = 195 RefPtr<AnimatableValueKeyframe> keyframe =
196 createReplaceOpKeyframe(id, value.get(), offset); 196 createReplaceOpKeyframe(id, value.get(), offset);
197 keyframe->setComposite(op); 197 keyframe->setComposite(op);
198 return keyframe; 198 return keyframe;
199 } 199 }
200 200
201 std::unique_ptr<AnimatableValueKeyframeVector> 201 std::unique_ptr<AnimatableValueKeyframeVector>
202 createCompositableFloatKeyframeVector(size_t n) { 202 createCompositableFloatKeyframeVector(size_t n) {
203 Vector<double> values; 203 Vector<double> values;
204 for (size_t i = 0; i < n; i++) { 204 for (size_t i = 0; i < n; i++) {
205 values.append(static_cast<double>(i)); 205 values.push_back(static_cast<double>(i));
206 } 206 }
207 return createCompositableFloatKeyframeVector(values); 207 return createCompositableFloatKeyframeVector(values);
208 } 208 }
209 209
210 std::unique_ptr<AnimatableValueKeyframeVector> 210 std::unique_ptr<AnimatableValueKeyframeVector>
211 createCompositableFloatKeyframeVector(Vector<double>& values) { 211 createCompositableFloatKeyframeVector(Vector<double>& values) {
212 std::unique_ptr<AnimatableValueKeyframeVector> frames = 212 std::unique_ptr<AnimatableValueKeyframeVector> frames =
213 WTF::wrapUnique(new AnimatableValueKeyframeVector); 213 WTF::wrapUnique(new AnimatableValueKeyframeVector);
214 for (size_t i = 0; i < values.size(); i++) { 214 for (size_t i = 0; i < values.size(); i++) {
215 double offset = 1.0 / (values.size() - 1) * i; 215 double offset = 1.0 / (values.size() - 1) * i;
216 RefPtr<AnimatableDouble> value = AnimatableDouble::create(values[i]); 216 RefPtr<AnimatableDouble> value = AnimatableDouble::create(values[i]);
217 frames->append( 217 frames->push_back(
218 createReplaceOpKeyframe(CSSPropertyOpacity, value.get(), offset) 218 createReplaceOpKeyframe(CSSPropertyOpacity, value.get(), offset)
219 .get()); 219 .get());
220 } 220 }
221 return frames; 221 return frames;
222 } 222 }
223 223
224 std::unique_ptr<AnimatableValueKeyframeVector> 224 std::unique_ptr<AnimatableValueKeyframeVector>
225 createCompositableTransformKeyframeVector( 225 createCompositableTransformKeyframeVector(
226 const Vector<TransformOperations>& values) { 226 const Vector<TransformOperations>& values) {
227 std::unique_ptr<AnimatableValueKeyframeVector> frames = 227 std::unique_ptr<AnimatableValueKeyframeVector> frames =
228 WTF::wrapUnique(new AnimatableValueKeyframeVector); 228 WTF::wrapUnique(new AnimatableValueKeyframeVector);
229 for (size_t i = 0; i < values.size(); ++i) { 229 for (size_t i = 0; i < values.size(); ++i) {
230 double offset = 1.0f / (values.size() - 1) * i; 230 double offset = 1.0f / (values.size() - 1) * i;
231 RefPtr<AnimatableTransform> value = 231 RefPtr<AnimatableTransform> value =
232 AnimatableTransform::create(values[i], 1); 232 AnimatableTransform::create(values[i], 1);
233 frames->append( 233 frames->push_back(
234 createReplaceOpKeyframe(CSSPropertyTransform, value.get(), offset) 234 createReplaceOpKeyframe(CSSPropertyTransform, value.get(), offset)
235 .get()); 235 .get());
236 } 236 }
237 return frames; 237 return frames;
238 } 238 }
239 239
240 AnimatableValueKeyframeEffectModel* createKeyframeEffectModel( 240 AnimatableValueKeyframeEffectModel* createKeyframeEffectModel(
241 PassRefPtr<AnimatableValueKeyframe> prpFrom, 241 PassRefPtr<AnimatableValueKeyframe> prpFrom,
242 PassRefPtr<AnimatableValueKeyframe> prpTo, 242 PassRefPtr<AnimatableValueKeyframe> prpTo,
243 PassRefPtr<AnimatableValueKeyframe> prpC = nullptr, 243 PassRefPtr<AnimatableValueKeyframe> prpC = nullptr,
244 PassRefPtr<AnimatableValueKeyframe> prpD = nullptr) { 244 PassRefPtr<AnimatableValueKeyframe> prpD = nullptr) {
245 RefPtr<AnimatableValueKeyframe> from = prpFrom; 245 RefPtr<AnimatableValueKeyframe> from = prpFrom;
246 RefPtr<AnimatableValueKeyframe> to = prpTo; 246 RefPtr<AnimatableValueKeyframe> to = prpTo;
247 RefPtr<AnimatableValueKeyframe> c = prpC; 247 RefPtr<AnimatableValueKeyframe> c = prpC;
248 RefPtr<AnimatableValueKeyframe> d = prpD; 248 RefPtr<AnimatableValueKeyframe> d = prpD;
249 249
250 EXPECT_EQ(from->offset(), 0); 250 EXPECT_EQ(from->offset(), 0);
251 AnimatableValueKeyframeVector frames; 251 AnimatableValueKeyframeVector frames;
252 frames.append(from); 252 frames.push_back(from);
253 EXPECT_LE(from->offset(), to->offset()); 253 EXPECT_LE(from->offset(), to->offset());
254 frames.append(to); 254 frames.push_back(to);
255 if (c) { 255 if (c) {
256 EXPECT_LE(to->offset(), c->offset()); 256 EXPECT_LE(to->offset(), c->offset());
257 frames.append(c); 257 frames.push_back(c);
258 } 258 }
259 if (d) { 259 if (d) {
260 frames.append(d); 260 frames.push_back(d);
261 EXPECT_LE(c->offset(), d->offset()); 261 EXPECT_LE(c->offset(), d->offset());
262 EXPECT_EQ(d->offset(), 1.0); 262 EXPECT_EQ(d->offset(), 1.0);
263 } else { 263 } else {
264 EXPECT_EQ(to->offset(), 1.0); 264 EXPECT_EQ(to->offset(), 1.0);
265 } 265 }
266 if (!HasFatalFailure()) { 266 if (!HasFatalFailure()) {
267 return AnimatableValueKeyframeEffectModel::create(frames); 267 return AnimatableValueKeyframeEffectModel::create(frames);
268 } 268 }
269 return nullptr; 269 return nullptr;
270 } 270 }
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
334 createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace); 334 createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace);
335 keyframeBadMultipleID->setPropertyValue(CSSPropertyOpacity, 335 keyframeBadMultipleID->setPropertyValue(CSSPropertyOpacity,
336 AnimatableDouble::create(10.0).get()); 336 AnimatableDouble::create(10.0).get());
337 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult( 337 EXPECT_FALSE(duplicateSingleKeyframeAndTestIsCandidateOnResult(
338 keyframeBadMultipleID.get())); 338 keyframeBadMultipleID.get()));
339 } 339 }
340 340
341 TEST_F(AnimationCompositorAnimationsTest, 341 TEST_F(AnimationCompositorAnimationsTest,
342 isNotCandidateForCompositorAnimationTransformDependsOnBoxSize) { 342 isNotCandidateForCompositorAnimationTransformDependsOnBoxSize) {
343 TransformOperations ops; 343 TransformOperations ops;
344 ops.operations().append(TranslateTransformOperation::create( 344 ops.operations().push_back(TranslateTransformOperation::create(
345 Length(2, Fixed), Length(2, Fixed), TransformOperation::TranslateX)); 345 Length(2, Fixed), Length(2, Fixed), TransformOperation::TranslateX));
346 RefPtr<AnimatableValueKeyframe> goodKeyframe = createReplaceOpKeyframe( 346 RefPtr<AnimatableValueKeyframe> goodKeyframe = createReplaceOpKeyframe(
347 CSSPropertyTransform, AnimatableTransform::create(ops, 1).get()); 347 CSSPropertyTransform, AnimatableTransform::create(ops, 1).get());
348 EXPECT_TRUE( 348 EXPECT_TRUE(
349 duplicateSingleKeyframeAndTestIsCandidateOnResult(goodKeyframe.get())); 349 duplicateSingleKeyframeAndTestIsCandidateOnResult(goodKeyframe.get()));
350 350
351 ops.operations().append(TranslateTransformOperation::create( 351 ops.operations().push_back(TranslateTransformOperation::create(
352 Length(50, Percent), Length(2, Fixed), TransformOperation::TranslateX)); 352 Length(50, Percent), Length(2, Fixed), TransformOperation::TranslateX));
353 RefPtr<AnimatableValueKeyframe> badKeyframe = createReplaceOpKeyframe( 353 RefPtr<AnimatableValueKeyframe> badKeyframe = createReplaceOpKeyframe(
354 CSSPropertyTransform, AnimatableTransform::create(ops, 1).get()); 354 CSSPropertyTransform, AnimatableTransform::create(ops, 1).get());
355 EXPECT_FALSE( 355 EXPECT_FALSE(
356 duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe.get())); 356 duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe.get()));
357 357
358 TransformOperations ops2; 358 TransformOperations ops2;
359 Length calcLength = 359 Length calcLength =
360 Length(100, Percent).blend(Length(100, Fixed), 0.5, ValueRangeAll); 360 Length(100, Percent).blend(Length(100, Fixed), 0.5, ValueRangeAll);
361 ops2.operations().append(TranslateTransformOperation::create( 361 ops2.operations().push_back(TranslateTransformOperation::create(
362 calcLength, Length(0, Fixed), TransformOperation::TranslateX)); 362 calcLength, Length(0, Fixed), TransformOperation::TranslateX));
363 RefPtr<AnimatableValueKeyframe> badKeyframe2 = createReplaceOpKeyframe( 363 RefPtr<AnimatableValueKeyframe> badKeyframe2 = createReplaceOpKeyframe(
364 CSSPropertyTransform, AnimatableTransform::create(ops2, 1).get()); 364 CSSPropertyTransform, AnimatableTransform::create(ops2, 1).get());
365 EXPECT_FALSE( 365 EXPECT_FALSE(
366 duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe2.get())); 366 duplicateSingleKeyframeAndTestIsCandidateOnResult(badKeyframe2.get()));
367 } 367 }
368 368
369 TEST_F( 369 TEST_F(
370 AnimationCompositorAnimationsTest, 370 AnimationCompositorAnimationsTest,
371 isCandidateForAnimationOnCompositorKeyframeEffectModelMultipleFramesOkay) { 371 isCandidateForAnimationOnCompositorKeyframeEffectModelMultipleFramesOkay) {
372 AnimatableValueKeyframeVector framesSame; 372 AnimatableValueKeyframeVector framesSame;
373 framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, 373 framesSame.push_back(createDefaultKeyframe(CSSPropertyOpacity,
374 EffectModel::CompositeReplace, 0.0) 374 EffectModel::CompositeReplace, 0.0)
375 .get()); 375 .get());
376 framesSame.append(createDefaultKeyframe(CSSPropertyOpacity, 376 framesSame.push_back(createDefaultKeyframe(CSSPropertyOpacity,
377 EffectModel::CompositeReplace, 1.0) 377 EffectModel::CompositeReplace, 1.0)
378 .get()); 378 .get());
379 EXPECT_TRUE(isCandidateForAnimationOnCompositor( 379 EXPECT_TRUE(isCandidateForAnimationOnCompositor(
380 m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame))); 380 m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame)));
381 381
382 AnimatableValueKeyframeVector framesMixed; 382 AnimatableValueKeyframeVector framesMixed;
383 framesMixed.append(createDefaultKeyframe(CSSPropertyOpacity, 383 framesMixed.push_back(createDefaultKeyframe(CSSPropertyOpacity,
384 EffectModel::CompositeReplace, 0.0) 384 EffectModel::CompositeReplace,
385 .get()); 385 0.0)
386 framesMixed.append(createDefaultKeyframe(CSSPropertyTransform, 386 .get());
387 EffectModel::CompositeReplace, 1.0) 387 framesMixed.push_back(createDefaultKeyframe(CSSPropertyTransform,
388 .get()); 388 EffectModel::CompositeReplace,
389 1.0)
390 .get());
389 EXPECT_FALSE(isCandidateForAnimationOnCompositor( 391 EXPECT_FALSE(isCandidateForAnimationOnCompositor(
390 m_timing, *AnimatableValueKeyframeEffectModel::create(framesMixed))); 392 m_timing, *AnimatableValueKeyframeEffectModel::create(framesMixed)));
391 } 393 }
392 394
393 TEST_F(AnimationCompositorAnimationsTest, 395 TEST_F(AnimationCompositorAnimationsTest,
394 isCandidateForAnimationOnCompositorKeyframeEffectModel) { 396 isCandidateForAnimationOnCompositorKeyframeEffectModel) {
395 AnimatableValueKeyframeVector framesSame; 397 AnimatableValueKeyframeVector framesSame;
396 framesSame.append(createDefaultKeyframe(CSSPropertyColor, 398 framesSame.push_back(createDefaultKeyframe(CSSPropertyColor,
397 EffectModel::CompositeReplace, 0.0) 399 EffectModel::CompositeReplace, 0.0)
398 .get()); 400 .get());
399 framesSame.append(createDefaultKeyframe(CSSPropertyColor, 401 framesSame.push_back(createDefaultKeyframe(CSSPropertyColor,
400 EffectModel::CompositeReplace, 1.0) 402 EffectModel::CompositeReplace, 1.0)
401 .get()); 403 .get());
402 EXPECT_FALSE(isCandidateForAnimationOnCompositor( 404 EXPECT_FALSE(isCandidateForAnimationOnCompositor(
403 m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame))); 405 m_timing, *AnimatableValueKeyframeEffectModel::create(framesSame)));
404 406
405 AnimatableValueKeyframeVector framesMixedProperties; 407 AnimatableValueKeyframeVector framesMixedProperties;
406 framesMixedProperties.append( 408 framesMixedProperties.push_back(
407 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 409 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace,
408 0.0) 410 0.0)
409 .get()); 411 .get());
410 framesMixedProperties.append( 412 framesMixedProperties.push_back(
411 createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace, 413 createDefaultKeyframe(CSSPropertyColor, EffectModel::CompositeReplace,
412 1.0) 414 1.0)
413 .get()); 415 .get());
414 EXPECT_FALSE(isCandidateForAnimationOnCompositor( 416 EXPECT_FALSE(isCandidateForAnimationOnCompositor(
415 m_timing, 417 m_timing,
416 *AnimatableValueKeyframeEffectModel::create(framesMixedProperties))); 418 *AnimatableValueKeyframeEffectModel::create(framesMixedProperties)));
417 } 419 }
418 420
419 TEST_F(AnimationCompositorAnimationsTest, AnimatedBoundingBox) { 421 TEST_F(AnimationCompositorAnimationsTest, AnimatedBoundingBox) {
420 Vector<TransformOperations> transformVector; 422 Vector<TransformOperations> transformVector;
421 transformVector.append(TransformOperations()); 423 transformVector.push_back(TransformOperations());
422 transformVector.back().operations().append( 424 transformVector.back().operations().push_back(
423 TranslateTransformOperation::create(Length(0, Fixed), Length(0, Fixed), 425 TranslateTransformOperation::create(Length(0, Fixed), Length(0, Fixed),
424 0.0, 426 0.0,
425 TransformOperation::Translate3D)); 427 TransformOperation::Translate3D));
426 transformVector.append(TransformOperations()); 428 transformVector.push_back(TransformOperations());
427 transformVector.back().operations().append( 429 transformVector.back().operations().push_back(
428 TranslateTransformOperation::create(Length(200, Fixed), 430 TranslateTransformOperation::create(Length(200, Fixed),
429 Length(200, Fixed), 0.0, 431 Length(200, Fixed), 0.0,
430 TransformOperation::Translate3D)); 432 TransformOperation::Translate3D));
431 std::unique_ptr<AnimatableValueKeyframeVector> frames = 433 std::unique_ptr<AnimatableValueKeyframeVector> frames =
432 createCompositableTransformKeyframeVector(transformVector); 434 createCompositableTransformKeyframeVector(transformVector);
433 FloatBox bounds; 435 FloatBox bounds;
434 EXPECT_TRUE(getAnimationBounds( 436 EXPECT_TRUE(getAnimationBounds(
435 bounds, *AnimatableValueKeyframeEffectModel::create(*frames), 0, 1)); 437 bounds, *AnimatableValueKeyframeEffectModel::create(*frames), 0, 1));
436 EXPECT_EQ(FloatBox(0.0f, 0.f, 0.0f, 200.0f, 200.0f, 0.0f), bounds); 438 EXPECT_EQ(FloatBox(0.0f, 0.f, 0.0f, 200.0f, 200.0f, 0.0f), bounds);
437 bounds = FloatBox(); 439 bounds = FloatBox();
438 EXPECT_TRUE(getAnimationBounds( 440 EXPECT_TRUE(getAnimationBounds(
439 bounds, *AnimatableValueKeyframeEffectModel::create(*frames), -1, 1)); 441 bounds, *AnimatableValueKeyframeEffectModel::create(*frames), -1, 1));
440 EXPECT_EQ(FloatBox(-200.0f, -200.0, 0.0, 400.0f, 400.0f, 0.0f), bounds); 442 EXPECT_EQ(FloatBox(-200.0f, -200.0, 0.0, 400.0f, 400.0f, 0.0f), bounds);
441 transformVector.append(TransformOperations()); 443 transformVector.push_back(TransformOperations());
442 transformVector.back().operations().append( 444 transformVector.back().operations().push_back(
443 TranslateTransformOperation::create(Length(-300, Fixed), 445 TranslateTransformOperation::create(Length(-300, Fixed),
444 Length(-400, Fixed), 1.0f, 446 Length(-400, Fixed), 1.0f,
445 TransformOperation::Translate3D)); 447 TransformOperation::Translate3D));
446 bounds = FloatBox(); 448 bounds = FloatBox();
447 frames = createCompositableTransformKeyframeVector(transformVector); 449 frames = createCompositableTransformKeyframeVector(transformVector);
448 EXPECT_TRUE(getAnimationBounds( 450 EXPECT_TRUE(getAnimationBounds(
449 bounds, *AnimatableValueKeyframeEffectModel::create(*frames), 0, 1)); 451 bounds, *AnimatableValueKeyframeEffectModel::create(*frames), 0, 1));
450 EXPECT_EQ(FloatBox(-300.0f, -400.f, 0.0f, 500.0f, 600.0f, 1.0f), bounds); 452 EXPECT_EQ(FloatBox(-300.0f, -400.f, 0.0f, 500.0f, 600.0f, 1.0f), bounds);
451 bounds = FloatBox(); 453 bounds = FloatBox();
452 EXPECT_TRUE(getAnimationBounds( 454 EXPECT_TRUE(getAnimationBounds(
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
725 (*m_keyframeVector5)[2]->setEasing(m_cubicEaseTimingFunction.get()); 727 (*m_keyframeVector5)[2]->setEasing(m_cubicEaseTimingFunction.get());
726 (*m_keyframeVector5)[3]->setEasing(m_stepTimingFunction.get()); 728 (*m_keyframeVector5)[3]->setEasing(m_stepTimingFunction.get());
727 m_keyframeAnimationEffect5 = 729 m_keyframeAnimationEffect5 =
728 AnimatableValueKeyframeEffectModel::create(*m_keyframeVector5); 730 AnimatableValueKeyframeEffectModel::create(*m_keyframeVector5);
729 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, 731 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing,
730 *m_keyframeAnimationEffect5)); 732 *m_keyframeAnimationEffect5));
731 } 733 }
732 734
733 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor) { 735 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor) {
734 AnimatableValueKeyframeVector basicFramesVector; 736 AnimatableValueKeyframeVector basicFramesVector;
735 basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity, 737 basicFramesVector.push_back(
736 EffectModel::CompositeReplace,
737 0.0)
738 .get());
739 basicFramesVector.append(createDefaultKeyframe(CSSPropertyOpacity,
740 EffectModel::CompositeReplace,
741 1.0)
742 .get());
743
744 AnimatableValueKeyframeVector nonBasicFramesVector;
745 nonBasicFramesVector.append(
746 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 738 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace,
747 0.0) 739 0.0)
748 .get()); 740 .get());
749 nonBasicFramesVector.append( 741 basicFramesVector.push_back(
742 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace,
743 1.0)
744 .get());
745
746 AnimatableValueKeyframeVector nonBasicFramesVector;
747 nonBasicFramesVector.push_back(
748 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace,
749 0.0)
750 .get());
751 nonBasicFramesVector.push_back(
750 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 752 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace,
751 0.5) 753 0.5)
752 .get()); 754 .get());
753 nonBasicFramesVector.append( 755 nonBasicFramesVector.push_back(
754 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace, 756 createDefaultKeyframe(CSSPropertyOpacity, EffectModel::CompositeReplace,
755 1.0) 757 1.0)
756 .get()); 758 .get());
757 759
758 basicFramesVector[0]->setEasing(m_linearTimingFunction.get()); 760 basicFramesVector[0]->setEasing(m_linearTimingFunction.get());
759 AnimatableValueKeyframeEffectModel* basicFrames = 761 AnimatableValueKeyframeEffectModel* basicFrames =
760 AnimatableValueKeyframeEffectModel::create(basicFramesVector); 762 AnimatableValueKeyframeEffectModel::create(basicFramesVector);
761 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *basicFrames)); 763 EXPECT_TRUE(isCandidateForAnimationOnCompositor(m_timing, *basicFrames));
762 764
763 basicFramesVector[0]->setEasing(CubicBezierTimingFunction::preset( 765 basicFramesVector[0]->setEasing(CubicBezierTimingFunction::preset(
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 ASSERT_EQ(2UL, keyframes.size()); 920 ASSERT_EQ(2UL, keyframes.size());
919 921
920 EXPECT_EQ(1.75, keyframes[1]->time() * m_timing.iterationDuration); 922 EXPECT_EQ(1.75, keyframes[1]->time() * m_timing.iterationDuration);
921 EXPECT_EQ(5.0f, keyframes[1]->value()); 923 EXPECT_EQ(5.0f, keyframes[1]->value());
922 } 924 }
923 925
924 TEST_F(AnimationCompositorAnimationsTest, 926 TEST_F(AnimationCompositorAnimationsTest,
925 createMultipleKeyframeOpacityAnimationChained) { 927 createMultipleKeyframeOpacityAnimationChained) {
926 // KeyframeEffect to convert 928 // KeyframeEffect to convert
927 AnimatableValueKeyframeVector frames; 929 AnimatableValueKeyframeVector frames;
928 frames.append(createReplaceOpKeyframe( 930 frames.push_back(createReplaceOpKeyframe(
929 CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0)); 931 CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0));
930 frames.append(createReplaceOpKeyframe( 932 frames.push_back(createReplaceOpKeyframe(
931 CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25)); 933 CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25));
932 frames.append(createReplaceOpKeyframe( 934 frames.push_back(createReplaceOpKeyframe(
933 CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5)); 935 CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5));
934 frames.append(createReplaceOpKeyframe( 936 frames.push_back(createReplaceOpKeyframe(
935 CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); 937 CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
936 frames[0]->setEasing(m_cubicEaseTimingFunction.get()); 938 frames[0]->setEasing(m_cubicEaseTimingFunction.get());
937 frames[1]->setEasing(m_linearTimingFunction.get()); 939 frames[1]->setEasing(m_linearTimingFunction.get());
938 frames[2]->setEasing(m_cubicCustomTimingFunction.get()); 940 frames[2]->setEasing(m_cubicCustomTimingFunction.get());
939 AnimatableValueKeyframeEffectModel* effect = 941 AnimatableValueKeyframeEffectModel* effect =
940 AnimatableValueKeyframeEffectModel::create(frames); 942 AnimatableValueKeyframeEffectModel::create(frames);
941 943
942 m_timing.timingFunction = m_linearTimingFunction.get(); 944 m_timing.timingFunction = m_linearTimingFunction.get();
943 m_timing.iterationDuration = 2.0; 945 m_timing.iterationDuration = 2.0;
944 m_timing.iterationCount = 10; 946 m_timing.iterationCount = 10;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 EXPECT_EQ(TimingFunction::Type::LINEAR, 982 EXPECT_EQ(TimingFunction::Type::LINEAR,
981 keyframes[3]->getTimingFunctionForTesting()->getType()); 983 keyframes[3]->getTimingFunctionForTesting()->getType());
982 } 984 }
983 985
984 TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation) { 986 TEST_F(AnimationCompositorAnimationsTest, createReversedOpacityAnimation) {
985 RefPtr<TimingFunction> cubicEasyFlipTimingFunction = 987 RefPtr<TimingFunction> cubicEasyFlipTimingFunction =
986 CubicBezierTimingFunction::create(0.0, 0.0, 0.0, 1.0); 988 CubicBezierTimingFunction::create(0.0, 0.0, 0.0, 1.0);
987 989
988 // KeyframeEffect to convert 990 // KeyframeEffect to convert
989 AnimatableValueKeyframeVector frames; 991 AnimatableValueKeyframeVector frames;
990 frames.append(createReplaceOpKeyframe( 992 frames.push_back(createReplaceOpKeyframe(
991 CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0)); 993 CSSPropertyOpacity, AnimatableDouble::create(2.0).get(), 0));
992 frames.append(createReplaceOpKeyframe( 994 frames.push_back(createReplaceOpKeyframe(
993 CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25)); 995 CSSPropertyOpacity, AnimatableDouble::create(-1.0).get(), 0.25));
994 frames.append(createReplaceOpKeyframe( 996 frames.push_back(createReplaceOpKeyframe(
995 CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5)); 997 CSSPropertyOpacity, AnimatableDouble::create(20.0).get(), 0.5));
996 frames.append(createReplaceOpKeyframe( 998 frames.push_back(createReplaceOpKeyframe(
997 CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0)); 999 CSSPropertyOpacity, AnimatableDouble::create(5.0).get(), 1.0));
998 frames[0]->setEasing(CubicBezierTimingFunction::preset( 1000 frames[0]->setEasing(CubicBezierTimingFunction::preset(
999 CubicBezierTimingFunction::EaseType::EASE_IN)); 1001 CubicBezierTimingFunction::EaseType::EASE_IN));
1000 frames[1]->setEasing(m_linearTimingFunction.get()); 1002 frames[1]->setEasing(m_linearTimingFunction.get());
1001 frames[2]->setEasing(cubicEasyFlipTimingFunction.get()); 1003 frames[2]->setEasing(cubicEasyFlipTimingFunction.get());
1002 AnimatableValueKeyframeEffectModel* effect = 1004 AnimatableValueKeyframeEffectModel* effect =
1003 AnimatableValueKeyframeEffectModel::create(frames); 1005 AnimatableValueKeyframeEffectModel::create(frames);
1004 1006
1005 m_timing.timingFunction = m_linearTimingFunction.get(); 1007 m_timing.timingFunction = m_linearTimingFunction.get();
1006 m_timing.iterationCount = 10; 1008 m_timing.iterationCount = 10;
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
1190 } 1192 }
1191 1193
1192 TEST_F(AnimationCompositorAnimationsTest, 1194 TEST_F(AnimationCompositorAnimationsTest,
1193 cancelIncompatibleCompositorAnimations) { 1195 cancelIncompatibleCompositorAnimations) {
1194 Persistent<Element> element = m_document->createElement("shared"); 1196 Persistent<Element> element = m_document->createElement("shared");
1195 1197
1196 LayoutObjectProxy* layoutObject = LayoutObjectProxy::create(element.get()); 1198 LayoutObjectProxy* layoutObject = LayoutObjectProxy::create(element.get());
1197 element->setLayoutObject(layoutObject); 1199 element->setLayoutObject(layoutObject);
1198 1200
1199 AnimatableValueKeyframeVector keyFrames; 1201 AnimatableValueKeyframeVector keyFrames;
1200 keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, 1202 keyFrames.push_back(createDefaultKeyframe(CSSPropertyOpacity,
1201 EffectModel::CompositeReplace, 0.0) 1203 EffectModel::CompositeReplace, 0.0)
1202 .get()); 1204 .get());
1203 keyFrames.append(createDefaultKeyframe(CSSPropertyOpacity, 1205 keyFrames.push_back(createDefaultKeyframe(CSSPropertyOpacity,
1204 EffectModel::CompositeReplace, 1.0) 1206 EffectModel::CompositeReplace, 1.0)
1205 .get()); 1207 .get());
1206 EffectModel* animationEffect1 = 1208 EffectModel* animationEffect1 =
1207 AnimatableValueKeyframeEffectModel::create(keyFrames); 1209 AnimatableValueKeyframeEffectModel::create(keyFrames);
1208 EffectModel* animationEffect2 = 1210 EffectModel* animationEffect2 =
1209 AnimatableValueKeyframeEffectModel::create(keyFrames); 1211 AnimatableValueKeyframeEffectModel::create(keyFrames);
1210 1212
1211 Timing timing; 1213 Timing timing;
1212 timing.iterationDuration = 1.f; 1214 timing.iterationDuration = 1.f;
1213 1215
1214 // The first animation for opacity is ok to run on compositor. 1216 // The first animation for opacity is ok to run on compositor.
1215 KeyframeEffect* keyframeEffect1 = 1217 KeyframeEffect* keyframeEffect1 =
1216 KeyframeEffect::create(element.get(), animationEffect1, timing); 1218 KeyframeEffect::create(element.get(), animationEffect1, timing);
1217 Animation* animation1 = m_timeline->play(keyframeEffect1); 1219 Animation* animation1 = m_timeline->play(keyframeEffect1);
1218 EXPECT_TRUE(CompositorAnimations::isCandidateForAnimationOnCompositor( 1220 EXPECT_TRUE(CompositorAnimations::isCandidateForAnimationOnCompositor(
1219 timing, *element.get(), animation1, *animationEffect1, 1)); 1221 timing, *element.get(), animation1, *animationEffect1, 1));
1220 1222
1221 // simulate KeyframeEffect::maybeStartAnimationOnCompositor 1223 // simulate KeyframeEffect::maybeStartAnimationOnCompositor
1222 Vector<int> compositorAnimationIds; 1224 Vector<int> compositorAnimationIds;
1223 compositorAnimationIds.append(1); 1225 compositorAnimationIds.push_back(1);
1224 keyframeEffect1->setCompositorAnimationIdsForTesting(compositorAnimationIds); 1226 keyframeEffect1->setCompositorAnimationIdsForTesting(compositorAnimationIds);
1225 EXPECT_TRUE(animation1->hasActiveAnimationsOnCompositor()); 1227 EXPECT_TRUE(animation1->hasActiveAnimationsOnCompositor());
1226 1228
1227 // 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.
1228 KeyframeEffect* keyframeEffect2 = 1230 KeyframeEffect* keyframeEffect2 =
1229 KeyframeEffect::create(element.get(), animationEffect2, timing); 1231 KeyframeEffect::create(element.get(), animationEffect2, timing);
1230 Animation* animation2 = m_timeline->play(keyframeEffect2); 1232 Animation* animation2 = m_timeline->play(keyframeEffect2);
1231 EXPECT_FALSE(CompositorAnimations::isCandidateForAnimationOnCompositor( 1233 EXPECT_FALSE(CompositorAnimations::isCandidateForAnimationOnCompositor(
1232 timing, *element.get(), animation2, *animationEffect2, 1)); 1234 timing, *element.get(), animation2, *animationEffect2, 1));
1233 EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor()); 1235 EXPECT_FALSE(animation2->hasActiveAnimationsOnCompositor());
(...skipping 10 matching lines...) Expand all
1244 simulateFrame(1.); 1246 simulateFrame(1.);
1245 1247
1246 element->setLayoutObject(nullptr); 1248 element->setLayoutObject(nullptr);
1247 LayoutObjectProxy::dispose(layoutObject); 1249 LayoutObjectProxy::dispose(layoutObject);
1248 1250
1249 ThreadState::current()->collectAllGarbage(); 1251 ThreadState::current()->collectAllGarbage();
1250 EXPECT_TRUE(element->elementAnimations()->animations().isEmpty()); 1252 EXPECT_TRUE(element->elementAnimations()->animations().isEmpty());
1251 } 1253 }
1252 1254
1253 } // namespace blink 1255 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698