undefined reference to 'JSC::B3::BasicBlock::fallThrough() const
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / web-animations / interfaces / Animation / onfinish.html
1 <!DOCTYPE html>
2 <meta charset=utf-8>
3 <title>Animation.onfinish</title>
4 <link rel="help" href="https://drafts.csswg.org/web-animations/#dom-animation-onfinish">
5 <script src="/resources/testharness.js"></script>
6 <script src="/resources/testharnessreport.js"></script>
7 <script src="../../testcommon.js"></script>
8 <body>
9 <div id="log"></div>
10 <script>
11 'use strict';
12
13 async_test(t => {
14   const div = createDiv(t);
15   const animation = div.animate({}, 100 * MS_PER_SEC);
16   let finishedTimelineTime;
17   animation.finished.then(() => {
18     finishedTimelineTime = animation.timeline.currentTime;
19   });
20
21   animation.onfinish = t.step_func_done(event => {
22     assert_equals(event.currentTime, 0,
23       'event.currentTime should be zero');
24     assert_equals(event.timelineTime, finishedTimelineTime,
25       'event.timelineTime should equal to the animation timeline ' +
26       'when finished promise is resolved');
27   });
28
29   animation.playbackRate = -1;
30 }, 'onfinish event is fired when the currentTime < 0 and ' +
31    'the playbackRate < 0');
32
33 async_test(t => {
34   const div = createDiv(t);
35   const animation = div.animate({}, 100 * MS_PER_SEC);
36
37   let finishedTimelineTime;
38   animation.finished.then(() => {
39     finishedTimelineTime = animation.timeline.currentTime;
40   });
41
42   animation.onfinish = t.step_func_done(event => {
43     assert_equals(event.currentTime, 100 * MS_PER_SEC,
44       'event.currentTime should be the effect end');
45     assert_equals(event.timelineTime, finishedTimelineTime,
46       'event.timelineTime should equal to the animation timeline ' +
47       'when finished promise is resolved');
48   });
49
50   animation.currentTime = 100 * MS_PER_SEC;
51 }, 'onfinish event is fired when the currentTime > 0 and ' +
52    'the playbackRate > 0');
53
54 async_test(t => {
55   const div = createDiv(t);
56   const animation = div.animate({}, 100 * MS_PER_SEC);
57
58   let finishedTimelineTime;
59   animation.finished.then(() => {
60     finishedTimelineTime = animation.timeline.currentTime;
61   });
62
63   animation.onfinish = t.step_func_done(event => {
64     assert_equals(event.currentTime, 100 * MS_PER_SEC,
65       'event.currentTime should be the effect end');
66     assert_equals(event.timelineTime, finishedTimelineTime,
67       'event.timelineTime should equal to the animation timeline ' +
68       'when finished promise is resolved');
69   });
70
71   animation.finish();
72 }, 'onfinish event is fired when animation.finish() is called');
73
74 promise_test(t => {
75   const div = createDiv(t);
76   const animation = div.animate({}, 100 * MS_PER_SEC);
77
78   animation.onfinish = event => {
79     assert_unreached('onfinish event should not be fired');
80   };
81
82   animation.currentTime = 100 * MS_PER_SEC / 2;
83   animation.pause();
84
85   return animation.ready.then(() => {
86     animation.currentTime = 100 * MS_PER_SEC;
87     return waitForAnimationFrames(2);
88   });
89 }, 'onfinish event is not fired when paused');
90
91 promise_test(t => {
92   const div = createDiv(t);
93   const animation = div.animate({}, 100 * MS_PER_SEC);
94   animation.onfinish = event => {
95     assert_unreached('onfinish event should not be fired');
96   };
97
98   return animation.ready.then(() => {
99     animation.playbackRate = 0;
100     animation.currentTime = 100 * MS_PER_SEC;
101     return waitForAnimationFrames(2);
102   });
103 }, 'onfinish event is not fired when the playbackRate is zero');
104
105 promise_test(t => {
106   const div = createDiv(t);
107   const animation = div.animate({}, 100 * MS_PER_SEC);
108   animation.onfinish = event => {
109     assert_unreached('onfinish event should not be fired');
110   };
111
112   return animation.ready.then(() => {
113     animation.currentTime = 100 * MS_PER_SEC;
114     animation.currentTime = 100 * MS_PER_SEC / 2;
115     return waitForAnimationFrames(2);
116   });
117 }, 'onfinish event is not fired when the animation falls out ' +
118    'finished state immediately');
119
120 </script>
121 </body>