<html manifest="resources/foreign-fallback.manifest">
<body>
<p>Test for <a href="https://bugs.webkit.org/show_bug.cgi?id=44406">bug 44406</a>:
Application Cache crash when a fallback document has a manifest URL.</p>
<div id="result">Testing...</div>
<script>
if (window.layoutTestController) {
    layoutTestController.waitUntilDone();
    layoutTestController.dumpAsText();
}


applicationCache.addEventListener('cached', test, false);
applicationCache.addEventListener('noupdate', test, false);

function test()
{
    var ifr = document.createElement("iframe");
    ifr.setAttribute("src", "resources/foreign-fallback/does-not-exist.html");
    document.body.appendChild(ifr);

    // I couldn't find any event that would fire on frame loading failure, so let's poll.
    setTimeout(frameDone, 100);
}

function frameDone()
{
    try {
        var frameContent = frames[0].document.documentElement.innerHTML;
        if (frameContent.match("Not Found"))
            document.getElementById("result").innerHTML = "PASS";
        else if (frameContent.match("FAIL"))
            document.getElementById("result").innerHTML = "FAIL";
        else
            throw "Try again";

        if (window.layoutTestController)
            layoutTestController.notifyDone();
    } catch (ex) {
        // Not done yet.
        setTimeout(frameDone, 100);
    }
}

</script>
<p>The frame below should display a Not Found error - the fallback entry is foreign, so it shouldn't be used for main resource.</p>
</body>
</html>
