| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" |
| "http://www.w3.org/TR/html4/loose.dtd"> |
| |
| <html lang="en"> |
| <head> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> |
| <title>Test Changing Name of A Keyframes Rule Using CSSOM</title> |
| <style type="text/css" media="screen"> |
| #box { |
| position: relative; |
| left: 0; |
| top: 0; |
| height: 100px; |
| width: 100px; |
| background-color: blue; |
| -webkit-animation-duration: 0.5s; |
| -webkit-animation-timing-function: linear; |
| -webkit-animation-name: "bar"; |
| } |
| @-webkit-keyframes "foo" { |
| from { left: 100px; } |
| 40% { left: 200px; } |
| 60% { left: 200px; } |
| to { left: 300px; } |
| } |
| </style> |
| <script src="animation-test-helpers.js" type="text/javascript" charset="utf-8"></script> |
| <script type="text/javascript" charset="utf-8"> |
| |
| const expectedValues = [ |
| // [animation-name, time, element-id, property, expected-value, tolerance] |
| [null, 0.25, "box", "left", 200, 10], |
| ]; |
| |
| function findKeyframesRule(rule) |
| { |
| var ss = document.styleSheets; |
| for (var i = 0; i < ss.length; ++i) { |
| for (var j = 0; j < ss[i].cssRules.length; ++j) { |
| if (ss[i].cssRules[j].type == window.CSSRule.WEBKIT_KEYFRAMES_RULE && ss[i].cssRules[j].name == rule) |
| return ss[i].cssRules[j]; |
| } |
| } |
| |
| return null; |
| } |
| |
| function change() |
| { |
| // change keyframes name |
| var keyframes = findKeyframesRule("foo"); |
| keyframes.name = "anim"; |
| document.getElementById('box').style.webkitAnimationName = "anim"; |
| |
| runAnimationTest(expectedValues); |
| } |
| |
| function setup() |
| { |
| if (window.layoutTestController) { |
| layoutTestController.dumpAsText(); |
| layoutTestController.waitUntilDone(); |
| if (layoutTestController.pauseAnimationAtTimeOnElementWithId("bar", 0.5, "box")) |
| document.getElementById("pre-result").innerHTML = "FAIL: animation is running"; |
| else |
| document.getElementById("pre-result").innerHTML = "PASS: animation is not running"; |
| } |
| |
| setTimeout(change, 200); |
| } |
| |
| </script> |
| </head> |
| <body onload="setup()"> |
| This test starts by making sure the animation is not running, because the animation-name and the |
| name of they @keyframes rule do not match. Then it changes the name of the @keyframes rule so they |
| match and makes sure the animation is now running. |
| <div id="box"> |
| </div> |
| <div id="pre-result"> |
| </div> |
| <div id="result"> |
| </div> |
| </body> |
| </html> |