<!-- webkit-test-runner [ enablePageCache=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.setPageCacheSupportsPlugins(true);
    testRunner.setCanOpenWindows(true);
    testRunner.setCloseRemainingWindowsWhenComplete(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>
