<body onload="test()">
<script>
    function overflowChanged()
    {
        document.getElementById("result").innerText = "PASS";
    }

    function test()
    {
        if (window.testRunner)
            testRunner.waitUntilDone();

        document.body.offsetTop;
        var bottomBox = document.getElementById("bottomBox");
        bottomBox.parentNode.removeChild(bottomBox);
        document.addEventListener("overflowchanged", overflowChanged, true, true);
    }

    function iframeResized()
    {
        document.body.appendChild(document.createElement("div"));
        if (window.testRunner)
            testRunner.dumpAsText();

        setTimeout(finish, 0);
    }

    function finish()
    {
        document.getElementById("tallBox").style.height = "50px";
        if (window.testRunner)
            testRunner.notifyDone();
    }
</script>
<p>
    Test for <i><a href="http://bugs.webkit.org/show_bug.cgi?id=16490">http://bugs.webkit.org/show_bug.cgi?id=16490</a>
    ASSERT in ~FrameView while viewing/reloading WICD test case</i>.
</p>
<div>
    <iframe style="width: 100%;" src="resources/paused-event-dispatch-iframe.html"></iframe>
</div>
<div id="bottomBox" style="position: absolute; left: 0; top: 5000px; height: 10px; width: 10px;"></div>
<div style="height: 100px; width: 100px; overflow: auto;" id="overflow">
    <div style="height: 200px;" id="tallBox"></div>
</div>
<div id="result">FAIL</div>
</body>
