| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8" /> |
| <title>inert inside ShadowRoot affects slotted content</title> |
| <link rel="author" title="Alice Boxhall" href="aboxhall@chromium.org"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| </head> |
| <body> |
| <div>Button 1 should be inert, and Button 2 should not be inert.</div> |
| <div id="shadow-host"> |
| <button slot="slot-1" id="button-1">Button 1 (inert)</button> |
| <button slot="slot-2" id="button-2">Button 2 (not inert)</button> |
| </div> |
| <script> |
| /* |
| Eventual flattened tree structure: |
| |
| <div id="shadow-host"> |
| #shadow-root (open) |
| | <slot id="slot-1" inert> |
| : <button id="button-1">Button 1</button> <!-- slotted --> |
| | </slot> |
| | <slot id="slot-2"> |
| : <button id="button-2">Button 2</button> <!-- slotted --> |
| | </slot> |
| </div> |
| */ |
| |
| const shadowHost = document.getElementById("shadow-host"); |
| const shadowRoot = shadowHost.attachShadow({ mode: "open" }); |
| |
| const slot1 = document.createElement("slot"); |
| slot1.name = "slot-1"; |
| slot1.inert = true; |
| shadowRoot.appendChild(slot1); |
| |
| const slot2 = document.createElement("slot"); |
| slot2.name = "slot-2"; |
| shadowRoot.appendChild(slot2); |
| |
| function testCanFocus(selector, canFocus) { |
| const element = document.querySelector(selector); |
| let focusedElement = null; |
| element.addEventListener("focus", function() { focusedElement = element; }, false); |
| element.focus(); |
| assert_equals((focusedElement === element), canFocus); |
| } |
| |
| test(() => { |
| testCanFocus("#button-1", false); |
| testCanFocus("#button-2", true); |
| }, "inert inside ShadowRoot affects slotted content"); |
| </script> |
| </body> |
| </html> |