<!DOCTYPE html>
<html>
<head>
<script src="../../resources/js-test.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 both an iframe and main frame");

        var callbackInvoked = false;
        var mainFrameCallbackInvoked = false;

        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }

        window.requestAnimationFrame(function() {
            mainFrameCallbackInvoked = true;
        });

        function doCheckResult()
        {
            shouldBeTrue("callbackInvoked");
            shouldBeTrue("mainFrameCallbackInvoked");
        }

        function doTestDone()
        {
            isSuccessfullyParsed();
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</body>
</html>
