summaryrefslogtreecommitdiffstats
path: root/LayoutTests/http/tests/appcache/foreign-fallback.html
blob: 7a80046d3a8ac74f01ed6d2b7e7a8bdfd1e1f5c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<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>