| Index: LayoutTests/animations/animations-parsing.html
|
| diff --git a/LayoutTests/animations/animations-parsing.html b/LayoutTests/animations/animations-parsing.html
|
| index f7d2a81b6d9b536054de48061f41c2a46a00dfe8..28b652c81ff269915e7d210634e3ca51e8825dd7 100644
|
| --- a/LayoutTests/animations/animations-parsing.html
|
| +++ b/LayoutTests/animations/animations-parsing.html
|
| @@ -17,7 +17,7 @@ style = e.style;
|
| computedStyle = window.getComputedStyle(e, null);
|
|
|
| // This function checks the return value of computedStyle.animation and verifies Blink can parse it.
|
| -function checkTransitionShorthandValue() {
|
| +function checkAnimationShorthandValue() {
|
| var before = computedStyle.getPropertyValue('animation');
|
| e.style.animation = '';
|
| e.style.animation = before;
|
| @@ -815,8 +815,261 @@ shouldBe("computedStyle.animationFillMode", "'none'");
|
| shouldBe("style.webkitAnimationFillMode", "''");
|
| shouldBe("computedStyle.webkitAnimationFillMode", "'none'");
|
|
|
| -// FIXME : Add tests for shorthand parsing.
|
| -// https://code.google.com/p/chromium/issues/detail?id=234612
|
| +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");
|
| +shouldNotBe("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");
|
| +shouldNotBe("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'");
|
| +
|
| +// 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>
|
|
|