blob: f03206bea887e04f92343efa0a1f7f0912f7429b [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<script src="../resources/event-sender-util.js"></script>
<script src="../../../resources/js-test.js"></script>
</head>
<body>
<div id="host"></div>
<div id="blockHost"></div>
<span id="inlineBlockHost" style="display:inline-block;"></span>
<input type="submit" id="submit">
<pre id="console"></pre>
<script>
function createBox() {
var div = document.createElement('div');
div.style.width = '100px';
div.style.height = '10px';
return div;
}
function centerX(element) {
return element.offsetLeft + element.offsetWidth / 2;
}
function centerY(element) {
return element.offsetTop + element.offsetHeight / 2;
}
var shadowRoot = host.attachShadow({mode: 'open'});
var box11 = createBox();
var box12 = createBox();
var box13 = createBox();
shadowRoot.appendChild(box11);
shadowRoot.appendChild(box12);
shadowRoot.appendChild(box13);
var nestedHost = document.createElement('div');
var nestedShadowRoot = nestedHost.attachShadow({mode: 'open'});
var box21 = createBox();
var box22 = createBox();
var box23 = createBox();
nestedShadowRoot.appendChild(box21);
nestedShadowRoot.appendChild(box22);
nestedShadowRoot.appendChild(box23);
shadowRoot.appendChild(nestedHost);
var x12 = centerX(box12);
var y12 = centerY(box12);
var x22 = centerX(box22);
var y22 = centerY(box22);
shouldThrow('shadowRoot.elementFromPoint()');
shouldThrow('shadowRoot.elementFromPoint(0)');
shouldBe('shadowRoot.elementFromPoint(x12, y12)', 'box12');
shouldBe('nestedShadowRoot.elementFromPoint(x22, y22)', 'box22');
shouldBe('shadowRoot.elementFromPoint(x22, y22)', 'nestedHost');
shouldBe('document.elementFromPoint(x22, y22)', 'host');
var root3 = blockHost.attachShadow({mode: 'open'});
root3.appendChild(document.createTextNode('text1'));
var root4 = inlineBlockHost.attachShadow({mode: 'open'});
root4.appendChild(document.createTextNode('text2'));
shouldBe('root3.elementFromPoint(centerX(blockHost), centerY(blockHost))', 'blockHost');
shouldBe('document.elementFromPoint(centerX(blockHost), centerY(blockHost))', 'blockHost');
shouldBe('root4.elementFromPoint(centerX(inlineBlockHost), centerY(inlineBlockHost))', 'inlineBlockHost');
shouldBe('document.elementFromPoint(centerX(inlineBlockHost), centerY(inlineBlockHost))', 'inlineBlockHost');
shouldBe('document.elementFromPoint(centerX(submit), centerY(submit))', 'submit');
</script>
</body>
</html>