blob: 8745fa0171ebe440d17def36d5f4328f2c2f570e [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../../../resources/js-test.js"></script>
<script src="resources/shadow-dom.js"></script>
</head>
<body>
<div id="console"></div>
<div id="sandbox">
</div>
<script>
description("This tests the activeElement property of a ShadowRoot.");
if (!window.internals)
debug('This test runs on DRT only');
document.getElementById('sandbox').appendChild(
createDOM('div', {},
createDOM('div', {'id': 'node-in-document', 'tabindex': 1}),
createDOM('div', {'id': 'shadow-host-1'},
createShadowRoot(
createDOM('div', {'id': 'shadow-host-2'},
createShadowRoot(
createDOM('div', {'id': 'child-in-shadow-root-2', 'tabindex': 1}))),
createDOM('div', {'id': 'child-in-shadow-root-1', 'tabindex': 1}),
createDOM('content', {'select': '#distributed-light-child'})),
createDOM('div', {'id': 'distributed-light-child', 'tabindex': 1}))));
var shadowHost1 = getNodeInComposedTree('shadow-host-1');
var shadowHost2 = getNodeInComposedTree('shadow-host-1/shadow-host-2');
var shadowRoot1 = getNodeInComposedTree('shadow-host-1/');
var shadowRoot2 = getNodeInComposedTree('shadow-host-1/shadow-host-2/');
var nodeInDocument = document.getElementById('node-in-document');
var distributedLightChild = document.getElementById('distributed-light-child');
var childInShadowRoot1 = getNodeInComposedTree('shadow-host-1/child-in-shadow-root-1');
var childInShadowRoot2 = getNodeInComposedTree('shadow-host-1/shadow-host-2/child-in-shadow-root-2');
shouldBeDefined("shadowRoot1.activeElement");
shouldBeDefined("shadowRoot2.activeElement");
shouldBe("nodeInDocument.focus(); document.activeElement", "nodeInDocument");
shouldBe("nodeInDocument.focus(); shadowRoot1.activeElement", "null");
shouldBe("nodeInDocument.focus(); shadowRoot2.activeElement", "null");
shouldBe("distributedLightChild.focus(); document.activeElement", "distributedLightChild");
shouldBe("distributedLightChild.focus(); shadowRoot1.activeElement", "distributedLightChild");
shouldBe("distributedLightChild.focus(); shadowRoot2.activeElement", "null");
shouldBe("childInShadowRoot1.focus(); document.activeElement", "shadowHost1");
shouldBe("childInShadowRoot1.focus(); shadowRoot1.activeElement", "childInShadowRoot1");
shouldBe("childInShadowRoot1.focus(); shadowRoot2.activeElement", "null");
shouldBe("childInShadowRoot2.focus(); document.activeElement", "shadowHost1");
shouldBe("childInShadowRoot2.focus(); shadowRoot1.activeElement", "shadowHost2");
shouldBe("childInShadowRoot2.focus(); shadowRoot2.activeElement", "childInShadowRoot2");
evalAndLog("childInShadowRoot2.blur();");
shouldBe("document.activeElement", "document.body");
shouldBe("shadowRoot1.activeElement", "null");
shouldBe("shadowRoot2.activeElement", "null");
var successfullyParsed = true;
</script>
</body>
</html>