ladybird/Tests/LibWeb/Text/input/html-form-controls-collection.html
Shannon Booth ec2b4c271f LibWeb: Support RadioNodeList named items in HTMLFormControlsCollection
We would previously not return a RadioNodeList in the curious case where
a named item resolves to two different elements within the form.

This was not a problem when calling namedItem directly in the IDL as
named_item_or_radio_node_list shadows named_item but is exposed when
calling the property through array bracket notation (as an example).

Fix this, and add a bunch more tests to cover
HTMLFormControlsCollection.
2023-12-23 20:53:11 +01:00

57 lines
1.8 KiB
HTML

<form>
<input name="one" id="formcontrol" type="button" />
<input name="two" id="formcontrol" type="text" />
</form>
<script src="include.js"></script>
<script>
function printDescription(name) {
println("-------------------");
println(name);
println("-------------------");
}
function dumpInput(name, item) {
printDescription(name);
println(item.constructor.name);
println(item.id);
println(item.type);
}
function dumpRadioNodeList(name, radioNodeList) {
printDescription(name);
println(radioNodeList.constructor.name);
println(radioNodeList.length);
println(radioNodeList[0].type);
println(radioNodeList[1].type);
}
function dumpNoMatch(name, item) {
printDescription(name);
println(item);
}
test(() => {
const form = document.forms[0].elements;
println(form.constructor.name);
println(form.length);
dumpRadioNodeList('form.namedItem("formcontrol")', form.namedItem("formcontrol"))
dumpInput('form.namedItem("one")', form.namedItem("one"));
dumpInput('form.namedItem("two")', form.namedItem("two"));
dumpNoMatch('form.namedItem("nomatch")', form.namedItem("nomatch"));
dumpRadioNodeList('form["formcontrol"]', form["formcontrol"])
dumpInput('form["one"]', form["one"]);
dumpInput('form["two"]', form["two"]);
dumpNoMatch('form["nomatch"]', form["nomatch"]);
dumpRadioNodeList('form.formcontrol', form.formcontrol)
dumpInput('form.one', form.one);
dumpInput('form.two', form.two);
dumpNoMatch('form.nomatch', form.nomatch);
dumpInput('form[0]', form[0]);
dumpInput('form[1]', form[1]);
dumpNoMatch('form[2]', form[2]);
})
</script>