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

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

Issue 149363002: Web Animations API: Implement step-middle and steps(x, middle) timing functions. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Fix TimingFunctionTestHelperTest Created 6 years, 10 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "config.h" 5 #include "config.h"
6 #include "core/animation/Animation.h" 6 #include "core/animation/Animation.h"
7 7
8 #include "bindings/v8/Dictionary.h" 8 #include "bindings/v8/Dictionary.h"
9 #include "core/animation/AnimatableLength.h" 9 #include "core/animation/AnimatableLength.h"
10 #include "core/animation/AnimationClock.h" 10 #include "core/animation/AnimationClock.h"
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 638
639 TEST_F(AnimationAnimationTest, TimingInputTimingFunction) 639 TEST_F(AnimationAnimationTest, TimingInputTimingFunction)
640 { 640 {
641 v8::Isolate* isolate = v8::Isolate::GetCurrent(); 641 v8::Isolate* isolate = v8::Isolate::GetCurrent();
642 v8::HandleScope scope(isolate); 642 v8::HandleScope scope(isolate);
643 v8::Local<v8::Context> context = v8::Context::New(isolate); 643 v8::Local<v8::Context> context = v8::Context::New(isolate);
644 v8::Context::Scope contextScope(context); 644 v8::Context::Scope contextScope(context);
645 645
646 Timing timing; 646 Timing timing;
647 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::c reate(); 647 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::c reate();
648 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get()); 648 EXPECT_EQ(*defaultTimingFunction, *timing.timingFunction);
649 649
650 applyTimingInputString(timing, isolate, "easing", "ease"); 650 applyTimingInputString(timing, isolate, "easing", "ease");
651 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas e)), *timing.timingFunction.get()); 651 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas e)), *timing.timingFunction);
652 timing.timingFunction = defaultTimingFunction; 652 timing.timingFunction = defaultTimingFunction;
653 653
654 applyTimingInputString(timing, isolate, "easing", "ease-in"); 654 applyTimingInputString(timing, isolate, "easing", "ease-in");
655 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eIn)), *timing.timingFunction.get()); 655 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eIn)), *timing.timingFunction);
656 timing.timingFunction = defaultTimingFunction; 656 timing.timingFunction = defaultTimingFunction;
657 657
658 applyTimingInputString(timing, isolate, "easing", "ease-out"); 658 applyTimingInputString(timing, isolate, "easing", "ease-out");
659 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eOut)), *timing.timingFunction.get()); 659 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eOut)), *timing.timingFunction);
660 timing.timingFunction = defaultTimingFunction; 660 timing.timingFunction = defaultTimingFunction;
661 661
662 applyTimingInputString(timing, isolate, "easing", "ease-in-out"); 662 applyTimingInputString(timing, isolate, "easing", "ease-in-out");
663 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eInOut)), *timing.timingFunction.get()); 663 EXPECT_EQ(*(CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Eas eInOut)), *timing.timingFunction);
664 timing.timingFunction = defaultTimingFunction; 664 timing.timingFunction = defaultTimingFunction;
665 665
666 applyTimingInputString(timing, isolate, "easing", "linear"); 666 applyTimingInputString(timing, isolate, "easing", "linear");
667 EXPECT_EQ(*(LinearTimingFunction::create()), *timing.timingFunction.get()); 667 EXPECT_EQ(*(LinearTimingFunction::create()), *timing.timingFunction);
668 timing.timingFunction = defaultTimingFunction; 668 timing.timingFunction = defaultTimingFunction;
669 669
670 applyTimingInputString(timing, isolate, "easing", "initial"); 670 applyTimingInputString(timing, isolate, "easing", "initial");
671 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get()); 671 EXPECT_EQ(*defaultTimingFunction, *timing.timingFunction);
672 timing.timingFunction = defaultTimingFunction; 672 timing.timingFunction = defaultTimingFunction;
673 673
674 applyTimingInputString(timing, isolate, "easing", "step-start"); 674 applyTimingInputString(timing, isolate, "easing", "step-start");
675 EXPECT_EQ(*(StepsTimingFunction::preset(StepsTimingFunction::Start)), *timin g.timingFunction.get()); 675 EXPECT_EQ(*(StepsTimingFunction::preset(StepsTimingFunction::Start)), *timin g.timingFunction);
676 timing.timingFunction = defaultTimingFunction;
677
678 applyTimingInputString(timing, isolate, "easing", "step-middle");
679 EXPECT_EQ(*(StepsTimingFunction::preset(StepsTimingFunction::Middle)), *timi ng.timingFunction);
676 timing.timingFunction = defaultTimingFunction; 680 timing.timingFunction = defaultTimingFunction;
677 681
678 applyTimingInputString(timing, isolate, "easing", "step-end"); 682 applyTimingInputString(timing, isolate, "easing", "step-end");
679 EXPECT_EQ(*(StepsTimingFunction::preset(StepsTimingFunction::End)), *timing. timingFunction.get()); 683 EXPECT_EQ(*(StepsTimingFunction::preset(StepsTimingFunction::End)), *timing. timingFunction);
680 timing.timingFunction = defaultTimingFunction; 684 timing.timingFunction = defaultTimingFunction;
681 685
682 applyTimingInputString(timing, isolate, "easing", "cubic-bezier(1, 1, 0.3, 0 .3)"); 686 applyTimingInputString(timing, isolate, "easing", "cubic-bezier(1, 1, 0.3, 0 .3)");
683 EXPECT_EQ(*(CubicBezierTimingFunction::create(1, 1, 0.3, 0.3).get()), *timin g.timingFunction.get()); 687 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *timing.timing Function);
684 timing.timingFunction = defaultTimingFunction; 688 timing.timingFunction = defaultTimingFunction;
685 689
686 applyTimingInputString(timing, isolate, "easing", "steps(3, start)"); 690 applyTimingInputString(timing, isolate, "easing", "steps(3, start)");
687 EXPECT_EQ(*(StepsTimingFunction::create(3, true).get()), *timing.timingFunct ion.get()); 691 EXPECT_EQ(*(StepsTimingFunction::create(3, StepsTimingFunction::StepAtStart) ), *timing.timingFunction);
692 timing.timingFunction = defaultTimingFunction;
693
694 applyTimingInputString(timing, isolate, "easing", "steps(5, middle)");
695 EXPECT_EQ(*(StepsTimingFunction::create(5, StepsTimingFunction::StepAtMiddle )), *timing.timingFunction);
688 timing.timingFunction = defaultTimingFunction; 696 timing.timingFunction = defaultTimingFunction;
689 697
690 applyTimingInputString(timing, isolate, "easing", "steps(5, end)"); 698 applyTimingInputString(timing, isolate, "easing", "steps(5, end)");
691 EXPECT_EQ(*(StepsTimingFunction::create(5, false).get()), *timing.timingFunc tion.get()); 699 EXPECT_EQ(*(StepsTimingFunction::create(5, StepsTimingFunction::StepAtEnd)), *timing.timingFunction);
692 timing.timingFunction = defaultTimingFunction; 700 timing.timingFunction = defaultTimingFunction;
693 701
694 applyTimingInputString(timing, isolate, "easing", "steps(5.6, end)"); 702 applyTimingInputString(timing, isolate, "easing", "steps(5.6, end)");
695 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get()); 703 EXPECT_EQ(*defaultTimingFunction, *timing.timingFunction);
696 timing.timingFunction = defaultTimingFunction;
697
698 // FIXME: Step-middle not yet implemented. Change this test when it is worki ng.
699 applyTimingInputString(timing, isolate, "easing", "steps(5, middle)");
700 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get());
701 timing.timingFunction = defaultTimingFunction; 704 timing.timingFunction = defaultTimingFunction;
702 705
703 applyTimingInputString(timing, isolate, "easing", "cubic-bezier(2, 2, 0.3, 0 .3)"); 706 applyTimingInputString(timing, isolate, "easing", "cubic-bezier(2, 2, 0.3, 0 .3)");
704 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get()); 707 EXPECT_EQ(*defaultTimingFunction, *timing.timingFunction);
705 timing.timingFunction = defaultTimingFunction; 708 timing.timingFunction = defaultTimingFunction;
706 709
707 applyTimingInputString(timing, isolate, "easing", "rubbish"); 710 applyTimingInputString(timing, isolate, "easing", "rubbish");
708 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get()); 711 EXPECT_EQ(*defaultTimingFunction, *timing.timingFunction);
709 timing.timingFunction = defaultTimingFunction; 712 timing.timingFunction = defaultTimingFunction;
710 713
711 applyTimingInputNumber(timing, isolate, "easing", 2); 714 applyTimingInputNumber(timing, isolate, "easing", 2);
712 EXPECT_EQ(*defaultTimingFunction.get(), *timing.timingFunction.get()); 715 EXPECT_EQ(*defaultTimingFunction, *timing.timingFunction);
713 timing.timingFunction = defaultTimingFunction; 716 timing.timingFunction = defaultTimingFunction;
714 } 717 }
715 718
716 TEST_F(AnimationAnimationTest, TimingInputEmpty) 719 TEST_F(AnimationAnimationTest, TimingInputEmpty)
717 { 720 {
718 v8::Isolate* isolate = v8::Isolate::GetCurrent(); 721 v8::Isolate* isolate = v8::Isolate::GetCurrent();
719 v8::HandleScope scope(isolate); 722 v8::HandleScope scope(isolate);
720 v8::Local<v8::Context> context = v8::Context::New(isolate); 723 v8::Local<v8::Context> context = v8::Context::New(isolate);
721 v8::Context::Scope contextScope(context); 724 v8::Context::Scope contextScope(context);
722 725
723 Timing updatedTiming; 726 Timing updatedTiming;
724 Timing controlTiming; 727 Timing controlTiming;
725 728
726 v8::Handle<v8::Object> timingInput = v8::Object::New(isolate); 729 v8::Handle<v8::Object> timingInput = v8::Object::New(isolate);
727 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), isolate); 730 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), isolate);
728 populateTiming(updatedTiming, timingInputDictionary); 731 populateTiming(updatedTiming, timingInputDictionary);
729 732
730 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); 733 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay);
731 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); 734 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode);
732 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); 735 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart);
733 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); 736 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount);
734 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); 737 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration));
735 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); 738 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate);
736 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); 739 EXPECT_EQ(controlTiming.direction, updatedTiming.direction);
737 EXPECT_EQ(*controlTiming.timingFunction.get(), *updatedTiming.timingFunction .get()); 740 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction);
738 } 741 }
739 742
740 TEST_F(AnimationAnimationTest, TimeToEffectChange) 743 TEST_F(AnimationAnimationTest, TimeToEffectChange)
741 { 744 {
742 Timing timing; 745 Timing timing;
743 timing.iterationDuration = 100; 746 timing.iterationDuration = 100;
744 timing.startDelay = 100; 747 timing.startDelay = 100;
745 timing.endDelay = 100; 748 timing.endDelay = 100;
746 timing.fillMode = Timing::FillModeNone; 749 timing.fillMode = Timing::FillModeNone;
747 RefPtr<Animation> animation = Animation::create(0, 0, timing); 750 RefPtr<Animation> animation = Animation::create(0, 0, timing);
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
828 player->setCurrentTime(150); 831 player->setCurrentTime(150);
829 EXPECT_EQ(inf, animation->timeToForwardsEffectChange()); 832 EXPECT_EQ(inf, animation->timeToForwardsEffectChange());
830 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 833 EXPECT_EQ(0, animation->timeToReverseEffectChange());
831 834
832 player->setCurrentTime(200); 835 player->setCurrentTime(200);
833 EXPECT_EQ(inf, animation->timeToForwardsEffectChange()); 836 EXPECT_EQ(inf, animation->timeToForwardsEffectChange());
834 EXPECT_EQ(50, animation->timeToReverseEffectChange()); 837 EXPECT_EQ(50, animation->timeToReverseEffectChange());
835 } 838 }
836 839
837 } // namespace WebCore 840 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698