| <!DOCTYPE html> |
| <html> |
| <body> |
| <p>This tests tooltip across shadow boundaries. To manually test, hover over two boxes below. You should see tooltips for each.</p> |
| <div class="container"><a title="Tooltip"><span id="hostWithTitle"></span></a></div> |
| <div class="container"><span id="hostWithSlottedContent"><span id="content">Hover over here 2</span></span></a></div> |
| <style> |
| |
| .container { |
| border: solid 1px blue; |
| width: 100px; |
| height: 100px; |
| position: relative; |
| margin-bottom: 10px; |
| } |
| |
| #content { |
| position: absolute; |
| left: 0px; |
| top: 0px; |
| width: 100px; |
| height: 100px; |
| background: #eee; |
| } |
| |
| </style> |
| <pre><script> |
| |
| var hostWithTitle = document.getElementById('hostWithTitle'); |
| var shadowRoot = hostWithTitle.attachShadow({mode: 'closed'}); |
| shadowRoot.innerHTML = ` |
| <style> |
| #content { |
| position: absolute; |
| left: 0px; |
| top: 0px; |
| width: 100px; |
| height: 100px; |
| background: #eee; |
| } |
| </style> |
| <div id="content">Hover over here 1</div> |
| `; |
| |
| var nodeInsideShadowRoot = shadowRoot.querySelector('#content'); |
| var slottedNode = document.querySelector('#content'); |
| |
| shadowRootWithSlot = document.getElementById('hostWithSlottedContent').attachShadow({mode: 'closed'}); |
| shadowRootWithSlot.innerHTML = `<slot title="Tooltip"></slot>`; |
| |
| if (window.internals) { |
| testRunner.dumpAsText(); |
| |
| document.write((internals.toolTipFromElement(nodeInsideShadowRoot) == 'Tooltip' ? 'PASS' : 'FAIL') |
| + ' - Tooltip on a node inside a shadow tree with title on its shadow host ancestor\n'); |
| |
| document.write((internals.toolTipFromElement(slottedNode) == 'Tooltip' ? 'PASS' : 'FAIL') |
| + ' - Tooltip on a slotted node with title on its slot\n'); |
| |
| Array.from(document.querySelectorAll('.container')).map(function (node) { node.remove(); }); |
| } |
| |
| </script></pre> |
| </body> |
| </html> |