diff --git a/Userland/Libraries/LibWeb/HTML/Navigable.cpp b/Userland/Libraries/LibWeb/HTML/Navigable.cpp index 006fe0719d..5cb11fd16d 100644 --- a/Userland/Libraries/LibWeb/HTML/Navigable.cpp +++ b/Userland/Libraries/LibWeb/HTML/Navigable.cpp @@ -28,6 +28,18 @@ static HashTable& all_navigables() return set; } +// https://html.spec.whatwg.org/multipage/document-sequences.html#child-navigable +Vector> Navigable::child_navigables() const +{ + Vector> results; + for (auto& entry : all_navigables()) { + if (entry->parent() == this) + results.append(entry); + } + + return results; +} + Navigable::Navigable() { all_navigables().set(this); diff --git a/Userland/Libraries/LibWeb/HTML/Navigable.h b/Userland/Libraries/LibWeb/HTML/Navigable.h index 7a57939cfe..10e853ebd3 100644 --- a/Userland/Libraries/LibWeb/HTML/Navigable.h +++ b/Userland/Libraries/LibWeb/HTML/Navigable.h @@ -29,6 +29,8 @@ public: ErrorOr initialize_navigable(JS::NonnullGCPtr document_state, JS::GCPtr parent); + Vector> child_navigables() const; + String const& id() const { return m_id; }; JS::GCPtr parent() const { return m_parent; };