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

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

Issue 2775143002: Implement frames() timing function (Closed)
Patch Set: Fix behaviour outside input range [0,1] Created 3 years, 8 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 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
59 #include "testing/gtest/include/gtest/gtest.h" 59 #include "testing/gtest/include/gtest/gtest.h"
60 60
61 namespace blink { 61 namespace blink {
62 62
63 class AnimationCompositorAnimationsTest : public ::testing::Test { 63 class AnimationCompositorAnimationsTest : public ::testing::Test {
64 protected: 64 protected:
65 RefPtr<TimingFunction> linear_timing_function_; 65 RefPtr<TimingFunction> linear_timing_function_;
66 RefPtr<TimingFunction> cubic_ease_timing_function_; 66 RefPtr<TimingFunction> cubic_ease_timing_function_;
67 RefPtr<TimingFunction> cubic_custom_timing_function_; 67 RefPtr<TimingFunction> cubic_custom_timing_function_;
68 RefPtr<TimingFunction> step_timing_function_; 68 RefPtr<TimingFunction> step_timing_function_;
69 RefPtr<TimingFunction> frames_timing_function_;
69 70
70 Timing timing_; 71 Timing timing_;
71 CompositorAnimations::CompositorTiming compositor_timing_; 72 CompositorAnimations::CompositorTiming compositor_timing_;
72 std::unique_ptr<AnimatableValueKeyframeVector> keyframe_vector2_; 73 std::unique_ptr<AnimatableValueKeyframeVector> keyframe_vector2_;
73 Persistent<AnimatableValueKeyframeEffectModel> keyframe_animation_effect2_; 74 Persistent<AnimatableValueKeyframeEffectModel> keyframe_animation_effect2_;
74 std::unique_ptr<AnimatableValueKeyframeVector> keyframe_vector5_; 75 std::unique_ptr<AnimatableValueKeyframeVector> keyframe_vector5_;
75 Persistent<AnimatableValueKeyframeEffectModel> keyframe_animation_effect5_; 76 Persistent<AnimatableValueKeyframeEffectModel> keyframe_animation_effect5_;
76 77
77 Persistent<Document> document_; 78 Persistent<Document> document_;
78 Persistent<Element> element_; 79 Persistent<Element> element_;
79 Persistent<AnimationTimeline> timeline_; 80 Persistent<AnimationTimeline> timeline_;
80 std::unique_ptr<DummyPageHolder> page_holder_; 81 std::unique_ptr<DummyPageHolder> page_holder_;
81 82
82 void SetUp() override { 83 void SetUp() override {
83 linear_timing_function_ = LinearTimingFunction::Shared(); 84 linear_timing_function_ = LinearTimingFunction::Shared();
84 cubic_ease_timing_function_ = CubicBezierTimingFunction::Preset( 85 cubic_ease_timing_function_ = CubicBezierTimingFunction::Preset(
85 CubicBezierTimingFunction::EaseType::EASE); 86 CubicBezierTimingFunction::EaseType::EASE);
86 cubic_custom_timing_function_ = 87 cubic_custom_timing_function_ =
87 CubicBezierTimingFunction::Create(1, 2, 3, 4); 88 CubicBezierTimingFunction::Create(1, 2, 3, 4);
88 step_timing_function_ = 89 step_timing_function_ =
89 StepsTimingFunction::Create(1, StepsTimingFunction::StepPosition::END); 90 StepsTimingFunction::Create(1, StepsTimingFunction::StepPosition::END);
91 frames_timing_function_ = FramesTimingFunction::Create(2);
90 92
91 timing_ = CreateCompositableTiming(); 93 timing_ = CreateCompositableTiming();
92 compositor_timing_ = CompositorAnimations::CompositorTiming(); 94 compositor_timing_ = CompositorAnimations::CompositorTiming();
93 // Make sure the CompositableTiming is really compositable, otherwise 95 // Make sure the CompositableTiming is really compositable, otherwise
94 // most other tests will fail. 96 // most other tests will fail.
95 ASSERT_TRUE(ConvertTimingForCompositor(timing_, compositor_timing_)); 97 ASSERT_TRUE(ConvertTimingForCompositor(timing_, compositor_timing_));
96 98
97 keyframe_vector2_ = CreateCompositableFloatKeyframeVector(2); 99 keyframe_vector2_ = CreateCompositableFloatKeyframeVector(2);
98 keyframe_animation_effect2_ = 100 keyframe_animation_effect2_ =
99 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector2_); 101 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector2_);
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 TEST_F(AnimationCompositorAnimationsTest, 605 TEST_F(AnimationCompositorAnimationsTest,
604 isCandidateForAnimationOnCompositorTimingFunctionSteps) { 606 isCandidateForAnimationOnCompositorTimingFunctionSteps) {
605 timing_.timing_function = step_timing_function_; 607 timing_.timing_function = step_timing_function_;
606 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 608 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
607 timing_, *keyframe_animation_effect2_)); 609 timing_, *keyframe_animation_effect2_));
608 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 610 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
609 timing_, *keyframe_animation_effect5_)); 611 timing_, *keyframe_animation_effect5_));
610 } 612 }
611 613
612 TEST_F(AnimationCompositorAnimationsTest, 614 TEST_F(AnimationCompositorAnimationsTest,
615 isCandidateForAnimationOnCompositorTimingFunctionFrames) {
616 timing_.timing_function = frames_timing_function_;
617 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
618 timing_, *keyframe_animation_effect2_));
619 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
620 timing_, *keyframe_animation_effect5_));
621 }
622
623 TEST_F(AnimationCompositorAnimationsTest,
613 isCandidateForAnimationOnCompositorTimingFunctionChainedLinear) { 624 isCandidateForAnimationOnCompositorTimingFunctionChainedLinear) {
614 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 625 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
615 timing_, *keyframe_animation_effect2_)); 626 timing_, *keyframe_animation_effect2_));
616 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 627 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
617 timing_, *keyframe_animation_effect5_)); 628 timing_, *keyframe_animation_effect5_));
618 } 629 }
619 630
620 TEST_F( 631 TEST_F(
621 AnimationCompositorAnimationsTest, 632 AnimationCompositorAnimationsTest,
622 isCandidateForAnimationOnCompositorNonLinearTimingFunctionOnFirstOrLastFrame ) { 633 isCandidateForAnimationOnCompositorNonLinearTimingFunctionOnFirstOrLastFrame ) {
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
672 (*keyframe_vector5_)[1]->SetEasing(cubic_ease_timing_function_.Get()); 683 (*keyframe_vector5_)[1]->SetEasing(cubic_ease_timing_function_.Get());
673 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get()); 684 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get());
674 (*keyframe_vector5_)[3]->SetEasing(linear_timing_function_.Get()); 685 (*keyframe_vector5_)[3]->SetEasing(linear_timing_function_.Get());
675 keyframe_animation_effect5_ = 686 keyframe_animation_effect5_ =
676 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_); 687 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_);
677 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 688 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
678 timing_, *keyframe_animation_effect5_)); 689 timing_, *keyframe_animation_effect5_));
679 } 690 }
680 691
681 TEST_F(AnimationCompositorAnimationsTest, 692 TEST_F(AnimationCompositorAnimationsTest,
682 isCandidateForAnimationOnCompositorTimingFunctionWithStepOkay) { 693 isCandidateForAnimationOnCompositorTimingFunctionWithStepOrFrameOkay) {
683 (*keyframe_vector2_)[0]->SetEasing(step_timing_function_.Get()); 694 (*keyframe_vector2_)[0]->SetEasing(step_timing_function_.Get());
684 keyframe_animation_effect2_ = 695 keyframe_animation_effect2_ =
685 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector2_); 696 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector2_);
686 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 697 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
687 timing_, *keyframe_animation_effect2_)); 698 timing_, *keyframe_animation_effect2_));
688 699
700 (*keyframe_vector2_)[0]->SetEasing(frames_timing_function_.Get());
701 keyframe_animation_effect2_ =
702 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector2_);
703 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
704 timing_, *keyframe_animation_effect2_));
705
689 (*keyframe_vector5_)[0]->SetEasing(step_timing_function_.Get()); 706 (*keyframe_vector5_)[0]->SetEasing(step_timing_function_.Get());
690 (*keyframe_vector5_)[1]->SetEasing(linear_timing_function_.Get()); 707 (*keyframe_vector5_)[1]->SetEasing(linear_timing_function_.Get());
691 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get()); 708 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get());
692 (*keyframe_vector5_)[3]->SetEasing(linear_timing_function_.Get()); 709 (*keyframe_vector5_)[3]->SetEasing(frames_timing_function_.Get());
693 keyframe_animation_effect5_ = 710 keyframe_animation_effect5_ =
694 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_); 711 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_);
695 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 712 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
696 timing_, *keyframe_animation_effect5_)); 713 timing_, *keyframe_animation_effect5_));
697 714
698 (*keyframe_vector5_)[0]->SetEasing(linear_timing_function_.Get()); 715 (*keyframe_vector5_)[0]->SetEasing(frames_timing_function_.Get());
699 (*keyframe_vector5_)[1]->SetEasing(step_timing_function_.Get()); 716 (*keyframe_vector5_)[1]->SetEasing(step_timing_function_.Get());
700 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get()); 717 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get());
701 (*keyframe_vector5_)[3]->SetEasing(linear_timing_function_.Get()); 718 (*keyframe_vector5_)[3]->SetEasing(linear_timing_function_.Get());
702 keyframe_animation_effect5_ = 719 keyframe_animation_effect5_ =
703 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_); 720 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_);
704 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 721 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
705 timing_, *keyframe_animation_effect5_)); 722 timing_, *keyframe_animation_effect5_));
706 723
707 (*keyframe_vector5_)[0]->SetEasing(linear_timing_function_.Get()); 724 (*keyframe_vector5_)[0]->SetEasing(linear_timing_function_.Get());
708 (*keyframe_vector5_)[1]->SetEasing(cubic_ease_timing_function_.Get()); 725 (*keyframe_vector5_)[1]->SetEasing(frames_timing_function_.Get());
709 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get()); 726 (*keyframe_vector5_)[2]->SetEasing(cubic_ease_timing_function_.Get());
710 (*keyframe_vector5_)[3]->SetEasing(step_timing_function_.Get()); 727 (*keyframe_vector5_)[3]->SetEasing(step_timing_function_.Get());
711 keyframe_animation_effect5_ = 728 keyframe_animation_effect5_ =
712 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_); 729 AnimatableValueKeyframeEffectModel::Create(*keyframe_vector5_);
713 EXPECT_TRUE(IsCandidateForAnimationOnCompositor( 730 EXPECT_TRUE(IsCandidateForAnimationOnCompositor(
714 timing_, *keyframe_animation_effect5_)); 731 timing_, *keyframe_animation_effect5_));
715 } 732 }
716 733
717 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor) { 734 TEST_F(AnimationCompositorAnimationsTest, isCandidateForAnimationOnCompositor) {
718 AnimatableValueKeyframeVector basic_frames_vector; 735 AnimatableValueKeyframeVector basic_frames_vector;
(...skipping 588 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 1324
1308 // Clearing the effect node entirely should also produce false. 1325 // Clearing the effect node entirely should also produce false.
1309 properties.ClearEffect(); 1326 properties.ClearEffect();
1310 EXPECT_FALSE(CompositorAnimations::CanStartAnimationOnCompositor(*element)); 1327 EXPECT_FALSE(CompositorAnimations::CanStartAnimationOnCompositor(*element));
1311 1328
1312 element->SetLayoutObject(nullptr); 1329 element->SetLayoutObject(nullptr);
1313 LayoutObjectProxy::Dispose(layout_object); 1330 LayoutObjectProxy::Dispose(layout_object);
1314 } 1331 }
1315 1332
1316 } // namespace blink 1333 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698