| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no"> |
| </head> |
| <body> |
| <p>Test passes if you see a single 100px by 100px green box below.</p> |
| <style> |
| * { outline: none; } |
| div { width: 100px; height: 100px; background: gray; } |
| div:focus { background: red; } |
| div:focus-within { color: green; } |
| </style> |
| <script src="../../resources/ui-helper.js"></script> |
| <script> |
| |
| const host = document.createElement('div'); |
| document.body.appendChild(host); |
| |
| const shadowRoot = host.attachShadow({mode: 'closed', delegatesFocus: true}); |
| shadowRoot.innerHTML = ` |
| <style> |
| :host { position: relative; } |
| div { position: absolute; width: 100px; height: 100px; left: 0px; top: 0px; } |
| div:focus { background: green; } |
| </style> |
| <div id="target" tabindex="0"></div> |
| <div>Click here</div>`; |
| |
| async function runTest() { |
| testRunner.dumpAsText(); |
| |
| await UIHelper.activateElement(host); |
| await UIHelper.ensurePresentationUpdate(); |
| await new Promise(requestAnimationFrame); |
| |
| const pre = document.body.appendChild(document.createElement('pre')); |
| log = (text) => pre.textContent += text + '\n'; |
| |
| log('document.activeElement: ' + (document.activeElement == host ? 'PASS' : 'FAIL')); |
| log('host.activeElement: ' + (shadowRoot.activeElement == shadowRoot.getElementById('target') ? 'PASS' : 'FAIL')); |
| } |
| |
| if (window.testRunner) |
| UIHelper.wait(runTest()); |
| |
| </script> |
| </body> |
| </html> |