| <!DOCTYPE html> |
| <html> |
| <head> |
| <style type="text/css"> |
| #target { |
| position: relative; |
| height: 50px; |
| width: 50px; |
| background-color: blue; |
| } |
| .animated { |
| -webkit-animation: test 1s linear; |
| animation: test 1s linear; |
| } |
| @-webkit-keyframes test { |
| from { left: 100px; } |
| to { left: 200px; } |
| } |
| @keyframes test { |
| from { left: 100px; } |
| to { left: 200px; } |
| } |
| </style> |
| <script type="text/javascript"> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| function log(message) { |
| var div = document.createElement('div'); |
| div.textContent = message; |
| document.body.appendChild(div); |
| } |
| |
| var target; |
| function go() { |
| target = document.getElementById('target'); |
| target.addEventListener('webkitAnimationStart', onStart); |
| target.classList.add('animated'); |
| } |
| |
| function onStart(e) { |
| log('INFO: Start event fired'); |
| target.removeEventListener('webkitAnimationStart', onStart); |
| requestAnimationFrame(function() { |
| setTimeout(setDisplayNone, 100); |
| }); |
| } |
| |
| var leftPropertyWhenSetDisplayNone; |
| function setDisplayNone() { |
| leftPropertyWhenSetDisplayNone = getComputedStyle(target).left; |
| target.style.display = 'none'; |
| requestAnimationFrame(function() { |
| setTimeout(setDisplayBlock, 100); |
| }); |
| } |
| |
| function setDisplayBlock() { |
| target.addEventListener('webkitAnimationStart', onRestart); |
| target.style.display = 'block'; |
| } |
| |
| function onRestart(e) { |
| log('INFO: Start event fired again'); |
| var pass = leftPropertyWhenSetDisplayNone > getComputedStyle(target).left; |
| log((pass ? 'PASS' : 'FAIL') + ': Left property was ' + (pass ? '' : 'not ') + 'reset correctly'); |
| if (window.testRunner) { |
| testRunner.notifyDone(); |
| } |
| } |
| </script> |
| </head> |
| <body onload="go()"> |
| <p> |
| Tests that setting the display property of a running animation to 'none' |
| terminates the animation, and that setting it a value other than 'none' |
| causes it to re-start from the start. |
| </p> |
| <div id="target"></div> |
| </body> |
| </html> |