| Index: LayoutTests/fast/dom/shadow/exposed-object-within-shadow.html
 | 
| diff --git a/LayoutTests/fast/dom/shadow/exposed-object-within-shadow.html b/LayoutTests/fast/dom/shadow/exposed-object-within-shadow.html
 | 
| new file mode 100644
 | 
| index 0000000000000000000000000000000000000000..6d641004092851224d5d15ca58dc66c3cf3cdaff
 | 
| --- /dev/null
 | 
| +++ b/LayoutTests/fast/dom/shadow/exposed-object-within-shadow.html
 | 
| @@ -0,0 +1,113 @@
 | 
| +<!doctype html>
 | 
| +<html>
 | 
| +<head>
 | 
| +<script src="../../../resources/js-test.js"></script>
 | 
| +</head>
 | 
| +<body>
 | 
| +<object id="o1" name="obj1"><div></div></object>
 | 
| +<object id="o2" name="obj2"><param name="n"><div></div></param></object>
 | 
| +<script>
 | 
| +var obj;
 | 
| +var host;
 | 
| +var shadowRoot;
 | 
| +var child;
 | 
| +
 | 
| +function testAncestorObjectDivShadow() {
 | 
| +    debug("Shadow DOM inside an <object> and a <div>");
 | 
| +    obj = document.getElementById("o1");
 | 
| +    host = obj.querySelector("div");
 | 
| +    shadowRoot = host.createShadowRoot();
 | 
| +
 | 
| +    child = document.createElement("object");
 | 
| +    child.name = "obj1-child1";
 | 
| +    shadowRoot.appendChild(child);
 | 
| +
 | 
| +    // Inner <object> not visible for two reasons:
 | 
| +    // <object> ancestor + shadow root in-between.
 | 
| +    shouldBeFalse("child.name in document");
 | 
| +    shouldBeFalse("child.name in window");
 | 
| +
 | 
| +    // Should be able to see 'obj'..even with a descendant <object>, but hidden by shadow.
 | 
| +    shouldBeTrue("obj.name in document");
 | 
| +}
 | 
| +
 | 
| +function testSiblingObjectShadow() {
 | 
| +    debug("Shadow DOM attached to <div> with an <object> sibling (next).");
 | 
| +    var div = document.createElement("div");
 | 
| +    document.body.appendChild(div);
 | 
| +    var div2 = document.createElement("div");
 | 
| +    div.appendChild(div2);
 | 
| +    obj = document.createElement("object");
 | 
| +    obj.name = "obj3";
 | 
| +    div2.appendChild(obj);
 | 
| +    shadowRoot = div2.createShadowRoot();
 | 
| +
 | 
| +    child = document.createElement("embed");
 | 
| +    child.name = "embed1";
 | 
| +    shadowRoot.appendChild(child);
 | 
| +
 | 
| +    // <embed> not visible for two reasons:
 | 
| +    // <object> ancestor + shadow root in-between.
 | 
| +    shouldBeFalse("child.name in document");
 | 
| +    shouldBeFalse("child.name in window");
 | 
| +
 | 
| +    // Should be able to see 'obj'..even though it has an <embed> descendant.
 | 
| +    shouldBeTrue("obj.name in document");
 | 
| +}
 | 
| +
 | 
| +function testSiblingShadowObject() {
 | 
| +    debug("Shadow DOM attached to <div> with an <object> sibling (previous).");
 | 
| +    var div = document.createElement("div");
 | 
| +    document.body.appendChild(div);
 | 
| +    var div2 = document.createElement("div");
 | 
| +    div.appendChild(div2);
 | 
| +    obj = document.createElement("object");
 | 
| +    obj.name = "obj4";
 | 
| +    div2.appendChild(obj);
 | 
| +    shadowRoot = div2.createShadowRoot();
 | 
| +
 | 
| +    child = document.createElement("embed");
 | 
| +    child.name = "embed1";
 | 
| +    shadowRoot.appendChild(child);
 | 
| +
 | 
| +    // <embed> not visible for two reasons:
 | 
| +    // <object> ancestor + shadow root in-between.
 | 
| +    shouldBeFalse("child.name in document");
 | 
| +    shouldBeFalse("child.name in window");
 | 
| +
 | 
| +    // Should be able to see 'obj'..even though it has an <embed> descendant.
 | 
| +    shouldBeTrue("obj.name in document");
 | 
| +}
 | 
| +
 | 
| +function testAncestorObjectParamShadow() {
 | 
| +    debug("Shadow DOM attached to <div> inside a <param> inside an <object>.");
 | 
| +    obj = document.getElementById("o2");
 | 
| +
 | 
| +    // Should be able to see 'obj' initially.
 | 
| +    shouldBeTrue("obj.name in document");
 | 
| +
 | 
| +    host = obj.querySelector("div");
 | 
| +    shadowRoot = host.createShadowRoot();
 | 
| +
 | 
| +    child = document.createElement("embed");
 | 
| +    child.name = "embed1";
 | 
| +    shadowRoot.appendChild(child);
 | 
| +
 | 
| +    // <embed> not visible for two reasons:
 | 
| +    // <object> ancestor + shadow root in-between.
 | 
| +    shouldBeFalse("child.name in document");
 | 
| +    shouldBeFalse("child.name in window");
 | 
| +
 | 
| +    // Should still be able to see 'obj'
 | 
| +    shouldBeTrue("obj.name in document");
 | 
| +}
 | 
| +
 | 
| +testAncestorObjectDivShadow();
 | 
| +testSiblingObjectShadow();
 | 
| +testSiblingShadowObject();
 | 
| +testAncestorObjectParamShadow();
 | 
| +</script>
 | 
| +</body>
 | 
| +</html>
 | 
| +
 | 
| +
 | 
| 
 |