1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-14 17:14:58 +00:00

LibWeb: Implement [SameObject] behavior for HTMLTableSectionElement.rows

This commit is contained in:
Andreas Kling 2022-11-24 19:04:27 +01:00
parent d7c58aa58d
commit ad36bc72f4
2 changed files with 17 additions and 6 deletions

View file

@ -22,17 +22,24 @@ HTMLTableSectionElement::HTMLTableSectionElement(DOM::Document& document, DOM::Q
HTMLTableSectionElement::~HTMLTableSectionElement() = default;
void HTMLTableSectionElement::visit_edges(Cell::Visitor& visitor)
{
Base::visit_edges(visitor);
visitor.visit(m_rows);
}
// https://html.spec.whatwg.org/multipage/tables.html#dom-tbody-rows
JS::NonnullGCPtr<DOM::HTMLCollection> HTMLTableSectionElement::rows() const
{
// The rows attribute must return an HTMLCollection rooted at this element,
// whose filter matches only tr elements that are children of this element.
// FIXME: This should return the same HTMLCollection object every time,
// but that would cause a reference cycle since HTMLCollection refs the root.
return DOM::HTMLCollection::create(const_cast<HTMLTableSectionElement&>(*this), [this](Element const& element) {
return element.parent() == this
&& is<HTMLTableRowElement>(element);
});
if (!m_rows) {
m_rows = DOM::HTMLCollection::create(const_cast<HTMLTableSectionElement&>(*this), [this](Element const& element) {
return element.parent() == this
&& is<HTMLTableRowElement>(element);
});
}
return *m_rows;
}
// https://html.spec.whatwg.org/multipage/tables.html#dom-tbody-insertrow