blob: 6e959c344aea1ab98f61bb1d66530d94035e3fb2 [file] [log] [blame]
<script src="../../resources/js-test.js"></script>
<script>
description("Checks the value of detached subframe properties.");
onload = function()
{
detachedWindow = frames[0];
document.body.removeChild(document.getElementsByTagName("iframe")[0]);
// Chrome and Firefox agree with us.
shouldBeTrue("!!detachedWindow.postMessage");
shouldBeTrue("!!detachedWindow.close");
shouldBeTrue("!!detachedWindow.locationbar");
shouldBeTrue("!!detachedWindow.history");
shouldBeTrue("!!detachedWindow.screen");
shouldBeTrue("!!detachedWindow.location");
shouldBeTrue("!!detachedWindow.navigator");
shouldBeTrue("detachedWindow.closed");
shouldBeNull("detachedWindow.top");
shouldBeNull("detachedWindow.opener");
shouldBeNull("detachedWindow.parent");
shouldBeNull("detachedWindow.frameElement"); // Technically, Chrome returns undefined here, not null.
shouldBe("detachedWindow.window", "detachedWindow");
shouldBe("detachedWindow.frames", "detachedWindow");
shouldBe("detachedWindow.self", "detachedWindow");
// Chrome returns undefined but Firefox has a valid object.
shouldBeTrue("!detachedWindow.localStorage");
shouldBeTrue("!!detachedWindow.document");
shouldBeTrue("!!detachedWindow.XMLHttpRequest");
shouldBeTrue("!!detachedWindow.getComputedStyle");
// Chrome returns undefined but Firefox throws an exception.
shouldBe("detachedWindow.innerHeight", "0");
shouldBe("detachedWindow.innerWidth", "0");
}
</script>
<iframe src="about:blank"></iframe>