<html>
<script>

var theWindow;

function step1()
{
    theWindow = window.open("./resources/containsAnimatedGif.html", "x");
    setTimeout(step2, 100);
}

function step2()
{
    window.open("about:blank", "x");
    setTimeout(step3, 100);
}

function step3()
{
    theWindow.close();
    theWindow = window.open("./resources/containsAnimatedGif.html");
    setTimeout(step4, 500);
}

function step4()
{
    theWindow.close();
    document.getElementById("results").appendChild(document.createTextNode("PASSED"));
}

</script>

<body>
<p>This page tests the fix for <br>
<a href="rdar://problem/6978362">rdar://problem/6978362</a> Repro crash animating GIF if previously used in a closed window's back/forward list <br>
<a href="https://bugs.webkit.org/show_bug.cgi?id=26568">Bug 26568</a> <br>
<p>Prerequisites:<br>
<ul><li>run the LayoutTest's webserver (WebKitTools/run-webkit-httpd)</ul>
<p>Then click this button: <input type="button" value="Run test" onclick="step1()">
<p>Expected results:<br>
<ul>
<li>A window will open, loading a page with an animated gif.</li>
<li>about:blank will be loaded in that window, putting the animated gif in the back/forward cache.</li>
<li>That window will close.</li>
<li>A new window will open, loading that page with the animated gif</li>
<li>No crash means test passed </li>
</ul>
<span style="color:green;" id="results"></span>
</body>
</html>
