<!DOCTYPE html><!-- webkit-test-runner [ enableCSSAnimationsAndCSSTransitionsBackedByWebAnimations=true ] -->
<html>
<head>
<style>
#testDiv {
    transition: transform 30s linear, color 2s, left 4s linear, top 4s linear;
    position: absolute;
}
</style>
</head>
<body>
<script src="../../resources/js-test.js"></script>
<div id="testDiv">TEST</div>
<script>
description("Tests that CSS animations that are created while the page is hidden are properly resumed when the page becomes visible.");
jsTestIsAsync = true;

function registerAnimation()
{
    testDiv.style.transform = "rotate(170deg) scale(0.2781941414347284)";
}

function checkTransformAndFinishTest()
{
    shouldBecomeEqual("window.getComputedStyle(testDiv).transform != pausedTransform", "true", finishJSTest);
}

onload = function() {
    debug("Suspend animations");
    internals.suspendAnimations();

    setTimeout(function() {
        registerAnimation("170");
        setTimeout(function() {
            shouldBeTrue("internals.animationsAreSuspended()");
            shouldBe("internals.numberOfActiveAnimations()", "0");

            pausedTransform = window.getComputedStyle(testDiv).transform;

            // Change style to make sure it does not make the animation active.
            testDiv.style.backgroundColor = "green";
            testDiv.offsetLeft;

            shouldBeTrue("internals.animationsAreSuspended()");
            shouldBe("internals.numberOfActiveAnimations()", "0");

            setTimeout(function() {
                shouldBe("window.getComputedStyle(testDiv).transform", "pausedTransform");

                debug("Resume animations");
                internals.resumeAnimations();
                shouldBecomeEqual("internals.numberOfActiveAnimations()", "1", checkTransformAndFinishTest);
            }, 50);
        }, 500);
    }, 0);
}
</script>
</body>
</html>
