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

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

Issue 68173013: Web Animations CSS: More cleaning of new CompositorAnimation code. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2013, Google Inc. All rights reserved. 2 * Copyright (c) 2013, Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 25 matching lines...) Expand all
36 #include "core/animation/AnimatableTransform.h" 36 #include "core/animation/AnimatableTransform.h"
37 #include "core/animation/AnimatableValueTestHelper.h" 37 #include "core/animation/AnimatableValueTestHelper.h"
38 #include "core/animation/CompositorAnimationsImpl.h" 38 #include "core/animation/CompositorAnimationsImpl.h"
39 #include "core/animation/CompositorAnimationsTestHelper.h" 39 #include "core/animation/CompositorAnimationsTestHelper.h"
40 #include "core/platform/animation/TimingFunctionTestHelper.h" 40 #include "core/platform/animation/TimingFunctionTestHelper.h"
41 #include "core/platform/graphics/filters/FilterOperations.h" 41 #include "core/platform/graphics/filters/FilterOperations.h"
42 #include "platform/geometry/IntSize.h" 42 #include "platform/geometry/IntSize.h"
43 #include "platform/transforms/TransformOperations.h" 43 #include "platform/transforms/TransformOperations.h"
44 #include "platform/transforms/TranslateTransformOperation.h" 44 #include "platform/transforms/TranslateTransformOperation.h"
45 #include "public/platform/WebAnimation.h" 45 #include "public/platform/WebAnimation.h"
46 #include "wtf/HashFunctions.h"
46 #include "wtf/OwnPtr.h" 47 #include "wtf/OwnPtr.h"
47 #include "wtf/PassOwnPtr.h" 48 #include "wtf/PassOwnPtr.h"
48 #include "wtf/PassRefPtr.h" 49 #include "wtf/PassRefPtr.h"
49 #include "wtf/RefPtr.h" 50 #include "wtf/RefPtr.h"
50 51
51 #include <gmock/gmock.h> 52 #include <gmock/gmock.h>
52 #include <gtest/gtest.h> 53 #include <gtest/gtest.h>
53 54
54 namespace WebCore { 55 namespace WebCore {
55 56
56 using ::testing::CloneToPassOwnPtr; 57 using ::testing::CloneToPassOwnPtr;
57 using ::testing::ExpectationSet; 58 using ::testing::ExpectationSet;
58 using ::testing::Ref; 59 using ::testing::Ref;
59 using ::testing::Return; 60 using ::testing::Return;
60 using ::testing::_; 61 using ::testing::_;
61 62
62 class CoreAnimationCompositorAnimationsTest : public CoreAnimationCompositorAnim ationsTestBase { 63 class CoreAnimationCompositorAnimationsTest : public CoreAnimationCompositorAnim ationsTestBase {
63 64
64 protected: 65 protected:
65 RefPtr<TimingFunction> m_linearTimingFunction; 66 RefPtr<TimingFunction> m_linearTimingFunction;
66 RefPtr<TimingFunction> m_cubicEaseTimingFunction; 67 RefPtr<TimingFunction> m_cubicEaseTimingFunction;
67 RefPtr<TimingFunction> m_cubicCustomTimingFunction; 68 RefPtr<TimingFunction> m_cubicCustomTimingFunction;
68 RefPtr<TimingFunction> m_stepTimingFunction; 69 RefPtr<TimingFunction> m_stepTimingFunction;
69 70
70 Timing m_timing; 71 Timing m_timing;
72 CompositorAnimationsImpl::CompositorTiming m_compositorTiming;
71 KeyframeAnimationEffect::KeyframeVector m_keyframeVector2; 73 KeyframeAnimationEffect::KeyframeVector m_keyframeVector2;
72 KeyframeAnimationEffect::KeyframeVector m_keyframeVector5; 74 KeyframeAnimationEffect::KeyframeVector m_keyframeVector5;
73 75
74 virtual void SetUp() 76 virtual void SetUp()
75 { 77 {
76 CoreAnimationCompositorAnimationsTestBase::SetUp(); 78 CoreAnimationCompositorAnimationsTestBase::SetUp();
77 79
78 m_linearTimingFunction = LinearTimingFunction::create(); 80 m_linearTimingFunction = LinearTimingFunction::create();
79 m_cubicEaseTimingFunction = CubicBezierTimingFunction::preset(CubicBezie rTimingFunction::Ease); 81 m_cubicEaseTimingFunction = CubicBezierTimingFunction::preset(CubicBezie rTimingFunction::Ease);
80 m_cubicCustomTimingFunction = CubicBezierTimingFunction::create(1, 2, 3, 4); 82 m_cubicCustomTimingFunction = CubicBezierTimingFunction::create(1, 2, 3, 4);
81 m_stepTimingFunction = StepsTimingFunction::create(1, false); 83 m_stepTimingFunction = StepsTimingFunction::create(1, false);
82 84
83 m_timing = createCompositableTiming(); 85 m_timing = createCompositableTiming();
86 m_compositorTiming = CompositorAnimationsImpl::CompositorTiming();
87 // Make sure the CompositableTiming is really compositable, otherwise
88 // most other tests will fail.
89 ASSERT(convertTimingForCompositor(m_timing, m_compositorTiming));
84 90
85 m_keyframeVector2 = createCompositableFloatKeyframeVector(2); 91 m_keyframeVector2 = createCompositableFloatKeyframeVector(2);
86 m_keyframeVector5 = createCompositableFloatKeyframeVector(5); 92 m_keyframeVector5 = createCompositableFloatKeyframeVector(5);
87 } 93 }
88 94
89 public: 95 public:
90 96
97 bool convertTimingForCompositor(const Timing& t, CompositorAnimationsImpl::C ompositorTiming& out)
98 {
99 return CompositorAnimationsImpl::convertTimingForCompositor(t, out);
100 }
91 bool isCandidateForCompositor(const Timing& t, KeyframeAnimationEffect::Keyf rameVector& frames) 101 bool isCandidateForCompositor(const Timing& t, KeyframeAnimationEffect::Keyf rameVector& frames)
92 { 102 {
93 return CompositorAnimationsImpl::isCandidateForCompositor(t, frames); 103 return CompositorAnimationsImpl::isCandidateForCompositor(t, frames);
94 } 104 }
95 bool isCandidateForCompositor(TimingFunction& t, KeyframeAnimationEffect::Ke yframeVector& frames) 105 bool isCandidateForCompositor(TimingFunction& t, KeyframeAnimationEffect::Ke yframeVector& frames)
96 { 106 {
97 return CompositorAnimationsImpl::isCandidateForCompositor(t, frames); 107 return CompositorAnimationsImpl::isCandidateForCompositor(t, frames);
98 } 108 }
99 bool isCandidateForCompositor(const Keyframe& k) 109 bool isCandidateForCompositor(const Keyframe& k)
100 { 110 {
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 isCandidateForCompositor( 230 isCandidateForCompositor(
221 *createDefaultKeyframe(CSSPropertyColor, AnimationEffect::CompositeR eplace).get())); 231 *createDefaultKeyframe(CSSPropertyColor, AnimationEffect::CompositeR eplace).get()));
222 232
223 EXPECT_FALSE( 233 EXPECT_FALSE(
224 isCandidateForCompositor( 234 isCandidateForCompositor(
225 *createDefaultKeyframe(CSSPropertyColor, AnimationEffect::CompositeA dd).get())); 235 *createDefaultKeyframe(CSSPropertyColor, AnimationEffect::CompositeA dd).get()));
226 } 236 }
227 237
228 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorKeyframeMu ltipleCSSProperties) 238 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorKeyframeMu ltipleCSSProperties)
229 { 239 {
240 // In this test, we cheat by using an AnimatableDouble even with Transform
241 // as the actual value isn't considered.
230 RefPtr<Keyframe> keyframeGoodMultiple = createDefaultKeyframe(CSSPropertyOpa city, AnimationEffect::CompositeReplace); 242 RefPtr<Keyframe> keyframeGoodMultiple = createDefaultKeyframe(CSSPropertyOpa city, AnimationEffect::CompositeReplace);
231 // Cheat by using an AnimatableDouble as creating a AnimatableTransform is m uch harder.
232 keyframeGoodMultiple->setPropertyValue(CSSPropertyWebkitTransform, Animatabl eDouble::create(10.0).get()); 243 keyframeGoodMultiple->setPropertyValue(CSSPropertyWebkitTransform, Animatabl eDouble::create(10.0).get());
233 EXPECT_TRUE(isCandidateForCompositor(*keyframeGoodMultiple.get())); 244 EXPECT_TRUE(isCandidateForCompositor(*keyframeGoodMultiple.get()));
234 245
235 RefPtr<Keyframe> keyframeBadMultipleOp = createDefaultKeyframe(CSSPropertyOp acity, AnimationEffect::CompositeAdd); 246 RefPtr<Keyframe> keyframeBadMultipleOp = createDefaultKeyframe(CSSPropertyOp acity, AnimationEffect::CompositeAdd);
236 // Cheat by using an AnimatableDouble as creating a AnimatableTransform is m uch harder.
237 keyframeBadMultipleOp->setPropertyValue(CSSPropertyWebkitTransform, Animatab leDouble::create(10.0).get()); 247 keyframeBadMultipleOp->setPropertyValue(CSSPropertyWebkitTransform, Animatab leDouble::create(10.0).get());
238 EXPECT_FALSE(isCandidateForCompositor(*keyframeBadMultipleOp.get())); 248 EXPECT_FALSE(isCandidateForCompositor(*keyframeBadMultipleOp.get()));
239 249
240 RefPtr<Keyframe> keyframeBadMultipleID = createDefaultKeyframe(CSSPropertyOp acity, AnimationEffect::CompositeReplace); 250 // Check both an unsupported property which hashes before and after the
241 keyframeBadMultipleID->setPropertyValue(CSSPropertyColor, AnimatableDouble:: create(10.0).get()); 251 // supported property.
242 EXPECT_FALSE(isCandidateForCompositor(*keyframeBadMultipleID.get())); 252 typedef DefaultHash<CSSPropertyID>::Hash HashFunctions;
253
254 RefPtr<Keyframe> keyframeBadMultiple1ID = createDefaultKeyframe(CSSPropertyC olor, AnimationEffect::CompositeReplace);
255 keyframeBadMultiple1ID->setPropertyValue(CSSPropertyOpacity, AnimatableDoubl e::create(10.0).get());
256 EXPECT_FALSE(isCandidateForCompositor(*keyframeBadMultiple1ID.get()));
257 EXPECT_LT(HashFunctions::hash(CSSPropertyColor), HashFunctions::hash(CSSProp ertyOpacity));
258
259 RefPtr<Keyframe> keyframeBadMultiple2ID = createDefaultKeyframe(CSSPropertyW ebkitTransform, AnimationEffect::CompositeReplace);
260 keyframeBadMultiple2ID->setPropertyValue(CSSPropertyWidth, AnimatableDouble: :create(10.0).get());
261 EXPECT_FALSE(isCandidateForCompositor(*keyframeBadMultiple2ID.get()));
262 EXPECT_GT(HashFunctions::hash(CSSPropertyWebkitTransform), HashFunctions::ha sh(CSSPropertyWidth));
243 } 263 }
244 264
245 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorKeyframeEf fectGoodSingleFrame) 265 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorKeyframeEf fectGoodSingleFrame)
246 { 266 {
247 KeyframeAnimationEffect::KeyframeVector frames; 267 KeyframeAnimationEffect::KeyframeVector frames;
248 frames.append(createDefaultKeyframe(CSSPropertyOpacity, AnimationEffect::Com positeReplace).get()); 268 frames.append(createDefaultKeyframe(CSSPropertyOpacity, AnimationEffect::Com positeReplace).get());
249 EXPECT_TRUE(isCandidateForCompositor(*KeyframeAnimationEffect::create(frames ).get())); 269 EXPECT_TRUE(isCandidateForCompositor(*KeyframeAnimationEffect::create(frames ).get()));
250 } 270 }
251 271
252 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorKeyframeEf fectBadSingleFrame) 272 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorKeyframeEf fectBadSingleFrame)
(...skipping 27 matching lines...) Expand all
280 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyOpacity, Anima tionEffect::CompositeReplace, 0.0).get()); 300 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyOpacity, Anima tionEffect::CompositeReplace, 0.0).get());
281 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyColor, Animati onEffect::CompositeReplace, 1.0).get()); 301 framesMixedProperties.append(createDefaultKeyframe(CSSPropertyColor, Animati onEffect::CompositeReplace, 1.0).get());
282 EXPECT_FALSE(isCandidateForCompositor(*KeyframeAnimationEffect::create(frame sMixedProperties).get())); 302 EXPECT_FALSE(isCandidateForCompositor(*KeyframeAnimationEffect::create(frame sMixedProperties).get()));
283 303
284 KeyframeAnimationEffect::KeyframeVector framesMixedOps; 304 KeyframeAnimationEffect::KeyframeVector framesMixedOps;
285 framesMixedOps.append(createDefaultKeyframe(CSSPropertyOpacity, AnimationEff ect::CompositeReplace, 0.0).get()); 305 framesMixedOps.append(createDefaultKeyframe(CSSPropertyOpacity, AnimationEff ect::CompositeReplace, 0.0).get());
286 framesMixedOps.append(createDefaultKeyframe(CSSPropertyOpacity, AnimationEff ect::CompositeAdd, 1.0).get()); 306 framesMixedOps.append(createDefaultKeyframe(CSSPropertyOpacity, AnimationEff ect::CompositeAdd, 1.0).get());
287 EXPECT_FALSE(isCandidateForCompositor(*KeyframeAnimationEffect::create(frame sMixedOps).get())); 307 EXPECT_FALSE(isCandidateForCompositor(*KeyframeAnimationEffect::create(frame sMixedOps).get()));
288 } 308 }
289 309
290 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingStar tDelay) 310 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorStartDel ay)
291 { 311 {
312 m_timing.iterationDuration = 20.0;
313
292 m_timing.startDelay = 2.0; 314 m_timing.startDelay = 2.0;
315 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
316
317 m_timing.startDelay = -2.0;
318 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
319 EXPECT_DOUBLE_EQ(-2.0, m_compositorTiming.scaledTimeOffset);
320 }
321
322 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorIteratio nStart)
323 {
324 m_timing.iterationStart = 2.2;
325 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
326 }
327
328 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorIteratio nCount)
329 {
330 m_timing.iterationCount = 5.0;
331 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
332 EXPECT_EQ(5, m_compositorTiming.adjustedIterationCount);
333
334 m_timing.iterationCount = 5.5;
335 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
336
337 m_timing.iterationCount = std::numeric_limits<double>::infinity();
338 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
339
340 #ifndef NDEBUG
341 m_timing.iterationCount = -1;
342 EXPECT_DEATH(convertTimingForCompositor(m_timing, m_compositorTiming), "");
343 #endif
344 }
345
346 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorIteratio nsAndStartDelay)
347 {
348 m_timing.iterationCount = 4.0;
349 m_timing.iterationDuration = 5.0;
350
351 m_timing.startDelay = -6.0;
352 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
353 EXPECT_DOUBLE_EQ(-1.0, m_compositorTiming.scaledTimeOffset);
354 EXPECT_DOUBLE_EQ(3.0, m_compositorTiming.adjustedIterationCount);
355 EXPECT_FALSE(m_compositorTiming.reverse);
356
357 m_timing.iterationCount = 1.0;
358 m_timing.iterationDuration = 5.0;
359 m_timing.startDelay = -6.0;
360 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
361
362 m_timing.iterationCount = 5.0;
363 m_timing.iterationDuration = 1.0;
364 m_timing.startDelay = -6.0;
365 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
366 }
367
368 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorPlayback Rate)
369 {
370 m_timing.playbackRate = 2.0;
371 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
372
373 m_timing.playbackRate = 0.0;
374 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
375
376 m_timing.playbackRate = -2.0;
377 EXPECT_FALSE(convertTimingForCompositor(m_timing, m_compositorTiming));
378 }
379
380 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorPlayback RateAdjustsDuration)
381 {
382 m_timing.iterationDuration = 10.0;
383 m_timing.playbackRate = 2.0;
384 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
385 EXPECT_DOUBLE_EQ(5.0, m_compositorTiming.scaledDuration);
386 }
387
388 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorPlayback RateAdjustsOffset)
389 {
390 m_timing.iterationDuration = 12.0;
391 m_timing.playbackRate = 2.0;
392 m_timing.startDelay = -5.0;
393 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
394 EXPECT_DOUBLE_EQ(6.0, m_compositorTiming.scaledDuration);
395 EXPECT_DOUBLE_EQ(-2.5, m_compositorTiming.scaledTimeOffset);
396 }
397
398 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorDirectio n)
399 {
400 m_timing.direction = Timing::PlaybackDirectionAlternate;
401 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
402 EXPECT_TRUE(m_compositorTiming.alternate);
403 EXPECT_FALSE(m_compositorTiming.reverse);
404
405 m_timing.direction = Timing::PlaybackDirectionAlternateReverse;
406 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
407 EXPECT_TRUE(m_compositorTiming.alternate);
408 EXPECT_TRUE(m_compositorTiming.reverse);
409
410 m_timing.direction = Timing::PlaybackDirectionReverse;
411 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
412 EXPECT_FALSE(m_compositorTiming.alternate);
413 EXPECT_TRUE(m_compositorTiming.reverse);
414 }
415
416 TEST_F(CoreAnimationCompositorAnimationsTest, ConvertTimingForCompositorDirectio nIterationsAndStartDelay)
417 {
418 m_timing.direction = Timing::PlaybackDirectionAlternate;
419 m_timing.iterationCount = 4.0;
420 m_timing.iterationDuration = 5.0;
421 m_timing.startDelay = -6.0;
422 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
423 EXPECT_DOUBLE_EQ(-1.0, m_compositorTiming.scaledTimeOffset);
424 EXPECT_EQ(3, m_compositorTiming.adjustedIterationCount);
425 EXPECT_TRUE(m_compositorTiming.alternate);
426 EXPECT_TRUE(m_compositorTiming.reverse);
427
428 m_timing.direction = Timing::PlaybackDirectionAlternate;
429 m_timing.iterationCount = 4.0;
430 m_timing.iterationDuration = 5.0;
431 m_timing.startDelay = -11.0;
432 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
433 EXPECT_DOUBLE_EQ(-1.0, m_compositorTiming.scaledTimeOffset);
434 EXPECT_EQ(2, m_compositorTiming.adjustedIterationCount);
435 EXPECT_TRUE(m_compositorTiming.alternate);
436 EXPECT_FALSE(m_compositorTiming.reverse);
437
438 m_timing.direction = Timing::PlaybackDirectionAlternateReverse;
439 m_timing.iterationCount = 4.0;
440 m_timing.iterationDuration = 5.0;
441 m_timing.startDelay = -6.0;
442 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
443 EXPECT_DOUBLE_EQ(-1.0, m_compositorTiming.scaledTimeOffset);
444 EXPECT_EQ(3, m_compositorTiming.adjustedIterationCount);
445 EXPECT_TRUE(m_compositorTiming.alternate);
446 EXPECT_FALSE(m_compositorTiming.reverse);
447
448 m_timing.direction = Timing::PlaybackDirectionAlternateReverse;
449 m_timing.iterationCount = 4.0;
450 m_timing.iterationDuration = 5.0;
451 m_timing.startDelay = -11.0;
452 EXPECT_TRUE(convertTimingForCompositor(m_timing, m_compositorTiming));
453 EXPECT_DOUBLE_EQ(-1.0, m_compositorTiming.scaledTimeOffset);
454 EXPECT_EQ(2, m_compositorTiming.adjustedIterationCount);
455 EXPECT_TRUE(m_compositorTiming.alternate);
456 EXPECT_TRUE(m_compositorTiming.reverse);
457 }
458
459 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTiming)
460 {
293 EXPECT_TRUE(isCandidateForCompositor(m_timing, m_keyframeVector2)); 461 EXPECT_TRUE(isCandidateForCompositor(m_timing, m_keyframeVector2));
294 462
295 m_timing.iterationCount = 5.0;
296 m_timing.startDelay = 2.0; 463 m_timing.startDelay = 2.0;
297 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2)); 464 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
298
299 m_timing.iterationCount = 5.0;
300 m_timing.startDelay = -2.0;
301 EXPECT_TRUE(isCandidateForCompositor(m_timing, m_keyframeVector2));
302 }
303
304 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingFill Mode)
305 {
306 m_timing.fillMode = Timing::FillModeForwards;
307 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
308 } 465 }
309 466
310 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingIter ationStart)
311 {
312 m_timing.iterationStart = 2.2;
313 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
314 }
315
316 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingIter ationCount)
317 {
318 m_timing.iterationCount = 5.0;
319 EXPECT_TRUE(isCandidateForCompositor(m_timing, m_keyframeVector2));
320
321 m_timing.iterationCount = 5.5;
322 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
323
324 m_timing.iterationCount = -1.0;
325 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
326
327 m_timing.iterationCount = std::numeric_limits<double>::infinity();
328 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
329
330 m_timing.iterationCount = -std::numeric_limits<double>::infinity();
331 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
332 }
333
334 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingIter ationDuration)
335 {
336 m_timing.hasIterationDuration = false;
337 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
338 }
339
340 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingPlay backRate)
341 {
342 m_timing.playbackRate = 2.0;
343 EXPECT_TRUE(isCandidateForCompositor(m_timing, m_keyframeVector2));
344 }
345
346 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingTimi ngFunctionPassThru) 467 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingTimi ngFunctionPassThru)
347 { 468 {
348 m_timing.timingFunction = m_stepTimingFunction; 469 m_timing.timingFunction = m_stepTimingFunction;
349 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2)); 470 EXPECT_FALSE(isCandidateForCompositor(m_timing, m_keyframeVector2));
350 } 471 }
351 472
352 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingFunc tionLinear) 473 TEST_F(CoreAnimationCompositorAnimationsTest, isCandidateForCompositorTimingFunc tionLinear)
353 { 474 {
354 EXPECT_TRUE(isCandidateForCompositor(*m_linearTimingFunction.get(), m_keyfra meVector2)); 475 EXPECT_TRUE(isCandidateForCompositor(*m_linearTimingFunction.get(), m_keyfra meVector2));
355 EXPECT_TRUE(isCandidateForCompositor(*m_linearTimingFunction.get(), m_keyfra meVector5)); 476 EXPECT_TRUE(isCandidateForCompositor(*m_linearTimingFunction.get(), m_keyfra meVector5));
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
596 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 5.0))); 717 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 5.0)));
597 718
598 // Create animation 719 // Create animation
599 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 720 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
600 ExpectationSet usesMockAnimation; 721 ExpectationSet usesMockAnimation;
601 722
602 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 723 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
603 .WillOnce(Return(mockAnimationPtr)); 724 .WillOnce(Return(mockAnimationPtr));
604 725
605 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); 726 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1));
727 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0));
606 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse)); 728 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse));
607 729
608 EXPECT_CALL(*mockAnimationPtr, delete_()) 730 EXPECT_CALL(*mockAnimationPtr, delete_())
609 .Times(1) 731 .Times(1)
610 .After(usesMockAnimation); 732 .After(usesMockAnimation);
611 EXPECT_CALL(*mockCurvePtr, delete_()) 733 EXPECT_CALL(*mockCurvePtr, delete_())
612 .Times(1) 734 .Times(1)
613 .After(usesMockCurve); 735 .After(usesMockCurve);
614 736
615 // Go! 737 // Go!
616 setCompositorForTesting(mockCompositor); 738 setCompositorForTesting(mockCompositor);
617 Vector<OwnPtr<blink::WebAnimation> > result; 739 Vector<OwnPtr<blink::WebAnimation> > result;
618 getCompositorAnimations(m_timing, *effect.get(), result); 740 getCompositorAnimations(m_timing, *effect.get(), result);
619 EXPECT_EQ(1U, result.size()); 741 EXPECT_EQ(1U, result.size());
620 result[0].clear(); 742 result[0].clear();
621 } 743 }
622 744
623 TEST_F(CoreAnimationCompositorAnimationsTest, createSimpleOpacityAnimationDurati onPlaybackOffset) 745 TEST_F(CoreAnimationCompositorAnimationsTest, createSimpleOpacityAnimationDurati onPlayback)
624 { 746 {
625 // Animation to convert 747 // Animation to convert
626 RefPtr<KeyframeAnimationEffect> effect = createKeyframeAnimationEffect( 748 RefPtr<KeyframeAnimationEffect> effect = createKeyframeAnimationEffect(
627 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 749 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0),
628 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 750 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0));
629 751
630 m_timing.iterationDuration = 10.0; 752 m_timing.iterationDuration = 10.0;
631 m_timing.playbackRate = 2.0; 753 m_timing.playbackRate = 2.0;
632 m_timing.startDelay = 200.0;
633 // -- 754 // --
634 755
635 WebCompositorSupportMock mockCompositor; 756 WebCompositorSupportMock mockCompositor;
636 757
637 // Curve is created 758 // Curve is created
638 blink::WebFloatAnimationCurveMock* mockCurvePtr = new blink::WebFloatAnimati onCurveMock; 759 blink::WebFloatAnimationCurveMock* mockCurvePtr = new blink::WebFloatAnimati onCurveMock;
639 ExpectationSet usesMockCurve; 760 ExpectationSet usesMockCurve;
640 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 761 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
641 .WillOnce(Return(mockCurvePtr)); 762 .WillOnce(Return(mockCurvePtr));
642 763
643 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(100. 0, 2.0), blink::WebAnimationCurve::TimingFunctionTypeLinear)); 764 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(0.0, 2.0), blink::WebAnimationCurve::TimingFunctionTypeLinear));
644 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(105. 0, 5.0))); 765 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(5.0, 5.0)));
645 766
646 // Create animation 767 // Create animation
647 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 768 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
648 ExpectationSet usesMockAnimation; 769 ExpectationSet usesMockAnimation;
649 770
650 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 771 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
651 .WillOnce(Return(mockAnimationPtr)); 772 .WillOnce(Return(mockAnimationPtr));
652 773
653 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); 774 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1));
775 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0));
654 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse)); 776 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse));
655 777
656 EXPECT_CALL(*mockAnimationPtr, delete_()) 778 EXPECT_CALL(*mockAnimationPtr, delete_())
657 .Times(1) 779 .Times(1)
658 .After(usesMockAnimation); 780 .After(usesMockAnimation);
659 EXPECT_CALL(*mockCurvePtr, delete_()) 781 EXPECT_CALL(*mockCurvePtr, delete_())
660 .Times(1) 782 .Times(1)
661 .After(usesMockCurve); 783 .After(usesMockCurve);
662 784
663 // Go! 785 // Go!
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 5.0))); 818 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 5.0)));
697 819
698 // Animation is created 820 // Animation is created
699 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 821 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
700 ExpectationSet usesMockAnimation; 822 ExpectationSet usesMockAnimation;
701 823
702 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 824 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
703 .WillOnce(Return(mockAnimationPtr)); 825 .WillOnce(Return(mockAnimationPtr));
704 826
705 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(5)); 827 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(5));
828 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0));
706 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue)); 829 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue));
707 830
708 EXPECT_CALL(*mockAnimationPtr, delete_()) 831 EXPECT_CALL(*mockAnimationPtr, delete_())
709 .Times(1) 832 .Times(1)
710 .After(usesMockAnimation); 833 .After(usesMockAnimation);
711 EXPECT_CALL(*mockCurvePtr, delete_()) 834 EXPECT_CALL(*mockCurvePtr, delete_())
712 .Times(1) 835 .Times(1)
713 .After(usesMockCurve); 836 .After(usesMockCurve);
714 837
715 // Go! 838 // Go!
716 setCompositorForTesting(mockCompositor); 839 setCompositorForTesting(mockCompositor);
717 Vector<OwnPtr<blink::WebAnimation> > result; 840 Vector<OwnPtr<blink::WebAnimation> > result;
718 getCompositorAnimations(m_timing, *effect.get(), result); 841 getCompositorAnimations(m_timing, *effect.get(), result);
719 EXPECT_EQ(1U, result.size()); 842 EXPECT_EQ(1U, result.size());
720 result[0].clear(); 843 result[0].clear();
721 } 844 }
722 845
723 TEST_F(CoreAnimationCompositorAnimationsTest, createSimpleOpacityAnimationNegati veStartDelay) 846 TEST_F(CoreAnimationCompositorAnimationsTest, createSimpleOpacityAnimationNegati veStartDelay)
724 { 847 {
725 // Animation to convert 848 // Animation to convert
726 RefPtr<KeyframeAnimationEffect> effect = createKeyframeAnimationEffect( 849 RefPtr<KeyframeAnimationEffect> effect = createKeyframeAnimationEffect(
727 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 850 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0),
728 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 851 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0));
729 852
730 m_timing.iterationCount = 5.0; 853 m_timing.iterationCount = 5.0;
731 m_timing.iterationDuration = 2.0; 854 m_timing.iterationDuration = 1.75;
732 m_timing.startDelay = -3; 855 m_timing.startDelay = -3.25;
733 // -- 856 // --
734 857
735 WebCompositorSupportMock mockCompositor; 858 WebCompositorSupportMock mockCompositor;
736 859
737 // Curve is created 860 // Curve is created
738 blink::WebFloatAnimationCurveMock* mockCurvePtr = new blink::WebFloatAnimati onCurveMock; 861 blink::WebFloatAnimationCurveMock* mockCurvePtr = new blink::WebFloatAnimati onCurveMock;
739 ExpectationSet usesMockCurve; 862 ExpectationSet usesMockCurve;
740 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 863 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
741 .WillOnce(Return(mockCurvePtr)); 864 .WillOnce(Return(mockCurvePtr));
742 865
743 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(0.0, 2.0), blink::WebAnimationCurve::TimingFunctionTypeLinear)); 866 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(0.0, 2.0), blink::WebAnimationCurve::TimingFunctionTypeLinear));
744 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(2.0, 5.0))); 867 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.75 , 5.0)));
745 868
746 // Create animation 869 // Create animation
747 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 870 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
748 ExpectationSet usesMockAnimation; 871 ExpectationSet usesMockAnimation;
749 872
750 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 873 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
751 .WillOnce(Return(mockAnimationPtr)); 874 .WillOnce(Return(mockAnimationPtr));
752 875
753 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(-1.0));
754 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(4)); 876 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(4));
877 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(-1.5));
755 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse)); 878 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse));
756 879
757 EXPECT_CALL(*mockAnimationPtr, delete_()) 880 EXPECT_CALL(*mockAnimationPtr, delete_())
758 .Times(1) 881 .Times(1)
759 .After(usesMockAnimation); 882 .After(usesMockAnimation);
760 EXPECT_CALL(*mockCurvePtr, delete_()) 883 EXPECT_CALL(*mockCurvePtr, delete_())
761 .Times(1) 884 .Times(1)
762 .After(usesMockCurve); 885 .After(usesMockCurve);
763 886
764 // Go! 887 // Go!
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
803 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 5.0))); 926 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 5.0)));
804 927
805 // Animation is created 928 // Animation is created
806 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 929 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
807 ExpectationSet usesMockAnimation; 930 ExpectationSet usesMockAnimation;
808 931
809 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 932 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
810 .WillOnce(Return(mockAnimationPtr)); 933 .WillOnce(Return(mockAnimationPtr));
811 934
812 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(10)); 935 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(10));
936 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0));
813 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue)); 937 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue));
814 938
815 EXPECT_CALL(*mockAnimationPtr, delete_()) 939 EXPECT_CALL(*mockAnimationPtr, delete_())
816 .Times(1) 940 .Times(1)
817 .After(usesMockAnimation); 941 .After(usesMockAnimation);
818 EXPECT_CALL(*mockCurvePtr, delete_()) 942 EXPECT_CALL(*mockCurvePtr, delete_())
819 .Times(1) 943 .Times(1)
820 .After(usesMockCurve); 944 .After(usesMockCurve);
821 945
822 // Go! 946 // Go!
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
862 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 2.0))); 986 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(1.0, 2.0)));
863 987
864 // Create the animation 988 // Create the animation
865 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 989 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
866 ExpectationSet usesMockAnimation; 990 ExpectationSet usesMockAnimation;
867 991
868 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 992 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
869 .WillOnce(Return(mockAnimationPtr)); 993 .WillOnce(Return(mockAnimationPtr));
870 994
871 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(10)); 995 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(10));
996 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(0.0));
872 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue)); 997 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue));
873 998
874 EXPECT_CALL(*mockAnimationPtr, delete_()) 999 EXPECT_CALL(*mockAnimationPtr, delete_())
875 .Times(1) 1000 .Times(1)
876 .After(usesMockAnimation); 1001 .After(usesMockAnimation);
877 EXPECT_CALL(*mockCurvePtr, delete_()) 1002 EXPECT_CALL(*mockCurvePtr, delete_())
878 .Times(1) 1003 .Times(1)
879 .After(usesMockCurve); 1004 .After(usesMockCurve);
880 1005
881 // Go! 1006 // Go!
882 setCompositorForTesting(mockCompositor); 1007 setCompositorForTesting(mockCompositor);
883 Vector<OwnPtr<blink::WebAnimation> > result; 1008 Vector<OwnPtr<blink::WebAnimation> > result;
884 getCompositorAnimations(m_timing, *effect.get(), result); 1009 getCompositorAnimations(m_timing, *effect.get(), result);
885 EXPECT_EQ(1U, result.size()); 1010 EXPECT_EQ(1U, result.size());
886 result[0].clear(); 1011 result[0].clear();
887 } 1012 }
888 1013
889 TEST_F(CoreAnimationCompositorAnimationsTest, createReversedOpacityAnimationDura tionPlaybackOffset) 1014 TEST_F(CoreAnimationCompositorAnimationsTest, createReversedOpacityAnimationNega tiveStartDelay)
890 { 1015 {
891 // Animation to convert 1016 // Animation to convert
892 RefPtr<KeyframeAnimationEffect> effect = createKeyframeAnimationEffect( 1017 RefPtr<KeyframeAnimationEffect> effect = createKeyframeAnimationEffect(
893 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0), 1018 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(2.0 ).get(), 0),
894 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0)); 1019 createReplaceOpKeyframe(CSSPropertyOpacity, AnimatableDouble::create(5.0 ).get(), 1.0));
895 1020
896 m_timing.iterationDuration = 10.0; 1021 m_timing.iterationCount = 5.0;
897 m_timing.playbackRate = 2.0; 1022 m_timing.iterationDuration = 2.0;
898 m_timing.startDelay = 200.0; 1023 m_timing.startDelay = -3;
899 m_timing.direction = Timing::PlaybackDirectionReverse; 1024 m_timing.direction = Timing::PlaybackDirectionAlternateReverse;
900 // -- 1025 // --
901 1026
902 WebCompositorSupportMock mockCompositor; 1027 WebCompositorSupportMock mockCompositor;
903 1028
904 // Curve is created 1029 // Curve is created
905 blink::WebFloatAnimationCurveMock* mockCurvePtr = new blink::WebFloatAnimati onCurveMock; 1030 blink::WebFloatAnimationCurveMock* mockCurvePtr = new blink::WebFloatAnimati onCurveMock;
906 ExpectationSet usesMockCurve; 1031 ExpectationSet usesMockCurve;
907 EXPECT_CALL(mockCompositor, createFloatAnimationCurve()) 1032 EXPECT_CALL(mockCompositor, createFloatAnimationCurve())
908 .WillOnce(Return(mockCurvePtr)); 1033 .WillOnce(Return(mockCurvePtr));
909 1034
910 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(100. 0, 5.0), blink::WebAnimationCurve::TimingFunctionTypeLinear)); 1035 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(0.0, 2.0), blink::WebAnimationCurve::TimingFunctionTypeLinear));
911 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(105. 0, 2.0))); 1036 usesMockCurve += EXPECT_CALL(*mockCurvePtr, add(blink::WebFloatKeyframe(2.0, 5.0)));
912 1037
913 // Create animation 1038 // Create animation
914 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity); 1039 blink::WebAnimationMock* mockAnimationPtr = new blink::WebAnimationMock(blin k::WebAnimation::TargetPropertyOpacity);
915 ExpectationSet usesMockAnimation; 1040 ExpectationSet usesMockAnimation;
916 1041
917 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _)) 1042 usesMockCurve += EXPECT_CALL(mockCompositor, createAnimation(Ref(*mockCurveP tr), blink::WebAnimation::TargetPropertyOpacity, _))
918 .WillOnce(Return(mockAnimationPtr)); 1043 .WillOnce(Return(mockAnimationPtr));
919 1044
920 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(1)); 1045 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setIterations(4));
921 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(f alse)); 1046 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setTimeOffset(-1.0));
1047 usesMockAnimation += EXPECT_CALL(*mockAnimationPtr, setAlternatesDirection(t rue));
922 1048
923 EXPECT_CALL(*mockAnimationPtr, delete_()) 1049 EXPECT_CALL(*mockAnimationPtr, delete_())
924 .Times(1) 1050 .Times(1)
925 .After(usesMockAnimation); 1051 .After(usesMockAnimation);
926 EXPECT_CALL(*mockCurvePtr, delete_()) 1052 EXPECT_CALL(*mockCurvePtr, delete_())
927 .Times(1) 1053 .Times(1)
928 .After(usesMockCurve); 1054 .After(usesMockCurve);
929 1055
930 // Go! 1056 // Go!
931 setCompositorForTesting(mockCompositor); 1057 setCompositorForTesting(mockCompositor);
932 Vector<OwnPtr<blink::WebAnimation> > result; 1058 Vector<OwnPtr<blink::WebAnimation> > result;
933 getCompositorAnimations(m_timing, *effect.get(), result); 1059 getCompositorAnimations(m_timing, *effect.get(), result);
934 EXPECT_EQ(1U, result.size()); 1060 EXPECT_EQ(1U, result.size());
935 result[0].clear(); 1061 result[0].clear();
936 } 1062 }
937 1063
1064
938 } // namespace WebCore 1065 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698