Przeglądaj źródła

LibWeb: Convert ParentNode.querySelectorAll to NodeList

Luke Wilde 3 lat temu
rodzic
commit
2f7fb1fe63

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Document.idl

@@ -66,7 +66,7 @@ interface Document : Node {
     readonly attribute unsigned long childElementCount;
 
     Element? querySelector(DOMString selectors);
-    ArrayFromVector querySelectorAll(DOMString selectors);
+    [NewObject] NodeList querySelectorAll(DOMString selectors);
 
     [SameObject] readonly attribute HTMLCollection children;
 

+ 1 - 1
Userland/Libraries/LibWeb/DOM/DocumentFragment.idl

@@ -10,7 +10,7 @@ interface DocumentFragment : Node {
     readonly attribute unsigned long childElementCount;
 
     Element? querySelector(DOMString selectors);
-    ArrayFromVector querySelectorAll(DOMString selectors);
+    [NewObject] NodeList querySelectorAll(DOMString selectors);
 
     [SameObject] readonly attribute HTMLCollection children;
 

+ 1 - 1
Userland/Libraries/LibWeb/DOM/Element.idl

@@ -33,7 +33,7 @@ interface Element : Node {
     readonly attribute unsigned long childElementCount;
 
     Element? querySelector(DOMString selectors);
-    ArrayFromVector querySelectorAll(DOMString selectors);
+    [NewObject] NodeList querySelectorAll(DOMString selectors);
 
     [SameObject] readonly attribute HTMLCollection children;
 

+ 4 - 3
Userland/Libraries/LibWeb/DOM/ParentNode.cpp

@@ -8,6 +8,7 @@
 #include <LibWeb/CSS/SelectorEngine.h>
 #include <LibWeb/DOM/HTMLCollection.h>
 #include <LibWeb/DOM/ParentNode.h>
+#include <LibWeb/DOM/StaticNodeList.h>
 #include <LibWeb/Dump.h>
 #include <LibWeb/Namespace.h>
 
@@ -35,7 +36,7 @@ ExceptionOr<RefPtr<Element>> ParentNode::query_selector(StringView selector_text
     return result;
 }
 
-ExceptionOr<NonnullRefPtrVector<Element>> ParentNode::query_selector_all(StringView selector_text)
+ExceptionOr<NonnullRefPtr<NodeList>> ParentNode::query_selector_all(StringView selector_text)
 {
     auto maybe_selectors = parse_selector(CSS::ParsingContext(*this), selector_text);
     if (!maybe_selectors.has_value())
@@ -43,7 +44,7 @@ ExceptionOr<NonnullRefPtrVector<Element>> ParentNode::query_selector_all(StringV
 
     auto selectors = maybe_selectors.value();
 
-    NonnullRefPtrVector<Element> elements;
+    NonnullRefPtrVector<Node> elements;
     for_each_in_inclusive_subtree_of_type<Element>([&](auto& element) {
         for (auto& selector : selectors) {
             if (SelectorEngine::matches(selector, element)) {
@@ -53,7 +54,7 @@ ExceptionOr<NonnullRefPtrVector<Element>> ParentNode::query_selector_all(StringV
         return IterationDecision::Continue;
     });
 
-    return elements;
+    return StaticNodeList::create(move(elements));
 }
 
 RefPtr<Element> ParentNode::first_element_child()

+ 1 - 1
Userland/Libraries/LibWeb/DOM/ParentNode.h

@@ -23,7 +23,7 @@ public:
     u32 child_element_count() const;
 
     ExceptionOr<RefPtr<Element>> query_selector(StringView);
-    ExceptionOr<NonnullRefPtrVector<Element>> query_selector_all(StringView);
+    ExceptionOr<NonnullRefPtr<NodeList>> query_selector_all(StringView);
 
     NonnullRefPtr<HTMLCollection> children();