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

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

Issue 1851003002: Throw TypeError if easing string is invalid. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix "liner"->"linear" typo in ui/file_manager js file Created 4 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 // 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 "core/animation/TimingInput.h" 5 #include "core/animation/TimingInput.h"
6 6
7 #include "bindings/core/v8/V8BindingForTesting.h" 7 #include "bindings/core/v8/V8BindingForTesting.h"
8 #include "bindings/core/v8/V8KeyframeEffectOptions.h" 8 #include "bindings/core/v8/V8KeyframeEffectOptions.h"
9 #include "core/animation/AnimationEffectTiming.h" 9 #include "core/animation/AnimationEffectTiming.h"
10 #include "core/animation/AnimationTestHelper.h" 10 #include "core/animation/AnimationTestHelper.h"
11 #include "core/testing/DummyPageHolder.h" 11 #include "core/testing/DummyPageHolder.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 #include <v8.h> 13 #include <v8.h>
14 14
15 namespace blink { 15 namespace blink {
16 16
17 class AnimationTimingInputTest : public ::testing::Test { 17 class AnimationTimingInputTest : public ::testing::Test {
18 protected: 18 protected:
19 AnimationTimingInputTest() 19 AnimationTimingInputTest()
20 : m_isolate(v8::Isolate::GetCurrent()) 20 : m_isolate(v8::Isolate::GetCurrent())
21 , m_scope(m_isolate) 21 , m_scope(m_isolate)
22 { 22 {
23 } 23 }
24 24
25 Timing applyTimingInputNumber(String timingProperty, double timingPropertyVa lue) 25 Timing applyTimingInputNumber(String timingProperty, double timingPropertyVa lue, bool& timingConversionSuccess)
26 { 26 {
27 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate); 27 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate);
28 setV8ObjectPropertyAsNumber(m_isolate, timingInput, timingProperty, timi ngPropertyValue); 28 setV8ObjectPropertyAsNumber(m_isolate, timingInput, timingProperty, timi ngPropertyValue);
29 KeyframeEffectOptions timingInputDictionary; 29 KeyframeEffectOptions timingInputDictionary;
30 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState); 30 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
31 return TimingInput::convert(timingInputDictionary, nullptr); 31 Timing result;
32 timingConversionSuccess = TimingInput::convert(timingInputDictionary, re sult, nullptr, exceptionState);
33 return result;
32 } 34 }
33 35
34 Timing applyTimingInputString(String timingProperty, String timingPropertyVa lue) 36 Timing applyTimingInputString(String timingProperty, String timingPropertyVa lue, bool& timingConversionSuccess)
35 { 37 {
36 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate); 38 v8::Local<v8::Object> timingInput = v8::Object::New(m_isolate);
37 setV8ObjectPropertyAsString(m_isolate, timingInput, timingProperty, timi ngPropertyValue); 39 setV8ObjectPropertyAsString(m_isolate, timingInput, timingProperty, timi ngPropertyValue);
38 KeyframeEffectOptions timingInputDictionary; 40 KeyframeEffectOptions timingInputDictionary;
39 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState); 41 V8KeyframeEffectOptions::toImpl(m_isolate, timingInput, timingInputDicti onary, exceptionState);
40 return TimingInput::convert(timingInputDictionary, nullptr); 42 Timing result;
43 timingConversionSuccess = TimingInput::convert(timingInputDictionary, re sult, nullptr, exceptionState);
44 return result;
41 } 45 }
42 46
43 v8::Isolate* m_isolate; 47 v8::Isolate* m_isolate;
44 TrackExceptionState exceptionState; 48 TrackExceptionState exceptionState;
45 49
46 private: 50 private:
47 V8TestingScope m_scope; 51 V8TestingScope m_scope;
48 }; 52 };
49 53
50 TEST_F(AnimationTimingInputTest, TimingInputStartDelay) 54 TEST_F(AnimationTimingInputTest, TimingInputStartDelay)
51 { 55 {
52 EXPECT_EQ(1.1, applyTimingInputNumber("delay", 1100).startDelay); 56 bool ignoredSuccess;
53 EXPECT_EQ(-1, applyTimingInputNumber("delay", -1000).startDelay); 57 EXPECT_EQ(1.1, applyTimingInputNumber("delay", 1100, ignoredSuccess).startDe lay);
54 EXPECT_EQ(1, applyTimingInputString("delay", "1000").startDelay); 58 EXPECT_EQ(-1, applyTimingInputNumber("delay", -1000, ignoredSuccess).startDe lay);
55 EXPECT_EQ(0, applyTimingInputString("delay", "1s").startDelay); 59 EXPECT_EQ(1, applyTimingInputString("delay", "1000", ignoredSuccess).startDe lay);
56 EXPECT_EQ(0, applyTimingInputString("delay", "Infinity").startDelay); 60 EXPECT_EQ(0, applyTimingInputString("delay", "1s", ignoredSuccess).startDela y);
57 EXPECT_EQ(0, applyTimingInputString("delay", "-Infinity").startDelay); 61 EXPECT_EQ(0, applyTimingInputString("delay", "Infinity", ignoredSuccess).sta rtDelay);
58 EXPECT_EQ(0, applyTimingInputString("delay", "NaN").startDelay); 62 EXPECT_EQ(0, applyTimingInputString("delay", "-Infinity", ignoredSuccess).st artDelay);
59 EXPECT_EQ(0, applyTimingInputString("delay", "rubbish").startDelay); 63 EXPECT_EQ(0, applyTimingInputString("delay", "NaN", ignoredSuccess).startDel ay);
64 EXPECT_EQ(0, applyTimingInputString("delay", "rubbish", ignoredSuccess).star tDelay);
60 } 65 }
61 66
62 TEST_F(AnimationTimingInputTest, TimingInputEndDelay) 67 TEST_F(AnimationTimingInputTest, TimingInputEndDelay)
63 { 68 {
64 EXPECT_EQ(10, applyTimingInputNumber("endDelay", 10000).endDelay); 69 bool ignoredSuccess;
65 EXPECT_EQ(-2.5, applyTimingInputNumber("endDelay", -2500).endDelay); 70 EXPECT_EQ(10, applyTimingInputNumber("endDelay", 10000, ignoredSuccess).endD elay);
71 EXPECT_EQ(-2.5, applyTimingInputNumber("endDelay", -2500, ignoredSuccess).en dDelay);
66 } 72 }
67 73
68 TEST_F(AnimationTimingInputTest, TimingInputFillMode) 74 TEST_F(AnimationTimingInputTest, TimingInputFillMode)
69 { 75 {
70 Timing::FillMode defaultFillMode = Timing::FillModeAuto; 76 Timing::FillMode defaultFillMode = Timing::FillModeAuto;
77 bool ignoredSuccess;
71 78
72 EXPECT_EQ(Timing::FillModeAuto, applyTimingInputString("fill", "auto").fillM ode); 79 EXPECT_EQ(Timing::FillModeAuto, applyTimingInputString("fill", "auto", ignor edSuccess).fillMode);
73 EXPECT_EQ(Timing::FillModeForwards, applyTimingInputString("fill", "forwards ").fillMode); 80 EXPECT_EQ(Timing::FillModeForwards, applyTimingInputString("fill", "forwards ", ignoredSuccess).fillMode);
74 EXPECT_EQ(Timing::FillModeNone, applyTimingInputString("fill", "none").fillM ode); 81 EXPECT_EQ(Timing::FillModeNone, applyTimingInputString("fill", "none", ignor edSuccess).fillMode);
75 EXPECT_EQ(Timing::FillModeBackwards, applyTimingInputString("fill", "backwar ds").fillMode); 82 EXPECT_EQ(Timing::FillModeBackwards, applyTimingInputString("fill", "backwar ds", ignoredSuccess).fillMode);
76 EXPECT_EQ(Timing::FillModeBoth, applyTimingInputString("fill", "both").fillM ode); 83 EXPECT_EQ(Timing::FillModeBoth, applyTimingInputString("fill", "both", ignor edSuccess).fillMode);
77 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "everything!").fil lMode); 84 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "everything!", ign oredSuccess).fillMode);
78 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "backwardsandforwa rds").fillMode); 85 EXPECT_EQ(defaultFillMode, applyTimingInputString("fill", "backwardsandforwa rds", ignoredSuccess).fillMode);
79 EXPECT_EQ(defaultFillMode, applyTimingInputNumber("fill", 2).fillMode); 86 EXPECT_EQ(defaultFillMode, applyTimingInputNumber("fill", 2, ignoredSuccess) .fillMode);
80 } 87 }
81 88
82 TEST_F(AnimationTimingInputTest, TimingInputIterationStart) 89 TEST_F(AnimationTimingInputTest, TimingInputIterationStart)
83 { 90 {
84 EXPECT_EQ(1.1, applyTimingInputNumber("iterationStart", 1.1).iterationStart) ; 91 bool ignoredSuccess;
85 EXPECT_EQ(0, applyTimingInputNumber("iterationStart", -1).iterationStart); 92 EXPECT_EQ(1.1, applyTimingInputNumber("iterationStart", 1.1, ignoredSuccess) .iterationStart);
86 EXPECT_EQ(0, applyTimingInputString("iterationStart", "Infinity").iterationS tart); 93 EXPECT_EQ(0, applyTimingInputNumber("iterationStart", -1, ignoredSuccess).it erationStart);
87 EXPECT_EQ(0, applyTimingInputString("iterationStart", "-Infinity").iteration Start); 94 EXPECT_EQ(0, applyTimingInputString("iterationStart", "Infinity", ignoredSuc cess).iterationStart);
88 EXPECT_EQ(0, applyTimingInputString("iterationStart", "NaN").iterationStart) ; 95 EXPECT_EQ(0, applyTimingInputString("iterationStart", "-Infinity", ignoredSu ccess).iterationStart);
89 EXPECT_EQ(0, applyTimingInputString("iterationStart", "rubbish").iterationSt art); 96 EXPECT_EQ(0, applyTimingInputString("iterationStart", "NaN", ignoredSuccess) .iterationStart);
97 EXPECT_EQ(0, applyTimingInputString("iterationStart", "rubbish", ignoredSucc ess).iterationStart);
90 } 98 }
91 99
92 TEST_F(AnimationTimingInputTest, TimingInputIterationCount) 100 TEST_F(AnimationTimingInputTest, TimingInputIterationCount)
93 { 101 {
94 EXPECT_EQ(2.1, applyTimingInputNumber("iterations", 2.1).iterationCount); 102 bool ignoredSuccess;
95 EXPECT_EQ(0, applyTimingInputNumber("iterations", -1).iterationCount); 103 EXPECT_EQ(2.1, applyTimingInputNumber("iterations", 2.1, ignoredSuccess).ite rationCount);
104 EXPECT_EQ(0, applyTimingInputNumber("iterations", -1, ignoredSuccess).iterat ionCount);
96 105
97 Timing timing = applyTimingInputString("iterations", "Infinity"); 106 Timing timing = applyTimingInputString("iterations", "Infinity", ignoredSucc ess);
98 EXPECT_TRUE(std::isinf(timing.iterationCount)); 107 EXPECT_TRUE(std::isinf(timing.iterationCount));
99 EXPECT_GT(timing.iterationCount, 0); 108 EXPECT_GT(timing.iterationCount, 0);
100 109
101 EXPECT_EQ(0, applyTimingInputString("iterations", "-Infinity").iterationCoun t); 110 EXPECT_EQ(0, applyTimingInputString("iterations", "-Infinity", ignoredSucces s).iterationCount);
102 EXPECT_EQ(1, applyTimingInputString("iterations", "NaN").iterationCount); 111 EXPECT_EQ(1, applyTimingInputString("iterations", "NaN", ignoredSuccess).ite rationCount);
103 EXPECT_EQ(1, applyTimingInputString("iterations", "rubbish").iterationCount) ; 112 EXPECT_EQ(1, applyTimingInputString("iterations", "rubbish", ignoredSuccess) .iterationCount);
104 } 113 }
105 114
106 TEST_F(AnimationTimingInputTest, TimingInputIterationDuration) 115 TEST_F(AnimationTimingInputTest, TimingInputIterationDuration)
107 { 116 {
108 EXPECT_EQ(1.1, applyTimingInputNumber("duration", 1100).iterationDuration); 117 bool ignoredSuccess;
109 EXPECT_TRUE(std::isnan(applyTimingInputNumber("duration", -1000).iterationDu ration)); 118 EXPECT_EQ(1.1, applyTimingInputNumber("duration", 1100, ignoredSuccess).iter ationDuration);
110 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "1000").iterationD uration)); 119 EXPECT_TRUE(std::isnan(applyTimingInputNumber("duration", -1000, ignoredSucc ess).iterationDuration));
120 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "1000", ignoredSuc cess).iterationDuration));
111 121
112 Timing timing = applyTimingInputNumber("duration", std::numeric_limits<doubl e>::infinity()); 122 Timing timing = applyTimingInputNumber("duration", std::numeric_limits<doubl e>::infinity(), ignoredSuccess);
113 EXPECT_TRUE(std::isinf(timing.iterationDuration)); 123 EXPECT_TRUE(std::isinf(timing.iterationDuration));
114 EXPECT_GT(timing.iterationDuration, 0); 124 EXPECT_GT(timing.iterationDuration, 0);
115 125
116 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "-Infinity").itera tionDuration)); 126 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "-Infinity", ignor edSuccess).iterationDuration));
117 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "NaN").iterationDu ration)); 127 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "NaN", ignoredSucc ess).iterationDuration));
118 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "auto").iterationD uration)); 128 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "auto", ignoredSuc cess).iterationDuration));
119 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "rubbish").iterati onDuration)); 129 EXPECT_TRUE(std::isnan(applyTimingInputString("duration", "rubbish", ignored Success).iterationDuration));
120 } 130 }
121 131
122 TEST_F(AnimationTimingInputTest, TimingInputPlaybackRate) 132 TEST_F(AnimationTimingInputTest, TimingInputPlaybackRate)
123 { 133 {
124 EXPECT_EQ(2.1, applyTimingInputNumber("playbackRate", 2.1).playbackRate); 134 bool ignoredSuccess;
125 EXPECT_EQ(-1, applyTimingInputNumber("playbackRate", -1).playbackRate); 135 EXPECT_EQ(2.1, applyTimingInputNumber("playbackRate", 2.1, ignoredSuccess).p laybackRate);
126 EXPECT_EQ(1, applyTimingInputString("playbackRate", "Infinity").playbackRate ); 136 EXPECT_EQ(-1, applyTimingInputNumber("playbackRate", -1, ignoredSuccess).pla ybackRate);
127 EXPECT_EQ(1, applyTimingInputString("playbackRate", "-Infinity").playbackRat e); 137 EXPECT_EQ(1, applyTimingInputString("playbackRate", "Infinity", ignoredSucce ss).playbackRate);
128 EXPECT_EQ(1, applyTimingInputString("playbackRate", "NaN").playbackRate); 138 EXPECT_EQ(1, applyTimingInputString("playbackRate", "-Infinity", ignoredSucc ess).playbackRate);
129 EXPECT_EQ(1, applyTimingInputString("playbackRate", "rubbish").playbackRate) ; 139 EXPECT_EQ(1, applyTimingInputString("playbackRate", "NaN", ignoredSuccess).p laybackRate);
140 EXPECT_EQ(1, applyTimingInputString("playbackRate", "rubbish", ignoredSucces s).playbackRate);
130 } 141 }
131 142
132 TEST_F(AnimationTimingInputTest, TimingInputDirection) 143 TEST_F(AnimationTimingInputTest, TimingInputDirection)
133 { 144 {
134 Timing::PlaybackDirection defaultPlaybackDirection = Timing::PlaybackDirecti onNormal; 145 Timing::PlaybackDirection defaultPlaybackDirection = Timing::PlaybackDirecti onNormal;
146 bool ignoredSuccess;
135 147
136 EXPECT_EQ(Timing::PlaybackDirectionNormal, applyTimingInputString("direction ", "normal").direction); 148 EXPECT_EQ(Timing::PlaybackDirectionNormal, applyTimingInputString("direction ", "normal", ignoredSuccess).direction);
137 EXPECT_EQ(Timing::PlaybackDirectionReverse, applyTimingInputString("directio n", "reverse").direction); 149 EXPECT_EQ(Timing::PlaybackDirectionReverse, applyTimingInputString("directio n", "reverse", ignoredSuccess).direction);
138 EXPECT_EQ(Timing::PlaybackDirectionAlternate, applyTimingInputString("direct ion", "alternate").direction); 150 EXPECT_EQ(Timing::PlaybackDirectionAlternate, applyTimingInputString("direct ion", "alternate", ignoredSuccess).direction);
139 EXPECT_EQ(Timing::PlaybackDirectionAlternateReverse, applyTimingInputString( "direction", "alternate-reverse").direction); 151 EXPECT_EQ(Timing::PlaybackDirectionAlternateReverse, applyTimingInputString( "direction", "alternate-reverse", ignoredSuccess).direction);
140 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputString("direction", "rub bish").direction); 152 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputString("direction", "rub bish", ignoredSuccess).direction);
141 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputNumber("direction", 2).d irection); 153 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputNumber("direction", 2, i gnoredSuccess).direction);
142 } 154 }
143 155
144 TEST_F(AnimationTimingInputTest, TimingInputTimingFunction) 156 TEST_F(AnimationTimingInputTest, TimingInputTimingFunction)
145 { 157 {
146 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::s hared(); 158 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::s hared();
159 bool success;
147 160
148 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease ), *applyTimingInputString("easing", "ease").timingFunction); 161 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease ), *applyTimingInputString("easing", "ease", success).timingFunction);
149 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease In), *applyTimingInputString("easing", "ease-in").timingFunction); 162 EXPECT_TRUE(success);
150 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Out), *applyTimingInputString("easing", "ease-out").timingFunction); 163 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease In), *applyTimingInputString("easing", "ease-in", success).timingFunction);
151 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease InOut), *applyTimingInputString("easing", "ease-in-out").timingFunction); 164 EXPECT_TRUE(success);
152 EXPECT_EQ(*LinearTimingFunction::shared(), *applyTimingInputString("easing", "linear").timingFunction); 165 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Out), *applyTimingInputString("easing", "ease-out", success).timingFunction);
153 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Start), *applyTi mingInputString("easing", "step-start").timingFunction); 166 EXPECT_TRUE(success);
154 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Middle), *applyT imingInputString("easing", "step-middle").timingFunction); 167 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease InOut), *applyTimingInputString("easing", "ease-in-out", success).timingFunction );
155 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::End), *applyTimi ngInputString("easing", "step-end").timingFunction); 168 EXPECT_TRUE(success);
156 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *applyTimingIn putString("easing", "cubic-bezier(1, 1, 0.3, 0.3)").timingFunction); 169 EXPECT_EQ(*LinearTimingFunction::shared(), *applyTimingInputString("easing", "linear", success).timingFunction);
157 EXPECT_EQ(*StepsTimingFunction::create(3, StepsTimingFunction::Start), *appl yTimingInputString("easing", "steps(3, start)").timingFunction); 170 EXPECT_TRUE(success);
158 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::Middle), *app lyTimingInputString("easing", "steps(5, middle)").timingFunction); 171 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Start), *applyTi mingInputString("easing", "step-start", success).timingFunction);
159 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::End), *applyT imingInputString("easing", "steps(5, end)").timingFunction); 172 EXPECT_TRUE(success);
160 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "steps(5 .6, end)").timingFunction); 173 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::Middle), *applyT imingInputString("easing", "step-middle", success).timingFunction);
161 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "cubic-b ezier(2, 2, 0.3, 0.3)").timingFunction); 174 EXPECT_TRUE(success);
162 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "rubbish ").timingFunction); 175 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::End), *applyTimi ngInputString("easing", "step-end", success).timingFunction);
163 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputNumber("easing", 2).timin gFunction); 176 EXPECT_TRUE(success);
164 EXPECT_EQ(*defaultTimingFunction, *applyTimingInputString("easing", "initial ").timingFunction); 177 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *applyTimingIn putString("easing", "cubic-bezier(1, 1, 0.3, 0.3)", success).timingFunction);
178 EXPECT_TRUE(success);
179 EXPECT_EQ(*StepsTimingFunction::create(3, StepsTimingFunction::Start), *appl yTimingInputString("easing", "steps(3, start)", success).timingFunction);
180 EXPECT_TRUE(success);
181 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::Middle), *app lyTimingInputString("easing", "steps(5, middle)", success).timingFunction);
182 EXPECT_TRUE(success);
183 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::End), *applyT imingInputString("easing", "steps(5, end)", success).timingFunction);
184 EXPECT_TRUE(success);
185
186 applyTimingInputString("easing", "", success);
187 EXPECT_FALSE(success);
188 applyTimingInputString("easing", "steps(5.6, end)", success);
189 EXPECT_FALSE(success);
190 applyTimingInputString("easing", "cubic-bezier(2, 2, 0.3, 0.3)", success);
191 EXPECT_FALSE(success);
192 applyTimingInputString("easing", "rubbish", success);
193 EXPECT_FALSE(success);
194 applyTimingInputNumber("easing", 2, success);
195 EXPECT_FALSE(success);
196 applyTimingInputString("easing", "initial", success);
197 EXPECT_FALSE(success);
165 } 198 }
166 199
167 TEST_F(AnimationTimingInputTest, TimingInputEmpty) 200 TEST_F(AnimationTimingInputTest, TimingInputEmpty)
168 { 201 {
169 Timing controlTiming; 202 Timing controlTiming;
170 Timing updatedTiming = TimingInput::convert(KeyframeEffectOptions(), nullptr ); 203 Timing updatedTiming;
204 bool success = TimingInput::convert(KeyframeEffectOptions(), updatedTiming, nullptr, exceptionState);
205 EXPECT_TRUE(success);
171 206
172 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); 207 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay);
173 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); 208 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode);
174 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); 209 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart);
175 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); 210 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount);
176 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); 211 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration));
177 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); 212 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate);
178 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); 213 EXPECT_EQ(controlTiming.direction, updatedTiming.direction);
179 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction); 214 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction);
180 } 215 }
181 216
182 } // namespace blink 217 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/animation/TimingInput.cpp ('k') | third_party/WebKit/Source/core/frame/Deprecation.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698