<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body>
    <iframe src="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>
