| <!DOCTYPE html> |
| |
| <html> |
| <head> |
| <style> |
| #container { |
| height: 300px; |
| width: 700px; |
| background: #fcc; |
| font-family: ArialRoundedMTBold, sans-serif; |
| font-size: 200%; |
| } |
| |
| #container div { |
| position: absolute; |
| background-color: #933; |
| width: 200px; |
| height: 100px; |
| left: 50px; |
| } |
| #a { |
| top: 100px; |
| } |
| #container.run #a { |
| left: 450px; |
| -webkit-transition-property: left; |
| -webkit-transition-duration: 0.5s; |
| -webkit-transition-timing-function: linear; |
| } |
| #b { |
| top: 250px; |
| } |
| #container.run #b { |
| -webkit-transform: translate(400px, 0px); |
| -webkit-transition-property: -webkit-transform; |
| -webkit-transition-duration: 0.5s; |
| -webkit-transition-timing-function: linear; |
| } |
| </style> |
| <script> |
| if (window.testRunner) { |
| testRunner.dumpAsText(); |
| testRunner.waitUntilDone(); |
| } |
| |
| result = "<span style='color:red'>CHECK NOT COMPLETED</span>"; |
| |
| function isEqual(actual, desired, tolerance) |
| { |
| var diff = Math.abs(actual - desired); |
| return diff < tolerance; |
| } |
| |
| function cancelTransition() |
| { |
| document.getElementById("container").className = ""; |
| document.body.offsetHeight; |
| } |
| |
| function restartTransition() |
| { |
| document.getElementById("container").className = "run"; |
| document.body.offsetHeight; |
| // The transition should restart at the beginning here. After 250 it should be halfway done. |
| setTimeout("check()", 250); |
| } |
| |
| function check() |
| { |
| var left = parseFloat(window.getComputedStyle(document.getElementById('a')).left); |
| result = "left:"; |
| if (!isEqual(left, 250, 50)) |
| result += "<span style='color:red'>FAIL(was:" + left + ", s/b:150)</span>"; |
| else |
| result += "<span style='color:green'>PASS</span>"; |
| |
| result += ", webkitTransform:"; |
| |
| var transform = window.getComputedStyle(document.getElementById('b')).webkitTransform; |
| transform = transform.split("("); |
| transform = transform[1].split(","); |
| if (!isEqual(transform[4], 200, 50)) |
| result += "<span style='color:red'>FAIL(was:" + transform[4] + ", s/b:50)</span>"; |
| else |
| result += "<span style='color:green'>PASS</span>"; |
| |
| document.getElementById('result').innerHTML = result; |
| if (window.testRunner) |
| testRunner.notifyDone(); |
| } |
| |
| function start() |
| { |
| document.getElementById("container").className = "run"; |
| document.body.offsetHeight; |
| setTimeout("cancelTransition()", 100); |
| setTimeout("restartTransition()", 200); |
| } |
| </script> |
| </head> |
| <body onload="start()"> |
| <p> |
| Test removes the transition properties while the transition is running, then adds them back in. |
| If working properly the transitions should start from the beginning. But there was a bug that |
| would cause the transition to continue to run (although with no visible effect). So when you |
| restarted, it would pick up where it left off. |
| </p> |
| <div id="container"> |
| <div id="a" class="tester">left</div> |
| <div id="b" class="tester">translate</div> |
| </div> |
| <div id="result"> |
| </div> |
| </body> |
| </html> |