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

    function doTest()
    {
        var iframe = document.getElementById('iframe');
        var frameDocElement = iframe.contentDocument.documentElement;
        frameDocElement.innerHTML = '<object></object>';
        frameDocElement.addEventListener('beforeload', frameBeforeLoad, true);
        frameDocElement.offsetWidth;
    }
    
    function frameBeforeLoad()
    {
        var wrapper = document.getElementById('wrapper');
        document.getElementById('destination_frame').contentDocument.body.appendChild(wrapper);

        if (window.testRunner)
            testRunner.notifyDone();
    }

    window.addEventListener('load', doTest, false);
    </script>
</head>
<body>
    <p>This test should not assert in debug builds.</p>
    <iframe id='iframe'></iframe>
    <iframe id='destination_frame' srcdoc="<body>Test</body>"></iframe>
    <div id="wrapper">
        <div id="wheelie">wheel handler</div>
    </div>
</div>
<script>
    document.getElementById('wheelie').addEventListener('mousewheel', function(e) { });
</script>
</body>
</html>
