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

        function firstPartLoaded()
        {
            window.stop();
            document.getElementById("results").innerHTML = "PASS";
            if (window.testRunner)
                testRunner.notifyDone();
        }
    </script>
</head>
<body>
    <p>
        Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=13360">http://bugs.webkit.org/show_bug.cgi?id=13360</a>
        REGRESSION: Crash closing live web cam viewer page</i>.
    </p>
    <p>
        If WebKit does not assert or crash after the test, then it passed.
    </p>
    <img width=24 height=24 src="resources/multipart.py?interval=0&img1=2x2-green.png&img2=2x2-green.png&wait=3" onload="firstPartLoaded()">
    <p id="results"></p>
</body>
</html>
