<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script>
    
    if (window.testRunner)
        testRunner.waitUntilDone();

    function rightFrameLoaded() {
        rightFrameLoadCount++;
        if (rightFrameLoadCount == 2) {
            // Console is set by runTest
            console.firstChild.nodeValue = "SUCCESS";

            if (window.testRunner) {
                // Put the test result in the main document so we can dump as text
                var text = console.ownerDocument.documentElement.innerHTML;
                document.open();
                document.write(text);
                document.close();

                testRunner.dumpAsText();
                testRunner.notifyDone();
            }
        }
    }

    function runTest() {
        console = document.getElementById("left_frame").contentWindow.document.getElementById("console");
        if (console.firstChild.nodeValue == "FAILURE") {
            console.firstChild.nodeValue = "PROCESSING...";
            document.getElementById("right_frame").src = "resources/purple.html";
        } else {
            alert('TEST FAILURE: Unexpected onload call')
        }
    }
    
    rightFrameLoadCount = 0;
</script>
</head>
<frameset onload="runTest()" cols="50%,*">
<frame id="left_frame" src="resources/frame-set-same-src-iframe.html">
<frame id="right_frame" onload="javascript:rightFrameLoaded()" src="resources/purple.html"></frame>
</frameset>
</html>
