OLD | NEW |
(Empty) | |
| 1 <!DOCTYPE html> |
| 2 <meta charset=utf-8> |
| 3 <title>endDelay tests</title> |
| 4 <link rel="help" href="http://w3c.github.io/web-animations/#dom-animationeffectt
iming-enddelay"> |
| 5 <link rel="author" title="Ryo Motozawa" href="mailto:motozawa@mozilla-japan.org"
> |
| 6 <script src="../../../../resources/testharness.js"></script> |
| 7 <script src="../../../../resources/testharnessreport.js"></script> |
| 8 <script src="../testcommon.js"></script> |
| 9 <body> |
| 10 <div id="log"></div> |
| 11 <script> |
| 12 'use strict'; |
| 13 |
| 14 test(function(t) { |
| 15 var div = createDiv(t); |
| 16 var anim = div.animate({ opacity: [ 0, 1 ] }, 2000); |
| 17 anim.effect.timing.endDelay = 123.45; |
| 18 assert_approx_equals(anim.effect.timing.endDelay, 123.45, 0.000001, |
| 19 'set endDelay 123.45'); |
| 20 assert_approx_equals(anim.effect.getComputedTiming().endDelay, 123.45, |
| 21 0.000001, |
| 22 'getComputedTiming() after set endDelay 123.45'); |
| 23 }, 'set endDelay 123.45'); |
| 24 |
| 25 test(function(t) { |
| 26 var div = createDiv(t); |
| 27 var anim = div.animate({ opacity: [ 0, 1 ] }, 2000); |
| 28 anim.effect.timing.endDelay = -1000; |
| 29 assert_equals(anim.effect.timing.endDelay, -1000, 'set endDelay -1000'); |
| 30 assert_equals(anim.effect.getComputedTiming().endDelay, -1000, |
| 31 'getComputedTiming() after set endDelay -1000'); |
| 32 }, 'set endDelay -1000'); |
| 33 |
| 34 test(function(t) { |
| 35 var div = createDiv(t); |
| 36 var anim = div.animate({ opacity: [ 0, 1 ] }, 2000); |
| 37 assert_throws({name: "TypeError"}, function() { |
| 38 anim.effect.timing.endDelay = Infinity; |
| 39 }, 'we can not assign Infinity to timing.endDelay'); |
| 40 }, 'set endDelay Infinity'); |
| 41 |
| 42 test(function(t) { |
| 43 var div = createDiv(t); |
| 44 var anim = div.animate({ opacity: [ 0, 1 ] }, 2000); |
| 45 assert_throws({name: "TypeError"}, function() { |
| 46 anim.effect.timing.endDelay = -Infinity; |
| 47 }, 'we can not assign negative Infinity to timing.endDelay'); |
| 48 }, 'set endDelay negative Infinity'); |
| 49 |
| 50 async_test(function(t) { |
| 51 var div = createDiv(t); |
| 52 var anim = div.animate({ opacity: [ 0, 1 ] }, |
| 53 { duration: 100000, endDelay: 50000 }); |
| 54 anim.onfinish = t.step_func(function(event) { |
| 55 assert_unreached('onfinish event should not be fired'); |
| 56 }); |
| 57 |
| 58 anim.ready.then(function() { |
| 59 anim.currentTime = 100000; |
| 60 return waitForAnimationFrames(2); |
| 61 }).then(t.step_func(function() { |
| 62 t.done(); |
| 63 })); |
| 64 }, 'onfinish event is not fired duration endDelay'); |
| 65 |
| 66 async_test(function(t) { |
| 67 var div = createDiv(t); |
| 68 var anim = div.animate({ opacity: [ 0, 1 ] }, |
| 69 { duration: 100000, endDelay: 30000 }); |
| 70 var finishedTimelineTime; |
| 71 anim.finished.then(function() { |
| 72 finishedTimelineTime = anim.timeline.currentTime; |
| 73 }); |
| 74 |
| 75 var receivedEvents = []; |
| 76 anim.onfinish = function(event) { |
| 77 receivedEvents.push(event); |
| 78 } |
| 79 |
| 80 anim.ready.then(function() { |
| 81 anim.currentTime = 110000; // during endDelay |
| 82 return waitForAnimationFrames(2); |
| 83 }).then(t.step_func(function() { |
| 84 assert_equals(receivedEvents.length, 0, |
| 85 'onfinish event is should not be fired' + |
| 86 'when currentTime is during endDelay'); |
| 87 anim.currentTime = 130000; // after endTime |
| 88 return waitForAnimationFrames(2); |
| 89 })).then(t.step_func_done(function() { |
| 90 assert_equals(receivedEvents.length, 1, 'length of array should be one'); |
| 91 assert_equals(receivedEvents[0].timelineTime, finishedTimelineTime, |
| 92 'receivedEvents[0].timelineTime should equal to the animation timeline ' |
| 93 + 'when finished promise is resolved'); |
| 94 })); |
| 95 }, 'onfinish event is fired currentTime is after endTime'); |
| 96 |
| 97 </script> |
| 98 </body> |
OLD | NEW |