diff options
Diffstat (limited to 'testing/web-platform/tests/web-animations/interfaces/Animation/constructor.html')
-rw-r--r-- | testing/web-platform/tests/web-animations/interfaces/Animation/constructor.html | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/testing/web-platform/tests/web-animations/interfaces/Animation/constructor.html b/testing/web-platform/tests/web-animations/interfaces/Animation/constructor.html new file mode 100644 index 000000000..4f76194b6 --- /dev/null +++ b/testing/web-platform/tests/web-animations/interfaces/Animation/constructor.html @@ -0,0 +1,115 @@ +<!DOCTYPE html> +<meta charset=utf-8> +<title>Animation constructor tests</title> +<link rel="help" href="http://w3c.github.io/web-animations/#dom-animation-animation"> +<link rel="author" title="Hiroyuki Ikezoe" href="mailto:hiikezoe@mozilla-japan.org"> +<script src="/resources/testharness.js"></script> +<script src="/resources/testharnessreport.js"></script> +<script src="../../testcommon.js"></script> +<body> +<div id="log"></div> +<div id="target"></div> +<script> +"use strict"; + +var gTarget = document.getElementById("target"); + +function createEffect() { + return new KeyframeEffectReadOnly(gTarget, { opacity: [0, 1] }); +} + +function createNull() { + return null; +} + +var gTestArguments = [ + { + createEffect: createNull, + timeline: null, + expectedTimeline: null, + expectedTimelineDescription: "null", + description: "with null effect and null timeline" + }, + { + createEffect: createNull, + timeline: document.timeline, + expectedTimeline: document.timeline, + expectedTimelineDescription: "document.timeline", + description: "with null effect and non-null timeline" + }, + { + createEffect: createNull, + expectedTimeline: document.timeline, + expectedTimelineDescription: "document.timeline", + description: "with null effect and no timeline parameter" + }, + { + createEffect: createEffect, + timeline: null, + expectedTimeline: null, + expectedTimelineDescription: "null", + description: "with non-null effect and null timeline" + }, + { + createEffect: createEffect, + timeline: document.timeline, + expectedTimeline: document.timeline, + expectedTimelineDescription: "document.timeline", + description: "with non-null effect and non-null timeline" + }, + { + createEffect: createEffect, + expectedTimeline: document.timeline, + expectedTimelineDescription: "document.timeline", + description: "with non-null effect and no timeline parameter" + }, +]; + +gTestArguments.forEach(function(args) { + test(function(t) { + var effect = args.createEffect(); + var animation = new Animation(effect, args.timeline); + + assert_not_equals(animation, null, + "An animation sohuld be created"); + assert_equals(animation.effect, effect, + "Animation returns the same effect passed to " + + "the Constructor"); + assert_equals(animation.timeline, args.expectedTimeline, + "Animation timeline should be " + args.expectedTimelineDescription); + assert_equals(animation.playState, "idle", + "Animation.playState should be initially 'idle'"); + }, "Animation can be constructed " + args.description); +}); + +test(function(t) { + var effect = new KeyframeEffectReadOnly(null, + { left: ["10px", "20px"] }, + { duration: 10000, + fill: "forwards" }); + var anim = new Animation(effect, document.timeline); + anim.pause(); + assert_equals(effect.getComputedTiming().progress, 0.0); + anim.currentTime += 5000; + assert_equals(effect.getComputedTiming().progress, 0.5); + anim.finish(); + assert_equals(effect.getComputedTiming().progress, 1.0); +}, "Animation constructed by an effect with null target runs normally"); + +async_test(function(t) { + var iframe = document.createElement('iframe'); + + iframe.addEventListener('load', t.step_func(function() { + var div = createDiv(t, iframe.contentDocument); + var effect = new KeyframeEffectReadOnly(div, null, 10000); + var anim = new Animation(effect); + assert_equals(anim.timeline, document.timeline); + iframe.remove(); + t.done(); + })); + + document.body.appendChild(iframe); +}, "Animation constructed with a keyframe that target element is in iframe"); + +</script> +</body> |