ソースを参照

LibWeb: Implement child_navigables() for navigables

Aliaksandr Kalenik 2 年 前
コミット
eb4db6057d

+ 12 - 0
Userland/Libraries/LibWeb/HTML/Navigable.cpp

@@ -28,6 +28,18 @@ static HashTable<Navigable*>& all_navigables()
     return set;
 }
 
+// https://html.spec.whatwg.org/multipage/document-sequences.html#child-navigable
+Vector<JS::Handle<Navigable>> Navigable::child_navigables() const
+{
+    Vector<JS::Handle<Navigable>> results;
+    for (auto& entry : all_navigables()) {
+        if (entry->parent() == this)
+            results.append(entry);
+    }
+
+    return results;
+}
+
 Navigable::Navigable()
 {
     all_navigables().set(this);

+ 2 - 0
Userland/Libraries/LibWeb/HTML/Navigable.h

@@ -29,6 +29,8 @@ public:
 
     ErrorOr<void> initialize_navigable(JS::NonnullGCPtr<DocumentState> document_state, JS::GCPtr<Navigable> parent);
 
+    Vector<JS::Handle<Navigable>> child_navigables() const;
+
     String const& id() const { return m_id; };
     JS::GCPtr<Navigable> parent() const { return m_parent; };