67 lines
1.8 KiB
HTML
67 lines
1.8 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<body>
|
|
<p>This tests removing a focused element from a document and calling activeElement on a shadow tree in the same document.<br>
|
|
WebKit should clear the focused element even if the removed element was focused during removal and should not crash or hit an assertion.</p>
|
|
<script>
|
|
|
|
if (window.testRunner)
|
|
testRunner.dumpAsText();
|
|
|
|
var iframe = document.createElement('iframe');
|
|
document.body.appendChild(iframe);
|
|
|
|
var doc = iframe.contentDocument;
|
|
var host = doc.createElement('div');
|
|
var shadowRoot = host.attachShadow({mode: 'closed'});
|
|
doc.body.appendChild(host);
|
|
|
|
var input = doc.createElement('input');
|
|
doc.body.appendChild(input);
|
|
input.focus();
|
|
|
|
input.addEventListener('DOMNodeRemovedFromDocument', function () {
|
|
input.focus();
|
|
});
|
|
|
|
// 1. ContainerNode::removeChild
|
|
document.body.appendChild(input);
|
|
shadowRoot.activeElement;
|
|
|
|
// 2. ContainerNode::removeChildren
|
|
doc.body.appendChild(input);
|
|
input.focus();
|
|
doc.body.innerHTML = '';
|
|
document.body.appendChild(input);
|
|
shadowRoot.activeElement;
|
|
|
|
|
|
// 3. ContainerNode::removeChild for disconnecting frames
|
|
var focusableIframe = document.createElement('iframe');
|
|
doc.body.appendChild(host);
|
|
doc.body.appendChild(focusableIframe);
|
|
focusableIframe.focus();
|
|
focusableIframe.contentWindow.addEventListener('unload', function () {
|
|
focusableIframe.focus();
|
|
});
|
|
document.body.appendChild(focusableIframe);
|
|
shadowRoot.activeElement;
|
|
|
|
// 4. ContainerNode::removeChildren for disconnecting frames
|
|
focusableIframe = document.createElement('iframe');
|
|
doc.body.appendChild(host);
|
|
doc.body.appendChild(focusableIframe);
|
|
focusableIframe.focus();
|
|
focusableIframe.contentWindow.addEventListener('unload', function () {
|
|
focusableIframe.focus();
|
|
});
|
|
doc.body.innerHTML = '';
|
|
document.body.appendChild(focusableIframe);
|
|
shadowRoot.activeElement;
|
|
|
|
document.write('PASS - did not crash');
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|