<!DOCTYPE html>
<html>
<head>
    <script>
        if (window.testRunner) {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
        }
        
        window._beforeloadReceivedForEmbed = false;
        
        document.addEventListener("beforeload", function(event) {
            if (document.getElementsByTagName("object")[0] == event.target) {
                // trigger a layout
                event.target.offsetWidth;
                return;
            }
            
            _beforeloadReceivedForEmbed = document.getElementsByTagName("embed")[0] == event.target;
        }, true);
        
        function test() {
            // The <embed> should load as a post-layout task that executes in
            // the current run loop iteration. Queue a task to check if the
            // <embed>'s beforeload event fired.
            window.setTimeout(function() {
                console.log(_beforeloadReceivedForEmbed ? "PASS" : "FAIL");
                if (window.testRunner)
                    testRunner.notifyDone();
            }, 0);
        }
    </script>
</head>
<body onload="test();">
    <!-- Test that performing layout in a beforeload listener does not affect
         plug-in loading. See http://webkit.org/b/77167 for details. This test
         requires TestNetscapePlugIn so it must be run in DumpRenderTree. -->
    <object>
        <embed type="application/x-webkit-test-netscape">
    </object>
</body>
</html>