<p style = "white-space: nowrap;">This tests that a plugin should be snapshotted if it is partially covered by an image but not enough to be considered blocking.</p>
<p> It additionally tests that we take transforms into account. </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");
        var embed2 = document.getElementById("plugin2");
        if (internals.isPluginSnapshotted(embed1) && internals.isPluginSnapshotted(embed2))
            result.innerHTML = "PASS";
        testRunner.notifyDone();
    }, 1500);
}
</script>
<embed id="plugin1" src="../resources/orange.mov" width="600" height="600"></embed>
<img src="../resources/apple.gif" width="600" height="600" style="position:absolute; top:25px; left:0px">
<br>
<embed id="plugin2" src="../resources/orange.mov" width="600" height="600"></embed>
<img src="../resources/apple.gif" width="300" height="300" style="-webkit-transform:translate(200px,-500px)">
