<!DOCTYPE html>
<html>
<head>
    <title>CSS Variables - Animation - Substitute Into Keyframe - transform property</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>

    <meta rel="author" title="Kevin Babbitt">
    <meta rel="author" title="Greg Whitworth">
    <link rel="author" title="Microsoft Corporation" href="http://microsoft.com" />
    <link rel="help" href="http://www.w3.org/TR/css-variables-1/#syntax">

    <style>
        @keyframes transformanim
        {
            from { transform: scale(0.5); }
            to { transform: scale(var(--finalScale)); }
        }

        /* Start the animation in the paused state and fill at both ends so we can inspect values from both keyframes. */
        #target
        {
            animation-name: transformanim;
            animation-duration: 1s;
            animation-play-state: paused;
            animation-fill-mode: both;
            transform-origin: 0 0;
            --finalScale: 2;
        }
    </style>
</head>
<body>

    <div id="target">This text should scale from half size to double size over a period of 1 second.</div>

<script type="text/javascript">
    "use strict";

    // Force an initial layout pass
    document.documentElement.offsetHeight;

    test(function() {
        assert_equals(window.getComputedStyle(document.getElementById("target")).getPropertyValue("transform").trim(),
            "matrix(0.5, 0, 0, 0.5, 0, 0)",
            "scale is 0.5 before animation runs");
        }, "Verify transform before animation");

    var animationTest = async_test("Verify transform after animation");

    animationTest.step(function() {
        // Set event handler
        document.getElementById("target").addEventListener("animationend", animationTest.step_func(function() {
            assert_equals(window.getComputedStyle(document.getElementById("target")).getPropertyValue("transform").trim(),
                "matrix(2, 0, 0, 2, 0, 0)",
                "scale is 2 after animation runs")
            animationTest.done();
            }));

        // Trigger animation
        document.getElementById("target").style.animationPlayState = "running";
    });
</script>

</body>
</html>
