| <!doctype html> |
| <meta charset=utf-8> |
| <title>Form controls' form attribute</title> |
| <script src=/resources/testharness.js></script> |
| <script src=/resources/testharnessreport.js></script> |
| <div id="testcontent"> |
| <form id="form">form</form> |
| <input id="input" form="form"> |
| </div> |
| |
| <script> |
| |
| test(() => { |
| assert_equals(document.getElementById('input').form, |
| document.getElementById('form')); |
| }, "Form control's form attribute should point to the form element."); |
| |
| test(() => { |
| var testcontent = document.getElementById("testcontent"); |
| var host = document.createElement("div"); |
| var sr = host.attachShadow({mode: "open"}); |
| sr.innerHTML = testcontent.innerHTML; |
| var input = sr.getElementById("input"); |
| var form = sr.getElementById("form"); |
| |
| // Should have null form when shadow DOM isn't connected. |
| assert_equals(input.form, null); |
| |
| testcontent.appendChild(host); |
| assert_equals(input.form, form); |
| |
| host.remove(); |
| assert_equals(input.form, null); |
| |
| testcontent.appendChild(host); |
| assert_equals(input.form, form); |
| |
| input.remove(); |
| assert_equals(input.form, null); |
| |
| sr.appendChild(input); |
| assert_equals(input.form, form); |
| |
| form.id = "foobar"; |
| assert_equals(input.form, null); |
| |
| form.id = "form"; |
| assert_equals(input.form, form); |
| |
| form.remove(); |
| assert_equals(input.form, null); |
| |
| sr.appendChild(form); |
| assert_equals(input.form, form); |
| |
| host.remove(); |
| }, "Shadow form control's form attribute should work also in shadow DOM."); |
| |
| test(() => { |
| var testcontent = document.getElementById("testcontent"); |
| var host = document.createElement("div"); |
| var sr = host.attachShadow({mode: "open"}); |
| sr.innerHTML = "<form id='form'><input id='input'></form>"; |
| var input = sr.getElementById("input"); |
| var form = sr.getElementById("form"); |
| |
| assert_equals(input.form, form); |
| |
| input.remove(); |
| assert_equals(input.form, null); |
| |
| form.appendChild(input); |
| assert_equals(input.form, form); |
| |
| form.remove(); |
| assert_equals(input.form, form); |
| |
| host.remove(); |
| }, "Form element as form control's ancestor should work also in shadow DOM."); |
| </script> |