4 <style type="text/css">
10 background-color: black;
13 <script type="text/javascript">
15 function log(message) {
16 var results = document.getElementById('results');
17 results.innerHTML += message + '<br>';
20 function validateFinishEvent(player, event) {
21 if (event.target === player) {
22 log('PASS: ' + player.name + ' is target');
24 log('FAIL: expected target named ' + player.name + ', actual target is ' + event.target);
26 if (event.currentTime === player.currentTime) {
27 log('PASS: event currentTime equals player currentTime');
29 log('FAIL: event currentTime ' + event.currentTime + ' does not equal player currentTime ' + player.currentTime);
31 if (event.timelineTime === document.timeline.currentTime) {
32 log('PASS: event timelineTime equals timeline currentTime');
34 log('FAIL: event timelineTime ' + event.timelineTime +
35 ' does not equal timeline currentTime ' + document.timeline.currentTime);
39 var playerTop, playerMiddle, playerBottom;
41 function onFinishTop(event) {
42 validateFinishEvent(playerTop, event);
43 playerMiddle.cancel();
46 function onFinishMiddle(event) {
47 validateFinishEvent(playerMiddle, event);
48 playerBottom.currentTime = 0;
51 function onFinishBottom(event) {
52 validateFinishEvent(playerBottom, event);
53 if (window.testRunner) {
54 testRunner.notifyDone();
61 {left: '10px', offset: 0},
62 {left: '100px', offset: 1}
71 playerTop = document.getElementById('top').animate(keyframes, timing);
72 playerTop.name = 'playerTop';
73 playerTop.onfinish = onFinishTop;
75 playerMiddle = document.getElementById('middle').animate(keyframes, timing);
76 playerMiddle.name = 'playerMiddle';
77 playerMiddle.onfinish = onFinishMiddle;
79 playerBottom = document.getElementById('bottom').animate(keyframes, timing);
80 playerBottom.name = 'playerBottom';
81 playerBottom.onfinish = onFinishBottom;
83 // Finish event does not fire while currentTime is negative.
84 playerBottom.currentTime = -99;
85 playerBottom.source = null;
87 playerTop.currentTime = -0.1;
88 playerTop.source = null;
90 if (window.testRunner) {
91 testRunner.dumpAsText();
92 testRunner.waitUntilDone();
96 window.onload = animate;
101 <div class="anim" id="top"></div>
102 <div class="anim" id="middle"></div>
103 <div class="anim" id="bottom"></div>
104 <div id="results"></div>