Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 Timing applyTimingInputNumber(v8::Isolate* isolate, String timingProperty, doubl e timingPropertyValue, bool& timingConversionSuccess) | 17 Timing applyTimingInputNumber(V8TestingScope& scope, String timingProperty, doub le timingPropertyValue, bool& timingConversionSuccess) |
|
suzyh_UTC10 (ex-contributor)
2016/07/07 05:59:44
Although the change in this file was required by o
| |
| 18 { | 18 { |
| 19 v8::Local<v8::Object> timingInput = v8::Object::New(isolate); | 19 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate()); |
| 20 setV8ObjectPropertyAsNumber(isolate, timingInput, timingProperty, timingProp ertyValue); | 20 setV8ObjectPropertyAsNumber(scope.isolate(), timingInput, timingProperty, ti mingPropertyValue); |
| 21 KeyframeEffectOptions timingInputDictionary; | 21 KeyframeEffectOptions timingInputDictionary; |
| 22 TrackExceptionState exceptionState; | 22 TrackExceptionState exceptionState; |
| 23 V8KeyframeEffectOptions::toImpl(isolate, timingInput, timingInputDictionary, exceptionState); | 23 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState); |
| 24 Timing result; | 24 Timing result; |
| 25 timingConversionSuccess = TimingInput::convert(timingInputDictionary, result , nullptr, exceptionState) && !exceptionState.hadException(); | 25 timingConversionSuccess = TimingInput::convert(timingInputDictionary, result , scope.document(), exceptionState) && !exceptionState.hadException(); |
| 26 return result; | 26 return result; |
| 27 } | 27 } |
| 28 | 28 |
| 29 Timing applyTimingInputString(v8::Isolate* isolate, String timingProperty, Strin g timingPropertyValue, bool& timingConversionSuccess) | 29 Timing applyTimingInputString(V8TestingScope& scope, String timingProperty, Stri ng timingPropertyValue, bool& timingConversionSuccess) |
| 30 { | 30 { |
| 31 v8::Local<v8::Object> timingInput = v8::Object::New(isolate); | 31 v8::Local<v8::Object> timingInput = v8::Object::New(scope.isolate()); |
| 32 setV8ObjectPropertyAsString(isolate, timingInput, timingProperty, timingProp ertyValue); | 32 setV8ObjectPropertyAsString(scope.isolate(), timingInput, timingProperty, ti mingPropertyValue); |
| 33 KeyframeEffectOptions timingInputDictionary; | 33 KeyframeEffectOptions timingInputDictionary; |
| 34 TrackExceptionState exceptionState; | 34 TrackExceptionState exceptionState; |
| 35 V8KeyframeEffectOptions::toImpl(isolate, timingInput, timingInputDictionary, exceptionState); | 35 V8KeyframeEffectOptions::toImpl(scope.isolate(), timingInput, timingInputDic tionary, exceptionState); |
| 36 Timing result; | 36 Timing result; |
| 37 timingConversionSuccess = TimingInput::convert(timingInputDictionary, result , nullptr, exceptionState) && !exceptionState.hadException(); | 37 timingConversionSuccess = TimingInput::convert(timingInputDictionary, result , scope.document(), exceptionState) && !exceptionState.hadException(); |
| 38 return result; | 38 return result; |
| 39 } | 39 } |
| 40 | 40 |
| 41 TEST(AnimationTimingInputTest, TimingInputStartDelay) | 41 TEST(AnimationTimingInputTest, TimingInputStartDelay) |
| 42 { | 42 { |
| 43 V8TestingScope scope; | 43 V8TestingScope scope; |
| 44 bool ignoredSuccess; | 44 bool ignoredSuccess; |
| 45 EXPECT_EQ(1.1, applyTimingInputNumber(scope.isolate(), "delay", 1100, ignore dSuccess).startDelay); | 45 EXPECT_EQ(1.1, applyTimingInputNumber(scope, "delay", 1100, ignoredSuccess). startDelay); |
| 46 EXPECT_EQ(-1, applyTimingInputNumber(scope.isolate(), "delay", -1000, ignore dSuccess).startDelay); | 46 EXPECT_EQ(-1, applyTimingInputNumber(scope, "delay", -1000, ignoredSuccess). startDelay); |
| 47 EXPECT_EQ(1, applyTimingInputString(scope.isolate(), "delay", "1000", ignore dSuccess).startDelay); | 47 EXPECT_EQ(1, applyTimingInputString(scope, "delay", "1000", ignoredSuccess). startDelay); |
| 48 EXPECT_EQ(0, applyTimingInputString(scope.isolate(), "delay", "1s", ignoredS uccess).startDelay); | 48 EXPECT_EQ(0, applyTimingInputString(scope, "delay", "1s", ignoredSuccess).st artDelay); |
| 49 EXPECT_EQ(0, applyTimingInputString(scope.isolate(), "delay", "Infinity", ig noredSuccess).startDelay); | 49 EXPECT_EQ(0, applyTimingInputString(scope, "delay", "Infinity", ignoredSucce ss).startDelay); |
| 50 EXPECT_EQ(0, applyTimingInputString(scope.isolate(), "delay", "-Infinity", i gnoredSuccess).startDelay); | 50 EXPECT_EQ(0, applyTimingInputString(scope, "delay", "-Infinity", ignoredSucc ess).startDelay); |
| 51 EXPECT_EQ(0, applyTimingInputString(scope.isolate(), "delay", "NaN", ignored Success).startDelay); | 51 EXPECT_EQ(0, applyTimingInputString(scope, "delay", "NaN", ignoredSuccess).s tartDelay); |
| 52 EXPECT_EQ(0, applyTimingInputString(scope.isolate(), "delay", "rubbish", ign oredSuccess).startDelay); | 52 EXPECT_EQ(0, applyTimingInputString(scope, "delay", "rubbish", ignoredSucces s).startDelay); |
| 53 } | 53 } |
| 54 | 54 |
| 55 TEST(AnimationTimingInputTest, TimingInputEndDelay) | 55 TEST(AnimationTimingInputTest, TimingInputEndDelay) |
| 56 { | 56 { |
| 57 V8TestingScope scope; | 57 V8TestingScope scope; |
| 58 bool ignoredSuccess; | 58 bool ignoredSuccess; |
| 59 EXPECT_EQ(10, applyTimingInputNumber(scope.isolate(), "endDelay", 10000, ign oredSuccess).endDelay); | 59 EXPECT_EQ(10, applyTimingInputNumber(scope, "endDelay", 10000, ignoredSucces s).endDelay); |
| 60 EXPECT_EQ(-2.5, applyTimingInputNumber(scope.isolate(), "endDelay", -2500, i gnoredSuccess).endDelay); | 60 EXPECT_EQ(-2.5, applyTimingInputNumber(scope, "endDelay", -2500, ignoredSucc ess).endDelay); |
| 61 } | 61 } |
| 62 | 62 |
| 63 TEST(AnimationTimingInputTest, TimingInputFillMode) | 63 TEST(AnimationTimingInputTest, TimingInputFillMode) |
| 64 { | 64 { |
| 65 V8TestingScope scope; | 65 V8TestingScope scope; |
| 66 Timing::FillMode defaultFillMode = Timing::FillModeAuto; | 66 Timing::FillMode defaultFillMode = Timing::FillModeAuto; |
| 67 bool ignoredSuccess; | 67 bool ignoredSuccess; |
| 68 | 68 |
| 69 EXPECT_EQ(Timing::FillModeAuto, applyTimingInputString(scope.isolate(), "fil l", "auto", ignoredSuccess).fillMode); | 69 EXPECT_EQ(Timing::FillModeAuto, applyTimingInputString(scope, "fill", "auto" , ignoredSuccess).fillMode); |
| 70 EXPECT_EQ(Timing::FillModeForwards, applyTimingInputString(scope.isolate(), "fill", "forwards", ignoredSuccess).fillMode); | 70 EXPECT_EQ(Timing::FillModeForwards, applyTimingInputString(scope, "fill", "f orwards", ignoredSuccess).fillMode); |
| 71 EXPECT_EQ(Timing::FillModeNone, applyTimingInputString(scope.isolate(), "fil l", "none", ignoredSuccess).fillMode); | 71 EXPECT_EQ(Timing::FillModeNone, applyTimingInputString(scope, "fill", "none" , ignoredSuccess).fillMode); |
| 72 EXPECT_EQ(Timing::FillModeBackwards, applyTimingInputString(scope.isolate(), "fill", "backwards", ignoredSuccess).fillMode); | 72 EXPECT_EQ(Timing::FillModeBackwards, applyTimingInputString(scope, "fill", " backwards", ignoredSuccess).fillMode); |
| 73 EXPECT_EQ(Timing::FillModeBoth, applyTimingInputString(scope.isolate(), "fil l", "both", ignoredSuccess).fillMode); | 73 EXPECT_EQ(Timing::FillModeBoth, applyTimingInputString(scope, "fill", "both" , ignoredSuccess).fillMode); |
| 74 EXPECT_EQ(defaultFillMode, applyTimingInputString(scope.isolate(), "fill", " everything!", ignoredSuccess).fillMode); | 74 EXPECT_EQ(defaultFillMode, applyTimingInputString(scope, "fill", "everything !", ignoredSuccess).fillMode); |
| 75 EXPECT_EQ(defaultFillMode, applyTimingInputString(scope.isolate(), "fill", " backwardsandforwards", ignoredSuccess).fillMode); | 75 EXPECT_EQ(defaultFillMode, applyTimingInputString(scope, "fill", "backwardsa ndforwards", ignoredSuccess).fillMode); |
| 76 EXPECT_EQ(defaultFillMode, applyTimingInputNumber(scope.isolate(), "fill", 2 , ignoredSuccess).fillMode); | 76 EXPECT_EQ(defaultFillMode, applyTimingInputNumber(scope, "fill", 2, ignoredS uccess).fillMode); |
| 77 } | 77 } |
| 78 | 78 |
| 79 TEST(AnimationTimingInputTest, TimingInputIterationStart) | 79 TEST(AnimationTimingInputTest, TimingInputIterationStart) |
| 80 { | 80 { |
| 81 V8TestingScope scope; | 81 V8TestingScope scope; |
| 82 bool success; | 82 bool success; |
| 83 EXPECT_EQ(1.1, applyTimingInputNumber(scope.isolate(), "iterationStart", 1.1 , success).iterationStart); | 83 EXPECT_EQ(1.1, applyTimingInputNumber(scope, "iterationStart", 1.1, success) .iterationStart); |
| 84 EXPECT_TRUE(success); | 84 EXPECT_TRUE(success); |
| 85 | 85 |
| 86 applyTimingInputNumber(scope.isolate(), "iterationStart", -1, success); | 86 applyTimingInputNumber(scope, "iterationStart", -1, success); |
| 87 EXPECT_FALSE(success); | 87 EXPECT_FALSE(success); |
| 88 | 88 |
| 89 applyTimingInputString(scope.isolate(), "iterationStart", "Infinity", succes s); | 89 applyTimingInputString(scope, "iterationStart", "Infinity", success); |
| 90 EXPECT_FALSE(success); | 90 EXPECT_FALSE(success); |
| 91 | 91 |
| 92 applyTimingInputString(scope.isolate(), "iterationStart", "-Infinity", succe ss); | 92 applyTimingInputString(scope, "iterationStart", "-Infinity", success); |
| 93 EXPECT_FALSE(success); | 93 EXPECT_FALSE(success); |
| 94 | 94 |
| 95 applyTimingInputString(scope.isolate(), "iterationStart", "NaN", success); | 95 applyTimingInputString(scope, "iterationStart", "NaN", success); |
| 96 EXPECT_FALSE(success); | 96 EXPECT_FALSE(success); |
| 97 | 97 |
| 98 applyTimingInputString(scope.isolate(), "iterationStart", "rubbish", success ); | 98 applyTimingInputString(scope, "iterationStart", "rubbish", success); |
| 99 EXPECT_FALSE(success); | 99 EXPECT_FALSE(success); |
| 100 } | 100 } |
| 101 | 101 |
| 102 TEST(AnimationTimingInputTest, TimingInputIterationCount) | 102 TEST(AnimationTimingInputTest, TimingInputIterationCount) |
| 103 { | 103 { |
| 104 V8TestingScope scope; | 104 V8TestingScope scope; |
| 105 bool success; | 105 bool success; |
| 106 EXPECT_EQ(2.1, applyTimingInputNumber(scope.isolate(), "iterations", 2.1, su ccess).iterationCount); | 106 EXPECT_EQ(2.1, applyTimingInputNumber(scope, "iterations", 2.1, success).ite rationCount); |
| 107 EXPECT_TRUE(success); | 107 EXPECT_TRUE(success); |
| 108 | 108 |
| 109 Timing timing = applyTimingInputString(scope.isolate(), "iterations", "Infin ity", success); | 109 Timing timing = applyTimingInputString(scope, "iterations", "Infinity", succ ess); |
| 110 EXPECT_TRUE(success); | 110 EXPECT_TRUE(success); |
| 111 EXPECT_TRUE(std::isinf(timing.iterationCount)); | 111 EXPECT_TRUE(std::isinf(timing.iterationCount)); |
| 112 EXPECT_GT(timing.iterationCount, 0); | 112 EXPECT_GT(timing.iterationCount, 0); |
| 113 | 113 |
| 114 applyTimingInputNumber(scope.isolate(), "iterations", -1, success); | 114 applyTimingInputNumber(scope, "iterations", -1, success); |
| 115 EXPECT_FALSE(success); | 115 EXPECT_FALSE(success); |
| 116 | 116 |
| 117 applyTimingInputString(scope.isolate(), "iterations", "-Infinity", success); | 117 applyTimingInputString(scope, "iterations", "-Infinity", success); |
| 118 EXPECT_FALSE(success); | 118 EXPECT_FALSE(success); |
| 119 | 119 |
| 120 applyTimingInputString(scope.isolate(), "iterations", "NaN", success); | 120 applyTimingInputString(scope, "iterations", "NaN", success); |
| 121 EXPECT_FALSE(success); | 121 EXPECT_FALSE(success); |
| 122 | 122 |
| 123 applyTimingInputString(scope.isolate(), "iterations", "rubbish", success); | 123 applyTimingInputString(scope, "iterations", "rubbish", success); |
| 124 EXPECT_FALSE(success); | 124 EXPECT_FALSE(success); |
| 125 } | 125 } |
| 126 | 126 |
| 127 TEST(AnimationTimingInputTest, TimingInputIterationDuration) | 127 TEST(AnimationTimingInputTest, TimingInputIterationDuration) |
| 128 { | 128 { |
| 129 V8TestingScope scope; | 129 V8TestingScope scope; |
| 130 bool success; | 130 bool success; |
| 131 EXPECT_EQ(1.1, applyTimingInputNumber(scope.isolate(), "duration", 1100, suc cess).iterationDuration); | 131 EXPECT_EQ(1.1, applyTimingInputNumber(scope, "duration", 1100, success).iter ationDuration); |
| 132 EXPECT_TRUE(success); | 132 EXPECT_TRUE(success); |
| 133 | 133 |
| 134 Timing timing = applyTimingInputNumber(scope.isolate(), "duration", std::num eric_limits<double>::infinity(), success); | 134 Timing timing = applyTimingInputNumber(scope, "duration", std::numeric_limit s<double>::infinity(), success); |
| 135 EXPECT_TRUE(success); | 135 EXPECT_TRUE(success); |
| 136 EXPECT_TRUE(std::isinf(timing.iterationDuration)); | 136 EXPECT_TRUE(std::isinf(timing.iterationDuration)); |
| 137 EXPECT_GT(timing.iterationDuration, 0); | 137 EXPECT_GT(timing.iterationDuration, 0); |
| 138 | 138 |
| 139 EXPECT_TRUE(std::isnan(applyTimingInputString(scope.isolate(), "duration", " auto", success).iterationDuration)); | 139 EXPECT_TRUE(std::isnan(applyTimingInputString(scope, "duration", "auto", suc cess).iterationDuration)); |
| 140 EXPECT_TRUE(success); | 140 EXPECT_TRUE(success); |
| 141 | 141 |
| 142 applyTimingInputString(scope.isolate(), "duration", "1000", success); | 142 applyTimingInputString(scope, "duration", "1000", success); |
| 143 EXPECT_FALSE(success); | 143 EXPECT_FALSE(success); |
| 144 | 144 |
| 145 applyTimingInputNumber(scope.isolate(), "duration", -1000, success); | 145 applyTimingInputNumber(scope, "duration", -1000, success); |
| 146 EXPECT_FALSE(success); | 146 EXPECT_FALSE(success); |
| 147 | 147 |
| 148 applyTimingInputString(scope.isolate(), "duration", "-Infinity", success); | 148 applyTimingInputString(scope, "duration", "-Infinity", success); |
| 149 EXPECT_FALSE(success); | 149 EXPECT_FALSE(success); |
| 150 | 150 |
| 151 applyTimingInputString(scope.isolate(), "duration", "NaN", success); | 151 applyTimingInputString(scope, "duration", "NaN", success); |
| 152 EXPECT_FALSE(success); | 152 EXPECT_FALSE(success); |
| 153 | 153 |
| 154 applyTimingInputString(scope.isolate(), "duration", "rubbish", success); | 154 applyTimingInputString(scope, "duration", "rubbish", success); |
| 155 EXPECT_FALSE(success); | 155 EXPECT_FALSE(success); |
| 156 } | 156 } |
| 157 | 157 |
| 158 TEST(AnimationTimingInputTest, TimingInputPlaybackRate) | 158 TEST(AnimationTimingInputTest, TimingInputPlaybackRate) |
| 159 { | 159 { |
| 160 V8TestingScope scope; | 160 V8TestingScope scope; |
| 161 bool ignoredSuccess; | 161 bool ignoredSuccess; |
| 162 EXPECT_EQ(2.1, applyTimingInputNumber(scope.isolate(), "playbackRate", 2.1, ignoredSuccess).playbackRate); | 162 EXPECT_EQ(2.1, applyTimingInputNumber(scope, "playbackRate", 2.1, ignoredSuc cess).playbackRate); |
| 163 EXPECT_EQ(-1, applyTimingInputNumber(scope.isolate(), "playbackRate", -1, ig noredSuccess).playbackRate); | 163 EXPECT_EQ(-1, applyTimingInputNumber(scope, "playbackRate", -1, ignoredSucce ss).playbackRate); |
| 164 EXPECT_EQ(1, applyTimingInputString(scope.isolate(), "playbackRate", "Infini ty", ignoredSuccess).playbackRate); | 164 EXPECT_EQ(1, applyTimingInputString(scope, "playbackRate", "Infinity", ignor edSuccess).playbackRate); |
| 165 EXPECT_EQ(1, applyTimingInputString(scope.isolate(), "playbackRate", "-Infin ity", ignoredSuccess).playbackRate); | 165 EXPECT_EQ(1, applyTimingInputString(scope, "playbackRate", "-Infinity", igno redSuccess).playbackRate); |
| 166 EXPECT_EQ(1, applyTimingInputString(scope.isolate(), "playbackRate", "NaN", ignoredSuccess).playbackRate); | 166 EXPECT_EQ(1, applyTimingInputString(scope, "playbackRate", "NaN", ignoredSuc cess).playbackRate); |
| 167 EXPECT_EQ(1, applyTimingInputString(scope.isolate(), "playbackRate", "rubbis h", ignoredSuccess).playbackRate); | 167 EXPECT_EQ(1, applyTimingInputString(scope, "playbackRate", "rubbish", ignore dSuccess).playbackRate); |
| 168 } | 168 } |
| 169 | 169 |
| 170 TEST(AnimationTimingInputTest, TimingInputDirection) | 170 TEST(AnimationTimingInputTest, TimingInputDirection) |
| 171 { | 171 { |
| 172 V8TestingScope scope; | 172 V8TestingScope scope; |
| 173 Timing::PlaybackDirection defaultPlaybackDirection = Timing::PlaybackDirecti onNormal; | 173 Timing::PlaybackDirection defaultPlaybackDirection = Timing::PlaybackDirecti onNormal; |
| 174 bool ignoredSuccess; | 174 bool ignoredSuccess; |
| 175 | 175 |
| 176 EXPECT_EQ(Timing::PlaybackDirectionNormal, applyTimingInputString(scope.isol ate(), "direction", "normal", ignoredSuccess).direction); | 176 EXPECT_EQ(Timing::PlaybackDirectionNormal, applyTimingInputString(scope, "di rection", "normal", ignoredSuccess).direction); |
| 177 EXPECT_EQ(Timing::PlaybackDirectionReverse, applyTimingInputString(scope.iso late(), "direction", "reverse", ignoredSuccess).direction); | 177 EXPECT_EQ(Timing::PlaybackDirectionReverse, applyTimingInputString(scope, "d irection", "reverse", ignoredSuccess).direction); |
| 178 EXPECT_EQ(Timing::PlaybackDirectionAlternate, applyTimingInputString(scope.i solate(), "direction", "alternate", ignoredSuccess).direction); | 178 EXPECT_EQ(Timing::PlaybackDirectionAlternate, applyTimingInputString(scope, "direction", "alternate", ignoredSuccess).direction); |
| 179 EXPECT_EQ(Timing::PlaybackDirectionAlternateReverse, applyTimingInputString( scope.isolate(), "direction", "alternate-reverse", ignoredSuccess).direction); | 179 EXPECT_EQ(Timing::PlaybackDirectionAlternateReverse, applyTimingInputString( scope, "direction", "alternate-reverse", ignoredSuccess).direction); |
| 180 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputString(scope.isolate(), "direction", "rubbish", ignoredSuccess).direction); | 180 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputString(scope, "direction ", "rubbish", ignoredSuccess).direction); |
| 181 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputNumber(scope.isolate(), "direction", 2, ignoredSuccess).direction); | 181 EXPECT_EQ(defaultPlaybackDirection, applyTimingInputNumber(scope, "direction ", 2, ignoredSuccess).direction); |
| 182 } | 182 } |
| 183 | 183 |
| 184 TEST(AnimationTimingInputTest, TimingInputTimingFunction) | 184 TEST(AnimationTimingInputTest, TimingInputTimingFunction) |
| 185 { | 185 { |
| 186 V8TestingScope scope; | 186 V8TestingScope scope; |
| 187 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::s hared(); | 187 const RefPtr<TimingFunction> defaultTimingFunction = LinearTimingFunction::s hared(); |
| 188 bool success; | 188 bool success; |
| 189 | 189 |
| 190 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE), *applyTimingInputString(scope.isolate(), "easing", "ease", success) .timingFunction); | 190 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE), *applyTimingInputString(scope, "easing", "ease", success).timingFun ction); |
| 191 EXPECT_TRUE(success); | 191 EXPECT_TRUE(success); |
| 192 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE_IN), *applyTimingInputString(scope.isolate(), "easing", "ease-in", su ccess).timingFunction); | 192 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE_IN), *applyTimingInputString(scope, "easing", "ease-in", success).tim ingFunction); |
| 193 EXPECT_TRUE(success); | 193 EXPECT_TRUE(success); |
| 194 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE_OUT), *applyTimingInputString(scope.isolate(), "easing", "ease-out", success).timingFunction); | 194 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE_OUT), *applyTimingInputString(scope, "easing", "ease-out", success).t imingFunction); |
| 195 EXPECT_TRUE(success); | 195 EXPECT_TRUE(success); |
| 196 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE_IN_OUT), *applyTimingInputString(scope.isolate(), "easing", "ease-in- out", success).timingFunction); | 196 EXPECT_EQ(*CubicBezierTimingFunction::preset(CubicBezierTimingFunction::Ease Type::EASE_IN_OUT), *applyTimingInputString(scope, "easing", "ease-in-out", succ ess).timingFunction); |
| 197 EXPECT_TRUE(success); | 197 EXPECT_TRUE(success); |
| 198 EXPECT_EQ(*LinearTimingFunction::shared(), *applyTimingInputString(scope.iso late(), "easing", "linear", success).timingFunction); | 198 EXPECT_EQ(*LinearTimingFunction::shared(), *applyTimingInputString(scope, "e asing", "linear", success).timingFunction); |
| 199 EXPECT_TRUE(success); | 199 EXPECT_TRUE(success); |
| 200 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::StepPosition::ST ART), *applyTimingInputString(scope.isolate(), "easing", "step-start", success). timingFunction); | 200 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::StepPosition::ST ART), *applyTimingInputString(scope, "easing", "step-start", success).timingFunc tion); |
| 201 EXPECT_TRUE(success); | 201 EXPECT_TRUE(success); |
| 202 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::StepPosition::MI DDLE), *applyTimingInputString(scope.isolate(), "easing", "step-middle", success ).timingFunction); | 202 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::StepPosition::MI DDLE), *applyTimingInputString(scope, "easing", "step-middle", success).timingFu nction); |
| 203 EXPECT_TRUE(success); | 203 EXPECT_TRUE(success); |
| 204 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::StepPosition::EN D), *applyTimingInputString(scope.isolate(), "easing", "step-end", success).timi ngFunction); | 204 EXPECT_EQ(*StepsTimingFunction::preset(StepsTimingFunction::StepPosition::EN D), *applyTimingInputString(scope, "easing", "step-end", success).timingFunction ); |
| 205 EXPECT_TRUE(success); | 205 EXPECT_TRUE(success); |
| 206 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *applyTimingIn putString(scope.isolate(), "easing", "cubic-bezier(1, 1, 0.3, 0.3)", success).ti mingFunction); | 206 EXPECT_EQ(*CubicBezierTimingFunction::create(1, 1, 0.3, 0.3), *applyTimingIn putString(scope, "easing", "cubic-bezier(1, 1, 0.3, 0.3)", success).timingFuncti on); |
| 207 EXPECT_TRUE(success); | 207 EXPECT_TRUE(success); |
| 208 EXPECT_EQ(*StepsTimingFunction::create(3, StepsTimingFunction::StepPosition: :START), *applyTimingInputString(scope.isolate(), "easing", "steps(3, start)", s uccess).timingFunction); | 208 EXPECT_EQ(*StepsTimingFunction::create(3, StepsTimingFunction::StepPosition: :START), *applyTimingInputString(scope, "easing", "steps(3, start)", success).ti mingFunction); |
| 209 EXPECT_TRUE(success); | 209 EXPECT_TRUE(success); |
| 210 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::StepPosition: :MIDDLE), *applyTimingInputString(scope.isolate(), "easing", "steps(5, middle)", success).timingFunction); | 210 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::StepPosition: :MIDDLE), *applyTimingInputString(scope, "easing", "steps(5, middle)", success). timingFunction); |
| 211 EXPECT_TRUE(success); | 211 EXPECT_TRUE(success); |
| 212 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::StepPosition: :END), *applyTimingInputString(scope.isolate(), "easing", "steps(5, end)", succe ss).timingFunction); | 212 EXPECT_EQ(*StepsTimingFunction::create(5, StepsTimingFunction::StepPosition: :END), *applyTimingInputString(scope, "easing", "steps(5, end)", success).timing Function); |
| 213 EXPECT_TRUE(success); | 213 EXPECT_TRUE(success); |
| 214 | 214 |
| 215 applyTimingInputString(scope.isolate(), "easing", "", success); | 215 applyTimingInputString(scope, "easing", "", success); |
| 216 EXPECT_FALSE(success); | 216 EXPECT_FALSE(success); |
| 217 applyTimingInputString(scope.isolate(), "easing", "steps(5.6, end)", success ); | 217 applyTimingInputString(scope, "easing", "steps(5.6, end)", success); |
| 218 EXPECT_FALSE(success); | 218 EXPECT_FALSE(success); |
| 219 applyTimingInputString(scope.isolate(), "easing", "cubic-bezier(2, 2, 0.3, 0 .3)", success); | 219 applyTimingInputString(scope, "easing", "cubic-bezier(2, 2, 0.3, 0.3)", succ ess); |
| 220 EXPECT_FALSE(success); | 220 EXPECT_FALSE(success); |
| 221 applyTimingInputString(scope.isolate(), "easing", "rubbish", success); | 221 applyTimingInputString(scope, "easing", "rubbish", success); |
| 222 EXPECT_FALSE(success); | 222 EXPECT_FALSE(success); |
| 223 applyTimingInputNumber(scope.isolate(), "easing", 2, success); | 223 applyTimingInputNumber(scope, "easing", 2, success); |
| 224 EXPECT_FALSE(success); | 224 EXPECT_FALSE(success); |
| 225 applyTimingInputString(scope.isolate(), "easing", "initial", success); | 225 applyTimingInputString(scope, "easing", "initial", success); |
| 226 EXPECT_FALSE(success); | 226 EXPECT_FALSE(success); |
| 227 } | 227 } |
| 228 | 228 |
| 229 TEST(AnimationTimingInputTest, TimingInputEmpty) | 229 TEST(AnimationTimingInputTest, TimingInputEmpty) |
| 230 { | 230 { |
| 231 V8TestingScope scope; | |
| 231 TrackExceptionState exceptionState; | 232 TrackExceptionState exceptionState; |
| 232 Timing controlTiming; | 233 Timing controlTiming; |
| 233 Timing updatedTiming; | 234 Timing updatedTiming; |
| 234 bool success = TimingInput::convert(KeyframeEffectOptions(), updatedTiming, nullptr, exceptionState); | 235 bool success = TimingInput::convert(KeyframeEffectOptions(), updatedTiming, scope.document(), exceptionState); |
| 235 EXPECT_TRUE(success); | 236 EXPECT_TRUE(success); |
| 236 EXPECT_FALSE(exceptionState.hadException()); | 237 EXPECT_FALSE(exceptionState.hadException()); |
| 237 | 238 |
| 238 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); | 239 EXPECT_EQ(controlTiming.startDelay, updatedTiming.startDelay); |
| 239 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); | 240 EXPECT_EQ(controlTiming.fillMode, updatedTiming.fillMode); |
| 240 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); | 241 EXPECT_EQ(controlTiming.iterationStart, updatedTiming.iterationStart); |
| 241 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); | 242 EXPECT_EQ(controlTiming.iterationCount, updatedTiming.iterationCount); |
| 242 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); | 243 EXPECT_TRUE(std::isnan(updatedTiming.iterationDuration)); |
| 243 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); | 244 EXPECT_EQ(controlTiming.playbackRate, updatedTiming.playbackRate); |
| 244 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); | 245 EXPECT_EQ(controlTiming.direction, updatedTiming.direction); |
| 245 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction); | 246 EXPECT_EQ(*controlTiming.timingFunction, *updatedTiming.timingFunction); |
| 246 } | 247 } |
| 247 | 248 |
| 248 } // namespace blink | 249 } // namespace blink |
| OLD | NEW |