<p>This test ensures that if we have set a plugin to be too small after the initial load that it still gets played.</p>
<p>Also ensure that the plugin remains snapshotted if the size was initially specified but made too small afterwards.</p>
<div id="result">FAIL</div>
<script>
if (window.testRunner) {
    internals.settings.setPlugInSnapshottingEnabled(true);
    internals.settings.setMaximumPlugInSnapshotAttempts(0);
    testRunner.waitUntilDone();
    testRunner.dumpAsText();
    setTimeout(function () {
        var result = document.getElementById("result");
        var embed1 = document.getElementById("plugin1");
        embed1.style.width = 40;
        embed1.style.height = 40;
        var embed2 = document.getElementById("plugin2");
        embed2.style.width = 40;
        embed2.style.height = 40;
        if (!internals.isPluginSnapshotted(embed1) && internals.isPluginSnapshotted(embed2))
            result.innerHTML = "PASS";
        testRunner.notifyDone();
    }, 1000);
}
</script>
<embed id="plugin1" src="../resources/orange.mov"></embed>
<embed id="plugin2" src="../resources/orange.mov" style="width:50px; height:50px"></embed>
