<html>
<head>
    <script>
        if (window.testRunner)
            testRunner.waitUntilDone();

        function loadedFirstPart()
        {
            if (window.testRunner)
                setTimeout("testRunner.notifyDone()", 200);
        }
    </script>
</head>
<body>
    <p>
        Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=13759">http://bugs.webkit.org/show_bug.cgi?id=13759</a>
        REGRESSION (r20182-r20184): Incorrect rendering of multipart images</i>.
    </p>
    <p>
        There should be a bright green square below.
    </p>
    <img width="100" height="100" src="resources/multipart.py?interval=0&img1=2x2-green.png&img2=abe.png" onload="loadedFirstPart()">
</body>
</html>
