blob: 8277dfa532456ee9d3797c049a924b30d23fbfb9 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test-pre.js"></script>
<script src="resources/polyfill.js"></script>
</head>
<body>
<pre id="console"></pre>
<iframe name="i0"></iframe>
<iframe name="i1"></iframe>
<iframe name="i1"></iframe>
<iframe name="i2"></iframe>
<div id="host"></div>
<script>
description("This test ensures that iframe inside shadow isn't visible from the host document.");
// At first, check iframe in usual way
shouldBe("window.length", "4");
var i0 = document["i0"];
var i0byname = document.getElementsByName("i0");
shouldBe("i0byname.length", "1");
shouldBe("i0", "i0byname[0].contentWindow");
var i1 = document["i1"];
var i2byname = document.getElementsByName("i0");
shouldBe("i1.length", "2");
// Then Adding some iframes into a shadow.
var host = document.getElementById("host");
var shadow = host.webkitCreateShadowRoot();
var i2InShadow = document.createElement("iframe");
i2InShadow.setAttribute("name", "i2");
shadow.appendChild(i2InShadow);
var i3InShadow = document.createElement("iframe");
i3InShadow.setAttribute("name", "i3");
shadow.appendChild(i3InShadow);
shouldBe("window.length", "4");
var i2 = document["i2"];
var i2byname = document.getElementsByName("i2");
shouldBe("i2byname.length", "1");
shouldBe("i2byname[0].contentWindow", "i2");
var i3 = document["i3"];
var i3byname = document.getElementsByName("i3");
shouldBe("i3byname.length", "0");
shouldBe("i3", "undefined");
// Moving iframes across shadow boundary to ensure
// That window.length and property availability are
// correctly updated.
shadow.appendChild(i0.frameElement);
shouldBe("window.length", "3");
shouldBe("document['i0']", "undefined");
document.body.appendChild(i3InShadow);
shouldBe("window.length", "4");
shouldBe("document['i3']", "i3InShadow.contentWindow");
</script>
<script src="../../../resources/js-test-post.js"></script>
</body>
</html>