| <!DOCTYPE html> | |
| <body> | |
| <script src="/resources/testharness.js"></script> | |
| <script src="/resources/testharnessreport.js"></script> | |
| <script> | |
| customElements.define('custom-input-parser', class extends HTMLElement { | |
| static get formAssociated() {return true;} | |
| }); | |
| </script> | |
| <form> | |
| <fieldset id="fs_outer"> | |
| <custom-input-parser name="custom-1"></custom-input> | |
| <custom-input-upgrade name="custom-2"></custom-input> | |
| <fieldset id="fs_inner"> | |
| <custom-input-parser name="custom-3"></custom-input> | |
| <custom-input-upgrade name="custom-4"></custom-input> | |
| <uncustom-input></custom-input> | |
| </fieldset> | |
| </fieldset> | |
| <custom-input-parser name="custom-5"></custom-input> | |
| <custom-input-upgrade name="custom-6"></custom-input> | |
| </form> | |
| <script> | |
| test(() => { | |
| const formElements = document.forms[0].elements; | |
| const fs_outer = document.getElementById("fs_outer"); | |
| const fs_inner = document.getElementById("fs_inner"); | |
| assert_array_equals(fs_inner.elements, [formElements['custom-3']], | |
| "The items in the collection must be children of the inner fieldset element."); | |
| assert_array_equals(fs_outer.elements, [formElements['custom-1'], fs_inner, formElements['custom-3']], | |
| "The items in the collection must be descendants of the outer fieldset element."); | |
| customElements.define('custom-input-upgrade', class extends HTMLElement { | |
| static get formAssociated() {return true;} | |
| }); | |
| assert_array_equals(fs_inner.elements, [formElements['custom-3'], formElements['custom-4']], | |
| "The items in the collection must be children of the inner fieldset element."); | |
| assert_array_equals(fs_outer.elements, | |
| [formElements['custom-1'], formElements['custom-2'], fs_inner, formElements['custom-3'], formElements['custom-4']], | |
| "The items in the collection must be descendants of the outer fieldset element."); | |
| }, 'Form associated custom elements should work with fieldset.elements'); | |
| </script> | |
| </body> |