<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body>
<div id="main"/>
<script>
description("This tests that several ways of making an iframe that isn't inserted into a document tree"
    + " but has a child frame will fail.");
jsTestIsAsync = true;

main = document.getElementById("main");

try {
    container = main.appendChild(document.createElement("div"));
    helperFrame = container.appendChild(document.createElement("iframe"));
    targetFrame1 = document.createElement("iframe");

    helperFrame.contentWindow.onunload = function() {
        container.insertBefore(targetFrame1, helperFrame);
    }

    main.removeChild(container);
} catch (e) { }
shouldBeTrue("targetFrame1.contentWindow == undefined");

try {
    container = main.appendChild(document.createElement("div"));
    helperElement = container.appendChild(document.createElement("input"));
    helperElement.focus();
    targetFrame2 = document.createElement("iframe");

    helperElement.onblur = function() {
        container.appendChild(targetFrame2);
    }

    main.removeChild(container);
} catch (e) { }
shouldBeTrue("targetFrame2.contentWindow == undefined");

try {
    container = document.createElement("div");
    targetFrame3 = container.appendChild(document.createElement("iframe"));
    helperFrame = targetFrame3.appendChild(document.createElement("iframe"));
    helperFrame.src = "javascript:top.container.removeChild(top.targetFrame3)";
    document.body.appendChild(container);
} catch (e) { }

setTimeout(() => {
    shouldBeTrue("targetFrame3.contentWindow == undefined");
    finishJSTest();
}, 0);
</script>
</body>
</html>
