| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| </head> |
| <body> |
| <script> |
| description("Test the parsing and the computed style values of the animations properties.") |
| |
| var testContainer = document.createElement("div"); |
| document.body.appendChild(testContainer); |
| |
| testContainer.innerHTML = '<div style="width:500px;height:500px"><div id="test">hello</div></div>'; |
| |
| e = document.getElementById('test'); |
| style = e.style; |
| computedStyle = window.getComputedStyle(e, null); |
| |
| // This function checks the return value of computedStyle.animation and verifies Blink can parse it. |
| function checkAnimationShorthandValue() { |
| var before = computedStyle.getPropertyValue('animation'); |
| e.style.animation = ''; |
| e.style.animation = before; |
| return (computedStyle.getPropertyValue('animation') == before); |
| } |
| |
| debug("Valid animation-name values."); |
| // Initial test. |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| style.animationName = "none"; |
| shouldNotBe("Object.keys(style).indexOf('animationName')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationName')", "-1"); |
| shouldBe("style.animationName", "'none'"); |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("style.webkitAnimationName", "'none'"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| style.animationName = "none, none"; |
| shouldBe("style.animationName", "'none, none'"); |
| shouldBe("computedStyle.animationName", "'none, none'"); |
| shouldBe("style.webkitAnimationName", "'none, none'"); |
| shouldBe("computedStyle.webkitAnimationName", "'none, none'"); |
| |
| style.animationName = "myAnim"; |
| shouldBe("style.animationName", "'myAnim'"); |
| shouldBe("computedStyle.animationName", "'myAnim'"); |
| shouldBe("style.webkitAnimationName", "'myAnim'"); |
| shouldBe("computedStyle.webkitAnimationName", "'myAnim'"); |
| |
| style.animationName = "background-position, font-size"; |
| shouldBe("style.animationName", "'background-position, font-size'"); |
| shouldBe("computedStyle.animationName", "'background-position, font-size'"); |
| shouldBe("style.webkitAnimationName", "'background-position, font-size'"); |
| shouldBe("computedStyle.webkitAnimationName", "'background-position, font-size'"); |
| |
| style.animationName = "background-position, font-size, color"; |
| shouldBe("style.animationName", "'background-position, font-size, color'"); |
| shouldBe("computedStyle.animationName", "'background-position, font-size, color'"); |
| shouldBe("style.webkitAnimationName", "'background-position, font-size, color'"); |
| shouldBe("computedStyle.webkitAnimationName", "'background-position, font-size, color'"); |
| |
| style.animationName = "all, font-size, color"; |
| shouldBe("style.animationName", "'all, font-size, color'"); |
| shouldBe("computedStyle.animationName", "'all, font-size, color'"); |
| shouldBe("style.webkitAnimationName", "'all, font-size, color'"); |
| shouldBe("computedStyle.webkitAnimationName", "'all, font-size, color'"); |
| |
| style.animationName = "inherit"; |
| shouldBe("style.animationName", "'inherit'"); |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("style.webkitAnimationName", "'inherit'"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| style.animationName = "initial"; |
| shouldBe("style.animationName", "'initial'"); |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("style.webkitAnimationName", "'initial'"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| debug("Invalid animation-name values."); |
| style.animationName = ""; |
| |
| style.animationName = "0"; |
| shouldBe("style.animationName", "''"); |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("style.webkitAnimationName", "''"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| style.animationName = "all none"; |
| shouldBe("style.animationName", "''"); |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("style.webkitAnimationName", "''"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| style.animationName = "opacity width"; |
| shouldBe("style.animationName", "''"); |
| shouldBe("computedStyle.animationName", "'none'"); |
| shouldBe("style.webkitAnimationName", "''"); |
| shouldBe("computedStyle.webkitAnimationName", "'none'"); |
| |
| style.animationName = ""; |
| |
| debug("Valid animation-duration values."); |
| // Initial test. |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "0s"; |
| shouldNotBe("Object.keys(style).indexOf('animationDuration')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationDuration')", "-1"); |
| shouldBe("style.animationDuration", "'0s'"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "'0s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "5s"; |
| shouldBe("style.animationDuration", "'5s'"); |
| shouldBe("computedStyle.animationDuration", "'5s'"); |
| shouldBe("style.webkitAnimationDuration", "'5s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'5s'"); |
| |
| style.animationDuration = "10ms"; |
| shouldBe("style.animationDuration", "'10ms'"); |
| shouldBe("computedStyle.animationDuration", "'0.01s'"); |
| shouldBe("style.webkitAnimationDuration", "'10ms'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0.01s'"); |
| |
| style.animationDuration = "10ms, 20s"; |
| shouldBe("style.animationDuration", "'10ms, 20s'"); |
| shouldBe("computedStyle.animationDuration", "'0.01s, 20s'"); |
| shouldBe("style.webkitAnimationDuration", "'10ms, 20s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0.01s, 20s'"); |
| |
| debug("Invalid animation-duration values."); |
| style.animationDuration = ""; |
| |
| // Negative values are invalid. |
| style.animationDuration = "-10ms"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "'5ms'"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "30px"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "solid"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "20"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "20%"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| style.animationDuration = "0s, 20px"; |
| shouldBe("style.animationDuration", "''"); |
| shouldBe("computedStyle.animationDuration", "'0s'"); |
| shouldBe("style.webkitAnimationDuration", "''"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'0s'"); |
| |
| debug("Valid animation-timing-function values."); |
| // Initial test. |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "linear"; |
| shouldNotBe("Object.keys(style).indexOf('animationTimingFunction')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationTimingFunction')", "-1"); |
| shouldBe("style.animationTimingFunction", "'linear'"); |
| shouldBe("computedStyle.animationTimingFunction", "'linear'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'linear'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'linear'"); |
| |
| style.animationTimingFunction = "ease"; |
| shouldBe("style.animationTimingFunction", "'ease'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'ease'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "ease-in"; |
| shouldBe("style.animationTimingFunction", "'ease-in'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease-in'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'ease-in'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease-in'"); |
| |
| style.animationTimingFunction = "ease-out"; |
| shouldBe("style.animationTimingFunction", "'ease-out'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease-out'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'ease-out'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease-out'"); |
| |
| style.animationTimingFunction = "ease-in-out"; |
| shouldBe("style.animationTimingFunction", "'ease-in-out'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease-in-out'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'ease-in-out'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease-in-out'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.25, 0.1, 0.25, 1)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.25, 0.1, 0.25, 1)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.25, 0.1, 0.25, 1)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.25, 0.1, 0.25, 1)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.25, 0.1, 0.25, 1)'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.1, 0, 0.23, 0.4)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.1, 0, 0.23, 3)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 3)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 3)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 3)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 0, 0.23, 3)'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.1, 5, 0.23, 3)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 3)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 3)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 3)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 3)'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.1, 5, 0.23, 0)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 0)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 0)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 0)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.1, 5, 0.23, 0)'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.2, 2, 0.2, -0.4)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.2, 2, 0.2, -0.4)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.2, 2, 0.2, -0.4)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.2, 2, 0.2, -0.4)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.2, 2, 0.2, -0.4)'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.2, -2, 0.2, 0.4)"; |
| shouldBe("style.animationTimingFunction", "'cubic-bezier(0.2, -2, 0.2, 0.4)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'cubic-bezier(0.2, -2, 0.2, 0.4)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'cubic-bezier(0.2, -2, 0.2, 0.4)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'cubic-bezier(0.2, -2, 0.2, 0.4)'"); |
| |
| style.animationTimingFunction = "step-start"; |
| shouldBe("style.animationTimingFunction", "'step-start'"); |
| shouldBe("computedStyle.animationTimingFunction", "'step-start'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'step-start'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'step-start'"); |
| |
| style.animationTimingFunction = "step-end"; |
| shouldBe("style.animationTimingFunction", "'step-end'"); |
| shouldBe("computedStyle.animationTimingFunction", "'step-end'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'step-end'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'step-end'"); |
| |
| style.animationTimingFunction = "steps(3)"; |
| shouldBe("style.animationTimingFunction", "'steps(3, end)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'steps(3, end)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'steps(3, end)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'steps(3, end)'"); |
| |
| style.animationTimingFunction = "steps(4, end)"; |
| shouldBe("style.animationTimingFunction", "'steps(4, end)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'steps(4, end)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'steps(4, end)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'steps(4, end)'"); |
| |
| style.animationTimingFunction = "steps(5, start)"; |
| shouldBe("style.animationTimingFunction", "'steps(5, start)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'steps(5, start)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'steps(5, start)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'steps(5, start)'"); |
| |
| style.animationName = "anim1, anim2"; |
| |
| style.animationTimingFunction = "ease-in-out, ease-in"; |
| shouldBe("style.animationTimingFunction", "'ease-in-out, ease-in'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease-in-out, ease-in'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'ease-in-out, ease-in'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease-in-out, ease-in'"); |
| |
| style.animationTimingFunction = "ease-in-out, cubic-bezier(0.1, 0, 0.23, 0.4)"; |
| shouldBe("style.animationTimingFunction", "'ease-in-out, cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease-in-out, cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'ease-in-out, cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease-in-out, cubic-bezier(0.1, 0, 0.23, 0.4)'"); |
| |
| style.animationTimingFunction = "steps(3, start), ease-in-out"; |
| shouldBe("style.animationTimingFunction", "'steps(3, start), ease-in-out'"); |
| shouldBe("computedStyle.animationTimingFunction", "'steps(3, start), ease-in-out'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'steps(3, start), ease-in-out'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'steps(3, start), ease-in-out'"); |
| |
| debug("Invalid animation-timing-function values."); |
| style.animationName = ""; |
| style.animationTimingFunction = ""; |
| |
| style.animationTimingFunction = "cubic-bezier(3, 0.1, 4, 1)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(1, 0.1, 3, 1)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.1, 0, 4, 0.4)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(3, 0, 4, 0.4)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(3, 0, 0.2, 0.4)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(-0.2, 0, 0.2, 0.4)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.2, 2, -0.2, 0.4)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "steps(5, 3)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "steps(-5, start)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "steps(5, start, end)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "step(5)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "red"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.25, 0.1, 0.25)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-bezier(0.25, 0.1, 0.25, 1, 2)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "cubic-foo(0.25, 0.1, 0.25, 1)"; |
| shouldBe("style.animationTimingFunction", "''"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "''"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "step-middle"; |
| shouldBe("style.animationTimingFunction", "'step-middle'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'step-middle'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| style.animationTimingFunction = "steps(5, middle)"; |
| shouldBe("style.animationTimingFunction", "'steps(5, middle)'"); |
| shouldBe("computedStyle.animationTimingFunction", "'ease'"); |
| shouldBe("style.webkitAnimationTimingFunction", "'steps(5, middle)'"); |
| shouldBe("computedStyle.webkitAnimationTimingFunction", "'ease'"); |
| |
| debug("Valid animation-delay values."); |
| // Initial test. |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "0s"; |
| shouldNotBe("Object.keys(style).indexOf('animationDelay')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationDelay')", "-1"); |
| shouldBe("style.animationDelay", "'0s'"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "'0s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "5s"; |
| shouldBe("style.animationDelay", "'5s'"); |
| shouldBe("computedStyle.animationDelay", "'5s'"); |
| shouldBe("style.webkitAnimationDelay", "'5s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'5s'"); |
| |
| style.animationDelay = "10ms"; |
| shouldBe("style.animationDelay", "'10ms'"); |
| shouldBe("computedStyle.animationDelay", "'0.01s'"); |
| shouldBe("style.webkitAnimationDelay", "'10ms'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0.01s'"); |
| |
| style.animationDelay = "-10ms"; |
| shouldBe("style.animationDelay", "'-10ms'"); |
| shouldBe("computedStyle.animationDelay", "'-0.01s'"); |
| shouldBe("style.webkitAnimationDelay", "'-10ms'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'-0.01s'"); |
| |
| style.transitionProperty = "opacity, width"; |
| |
| style.animationDelay = "-10ms, 20s"; |
| shouldBe("style.animationDelay", "'-10ms, 20s'"); |
| shouldBe("computedStyle.animationDelay", "'-0.01s, 20s'"); |
| shouldBe("style.webkitAnimationDelay", "'-10ms, 20s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'-0.01s, 20s'"); |
| |
| debug("Invalid animation-delay values."); |
| style.transitionProperty = "opacity"; |
| style.animationDelay = ""; |
| |
| style.animationDelay = "'5ms'"; |
| shouldBe("style.animationDelay", "''"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "''"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "30px"; |
| shouldBe("style.animationDelay", "''"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "''"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "solid"; |
| shouldBe("style.animationDelay", "''"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "''"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "20"; |
| shouldBe("style.animationDelay", "''"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "''"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "20%"; |
| shouldBe("style.animationDelay", "''"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "''"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| style.animationDelay = "0s, 20px"; |
| shouldBe("style.animationDelay", "''"); |
| shouldBe("computedStyle.animationDelay", "'0s'"); |
| shouldBe("style.webkitAnimationDelay", "''"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'0s'"); |
| |
| debug("Valid animation-iteration-count values."); |
| // Initial test. |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| style.animationIterationCount = "4"; |
| shouldNotBe("Object.keys(style).indexOf('animationIterationCount')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationIterationCount')", "-1"); |
| shouldBe("style.animationIterationCount", "'4'"); |
| shouldBe("computedStyle.animationIterationCount", "'4'"); |
| shouldBe("style.webkitAnimationIterationCount", "'4'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'4'"); |
| |
| style.animationIterationCount = "2.5"; |
| shouldBe("style.animationIterationCount", "'2.5'"); |
| shouldBe("computedStyle.animationIterationCount", "'2.5'"); |
| shouldBe("style.webkitAnimationIterationCount", "'2.5'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'2.5'"); |
| |
| style.animationIterationCount = "infinite"; |
| shouldBe("style.animationIterationCount", "'infinite'"); |
| shouldBe("computedStyle.animationIterationCount", "'infinite'"); |
| shouldBe("style.webkitAnimationIterationCount", "'infinite'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'infinite'"); |
| |
| style.animationIterationCount = "infinite, 3"; |
| shouldBe("style.animationIterationCount", "'infinite, 3'"); |
| shouldBe("computedStyle.animationIterationCount", "'infinite, 3'"); |
| shouldBe("style.webkitAnimationIterationCount", "'infinite, 3'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'infinite, 3'"); |
| |
| style.animationIterationCount = "0"; |
| shouldBe("style.animationIterationCount", "'0'"); |
| shouldBe("computedStyle.animationIterationCount", "'0'"); |
| shouldBe("style.webkitAnimationIterationCount", "'0'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'0'"); |
| |
| style.animationIterationCount = "infinite, infinite"; |
| shouldBe("style.animationIterationCount", "'infinite, infinite'"); |
| shouldBe("computedStyle.animationIterationCount", "'infinite, infinite'"); |
| shouldBe("style.webkitAnimationIterationCount", "'infinite, infinite'"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'infinite, infinite'"); |
| |
| debug("Invalid animation-iteration-count values."); |
| style.animationIterationCount = ""; |
| |
| style.animationIterationCount = "none"; |
| shouldBe("style.animationIterationCount", "''"); |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("style.webkitAnimationIterationCount", "''"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| style.animationIterationCount = "-3"; |
| shouldBe("style.animationIterationCount", "''"); |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("style.webkitAnimationIterationCount", "''"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| style.animationIterationCount = "infinite, -3"; |
| shouldBe("style.animationIterationCount", "''"); |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("style.webkitAnimationIterationCount", "''"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| style.animationIterationCount = "solid"; |
| shouldBe("style.animationIterationCount", "''"); |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("style.webkitAnimationIterationCount", "''"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| style.animationIterationCount = "-1, infinite"; |
| shouldBe("style.animationIterationCount", "''"); |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("style.webkitAnimationIterationCount", "''"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| style.animationIterationCount = "-1, 3"; |
| shouldBe("style.animationIterationCount", "''"); |
| shouldBe("computedStyle.animationIterationCount", "'1'"); |
| shouldBe("style.webkitAnimationIterationCount", "''"); |
| shouldBe("computedStyle.webkitAnimationIterationCount", "'1'"); |
| |
| debug("Valid animation-direction values."); |
| // Initial test. |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "reverse"; |
| shouldNotBe("Object.keys(style).indexOf('animationDirection')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationDirection')", "-1"); |
| shouldBe("style.animationDirection", "'reverse'"); |
| shouldBe("computedStyle.animationDirection", "'reverse'"); |
| shouldBe("style.webkitAnimationDirection", "'reverse'"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'reverse'"); |
| |
| style.animationDirection = "normal"; |
| shouldBe("style.animationDirection", "'normal'"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "'normal'"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "normal, alternate"; |
| shouldBe("style.animationDirection", "'normal, alternate'"); |
| shouldBe("computedStyle.animationDirection", "'normal, alternate'"); |
| shouldBe("style.webkitAnimationDirection", "'normal, alternate'"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal, alternate'"); |
| |
| style.animationDirection = "alternate"; |
| shouldBe("style.animationDirection", "'alternate'"); |
| shouldBe("computedStyle.animationDirection", "'alternate'"); |
| shouldBe("style.webkitAnimationDirection", "'alternate'"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'alternate'"); |
| |
| style.animationDirection = "alternate-reverse"; |
| shouldBe("style.animationDirection", "'alternate-reverse'"); |
| shouldBe("computedStyle.animationDirection", "'alternate-reverse'"); |
| shouldBe("style.webkitAnimationDirection", "'alternate-reverse'"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'alternate-reverse'"); |
| |
| debug("Invalid animation-direction values."); |
| style.animationDirection = ""; |
| |
| style.animationDirection = "solid"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "0"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "3px"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "alternate-normal"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "3.5"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "3.5, reverse"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| style.animationDirection = "reverse, solid"; |
| shouldBe("style.animationDirection", "''"); |
| shouldBe("computedStyle.animationDirection", "'normal'"); |
| shouldBe("style.webkitAnimationDirection", "''"); |
| shouldBe("computedStyle.webkitAnimationDirection", "'normal'"); |
| |
| debug("Valid animation-play-state values."); |
| // Initial test. |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "paused"; |
| shouldNotBe("Object.keys(style).indexOf('animationPlayState')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationPlayState')", "-1"); |
| shouldBe("style.animationPlayState", "'paused'"); |
| shouldBe("computedStyle.animationPlayState", "'paused'"); |
| shouldBe("style.webkitAnimationPlayState", "'paused'"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'paused'"); |
| |
| style.animationPlayState = "running"; |
| shouldBe("style.animationPlayState", "'running'"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "'running'"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "running, running"; |
| shouldBe("style.animationPlayState", "'running, running'"); |
| shouldBe("computedStyle.animationPlayState", "'running, running'"); |
| shouldBe("style.webkitAnimationPlayState", "'running, running'"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running, running'"); |
| |
| style.animationPlayState = "paused, paused"; |
| shouldBe("style.animationPlayState", "'paused, paused'"); |
| shouldBe("computedStyle.animationPlayState", "'paused, paused'"); |
| shouldBe("style.webkitAnimationPlayState", "'paused, paused'"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'paused, paused'"); |
| |
| style.animationPlayState = "paused, running"; |
| shouldBe("style.animationPlayState", "'paused, running'"); |
| shouldBe("computedStyle.animationPlayState", "'paused, running'"); |
| shouldBe("style.webkitAnimationPlayState", "'paused, running'"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'paused, running'"); |
| |
| debug("Invalid animation-play-state values."); |
| style.animationPlayState = ""; |
| |
| style.animationPlayState = "running3"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "0"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "solid"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "20px"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "all"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "running, test"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| style.animationPlayState = "all, paused"; |
| shouldBe("style.animationPlayState", "''"); |
| shouldBe("computedStyle.animationPlayState", "'running'"); |
| shouldBe("style.webkitAnimationPlayState", "''"); |
| shouldBe("computedStyle.webkitAnimationPlayState", "'running'"); |
| |
| debug("Valid animation-fill-mode values."); |
| // Initial test. |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "forwards"; |
| shouldNotBe("Object.keys(style).indexOf('animationFillMode')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimationFillMode')", "-1"); |
| shouldBe("style.animationFillMode", "'forwards'"); |
| shouldBe("computedStyle.animationFillMode", "'forwards'"); |
| shouldBe("style.webkitAnimationFillMode", "'forwards'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'forwards'"); |
| |
| style.animationFillMode = "backwards"; |
| shouldBe("style.animationFillMode", "'backwards'"); |
| shouldBe("computedStyle.animationFillMode", "'backwards'"); |
| shouldBe("style.webkitAnimationFillMode", "'backwards'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'backwards'"); |
| |
| style.animationFillMode = "both"; |
| shouldBe("style.animationFillMode", "'both'"); |
| shouldBe("computedStyle.animationFillMode", "'both'"); |
| shouldBe("style.webkitAnimationFillMode", "'both'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'both'"); |
| |
| style.animationFillMode = "none"; |
| shouldBe("style.animationFillMode", "'none'"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "'none'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "none, both"; |
| shouldBe("style.animationFillMode", "'none, both'"); |
| shouldBe("computedStyle.animationFillMode", "'none, both'"); |
| shouldBe("style.webkitAnimationFillMode", "'none, both'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none, both'"); |
| |
| style.animationFillMode = "backwards, forwards"; |
| shouldBe("style.animationFillMode", "'backwards, forwards'"); |
| shouldBe("computedStyle.animationFillMode", "'backwards, forwards'"); |
| shouldBe("style.webkitAnimationFillMode", "'backwards, forwards'"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'backwards, forwards'"); |
| |
| debug("Invalid animation-fill-mode values."); |
| style.animationFillMode = ""; |
| |
| style.animationFillMode = "foo"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "0"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "-"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "3px"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "backwards, test"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "test, all"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "test, none"; |
| shouldBe("style.animationFillMode", "''"); |
| shouldBe("computedStyle.animationFillMode", "'none'"); |
| shouldBe("style.webkitAnimationFillMode", "''"); |
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'"); |
| |
| style.animationFillMode = "forwards,"; |
| shouldBe("style.animationFillMode", "''"); |
| |
| debug("Valid animation shorthand values."); |
| style.animation = ""; |
| // Initial test. |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "myShorthandAnim"; |
| shouldNotBe("Object.keys(style).indexOf('animation')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimation')", "-1"); |
| shouldBe("style.animation", "'myShorthandAnim'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 0s ease 0s 1 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "none"; |
| shouldNotBe("Object.keys(style).indexOf('animation')", "-1"); |
| shouldBe("Object.keys(style).indexOf('webkitAnimation')", "-1"); |
| shouldBe("style.animation", "'none'"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'none'"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "none 20s"; |
| shouldBe("style.animation", "'20s none'"); |
| shouldBe("computedStyle.animation", "'none 20s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'20s none'"); |
| shouldBe("computedStyle.webkitAnimation", "'none 20s ease 0s 1 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim none 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s none'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s none'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease 0s 1 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in none 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in none'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in none'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 1 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 1 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in 20s 10s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 normal none running'"); |
| // Let's double check here the delay and duration. As stated in the spec the first value parsed |
| // is assigned to the duration. |
| shouldBe("computedStyle.animationDuration", "'20s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'20s'"); |
| shouldBe("computedStyle.animationDelay", "'10s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'10s'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim 20s ease-in 10s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 normal none running'"); |
| shouldBe("computedStyle.animationDuration", "'20s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'20s'"); |
| shouldBe("computedStyle.animationDelay", "'10s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'10s'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim paused 20s ease-in 10s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s paused'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 normal none paused'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s paused'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 normal none paused'"); |
| shouldBe("computedStyle.animationDuration", "'20s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'20s'"); |
| shouldBe("computedStyle.animationDelay", "'10s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'10s'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in both 20s 5"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 5 both'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 5 normal both running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 5 both'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 5 normal both running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in 20s 5 backwards"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 5 backwards'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 5 normal backwards running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 5 backwards'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 5 normal backwards running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim forwards 20s 5"; |
| shouldBe("style.animation", "'myShorthandAnim 20s 5 forwards'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease 0s 5 normal forwards running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s 5 forwards'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease 0s 5 normal forwards running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in 20s 5"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 5'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 5 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 5'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 5 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim reverse ease-in 20s 5"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 5 reverse'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 5 reverse none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 5 reverse'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 5 reverse none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| // FIXME : https://code.google.com/p/chromium/issues/detail?id=273092 |
| /*style.animation = "ease-in ease-out 5s"; |
| shouldBe("style.animation", "'ease-in ease-out 5s'"); |
| shouldBe("computedStyle.animation", "'ease-in 0s ease-out 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'ease-in ease-out 5s'"); |
| shouldBe("computedStyle.webkitAnimation", "'ease-in 0s ease-out 0s 1 normal none running'"); |
| shouldBe("computedStyle.animationName", "'ease-in'");*/ |
| |
| style.animation = "myShorthandAnim reverse ease-in backwards 20s 5 paused"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 5 reverse backwards paused'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 0s 5 reverse backwards paused'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 5 reverse backwards paused'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 0s 5 reverse backwards paused'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in 20s 10s, width cubic-bezier(0.32, 0, 1, 1) 10s 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s, width 10s cubic-bezier(0.32, 0, 1, 1) 20s'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 normal none running, width 10s cubic-bezier(0.32, 0, 1, 1) 20s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s, width 10s cubic-bezier(0.32, 0, 1, 1) 20s'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 normal none running, width 10s cubic-bezier(0.32, 0, 1, 1) 20s 1 normal none running'"); |
| // Let's double check here the delay and duration. As stated in the spec the first value parsed |
| // is assigned to the duration. |
| shouldBe("computedStyle.animationDuration", "'20s, 10s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'20s, 10s'"); |
| shouldBe("computedStyle.animationDelay", "'10s, 20s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'10s, 20s'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim ease-in 20s 10s paused, width cubic-bezier(0.32, 0, 1, 1) 10s 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s paused, width 10s cubic-bezier(0.32, 0, 1, 1) 20s'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 normal none paused, width 10s cubic-bezier(0.32, 0, 1, 1) 20s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s paused, width 10s cubic-bezier(0.32, 0, 1, 1) 20s'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 normal none paused, width 10s cubic-bezier(0.32, 0, 1, 1) 20s 1 normal none running'"); |
| // Let's double check here the delay and duration. As stated in the spec the first value parsed |
| // is assigned to the duration. |
| shouldBe("computedStyle.animationDuration", "'20s, 10s'"); |
| shouldBe("computedStyle.webkitAnimationDuration", "'20s, 10s'"); |
| shouldBe("computedStyle.animationDelay", "'10s, 20s'"); |
| shouldBe("computedStyle.webkitAnimationDelay", "'10s, 20s'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim reverse ease-in 20s 10s paused, test cubic-bezier(0.32, 0, 1, 1) 10s 20s both"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s reverse paused, test 10s cubic-bezier(0.32, 0, 1, 1) 20s both'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 reverse none paused, test 10s cubic-bezier(0.32, 0, 1, 1) 20s 1 normal both running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s reverse paused, test 10s cubic-bezier(0.32, 0, 1, 1) 20s both'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 reverse none paused, test 10s cubic-bezier(0.32, 0, 1, 1) 20s 1 normal both running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "none, none"; |
| shouldBe("style.animation", "'none, none'"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running, none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'none, none'"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running, none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "ease-in test 20s 10s, none"; |
| shouldBe("style.animation", "'test 20s ease-in 10s, none'"); |
| shouldBe("computedStyle.animation", "'test 20s ease-in 10s 1 normal none running, none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'test 20s ease-in 10s, none'"); |
| shouldBe("computedStyle.webkitAnimation", "'test 20s ease-in 10s 1 normal none running, none 0s ease 0s 1 normal none running'"); |
| shouldBe("computedStyle.animationName", "'test, none'"); |
| |
| style.animation = "none, ease-in test 20s 10s"; |
| shouldBe("style.animation", "'none, test 20s ease-in 10s'"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running, test 20s ease-in 10s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'none, test 20s ease-in 10s'"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running, test 20s ease-in 10s 1 normal none running'"); |
| shouldBe("computedStyle.animationName", "'none, test'"); |
| |
| style.animation = "myShorthandAnim both 20s 10s ease-in paused, myShorthandAnim ease-out 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s both paused, myShorthandAnim 20s ease-out'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 1 normal both paused, myShorthandAnim 20s ease-out 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s both paused, myShorthandAnim 20s ease-out'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 1 normal both paused, myShorthandAnim 20s ease-out 0s 1 normal none running'"); |
| |
| style.animation = "myShorthandAnim ease-in 4 20s 10s backwards, myShorthandAnim2 50 ease-out 20s"; |
| shouldBe("style.animation", "'myShorthandAnim 20s ease-in 10s 4 backwards, myShorthandAnim2 20s ease-out 50'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim 20s ease-in 10s 4 normal backwards running, myShorthandAnim2 20s ease-out 0s 50 normal none running'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 4 backwards, myShorthandAnim2 20s ease-out 50'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim 20s ease-in 10s 4 normal backwards running, myShorthandAnim2 20s ease-out 0s 50 normal none running'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| style.animation = "myShorthandAnim2 reverse ease-out 20s, ease-in myShorthandAnim 20s 10s paused"; |
| shouldBe("style.animation", "'myShorthandAnim2 20s ease-out reverse, myShorthandAnim 20s ease-in 10s paused'"); |
| shouldBe("computedStyle.animation", "'myShorthandAnim2 20s ease-out 0s 1 reverse none running, myShorthandAnim 20s ease-in 10s 1 normal none paused'"); |
| shouldBe("style.webkitAnimation", "'myShorthandAnim2 20s ease-out reverse, myShorthandAnim 20s ease-in 10s paused'"); |
| shouldBe("computedStyle.webkitAnimation", "'myShorthandAnim2 20s ease-out 0s 1 reverse none running, myShorthandAnim 20s ease-in 10s 1 normal none paused'"); |
| shouldBe("checkAnimationShorthandValue()", "true"); |
| |
| debug("Invalid animation shorthand values."); |
| style.animation = ""; |
| |
| style.animation = "solid red"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "all 30s width ease-in"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "animName 30s ease-in 20s, 20px"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "test 30s ease-in 20s, step-start(2)"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "ease-in opacity 20s 10s myAnim, none"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "none, ease-in opacity 20s 10s myAnim"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = ","; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "running,"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = ", alternate"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = ", commas,"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "test,, 5s"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "2 initial"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "2 inherit"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "2 unset"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| style.animation = "2 default"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'"); |
| |
| // FIXME : https://code.google.com/p/chromium/issues/detail?id=273092 |
| /*style.animation = "ease-in ease-otu 5s"; |
| shouldBe("style.animation", "''"); |
| shouldBe("computedStyle.animation", "'none 0s ease 0s 1 normal none running'"); |
| shouldBe("style.webkitAnimation", "''"); |
| shouldBe("computedStyle.webkitAnimation", "'none 0s ease 0s 1 normal none running'");*/ |
| |
| document.body.removeChild(testContainer); |
| </script> |
| </body> |
| </html> |