OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
4 | 4 |
5 <body> | 5 <body> |
6 <div id='e'></div> | 6 <div id='e'></div> |
7 </body> | 7 </body> |
8 | 8 |
9 <script> | 9 <script> |
10 var element = document.getElementById('e'); | 10 var element = document.getElementById('e'); |
11 var keyframes = [{opacity: '1', offset: 0}, {opacity: '0', offset: 1}]; | 11 var keyframes = [{opacity: '1', offset: 0}, {opacity: '0', offset: 1}]; |
12 | 12 |
13 test(function() { | 13 test(function() { |
14 var animation = new Animation(element, keyframes); | 14 var keyframeEffect = new KeyframeEffect(element, keyframes); |
15 assert_equals(animation.computedTiming.localTime, null); | 15 assert_equals(keyframeEffect.computedTiming.localTime, null); |
16 assert_equals(animation.computedTiming.currentIteration, null); | 16 assert_equals(keyframeEffect.computedTiming.currentIteration, null); |
17 }, 'TimedItem.localTime and TimedItem.currentIteration are null when animation i
s not associated with a Player'); | 17 }, 'localTime and currentIteration are null when the KeyframeEffect is not assoc
iated with an Animation'); |
18 | 18 |
19 test(function() { | 19 test(function() { |
20 var player = element.animate(keyframes, {fill: 'both', duration: 2000, itera
tions: 3}); | 20 var animation = element.animate(keyframes, {fill: 'both', duration: 2000, it
erations: 3}); |
21 var animation = player.source; | 21 var keyframeEffect = animation.source; |
22 player.currentTime = -1000; | 22 animation.currentTime = -1000; |
23 assert_equals(animation.computedTiming.localTime, -1000, 'localTime'); | 23 assert_equals(keyframeEffect.computedTiming.localTime, -1000, 'localTime'); |
24 assert_equals(animation.computedTiming.currentIteration, 0); | 24 assert_equals(keyframeEffect.computedTiming.currentIteration, 0); |
25 player.currentTime = 1000; | 25 animation.currentTime = 1000; |
26 assert_equals(animation.computedTiming.localTime, 1000); | 26 assert_equals(keyframeEffect.computedTiming.localTime, 1000); |
27 assert_equals(animation.computedTiming.currentIteration, 0); | 27 assert_equals(keyframeEffect.computedTiming.currentIteration, 0); |
28 player.currentTime = 5000; | 28 animation.currentTime = 5000; |
29 assert_equals(animation.computedTiming.localTime, 5000); | 29 assert_equals(keyframeEffect.computedTiming.localTime, 5000); |
30 assert_equals(animation.computedTiming.currentIteration, 2); | 30 assert_equals(keyframeEffect.computedTiming.currentIteration, 2); |
31 player.currentTime = 7000; | 31 animation.currentTime = 7000; |
32 assert_equals(animation.computedTiming.localTime, 7000); | 32 assert_equals(keyframeEffect.computedTiming.localTime, 7000); |
33 assert_equals(animation.computedTiming.currentIteration, 2); | 33 assert_equals(keyframeEffect.computedTiming.currentIteration, 2); |
34 }, 'TimedItem.localTime and TimedItem.currentIteration return reasonable values
when an animation is in effect'); | 34 }, 'TimedItem.localTime and TimedItem.currentIteration return reasonable values
when an keyframeEffect is in effect'); |
35 | 35 |
36 test(function() { | 36 test(function() { |
37 var player = element.animate(keyframes); | 37 var animation = element.animate(keyframes); |
38 var animation = player.source; | 38 var keyframeEffect = animation.source; |
39 player.currentTime = -1; | 39 animation.currentTime = -1; |
40 assert_equals(animation.computedTiming.currentIteration, null); | 40 assert_equals(keyframeEffect.computedTiming.currentIteration, null); |
41 player.currentTime = 1; | 41 animation.currentTime = 1; |
42 assert_equals(animation.computedTiming.currentIteration, null); | 42 assert_equals(keyframeEffect.computedTiming.currentIteration, null); |
43 }, 'TimedItem.currentIteration is null when animation is not in effect'); | 43 }, 'TimedItem.currentIteration is null when keyframeEffect is not in effect'); |
44 | 44 |
45 test(function() { | 45 test(function() { |
46 var animation = new Animation(element, keyframes, 2); | 46 var keyframeEffect = new KeyframeEffect(element, keyframes, 2); |
47 assert_equals(animation.computedTiming.startTime, 0); | 47 assert_equals(keyframeEffect.computedTiming.startTime, 0); |
48 assert_equals(animation.computedTiming.endTime, 2); | 48 assert_equals(keyframeEffect.computedTiming.endTime, 2); |
49 assert_equals(animation.computedTiming.duration, 2); | 49 assert_equals(keyframeEffect.computedTiming.duration, 2); |
50 assert_equals(animation.computedTiming.activeDuration, 2); | 50 assert_equals(keyframeEffect.computedTiming.activeDuration, 2); |
51 }, 'TimedItem startTime, endTime, duration, activeDuration are sensible for a si
mple animation'); | 51 }, 'TimedItem startTime, endTime, duration, activeDuration are sensible for a si
mple keyframeEffect'); |
52 | 52 |
53 test(function() { | 53 test(function() { |
54 var animation = new Animation(element, keyframes, {duration: 3, iterations: 4,
delay: 5}); | 54 var keyframeEffect = new KeyframeEffect(element, keyframes, {duration: 3, iter
ations: 4, delay: 5}); |
55 assert_equals(animation.computedTiming.startTime, 0); | 55 assert_equals(keyframeEffect.computedTiming.startTime, 0); |
56 assert_equals(animation.computedTiming.endTime, 17); | 56 assert_equals(keyframeEffect.computedTiming.endTime, 17); |
57 assert_equals(animation.computedTiming.duration, 3); | 57 assert_equals(keyframeEffect.computedTiming.duration, 3); |
58 assert_equals(animation.computedTiming.activeDuration, 12); | 58 assert_equals(keyframeEffect.computedTiming.activeDuration, 12); |
59 }, 'TimedItem startTime, endTime, duration, activeDuration are sensible for anim
ations with delays and iterations'); | 59 }, 'TimedItem startTime, endTime, duration, activeDuration are sensible for keyf
rameEffects with delays and iterations'); |
60 | 60 |
61 test(function() { | 61 test(function() { |
62 var animation = new Animation(element, keyframes, {delay: 1}); | 62 var keyframeEffect = new KeyframeEffect(element, keyframes, {delay: 1}); |
63 assert_equals(animation.computedTiming.duration, 0); | 63 assert_equals(keyframeEffect.computedTiming.duration, 0); |
64 }, 'TimedItem duration is calculated when no duration is specified'); | 64 }, 'TimedItem duration is calculated when no duration is specified'); |
65 | 65 |
66 test(function() { | 66 test(function() { |
67 var timing = new Animation(element, keyframes).timing; | 67 var timing = new KeyframeEffect(element, keyframes).timing; |
68 for (var attr of ['delay', 'endDelay', 'iterationStart', 'playbackRate']) { | 68 for (var attr of ['delay', 'endDelay', 'iterationStart', 'playbackRate']) { |
69 assert_throws(new TypeError, function() { timing[attr] = NaN; }, attr); | 69 assert_throws(new TypeError, function() { timing[attr] = NaN; }, attr); |
70 assert_throws(new TypeError, function() { timing[attr] = Infinity; }, attr); | 70 assert_throws(new TypeError, function() { timing[attr] = Infinity; }, attr); |
71 } | 71 } |
72 }, 'Restricted double attributes on the Timing interface throws for non-finite v
alues.'); | 72 }, 'Restricted double attributes on the Timing interface throws for non-finite v
alues.'); |
73 | 73 |
74 </script> | 74 </script> |
OLD | NEW |