LibWeb: Use HTMLOptionElement in select item getter

fix item
This commit is contained in:
Bastiaan van der Plaat 2024-04-08 22:01:21 +02:00 committed by Andreas Kling
parent 6f84f69677
commit 8342525434
3 changed files with 8 additions and 10 deletions

View file

@ -114,17 +114,17 @@ WebIDL::ExceptionOr<void> HTMLSelectElement::set_length(WebIDL::UnsignedLong len
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-select-item
DOM::Element* HTMLSelectElement::item(size_t index)
HTMLOptionElement* HTMLSelectElement::item(WebIDL::UnsignedLong index)
{
// The item(index) method must return the value returned by the method of the same name on the options collection, when invoked with the same argument.
return const_cast<HTMLOptionsCollection&>(*options()).item(index);
return verify_cast<HTMLOptionElement>(const_cast<HTMLOptionsCollection&>(*options()).item(index));
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-select-nameditem
DOM::Element* HTMLSelectElement::named_item(FlyString const& name)
HTMLOptionElement* HTMLSelectElement::named_item(FlyString const& name)
{
// The namedItem(name) method must return the value returned by the method of the same name on the options collection, when invoked with the same argument.
return const_cast<HTMLOptionsCollection&>(*options()).named_item(name);
return verify_cast<HTMLOptionElement>(const_cast<HTMLOptionsCollection&>(*options()).named_item(name));
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-select-add

View file

@ -36,8 +36,8 @@ public:
WebIDL::UnsignedLong length();
WebIDL::ExceptionOr<void> set_length(WebIDL::UnsignedLong);
DOM::Element* item(size_t index);
DOM::Element* named_item(FlyString const& name);
HTMLOptionElement* item(WebIDL::UnsignedLong index);
HTMLOptionElement* named_item(FlyString const& name);
WebIDL::ExceptionOr<void> add(HTMLOptionOrOptGroupElement element, Optional<HTMLElementOrElementIndex> before = {});
void remove();
void remove(WebIDL::Long);

View file

@ -19,10 +19,8 @@ interface HTMLSelectElement : HTMLElement {
[SameObject] readonly attribute HTMLOptionsCollection options;
[CEReactions] attribute unsigned long length;
// FIXME: Element is really HTMLOptionElement
getter Element? item(unsigned long index);
// FIXME: Element is really HTMLOptionElement
Element? namedItem(DOMString name);
getter HTMLOptionElement? item(unsigned long index);
HTMLOptionElement? namedItem(DOMString name);
[CEReactions] undefined add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
[CEReactions] undefined remove(); // ChildNode overload
[CEReactions] undefined remove(long index);