| Index: LayoutTests/fast/plugins/plugin-placeholder-close.html
|
| diff --git a/LayoutTests/fast/plugins/plugin-placeholder-close.html b/LayoutTests/fast/plugins/plugin-placeholder-close.html
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..d31c261666da6b7c2dde3e734946240f28248229
|
| --- /dev/null
|
| +++ b/LayoutTests/fast/plugins/plugin-placeholder-close.html
|
| @@ -0,0 +1,104 @@
|
| +<!DOCTYPE html>
|
| +
|
| +<script src="../../resources/js-test.js"></script>
|
| +<div id="description"></div>
|
| +<div id="console"></div>
|
| +
|
| +<object id="plugin1" type="application/x-fake-plugin"></object>
|
| +
|
| +<object id="plugin2" type="application/x-fake-plugin"></object>
|
| +
|
| +<div id="ancestor3" style="width: 400px; height: 300px">
|
| + <div>
|
| + <object id="plugin3" type="application/x-fake-plugin" width="400" height="300"></object>
|
| + </div>
|
| +</div>
|
| +
|
| +<!--
|
| + None of these ancestors should be hidden.
|
| + ancestor4a is not explicitly sized.
|
| + ancestor4b is explicitly sized, but only in one dimension.
|
| + ancestor4c is explicitly sized, but not in the element's inline style.
|
| + ancestor4d is explicitly sized to match, but not in pixels.
|
| + ancestor4e is explicitly sized, but does not match the plugin's attributes.
|
| +-->
|
| +<style>
|
| +#ancestor4c { width: 400px; height: 300px; }
|
| +</style>
|
| +<div id="ancestor4a">
|
| + <div id="ancestor4b" style="width: 400px">
|
| + <div id="ancestor4c">
|
| + <div id="ancestor4d" style="font-size: 100px; width: 4em; height: 3em">
|
| + <div id="ancestor4e" style="width: 300px; height: 400px">
|
| + <object id="plugin4" type="application/x-fake-plugin" width="400" height="300"></object>
|
| + </div>
|
| + </div>
|
| + </div>
|
| + </div>
|
| +</div>
|
| +
|
| +<!-- The plugin's size is 300x150, but it was not explicitly specified in the presentation attributes. -->
|
| +<div id="ancestor5" style="width: 300px; height: 150px">
|
| + <object id="plugin5" type="application/x-fake-plugin"></object>
|
| +</div>
|
| +
|
| +<div id="ancestor6" style="width: 400px; height: 300px">
|
| + <object id="plugin6" type="application/x-fake-plugin" width=" 400 px " height="300px"></object>
|
| +</div>
|
| +
|
| +<script>
|
| +
|
| +description("Checks that the plugin placeholder close button works as expected.");
|
| +
|
| +// Non-closeable plugins should have no displayed close button.
|
| +var plugin1 = document.getElementById("plugin1");
|
| +internals.forcePluginPlaceholder(plugin1, { closeable: false });
|
| +var closeButton1 = internals.youngestShadowRoot(plugin1).querySelector("#plugin-placeholder-close-button");
|
| +shouldBe("closeButton1.style.display", "'none'");
|
| +
|
| +// After a plugin is closed, it should have "display: none".
|
| +var plugin2 = document.getElementById("plugin2");
|
| +internals.forcePluginPlaceholder(plugin2, { closeable: true });
|
| +var closeButton2 = internals.youngestShadowRoot(plugin2).querySelector("#plugin-placeholder-close-button");
|
| +shouldNotBe("closeButton2.style.display", "'none'");
|
| +closeButton2.click();
|
| +shouldBe("plugin2.style.display", "'none'");
|
| +
|
| +// If the plugin has an ancestor sized to match with inline style, the ancestor should also be hidden.
|
| +var plugin3 = document.getElementById("plugin3");
|
| +internals.forcePluginPlaceholder(plugin3, { closeable: true });
|
| +var closeButton3 = internals.youngestShadowRoot(plugin3).querySelector("#plugin-placeholder-close-button");
|
| +shouldNotBe("closeButton3.style.display", "'none'");
|
| +closeButton3.click();
|
| +var ancestor3 = document.getElementById("ancestor3");
|
| +shouldBe("ancestor3.style.display", "'none'");
|
| +
|
| +// If the plugin has ancestors that don't meet this heuristic, they should be left alone.
|
| +var plugin4 = document.getElementById("plugin4");
|
| +internals.forcePluginPlaceholder(plugin4, { closeable: true });
|
| +var closeButton4 = internals.youngestShadowRoot(plugin4).querySelector("#plugin-placeholder-close-button");
|
| +shouldNotBe("closeButton4.style.display", "'none'");
|
| +closeButton4.click();
|
| +shouldNotBe("document.getElementById('ancestor4a').style.display", "'none'");
|
| +shouldNotBe("document.getElementById('ancestor4b').style.display", "'none'");
|
| +shouldNotBe("document.getElementById('ancestor4c').style.display", "'none'");
|
| +shouldNotBe("document.getElementById('ancestor4d').style.display", "'none'");
|
| +shouldNotBe("document.getElementById('ancestor4e').style.display", "'none'");
|
| +
|
| +// Plugins with no explicit (presentation attribute) size should not hide ancestors.
|
| +var plugin5 = document.getElementById("plugin5");
|
| +internals.forcePluginPlaceholder(plugin5, { closeable: true });
|
| +var closeButton5 = internals.youngestShadowRoot(plugin5).querySelector("#plugin-placeholder-close-button");
|
| +shouldNotBe("closeButton5.style.display", "'none'");
|
| +closeButton5.click();
|
| +shouldNotBe("document.getElementById('ancestor5').style.display", "'none'");
|
| +
|
| +// This should work even if the presentation attribute has spacing and "px".
|
| +var plugin6 = document.getElementById("plugin6");
|
| +internals.forcePluginPlaceholder(plugin6, { closeable: true });
|
| +var closeButton6 = internals.youngestShadowRoot(plugin6).querySelector("#plugin-placeholder-close-button");
|
| +shouldNotBe("closeButton6.style.display", "'none'");
|
| +closeButton6.click();
|
| +shouldBe("document.getElementById('ancestor6').style.display", "'none'");
|
| +
|
| +</script>
|
|
|