<html>
<head>
<script>
if (window.testRunner) {
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
}

// This was the only way that I was able to wait long enough
// for the test to crash while still running under DumpRenderTree(DRT).
window.setTimeout( "bodyLoaded();", 300);

function log(msg)
{
    var span = document.createElement("span");
    document.getElementById("console").appendChild(span);
    span.innerHTML = msg + '<br />';
}

function bodyLoaded() {
    log("PASSED");
    if (window.testRunner)
        testRunner.notifyDone();
}
</script>
</head>

<body>
<div style="display:none">
  <iframe name="testiframe" id="testiframe"
          src="resources/iframe-content-with-swf-plugin.html">
  </iframe>
</div>
<p id="description">
This page tests<br/>
https://bugs.webkit.org/show_bug.cgi?id=56393<br/>
Bug 56393 - Crash on www.crave.cnet.com in FrameView::windowClipRect()<br/>
It contains an iframe element with display:none that loads an HTML page
with an object element of a .swf file. Object must be in a separate page
(data: scheme won't show problem).<br/>
If this test does not assert or crash and the line below reads "PASSED", it passes.
</p>
<div id="console"></div>
</body>
</html>
