<!DOCTYPE html>
<html>
<head>
    <title>Testing the interpolation of new font-style values introduced in CSS Fonts level 4</title>
    <meta name="timeout" content="long">
    <link rel="help" href="https://www.w3.org/TR/css-fonts-4/#font-style-prop" />
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <style>
        @keyframes fontStyleAnimation {
            from { font-style: oblique -12deg; }
            to   { font-style: oblique  12deg; }
        }

        #animation-test.animate {
            animation: fontStyleAnimation 1s infinite alternate;
        }

        #transition-test {
            font-style: oblique -12deg;
            transition-property: font-style;
            transition-duration: 10s;
        }

        #transition-test.animate {
            font-style: oblique 12deg;
        }

    </style>
</head>
<body>
    <div style="font-family: serif;">
        <div id="animation-test">Animation test</div>
        <div id="transition-test">Transition test</div>
    </div>

    <script>

        async_test(function (test) {
            var animationElement = document.getElementById("animation-test");

            // Verify starting value
            assert_equals(window.getComputedStyle(animationElement).fontStyle, "normal", "Font style before animation");

            // Start animation
            animationElement.classList.add("animate");

            var waitForAnimationStep = test.step_func(function() {
                var computedFontStyle = window.getComputedStyle(animationElement).fontStyle;
                if (computedFontStyle != "normal" &&
                    computedFontStyle != "oblique -12deg" &&
                    computedFontStyle != "oblique 12deg") {
                    test.done();
                }
                else {
                    window.requestAnimationFrame(waitForAnimationStep);
                }
            });
            waitForAnimationStep();

        }, "font-style animation");

        async_test(function (test) {
            var transitionElement = document.getElementById("transition-test");

            // Verify starting value
            assert_equals(window.getComputedStyle(transitionElement).fontStyle, "oblique -12deg", "Font style before transition");

            // Start transition
            transitionElement.classList.add("animate");

            var waitForTransitionStep = test.step_func(function() {
                var computedFontStyle = window.getComputedStyle(transitionElement).fontStyle;
                if (computedFontStyle != "normal" &&
                    computedFontStyle != "oblique -12deg" &&
                    computedFontStyle != "oblique 12deg") {
                    test.done();
                }
                else {
                    window.requestAnimationFrame(waitForTransitionStep);
                }
            });
            waitForTransitionStep();

        }, "font-style transition");

    </script>
</body>
</html>
