diff --git a/Userland/Libraries/LibWeb/DOM/Document.idl b/Userland/Libraries/LibWeb/DOM/Document.idl index 71908af982..6e6c1e80d2 100644 --- a/Userland/Libraries/LibWeb/DOM/Document.idl +++ b/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; diff --git a/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl b/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl index 666f6007ec..ac2d2b97c0 100644 --- a/Userland/Libraries/LibWeb/DOM/DocumentFragment.idl +++ b/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; diff --git a/Userland/Libraries/LibWeb/DOM/Element.idl b/Userland/Libraries/LibWeb/DOM/Element.idl index b686766b93..19330dd789 100644 --- a/Userland/Libraries/LibWeb/DOM/Element.idl +++ b/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; diff --git a/Userland/Libraries/LibWeb/DOM/ParentNode.cpp b/Userland/Libraries/LibWeb/DOM/ParentNode.cpp index b4550ebaae..e924c5320f 100644 --- a/Userland/Libraries/LibWeb/DOM/ParentNode.cpp +++ b/Userland/Libraries/LibWeb/DOM/ParentNode.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -35,7 +36,7 @@ ExceptionOr> ParentNode::query_selector(StringView selector_text return result; } -ExceptionOr> ParentNode::query_selector_all(StringView selector_text) +ExceptionOr> 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> ParentNode::query_selector_all(StringV auto selectors = maybe_selectors.value(); - NonnullRefPtrVector elements; + NonnullRefPtrVector elements; for_each_in_inclusive_subtree_of_type([&](auto& element) { for (auto& selector : selectors) { if (SelectorEngine::matches(selector, element)) { @@ -53,7 +54,7 @@ ExceptionOr> ParentNode::query_selector_all(StringV return IterationDecision::Continue; }); - return elements; + return StaticNodeList::create(move(elements)); } RefPtr ParentNode::first_element_child() diff --git a/Userland/Libraries/LibWeb/DOM/ParentNode.h b/Userland/Libraries/LibWeb/DOM/ParentNode.h index 931813d63e..fc7f962847 100644 --- a/Userland/Libraries/LibWeb/DOM/ParentNode.h +++ b/Userland/Libraries/LibWeb/DOM/ParentNode.h @@ -23,7 +23,7 @@ public: u32 child_element_count() const; ExceptionOr> query_selector(StringView); - ExceptionOr> query_selector_all(StringView); + ExceptionOr> query_selector_all(StringView); NonnullRefPtr children();