| OLD | NEW |
| 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 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 { | 81 { |
| 82 document->animationClock().updateTime(time); | 82 document->animationClock().updateTime(time); |
| 83 document->compositorPendingAnimations().update(false); | 83 document->compositorPendingAnimations().update(false); |
| 84 // The timeline does not know about our animation, so we have to explici
tly call update(). | 84 // The timeline does not know about our animation, so we have to explici
tly call update(). |
| 85 return animation->update(TimingUpdateForAnimationFrame); | 85 return animation->update(TimingUpdateForAnimationFrame); |
| 86 } | 86 } |
| 87 | 87 |
| 88 Persistent<Document> document; | 88 Persistent<Document> document; |
| 89 Persistent<AnimationTimeline> timeline; | 89 Persistent<AnimationTimeline> timeline; |
| 90 Persistent<Animation> animation; | 90 Persistent<Animation> animation; |
| 91 TrackExceptionState exceptionState; | |
| 92 std::unique_ptr<DummyPageHolder> pageHolder; | 91 std::unique_ptr<DummyPageHolder> pageHolder; |
| 93 }; | 92 }; |
| 94 | 93 |
| 95 TEST_F(AnimationAnimationTest, InitialState) | 94 TEST_F(AnimationAnimationTest, InitialState) |
| 96 { | 95 { |
| 97 setUpWithoutStartingTimeline(); | 96 setUpWithoutStartingTimeline(); |
| 98 animation = timeline->play(0); | 97 animation = timeline->play(0); |
| 99 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); | 98 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); |
| 100 EXPECT_EQ(0, animation->currentTimeInternal()); | 99 EXPECT_EQ(0, animation->currentTimeInternal()); |
| 101 EXPECT_FALSE(animation->paused()); | 100 EXPECT_FALSE(animation->paused()); |
| (...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 EXPECT_EQ(30, animation->currentTimeInternal()); | 242 EXPECT_EQ(30, animation->currentTimeInternal()); |
| 244 animation->setCurrentTimeInternal(50); | 243 animation->setCurrentTimeInternal(50); |
| 245 animation->setStartTime(-40 * 1000); | 244 animation->setStartTime(-40 * 1000); |
| 246 EXPECT_EQ(30, animation->currentTimeInternal()); | 245 EXPECT_EQ(30, animation->currentTimeInternal()); |
| 247 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); | 246 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); |
| 248 EXPECT_TRUE(animation->limited()); | 247 EXPECT_TRUE(animation->limited()); |
| 249 } | 248 } |
| 250 | 249 |
| 251 TEST_F(AnimationAnimationTest, StartTimePauseFinish) | 250 TEST_F(AnimationAnimationTest, StartTimePauseFinish) |
| 252 { | 251 { |
| 252 NonThrowableExceptionState exceptionState; |
| 253 animation->pause(); | 253 animation->pause(); |
| 254 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); | 254 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); |
| 255 EXPECT_TRUE(std::isnan(animation->startTime())); | 255 EXPECT_TRUE(std::isnan(animation->startTime())); |
| 256 animation->finish(exceptionState); | 256 animation->finish(exceptionState); |
| 257 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); | 257 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); |
| 258 EXPECT_EQ(-30000, animation->startTime()); | 258 EXPECT_EQ(-30000, animation->startTime()); |
| 259 } | 259 } |
| 260 | 260 |
| 261 TEST_F(AnimationAnimationTest, FinishWhenPaused) | 261 TEST_F(AnimationAnimationTest, FinishWhenPaused) |
| 262 { | 262 { |
| 263 NonThrowableExceptionState exceptionState; |
| 263 animation->pause(); | 264 animation->pause(); |
| 264 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); | 265 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); |
| 265 simulateFrame(10); | 266 simulateFrame(10); |
| 266 EXPECT_EQ(Animation::Paused, animation->playStateInternal()); | 267 EXPECT_EQ(Animation::Paused, animation->playStateInternal()); |
| 267 animation->finish(exceptionState); | 268 animation->finish(exceptionState); |
| 268 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); | 269 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); |
| 269 } | 270 } |
| 270 | 271 |
| 271 TEST_F(AnimationAnimationTest, StartTimeFinishPause) | 272 TEST_F(AnimationAnimationTest, StartTimeFinishPause) |
| 272 { | 273 { |
| 274 NonThrowableExceptionState exceptionState; |
| 273 animation->finish(exceptionState); | 275 animation->finish(exceptionState); |
| 274 EXPECT_EQ(-30 * 1000, animation->startTime()); | 276 EXPECT_EQ(-30 * 1000, animation->startTime()); |
| 275 animation->pause(); | 277 animation->pause(); |
| 276 EXPECT_TRUE(std::isnan(animation->startTime())); | 278 EXPECT_TRUE(std::isnan(animation->startTime())); |
| 277 } | 279 } |
| 278 | 280 |
| 279 TEST_F(AnimationAnimationTest, StartTimeWithZeroPlaybackRate) | 281 TEST_F(AnimationAnimationTest, StartTimeWithZeroPlaybackRate) |
| 280 { | 282 { |
| 281 animation->setPlaybackRate(0); | 283 animation->setPlaybackRate(0); |
| 282 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); | 284 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 418 EXPECT_EQ(0, animation->currentTimeInternal()); | 420 EXPECT_EQ(0, animation->currentTimeInternal()); |
| 419 | 421 |
| 420 animation->setCurrentTimeInternal(-10); | 422 animation->setCurrentTimeInternal(-10); |
| 421 animation->reverse(); | 423 animation->reverse(); |
| 422 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); | 424 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); |
| 423 EXPECT_EQ(30, animation->currentTimeInternal()); | 425 EXPECT_EQ(30, animation->currentTimeInternal()); |
| 424 } | 426 } |
| 425 | 427 |
| 426 TEST_F(AnimationAnimationTest, Finish) | 428 TEST_F(AnimationAnimationTest, Finish) |
| 427 { | 429 { |
| 430 NonThrowableExceptionState exceptionState; |
| 428 animation->finish(exceptionState); | 431 animation->finish(exceptionState); |
| 429 EXPECT_EQ(30, animation->currentTimeInternal()); | 432 EXPECT_EQ(30, animation->currentTimeInternal()); |
| 430 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); | 433 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); |
| 431 | 434 |
| 432 animation->setPlaybackRate(-1); | 435 animation->setPlaybackRate(-1); |
| 433 animation->finish(exceptionState); | 436 animation->finish(exceptionState); |
| 434 EXPECT_EQ(0, animation->currentTimeInternal()); | 437 EXPECT_EQ(0, animation->currentTimeInternal()); |
| 435 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); | 438 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); |
| 436 | |
| 437 EXPECT_FALSE(exceptionState.hadException()); | |
| 438 } | 439 } |
| 439 | 440 |
| 440 TEST_F(AnimationAnimationTest, FinishAfterEffectEnd) | 441 TEST_F(AnimationAnimationTest, FinishAfterEffectEnd) |
| 441 { | 442 { |
| 443 NonThrowableExceptionState exceptionState; |
| 442 animation->setCurrentTime(40 * 1000); | 444 animation->setCurrentTime(40 * 1000); |
| 443 animation->finish(exceptionState); | 445 animation->finish(exceptionState); |
| 444 EXPECT_EQ(40, animation->currentTimeInternal()); | 446 EXPECT_EQ(40, animation->currentTimeInternal()); |
| 445 } | 447 } |
| 446 | 448 |
| 447 TEST_F(AnimationAnimationTest, FinishBeforeStart) | 449 TEST_F(AnimationAnimationTest, FinishBeforeStart) |
| 448 { | 450 { |
| 451 NonThrowableExceptionState exceptionState; |
| 449 animation->setCurrentTimeInternal(-10); | 452 animation->setCurrentTimeInternal(-10); |
| 450 animation->setPlaybackRate(-1); | 453 animation->setPlaybackRate(-1); |
| 451 animation->finish(exceptionState); | 454 animation->finish(exceptionState); |
| 452 EXPECT_EQ(0, animation->currentTimeInternal()); | 455 EXPECT_EQ(0, animation->currentTimeInternal()); |
| 453 } | 456 } |
| 454 | 457 |
| 455 TEST_F(AnimationAnimationTest, FinishDoesNothingWithPlaybackRateZero) | 458 TEST_F(AnimationAnimationTest, FinishDoesNothingWithPlaybackRateZero) |
| 456 { | 459 { |
| 460 TrackExceptionState exceptionState; |
| 457 animation->setCurrentTimeInternal(10); | 461 animation->setCurrentTimeInternal(10); |
| 458 animation->setPlaybackRate(0); | 462 animation->setPlaybackRate(0); |
| 459 animation->finish(exceptionState); | 463 animation->finish(exceptionState); |
| 460 EXPECT_EQ(10, animation->currentTimeInternal()); | 464 EXPECT_EQ(10, animation->currentTimeInternal()); |
| 465 EXPECT_TRUE(exceptionState.hadException()); |
| 461 } | 466 } |
| 462 | 467 |
| 463 TEST_F(AnimationAnimationTest, FinishRaisesException) | 468 TEST_F(AnimationAnimationTest, FinishRaisesException) |
| 464 { | 469 { |
| 465 Timing timing; | 470 Timing timing; |
| 466 timing.iterationDuration = 1; | 471 timing.iterationDuration = 1; |
| 467 timing.iterationCount = std::numeric_limits<double>::infinity(); | 472 timing.iterationCount = std::numeric_limits<double>::infinity(); |
| 468 animation->setEffect(KeyframeEffect::create(0, nullptr, timing)); | 473 animation->setEffect(KeyframeEffect::create(0, nullptr, timing)); |
| 469 animation->setCurrentTimeInternal(10); | 474 animation->setCurrentTimeInternal(10); |
| 470 | 475 |
| 476 TrackExceptionState exceptionState; |
| 471 animation->finish(exceptionState); | 477 animation->finish(exceptionState); |
| 472 EXPECT_EQ(10, animation->currentTimeInternal()); | 478 EXPECT_EQ(10, animation->currentTimeInternal()); |
| 473 EXPECT_TRUE(exceptionState.hadException()); | 479 EXPECT_TRUE(exceptionState.hadException()); |
| 474 EXPECT_EQ(InvalidStateError, exceptionState.code()); | 480 EXPECT_EQ(InvalidStateError, exceptionState.code()); |
| 475 } | 481 } |
| 476 | 482 |
| 477 TEST_F(AnimationAnimationTest, LimitingAtEffectEnd) | 483 TEST_F(AnimationAnimationTest, LimitingAtEffectEnd) |
| 478 { | 484 { |
| 479 simulateFrame(30); | 485 simulateFrame(30); |
| 480 EXPECT_EQ(30, animation->currentTimeInternal()); | 486 EXPECT_EQ(30, animation->currentTimeInternal()); |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 794 EXPECT_EQ(30 * 1000, animation->currentTime()); | 800 EXPECT_EQ(30 * 1000, animation->currentTime()); |
| 795 EXPECT_TRUE(std::isnan(animation->startTime())); | 801 EXPECT_TRUE(std::isnan(animation->startTime())); |
| 796 simulateFrame(10); | 802 simulateFrame(10); |
| 797 EXPECT_EQ(Animation::Running, animation->playStateInternal()); | 803 EXPECT_EQ(Animation::Running, animation->playStateInternal()); |
| 798 EXPECT_EQ(30 * 1000, animation->currentTime()); | 804 EXPECT_EQ(30 * 1000, animation->currentTime()); |
| 799 EXPECT_EQ(40 * 1000, animation->startTime()); | 805 EXPECT_EQ(40 * 1000, animation->startTime()); |
| 800 } | 806 } |
| 801 | 807 |
| 802 TEST_F(AnimationAnimationTest, FinishAfterCancel) | 808 TEST_F(AnimationAnimationTest, FinishAfterCancel) |
| 803 { | 809 { |
| 810 NonThrowableExceptionState exceptionState; |
| 804 animation->cancel(); | 811 animation->cancel(); |
| 805 EXPECT_EQ(Animation::Idle, animation->playStateInternal()); | 812 EXPECT_EQ(Animation::Idle, animation->playStateInternal()); |
| 806 EXPECT_TRUE(std::isnan(animation->currentTime())); | 813 EXPECT_TRUE(std::isnan(animation->currentTime())); |
| 807 EXPECT_TRUE(std::isnan(animation->startTime())); | 814 EXPECT_TRUE(std::isnan(animation->startTime())); |
| 808 animation->finish(exceptionState); | 815 animation->finish(exceptionState); |
| 809 EXPECT_EQ(30000, animation->currentTime()); | 816 EXPECT_EQ(30000, animation->currentTime()); |
| 810 EXPECT_EQ(-30000, animation->startTime()); | 817 EXPECT_EQ(-30000, animation->startTime()); |
| 811 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); | 818 EXPECT_EQ(Animation::Finished, animation->playStateInternal()); |
| 812 } | 819 } |
| 813 | 820 |
| 814 TEST_F(AnimationAnimationTest, PauseAfterCancel) | 821 TEST_F(AnimationAnimationTest, PauseAfterCancel) |
| 815 { | 822 { |
| 816 animation->cancel(); | 823 animation->cancel(); |
| 817 EXPECT_EQ(Animation::Idle, animation->playStateInternal()); | 824 EXPECT_EQ(Animation::Idle, animation->playStateInternal()); |
| 818 EXPECT_TRUE(std::isnan(animation->currentTime())); | 825 EXPECT_TRUE(std::isnan(animation->currentTime())); |
| 819 EXPECT_TRUE(std::isnan(animation->startTime())); | 826 EXPECT_TRUE(std::isnan(animation->startTime())); |
| 820 animation->pause(); | 827 animation->pause(); |
| 821 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); | 828 EXPECT_EQ(Animation::Pending, animation->playStateInternal()); |
| 822 EXPECT_EQ(0, animation->currentTime()); | 829 EXPECT_EQ(0, animation->currentTime()); |
| 823 EXPECT_TRUE(std::isnan(animation->startTime())); | 830 EXPECT_TRUE(std::isnan(animation->startTime())); |
| 824 } | 831 } |
| 825 | 832 |
| 826 } // namespace blink | 833 } // namespace blink |
| OLD | NEW |