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

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

Issue 180743013: Ensure DOMWrapperWorld always exists in all webkit_unit_tests (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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/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 18 matching lines...) Expand all
29 EXPECT_EQ(0, document->timeline().currentTime()); 29 EXPECT_EQ(0, document->timeline().currentTime());
30 } 30 }
31 31
32 RefPtr<Document> document; 32 RefPtr<Document> document;
33 RefPtr<Element> element; 33 RefPtr<Element> element;
34 }; 34 };
35 35
36 class AnimationAnimationV8Test : public AnimationAnimationTest { 36 class AnimationAnimationV8Test : public AnimationAnimationTest {
37 protected: 37 protected:
38 AnimationAnimationV8Test() 38 AnimationAnimationV8Test()
39 : isolate(v8::Isolate::GetCurrent()) 39 : m_isolate(v8::Isolate::GetCurrent())
40 , scope(isolate) 40 , m_scope(V8BindingTestScope::create(m_isolate))
41 , context(v8::Context::New(isolate))
42 , contextScope(context)
43 { 41 {
44 } 42 }
45 43
46 v8::Isolate* isolate;
47 v8::HandleScope scope;
48 v8::Local<v8::Context> context;
49 v8::Context::Scope contextScope;
50
51 PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictionary> k eyframeDictionaryVector, Dictionary timingInput) 44 PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictionary> k eyframeDictionaryVector, Dictionary timingInput)
52 { 45 {
53 return Animation::createUnsafe(element, keyframeDictionaryVector, timing Input); 46 return Animation::createUnsafe(element, keyframeDictionaryVector, timing Input);
54 } 47 }
55 48
56 PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictionary> k eyframeDictionaryVector, double timingInput) 49 PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictionary> k eyframeDictionaryVector, double timingInput)
57 { 50 {
58 return Animation::createUnsafe(element, keyframeDictionaryVector, timing Input); 51 return Animation::createUnsafe(element, keyframeDictionaryVector, timing Input);
59 } 52 }
60 53
61 PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictionary> k eyframeDictionaryVector) 54 PassRefPtr<Animation> createAnimation(Element* element, Vector<Dictionary> k eyframeDictionaryVector)
62 { 55 {
63 return Animation::createUnsafe(element, keyframeDictionaryVector); 56 return Animation::createUnsafe(element, keyframeDictionaryVector);
64 } 57 }
58
59 v8::Isolate* m_isolate;
60
61 private:
62 OwnPtr<V8BindingTestScope> m_scope;
65 }; 63 };
66 64
67 TEST_F(AnimationAnimationV8Test, CanCreateAnAnimation) 65 TEST_F(AnimationAnimationV8Test, CanCreateAnAnimation)
68 { 66 {
69 Vector<Dictionary> jsKeyframes; 67 Vector<Dictionary> jsKeyframes;
70 v8::Handle<v8::Object> keyframe1 = v8::Object::New(isolate); 68 v8::Handle<v8::Object> keyframe1 = v8::Object::New(m_isolate);
71 v8::Handle<v8::Object> keyframe2 = v8::Object::New(isolate); 69 v8::Handle<v8::Object> keyframe2 = v8::Object::New(m_isolate);
72 70
73 setV8ObjectPropertyAsString(keyframe1, "width", "100px"); 71 setV8ObjectPropertyAsString(keyframe1, "width", "100px");
74 setV8ObjectPropertyAsString(keyframe1, "offset", "0"); 72 setV8ObjectPropertyAsString(keyframe1, "offset", "0");
75 setV8ObjectPropertyAsString(keyframe1, "easing", "ease-in-out"); 73 setV8ObjectPropertyAsString(keyframe1, "easing", "ease-in-out");
76 setV8ObjectPropertyAsString(keyframe2, "width", "0px"); 74 setV8ObjectPropertyAsString(keyframe2, "width", "0px");
77 setV8ObjectPropertyAsString(keyframe2, "offset", "1"); 75 setV8ObjectPropertyAsString(keyframe2, "offset", "1");
78 setV8ObjectPropertyAsString(keyframe2, "easing", "cubic-bezier(1, 1, 0.3, 0. 3)"); 76 setV8ObjectPropertyAsString(keyframe2, "easing", "cubic-bezier(1, 1, 0.3, 0. 3)");
79 77
80 jsKeyframes.append(Dictionary(keyframe1, isolate)); 78 jsKeyframes.append(Dictionary(keyframe1, m_isolate));
81 jsKeyframes.append(Dictionary(keyframe2, isolate)); 79 jsKeyframes.append(Dictionary(keyframe2, m_isolate));
82 80
83 String value1; 81 String value1;
84 ASSERT_TRUE(jsKeyframes[0].get("width", value1)); 82 ASSERT_TRUE(jsKeyframes[0].get("width", value1));
85 ASSERT_EQ("100px", value1); 83 ASSERT_EQ("100px", value1);
86 84
87 String value2; 85 String value2;
88 ASSERT_TRUE(jsKeyframes[1].get("width", value2)); 86 ASSERT_TRUE(jsKeyframes[1].get("width", value2));
89 ASSERT_EQ("0px", value2); 87 ASSERT_EQ("0px", value2);
90 88
91 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0) ; 89 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, 0) ;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 { 133 {
136 Vector<Dictionary, 0> jsKeyframes; 134 Vector<Dictionary, 0> jsKeyframes;
137 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, -2 ); 135 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, -2 );
138 EXPECT_EQ(0, animation->specifiedTiming().iterationDuration); 136 EXPECT_EQ(0, animation->specifiedTiming().iterationDuration);
139 } 137 }
140 138
141 TEST_F(AnimationAnimationV8Test, SpecifiedGetters) 139 TEST_F(AnimationAnimationV8Test, SpecifiedGetters)
142 { 140 {
143 Vector<Dictionary, 0> jsKeyframes; 141 Vector<Dictionary, 0> jsKeyframes;
144 142
145 v8::Handle<v8::Object> timingInput = v8::Object::New(isolate); 143 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
146 setV8ObjectPropertyAsNumber(timingInput, "delay", 2); 144 setV8ObjectPropertyAsNumber(timingInput, "delay", 2);
147 setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5); 145 setV8ObjectPropertyAsNumber(timingInput, "endDelay", 0.5);
148 setV8ObjectPropertyAsString(timingInput, "fill", "backwards"); 146 setV8ObjectPropertyAsString(timingInput, "fill", "backwards");
149 setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2); 147 setV8ObjectPropertyAsNumber(timingInput, "iterationStart", 2);
150 setV8ObjectPropertyAsNumber(timingInput, "iterations", 10); 148 setV8ObjectPropertyAsNumber(timingInput, "iterations", 10);
151 setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2); 149 setV8ObjectPropertyAsNumber(timingInput, "playbackRate", 2);
152 setV8ObjectPropertyAsString(timingInput, "direction", "reverse"); 150 setV8ObjectPropertyAsString(timingInput, "direction", "reverse");
153 setV8ObjectPropertyAsString(timingInput, "easing", "step-start"); 151 setV8ObjectPropertyAsString(timingInput, "easing", "step-start");
154 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), isolate); 152 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate);
155 153
156 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary); 154 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary);
157 155
158 RefPtr<TimedItemTiming> specified = animation->specified(); 156 RefPtr<TimedItemTiming> specified = animation->specified();
159 EXPECT_EQ(2, specified->delay()); 157 EXPECT_EQ(2, specified->delay());
160 EXPECT_EQ(0.5, specified->endDelay()); 158 EXPECT_EQ(0.5, specified->endDelay());
161 EXPECT_EQ("backwards", specified->fill()); 159 EXPECT_EQ("backwards", specified->fill());
162 EXPECT_EQ(2, specified->iterationStart()); 160 EXPECT_EQ(2, specified->iterationStart());
163 EXPECT_EQ(10, specified->iterations()); 161 EXPECT_EQ(10, specified->iterations());
164 EXPECT_EQ(2, specified->playbackRate()); 162 EXPECT_EQ(2, specified->playbackRate());
165 EXPECT_EQ("reverse", specified->direction()); 163 EXPECT_EQ("reverse", specified->direction());
166 EXPECT_EQ("step-start", specified->easing()); 164 EXPECT_EQ("step-start", specified->easing());
167 } 165 }
168 166
169 TEST_F(AnimationAnimationV8Test, SpecifiedDurationGetter) 167 TEST_F(AnimationAnimationV8Test, SpecifiedDurationGetter)
170 { 168 {
171 Vector<Dictionary, 0> jsKeyframes; 169 Vector<Dictionary, 0> jsKeyframes;
172 170
173 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(isolate); 171 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate);
174 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); 172 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5);
175 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val ue>::Cast(timingInputWithDuration), isolate); 173 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val ue>::Cast(timingInputWithDuration), m_isolate);
176 174
177 RefPtr<Animation> animationWithDuration = createAnimation(element.get(), jsK eyframes, timingInputDictionaryWithDuration); 175 RefPtr<Animation> animationWithDuration = createAnimation(element.get(), jsK eyframes, timingInputDictionaryWithDuration);
178 176
179 RefPtr<TimedItemTiming> specifiedWithDuration = animationWithDuration->speci fied(); 177 RefPtr<TimedItemTiming> specifiedWithDuration = animationWithDuration->speci fied();
180 bool isNumber = false; 178 bool isNumber = false;
181 double numberDuration = std::numeric_limits<double>::quiet_NaN(); 179 double numberDuration = std::numeric_limits<double>::quiet_NaN();
182 bool isString = false; 180 bool isString = false;
183 String stringDuration = ""; 181 String stringDuration = "";
184 specifiedWithDuration->getDuration("duration", isNumber, numberDuration, isS tring, stringDuration); 182 specifiedWithDuration->getDuration("duration", isNumber, numberDuration, isS tring, stringDuration);
185 EXPECT_TRUE(isNumber); 183 EXPECT_TRUE(isNumber);
186 EXPECT_EQ(2.5, numberDuration); 184 EXPECT_EQ(2.5, numberDuration);
187 EXPECT_FALSE(isString); 185 EXPECT_FALSE(isString);
188 EXPECT_EQ("", stringDuration); 186 EXPECT_EQ("", stringDuration);
189 187
190 188
191 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(isolate); 189 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate);
192 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value >::Cast(timingInputNoDuration), isolate); 190 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value >::Cast(timingInputNoDuration), m_isolate);
193 191
194 RefPtr<Animation> animationNoDuration = createAnimation(element.get(), jsKey frames, timingInputDictionaryNoDuration); 192 RefPtr<Animation> animationNoDuration = createAnimation(element.get(), jsKey frames, timingInputDictionaryNoDuration);
195 193
196 RefPtr<TimedItemTiming> specifiedNoDuration = animationNoDuration->specified (); 194 RefPtr<TimedItemTiming> specifiedNoDuration = animationNoDuration->specified ();
197 isNumber = false; 195 isNumber = false;
198 numberDuration = std::numeric_limits<double>::quiet_NaN(); 196 numberDuration = std::numeric_limits<double>::quiet_NaN();
199 isString = false; 197 isString = false;
200 stringDuration = ""; 198 stringDuration = "";
201 specifiedNoDuration->getDuration("duration", isNumber, numberDuration, isStr ing, stringDuration); 199 specifiedNoDuration->getDuration("duration", isNumber, numberDuration, isStr ing, stringDuration);
202 EXPECT_FALSE(isNumber); 200 EXPECT_FALSE(isNumber);
203 EXPECT_TRUE(std::isnan(numberDuration)); 201 EXPECT_TRUE(std::isnan(numberDuration));
204 EXPECT_TRUE(isString); 202 EXPECT_TRUE(isString);
205 EXPECT_EQ("auto", stringDuration); 203 EXPECT_EQ("auto", stringDuration);
206 } 204 }
207 205
208 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) 206 TEST_F(AnimationAnimationV8Test, SpecifiedSetters)
209 { 207 {
210 Vector<Dictionary, 0> jsKeyframes; 208 Vector<Dictionary, 0> jsKeyframes;
211 v8::Handle<v8::Object> timingInput = v8::Object::New(isolate); 209 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
212 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), isolate); 210 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate);
213 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary); 211 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary);
214 212
215 RefPtr<TimedItemTiming> specified = animation->specified(); 213 RefPtr<TimedItemTiming> specified = animation->specified();
216 214
217 EXPECT_EQ(0, specified->delay()); 215 EXPECT_EQ(0, specified->delay());
218 specified->setDelay(2); 216 specified->setDelay(2);
219 EXPECT_EQ(2, specified->delay()); 217 EXPECT_EQ(2, specified->delay());
220 218
221 EXPECT_EQ(0, specified->endDelay()); 219 EXPECT_EQ(0, specified->endDelay());
222 specified->setEndDelay(0.5); 220 specified->setEndDelay(0.5);
(...skipping 20 matching lines...) Expand all
243 EXPECT_EQ("reverse", specified->direction()); 241 EXPECT_EQ("reverse", specified->direction());
244 242
245 EXPECT_EQ("linear", specified->easing()); 243 EXPECT_EQ("linear", specified->easing());
246 specified->setEasing("step-start"); 244 specified->setEasing("step-start");
247 EXPECT_EQ("step-start", specified->easing()); 245 EXPECT_EQ("step-start", specified->easing());
248 } 246 }
249 247
250 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) 248 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration)
251 { 249 {
252 Vector<Dictionary, 0> jsKeyframes; 250 Vector<Dictionary, 0> jsKeyframes;
253 v8::Handle<v8::Object> timingInput = v8::Object::New(isolate); 251 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate);
254 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), isolate); 252 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti mingInput), m_isolate);
255 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary); 253 RefPtr<Animation> animation = createAnimation(element.get(), jsKeyframes, ti mingInputDictionary);
256 254
257 RefPtr<TimedItemTiming> specified = animation->specified(); 255 RefPtr<TimedItemTiming> specified = animation->specified();
258 256
259 bool isNumber = false; 257 bool isNumber = false;
260 double numberDuration = std::numeric_limits<double>::quiet_NaN(); 258 double numberDuration = std::numeric_limits<double>::quiet_NaN();
261 bool isString = false; 259 bool isString = false;
262 String stringDuration = ""; 260 String stringDuration = "";
263 specified->getDuration("duration", isNumber, numberDuration, isString, strin gDuration); 261 specified->getDuration("duration", isNumber, numberDuration, isString, strin gDuration);
264 EXPECT_FALSE(isNumber); 262 EXPECT_FALSE(isNumber);
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
369 player->setCurrentTime(150); 367 player->setCurrentTime(150);
370 EXPECT_EQ(inf, animation->timeToForwardsEffectChange()); 368 EXPECT_EQ(inf, animation->timeToForwardsEffectChange());
371 EXPECT_EQ(0, animation->timeToReverseEffectChange()); 369 EXPECT_EQ(0, animation->timeToReverseEffectChange());
372 370
373 player->setCurrentTime(200); 371 player->setCurrentTime(200);
374 EXPECT_EQ(inf, animation->timeToForwardsEffectChange()); 372 EXPECT_EQ(inf, animation->timeToForwardsEffectChange());
375 EXPECT_EQ(50, animation->timeToReverseEffectChange()); 373 EXPECT_EQ(50, animation->timeToReverseEffectChange());
376 } 374 }
377 375
378 } // namespace WebCore 376 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/bindings/v8/WorkerScriptController.cpp ('k') | Source/core/animation/AnimationTimingInputTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698