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

function beginTests() {
    if (window.testRunner) {    // Totaly different test in DRT (see feed.html)
        var result = document.getElementById("result");
        result.innerHTML = "Test Finished.";
        done();
        return;
    }

    var myIframe = document.getElementById("myIframe");

    setTimeout(function() {
        if (!finished) {
            var result = document.getElementById("result");
            result.innerHTML = "Test Failed! Feed URL not followed.";
            done();
        }
    }, 2000);

    checkFeedLinkFollowed();
}

function checkFeedLinkFollowed() {
    var result = document.getElementById("result");

    if (myIframe.document) {
        setTimeout(checkFeedLinkFollowed, 1);
    } else {
        result.innerHTML = "Test Passed! Feed URL followed";
        done();
    }
}

var finished = false;
function done() {
    finished = true;
    if (window.testRunner)
        testRunner.notifyDone();
}

</script>

</head>
<body>
    <div id="div0">
        < rdar://problem/5329440> REGRESSION: Clicking links with the feed:// protocol in Safari 3 does nothing
        <br/>
        This test is to see if a feed URL can be followed from a link on a page.
    </div>
    </br>
    <div id="result">
        Test not completed.
    </div>

    <iframe id="myIframe" src="resources/feed.html" onLoad="beginTests()"></iframe>
</body>
</html>
