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

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

Issue 343563002: Web Animations API: Avoid style resolution when calling element.animate() (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 6 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 | Annotate | Revision Log
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/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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698