| <!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> |