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/Animation.h" | 6 #include "core/animation/Animation.h" |
7 | 7 |
8 #include "bindings/core/v8/Dictionary.h" | 8 #include "bindings/core/v8/Dictionary.h" |
| 9 #include "bindings/core/v8/Nullable.h" |
9 #include "core/animation/AnimationClock.h" | 10 #include "core/animation/AnimationClock.h" |
10 #include "core/animation/AnimationHelpers.h" | 11 #include "core/animation/AnimationHelpers.h" |
11 #include "core/animation/AnimationNodeTiming.h" | 12 #include "core/animation/AnimationNodeTiming.h" |
12 #include "core/animation/AnimationTestHelper.h" | 13 #include "core/animation/AnimationTestHelper.h" |
13 #include "core/animation/AnimationTimeline.h" | 14 #include "core/animation/AnimationTimeline.h" |
14 #include "core/animation/KeyframeEffectModel.h" | 15 #include "core/animation/KeyframeEffectModel.h" |
15 #include "core/animation/Timing.h" | 16 #include "core/animation/Timing.h" |
16 #include "core/dom/Document.h" | 17 #include "core/dom/Document.h" |
17 #include <gtest/gtest.h> | 18 #include <gtest/gtest.h> |
18 #include <v8.h> | 19 #include <v8.h> |
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
243 { | 244 { |
244 Vector<Dictionary, 0> jsKeyframes; | 245 Vector<Dictionary, 0> jsKeyframes; |
245 | 246 |
246 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate); | 247 v8::Handle<v8::Object> timingInputWithDuration = v8::Object::New(m_isolate); |
247 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); | 248 setV8ObjectPropertyAsNumber(timingInputWithDuration, "duration", 2.5); |
248 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val
ue>::Cast(timingInputWithDuration), m_isolate); | 249 Dictionary timingInputDictionaryWithDuration = Dictionary(v8::Handle<v8::Val
ue>::Cast(timingInputWithDuration), m_isolate); |
249 | 250 |
250 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen
t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState); | 251 RefPtrWillBeRawPtr<Animation> animationWithDuration = createAnimation(elemen
t.get(), jsKeyframes, timingInputDictionaryWithDuration, exceptionState); |
251 | 252 |
252 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedWithDuration = animationWit
hDuration->timing(); | 253 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedWithDuration = animationWit
hDuration->timing(); |
253 bool isNumber = false; | 254 Nullable<double> numberDuration; |
254 double numberDuration = std::numeric_limits<double>::quiet_NaN(); | 255 String stringDuration; |
255 bool isString = false; | 256 specifiedWithDuration->getDuration("duration", numberDuration, stringDuratio
n); |
256 String stringDuration = ""; | 257 EXPECT_FALSE(numberDuration.isNull()); |
257 specifiedWithDuration->getDuration("duration", isNumber, numberDuration, isS
tring, stringDuration); | 258 EXPECT_EQ(2.5, numberDuration.get()); |
258 EXPECT_TRUE(isNumber); | 259 EXPECT_TRUE(stringDuration.isNull()); |
259 EXPECT_EQ(2.5, numberDuration); | |
260 EXPECT_FALSE(isString); | |
261 EXPECT_EQ("", stringDuration); | |
262 | 260 |
263 | 261 |
264 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate); | 262 v8::Handle<v8::Object> timingInputNoDuration = v8::Object::New(m_isolate); |
265 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value
>::Cast(timingInputNoDuration), m_isolate); | 263 Dictionary timingInputDictionaryNoDuration = Dictionary(v8::Handle<v8::Value
>::Cast(timingInputNoDuration), m_isolate); |
266 | 264 |
267 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element.
get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState); | 265 RefPtrWillBeRawPtr<Animation> animationNoDuration = createAnimation(element.
get(), jsKeyframes, timingInputDictionaryNoDuration, exceptionState); |
268 | 266 |
269 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedNoDuration = animationNoDur
ation->timing(); | 267 RefPtrWillBeRawPtr<AnimationNodeTiming> specifiedNoDuration = animationNoDur
ation->timing(); |
270 isNumber = false; | 268 Nullable<double> numberDuration2; |
271 numberDuration = std::numeric_limits<double>::quiet_NaN(); | 269 String stringDuration2; |
272 isString = false; | 270 specifiedNoDuration->getDuration("duration", numberDuration2, stringDuration
2); |
273 stringDuration = ""; | 271 EXPECT_TRUE(numberDuration2.isNull()); |
274 specifiedNoDuration->getDuration("duration", isNumber, numberDuration, isStr
ing, stringDuration); | 272 EXPECT_FALSE(stringDuration2.isNull()); |
275 EXPECT_FALSE(isNumber); | 273 EXPECT_EQ("auto", stringDuration2); |
276 EXPECT_TRUE(std::isnan(numberDuration)); | |
277 EXPECT_TRUE(isString); | |
278 EXPECT_EQ("auto", stringDuration); | |
279 } | 274 } |
280 | 275 |
281 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) | 276 TEST_F(AnimationAnimationV8Test, SpecifiedSetters) |
282 { | 277 { |
283 Vector<Dictionary, 0> jsKeyframes; | 278 Vector<Dictionary, 0> jsKeyframes; |
284 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | 279 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); |
285 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); | 280 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); |
286 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); | 281 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); |
287 | 282 |
288 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); | 283 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
322 | 317 |
323 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) | 318 TEST_F(AnimationAnimationV8Test, SetSpecifiedDuration) |
324 { | 319 { |
325 Vector<Dictionary, 0> jsKeyframes; | 320 Vector<Dictionary, 0> jsKeyframes; |
326 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); | 321 v8::Handle<v8::Object> timingInput = v8::Object::New(m_isolate); |
327 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); | 322 Dictionary timingInputDictionary = Dictionary(v8::Handle<v8::Value>::Cast(ti
mingInput), m_isolate); |
328 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); | 323 RefPtrWillBeRawPtr<Animation> animation = createAnimation(element.get(), jsK
eyframes, timingInputDictionary, exceptionState); |
329 | 324 |
330 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); | 325 RefPtrWillBeRawPtr<AnimationNodeTiming> specified = animation->timing(); |
331 | 326 |
332 bool isNumber = false; | 327 Nullable<double> numberDuration; |
333 double numberDuration = std::numeric_limits<double>::quiet_NaN(); | 328 String stringDuration; |
334 bool isString = false; | 329 specified->getDuration("duration", numberDuration, stringDuration); |
335 String stringDuration = ""; | 330 EXPECT_TRUE(numberDuration.isNull()); |
336 specified->getDuration("duration", isNumber, numberDuration, isString, strin
gDuration); | 331 EXPECT_FALSE(stringDuration.isNull()); |
337 EXPECT_FALSE(isNumber); | |
338 EXPECT_TRUE(std::isnan(numberDuration)); | |
339 EXPECT_TRUE(isString); | |
340 EXPECT_EQ("auto", stringDuration); | 332 EXPECT_EQ("auto", stringDuration); |
341 | 333 |
342 specified->setDuration("duration", 2.5); | 334 specified->setDuration("duration", 2.5); |
343 isNumber = false; | 335 Nullable<double> numberDuration2; |
344 numberDuration = std::numeric_limits<double>::quiet_NaN(); | 336 String stringDuration2; |
345 isString = false; | 337 specified->getDuration("duration", numberDuration2, stringDuration2); |
346 stringDuration = ""; | 338 EXPECT_FALSE(numberDuration2.isNull()); |
347 specified->getDuration("duration", isNumber, numberDuration, isString, strin
gDuration); | 339 EXPECT_EQ(2.5, numberDuration2.get()); |
348 EXPECT_TRUE(isNumber); | 340 EXPECT_TRUE(stringDuration2.isNull()); |
349 EXPECT_EQ(2.5, numberDuration); | |
350 EXPECT_FALSE(isString); | |
351 EXPECT_EQ("", stringDuration); | |
352 } | 341 } |
353 | 342 |
354 TEST_F(AnimationAnimationTest, TimeToEffectChange) | 343 TEST_F(AnimationAnimationTest, TimeToEffectChange) |
355 { | 344 { |
356 Timing timing; | 345 Timing timing; |
357 timing.iterationDuration = 100; | 346 timing.iterationDuration = 100; |
358 timing.startDelay = 100; | 347 timing.startDelay = 100; |
359 timing.endDelay = 100; | 348 timing.endDelay = 100; |
360 timing.fillMode = Timing::FillModeNone; | 349 timing.fillMode = Timing::FillModeNone; |
361 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi
ng); | 350 RefPtrWillBeRawPtr<Animation> animation = Animation::create(0, nullptr, timi
ng); |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
458 EXPECT_EQ(element.get(), animation->target()); | 447 EXPECT_EQ(element.get(), animation->target()); |
459 document->timeline().play(animation.get()); | 448 document->timeline().play(animation.get()); |
460 document.clear(); | 449 document.clear(); |
461 element.clear(); | 450 element.clear(); |
462 #if !ENABLE(OILPAN) | 451 #if !ENABLE(OILPAN) |
463 EXPECT_EQ(0, animation->target()); | 452 EXPECT_EQ(0, animation->target()); |
464 #endif | 453 #endif |
465 } | 454 } |
466 | 455 |
467 } // namespace blink | 456 } // namespace blink |
OLD | NEW |