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