<html>
<body>
<script src="../../resources/js-test-pre.js"></script>
<script>

description(`Tests moving an iframe inside a focus event handler while removing a node.<br>
<strong>To manually test, open this page on a new window/tab each time. Reloading would not work.</strong>`);

const iframe = document.createElement('iframe');
document.body.appendChild(iframe);
const doc = iframe.contentDocument;

doc.body.innerHTML = `<a id="target" href="#"></a><div><link rel="stylesheet" href="data:,d"></div>`;
let target = doc.querySelector('#target');
const linkParent = doc.querySelector('link').parentNode;

window.movedFrame = doc.createElement('iframe');
const helperFrame = doc.createElement('iframe');
doc.body.appendChild(helperFrame);

target.onfocus = () => {
    linkParent.appendChild(movedFrame);
    const helperContent = `<svg xmlns="http://www.w3.org/2000/svg"><script>top.check();<\/script></svg>`;
    helperFrame.src = URL.createObjectURL(new Blob([helperContent], {type: 'text/xml'}));
};

function check() {
    window.oldGlobal = movedFrame.contentWindow;
    doc.body.appendChild(movedFrame);
    window.newGlobal = movedFrame.contentWindow;
    shouldNotBe('newGlobal', 'oldGlobal');
    iframe.remove();
    finishJSTest();
}

iframe.contentWindow.location.hash = target.id;
linkParent.textContent = '';

var jsTestIsAsync = true;

</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>
