<!DOCTYPE html><!-- webkit-test-runner [ experimental:WebAnimationsCSSIntegrationEnabled=false ] -->
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
</head>
<body>
    <iframe src="../../../fast/animation/script-tests/request-animation-frame-subframe.html" width="700" height="500"></iframe>
    <script type="text/javascript" charset="utf-8">
        description("Tests requestAnimationFrame in an iframe");

        var callbackInvoked = false;
    
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        // Called from subframe.
        function doDisplay()
        {
            if (window.testRunner)
                testRunner.displayAndTrackRepaints();
        }
    
        function doCheckResult()
        {
            shouldBeTrue("callbackInvoked");
        }
    
        function doTestDone()
        {
            isSuccessfullyParsed();
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</body>
</html>
