<html>
<head>
    <title></title>
    <style>
        div {
            width: 40px;
            height: 40px;
            background: url(resources/animated.gif) top left no-repeat,
                        url(resources/animated2.gif) bottom right no-repeat;
        }
    </style>
    <script>
        function step2()
        {
            if (window.layoutTestController)
                layoutTestController.notifyDone();
        }

        function step1()
        {
            if (window.layoutTestController)
                layoutTestController.display();
            document.getElementById("target").style.display="none";
            document.body.offsetTop;
            setTimeout("step2()", 200);
        }

        function test()
        {
            if (window.layoutTestController) {
                layoutTestController.dumpAsText();
                layoutTestController.waitUntilDone();
            }
            setTimeout("step1()", 100);
        }
    </script>
</head>
<body onload="test()">
    <p>
        Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=12487">http://bugs.webkit.org/show_bug.cgi?id=12487</a>
        REGRESSION: Repro crash when a second background image is animated</i>.
    </p>
    <p>
        This test should not make Safari crash.
    </p>
    <div id="target"></div>
</body>
</html>
