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 "config.h" | 5 #include "config.h" |
6 #include "core/animation/EffectInput.h" | 6 #include "core/animation/EffectInput.h" |
7 | 7 |
8 #include "bindings/v8/Dictionary.h" | 8 #include "bindings/v8/Dictionary.h" |
9 #include "core/animation/AnimationTestHelper.h" | 9 #include "core/animation/AnimationTestHelper.h" |
10 #include "core/animation/KeyframeEffectModel.h" | 10 #include "core/animation/KeyframeEffectModel.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); | 43 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); |
44 | 44 |
45 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); | 45 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); |
46 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); | 46 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); |
47 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); | 47 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); |
48 setV8ObjectPropertyAsString(keyframe2, "offset", "1"); | 48 setV8ObjectPropertyAsString(keyframe2, "offset", "1"); |
49 | 49 |
50 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); | 50 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); |
51 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); | 51 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); |
52 | 52 |
53 RefPtrWillBeRawPtr<AnimationEffect> animationEffect = EffectInput::convert(e
lement.get(), jsKeyframes, exceptionState, true); | 53 RefPtrWillBeRawPtr<AnimationEffect> animationEffect = EffectInput::convert(e
lement.get(), jsKeyframes, exceptionState); |
54 EXPECT_FALSE(exceptionState.hadException()); | 54 EXPECT_FALSE(exceptionState.hadException()); |
55 const KeyframeEffectModelBase& keyframeEffect = *toKeyframeEffectModelBase(a
nimationEffect.get()); | 55 const KeyframeEffectModelBase& keyframeEffect = *toKeyframeEffectModelBase(a
nimationEffect.get()); |
56 EXPECT_EQ(1.0, keyframeEffect.getFrames()[1]->offset()); | 56 EXPECT_EQ(1.0, keyframeEffect.getFrames()[1]->offset()); |
57 } | 57 } |
58 | 58 |
59 TEST_F(AnimationEffectInputTest, UnsortedOffsets) | 59 TEST_F(AnimationEffectInputTest, UnsortedOffsets) |
60 { | 60 { |
61 Vector<Dictionary> jsKeyframes; | 61 Vector<Dictionary> jsKeyframes; |
62 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); | 62 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); |
63 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); | 63 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); |
64 | 64 |
65 setV8ObjectPropertyAsString(keyframe1, "width", "0px"); | 65 setV8ObjectPropertyAsString(keyframe1, "width", "0px"); |
66 setV8ObjectPropertyAsString(keyframe1, "offset", "1"); | 66 setV8ObjectPropertyAsString(keyframe1, "offset", "1"); |
67 setV8ObjectPropertyAsString(keyframe2, "width", "100px"); | 67 setV8ObjectPropertyAsString(keyframe2, "width", "100px"); |
68 setV8ObjectPropertyAsString(keyframe2, "offset", "0"); | 68 setV8ObjectPropertyAsString(keyframe2, "offset", "0"); |
69 | 69 |
70 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); | 70 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); |
71 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); | 71 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); |
72 | 72 |
73 RefPtrWillBeRawPtr<AnimationEffect> animationEffect = EffectInput::convert(e
lement.get(), jsKeyframes, exceptionState, true); | 73 RefPtrWillBeRawPtr<AnimationEffect> animationEffect = EffectInput::convert(e
lement.get(), jsKeyframes, exceptionState); |
74 EXPECT_FALSE(exceptionState.hadException()); | 74 EXPECT_FALSE(exceptionState.hadException()); |
75 const KeyframeEffectModelBase& keyframeEffect = *toKeyframeEffectModelBase(a
nimationEffect.get()); | 75 const KeyframeEffectModelBase& keyframeEffect = *toKeyframeEffectModelBase(a
nimationEffect.get()); |
76 EXPECT_EQ(1.0, keyframeEffect.getFrames()[1]->offset()); | 76 EXPECT_EQ(1.0, keyframeEffect.getFrames()[1]->offset()); |
77 } | 77 } |
78 | 78 |
79 TEST_F(AnimationEffectInputTest, LooslySorted) | 79 TEST_F(AnimationEffectInputTest, LooslySorted) |
80 { | 80 { |
81 Vector<Dictionary> jsKeyframes; | 81 Vector<Dictionary> jsKeyframes; |
82 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); | 82 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); |
83 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); | 83 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); |
84 v8::Handle<v8::Object> keyframe3 = v8::Object::New(m_isolate); | 84 v8::Handle<v8::Object> keyframe3 = v8::Object::New(m_isolate); |
85 | 85 |
86 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); | 86 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); |
87 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); | 87 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); |
88 setV8ObjectPropertyAsString(keyframe2, "width", "200px"); | 88 setV8ObjectPropertyAsString(keyframe2, "width", "200px"); |
89 setV8ObjectPropertyAsString(keyframe3, "width", "0px"); | 89 setV8ObjectPropertyAsString(keyframe3, "width", "0px"); |
90 setV8ObjectPropertyAsString(keyframe3, "offset", "1"); | 90 setV8ObjectPropertyAsString(keyframe3, "offset", "1"); |
91 | 91 |
92 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); | 92 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); |
93 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); | 93 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); |
94 jsKeyframes.append(Dictionary(keyframe3, m_isolate)); | 94 jsKeyframes.append(Dictionary(keyframe3, m_isolate)); |
95 | 95 |
96 RefPtrWillBeRawPtr<AnimationEffect> animationEffect = EffectInput::convert(e
lement.get(), jsKeyframes, exceptionState, true); | 96 RefPtrWillBeRawPtr<AnimationEffect> animationEffect = EffectInput::convert(e
lement.get(), jsKeyframes, exceptionState); |
97 EXPECT_FALSE(exceptionState.hadException()); | 97 EXPECT_FALSE(exceptionState.hadException()); |
98 const KeyframeEffectModelBase& keyframeEffect = *toKeyframeEffectModelBase(a
nimationEffect.get()); | 98 const KeyframeEffectModelBase& keyframeEffect = *toKeyframeEffectModelBase(a
nimationEffect.get()); |
99 EXPECT_EQ(1, keyframeEffect.getFrames()[2]->offset()); | 99 EXPECT_EQ(1, keyframeEffect.getFrames()[2]->offset()); |
100 } | 100 } |
101 | 101 |
102 TEST_F(AnimationEffectInputTest, Invalid) | 102 TEST_F(AnimationEffectInputTest, Invalid) |
103 { | 103 { |
104 // Not loosely sorted by offset, and there exists a keyframe with null offse
t. | 104 // Not loosely sorted by offset, and there exists a keyframe with null offse
t. |
105 Vector<Dictionary> jsKeyframes; | 105 Vector<Dictionary> jsKeyframes; |
106 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); | 106 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate); |
107 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); | 107 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate); |
108 v8::Handle<v8::Object> keyframe3 = v8::Object::New(m_isolate); | 108 v8::Handle<v8::Object> keyframe3 = v8::Object::New(m_isolate); |
109 | 109 |
110 setV8ObjectPropertyAsString(keyframe1, "width", "0px"); | 110 setV8ObjectPropertyAsString(keyframe1, "width", "0px"); |
111 setV8ObjectPropertyAsString(keyframe1, "offset", "1"); | 111 setV8ObjectPropertyAsString(keyframe1, "offset", "1"); |
112 setV8ObjectPropertyAsString(keyframe2, "width", "200px"); | 112 setV8ObjectPropertyAsString(keyframe2, "width", "200px"); |
113 setV8ObjectPropertyAsString(keyframe3, "width", "100px"); | 113 setV8ObjectPropertyAsString(keyframe3, "width", "100px"); |
114 setV8ObjectPropertyAsString(keyframe3, "offset", "0"); | 114 setV8ObjectPropertyAsString(keyframe3, "offset", "0"); |
115 | 115 |
116 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); | 116 jsKeyframes.append(Dictionary(keyframe1, m_isolate)); |
117 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); | 117 jsKeyframes.append(Dictionary(keyframe2, m_isolate)); |
118 jsKeyframes.append(Dictionary(keyframe3, m_isolate)); | 118 jsKeyframes.append(Dictionary(keyframe3, m_isolate)); |
119 | 119 |
120 RefPtrWillBeRawPtr<AnimationEffect> animationEffect ALLOW_UNUSED = EffectInp
ut::convert(element.get(), jsKeyframes, exceptionState, true); | 120 RefPtrWillBeRawPtr<AnimationEffect> animationEffect ALLOW_UNUSED = EffectInp
ut::convert(element.get(), jsKeyframes, exceptionState); |
121 EXPECT_TRUE(exceptionState.hadException()); | 121 EXPECT_TRUE(exceptionState.hadException()); |
122 EXPECT_EQ(InvalidModificationError, exceptionState.code()); | 122 EXPECT_EQ(InvalidModificationError, exceptionState.code()); |
123 } | 123 } |
124 | 124 |
125 } | 125 } |
OLD | NEW |