<html>
<body>
<p>Test that offline applications' main resources are not affected by URL hashes.</p>
<p>Should say SUCCESS:</p>
<div id=result></div>

<script>
if (window.layoutTestController) {
    layoutTestController.dumpAsText();
    layoutTestController.waitUntilDone();
}

function log(message)
{
    document.getElementById("result").innerHTML += message + "<br>";
}

function setNetworkEnabled(state)
{
    var req = new XMLHttpRequest;
    req.open("GET", "/resources/network-simulator.php?command=" + (state ? "connect" : "disconnect"), false);
    req.send("");
}

function frameCreated()
{
    if (stage == 0) {
        stage = 1;
        setNetworkEnabled(false);
        var ifr = document.createElement("iframe");
        ifr.setAttribute("src", "/resources/network-simulator.php?path=/appcache/resources/main-resource-hash-frame.html#bar");
        document.body.appendChild(ifr);
    } else {
        log("SUCCESS");
        setNetworkEnabled(true);
        if (window.layoutTestController)
            layoutTestController.notifyDone()
    }
}

window.addEventListener("message", frameCreated, false);

var stage = 0;
setNetworkEnabled(true);
var ifr = document.createElement("iframe");
ifr.setAttribute("src", "/resources/network-simulator.php?path=/appcache/resources/main-resource-hash-frame.html#foo");
document.body.appendChild(ifr);

</script>
</body>
</html>
