<head><!-- webkit-test-runner [ AsynchronousPluginInitializationEnabled=true AsynchronousPluginInitializationEnabledForAllPlugins=true ] -->
<script src="../../../../resources/js-test-pre.js"></script>
</head>
<body onload="runTest()">
<p id="description"></p>
<div id="console"></div>
<script>

function createTestPlugin(testName)
{
    var plugin = document.createElement("embed");
    plugin.type = "application/x-webkit-test-netscape";
    plugin.setAttribute('test', testName);

    return plugin;
}

function runTest() 
{
    if (!window.testRunner) {
        debug("This test can only run from within DumpRenderTree because it requires TestNetscapePlugin.\n");
        return;
    }

    testRunner.dumpAsText();
    testRunner.waitUntilDone();

    var beforeDate = new Date;
    
    plugin = createTestPlugin('slow-npp-new');
    document.body.appendChild(plugin);
    // Try to force a layout so the plug-in instantiates
    var foo = document.body.offsetTop;
    
    var afterDate = new Date;
    
    if (afterDate - beforeDate > 500)
        testFailed("Appending plug-in element took over 500ms (" + (afterDate - beforeDate) + "ms) so the plug-in was probably being initialized synchronously");
    else
        testPassed("Appending plug-in element took under 500ms, plug-in initializing asynchronously.");
    
    testRunner.notifyDone();
}

description("Test that loading a slow loading plug-in (550ms second sleep in NPP_new) doesn't block the WebProcess");

</script>
