<!-- webkit-test-runner [ UsesBackForwardCache=true ] -->
<script>
var childWindow;
</script>
This test makes sure that closing a window with a video element that has a poster image doesn't crash (radar 10576732 and https://bugs.webkit.org/show_bug.cgi?id=74533)<br>
If it doesn't crash, it passes.<br>
<button id="button" onclick="childWindow = window.open('resources/video-with-poster-as-object-fallback.html')">
    Click here to open test window
</button><br>
<div id="result"></div><br>

<script>
if (window.testRunner && window.internals) {
    testRunner.dumpAsText();
    testRunner.waitUntilDone();
    internals.settings.setBackForwardCacheSupportsPlugins(true);
    var button = document.getElementById("button");
    eventSender.mouseMoveTo(button.offsetParent.offsetLeft + button.offsetLeft + button.offsetWidth / 2, button.offsetParent.offsetTop +  button.offsetTop + button.offsetHeight / 2);
    eventSender.mouseDown();
    eventSender.mouseUp();
}

function childLoaded()
{
    childWindow.close();
    setTimeout("checkClosed()", 0);
}

function checkClosed()
{
    if (childWindow.closed) {
        document.getElementById("result").innerText = "Closed the window without crashing!";
        if (window.testRunner)
            setTimeout("testRunner.notifyDone();", 0);
    }
    setTimeout("checkClosed()", 0);
}

</script>
