LibWeb: Pass a FlyString to getElementsByTagNameNS

This commit is contained in:
Shannon Booth 2024-05-12 14:50:45 +12:00 committed by Sam Atkins
commit dadc610e4a
Notes: sideshowbarker 2024-07-16 20:44:03 +09:00
4 changed files with 8 additions and 10 deletions

View file

@ -71,8 +71,8 @@ interface Document : Node {
Element? getElementById(DOMString id);
HTMLCollection getElementsByName([FlyString] DOMString name);
HTMLCollection getElementsByTagName(DOMString tagName);
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
HTMLCollection getElementsByTagName([FlyString] DOMString tagName);
HTMLCollection getElementsByTagNameNS([FlyString] DOMString? namespace, [FlyString] DOMString localName);
HTMLCollection getElementsByClassName(DOMString className);
[SameObject] readonly attribute HTMLCollection applets;

View file

@ -60,8 +60,8 @@ interface Element : Node {
Element? closest(DOMString selectors);
[ImplementedAs=matches] boolean webkitMatchesSelector(DOMString selectors); // legacy alias of .matches
HTMLCollection getElementsByTagName(DOMString tagName);
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
HTMLCollection getElementsByTagName([FlyString] DOMString tagName);
HTMLCollection getElementsByTagNameNS([FlyString] DOMString? namespace, [FlyString] DOMString localName);
HTMLCollection getElementsByClassName(DOMString className);
[CEReactions] Element? insertAdjacentElement(DOMString where, Element element); // legacy

View file

@ -156,12 +156,11 @@ JS::NonnullGCPtr<HTMLCollection> ParentNode::get_elements_by_tag_name(FlyString
// https://dom.spec.whatwg.org/#concept-getelementsbytagnamens
// NOTE: This method is only exposed on Document and Element, but is in ParentNode to prevent code duplication.
JS::NonnullGCPtr<HTMLCollection> ParentNode::get_elements_by_tag_name_ns(Optional<String> const& nullable_namespace, FlyString const& local_name)
JS::NonnullGCPtr<HTMLCollection> ParentNode::get_elements_by_tag_name_ns(Optional<FlyString> namespace_, FlyString const& local_name)
{
// 1. If namespace is the empty string, set it to null.
Optional<FlyString> namespace_;
if (nullable_namespace.has_value() && !nullable_namespace->is_empty())
namespace_ = nullable_namespace.value();
if (namespace_ == FlyString {})
namespace_ = OptionalNone {};
// 2. If both namespace and localName are "*" (U+002A), return a HTMLCollection rooted at root, whose filter matches descendant elements.
if (namespace_ == "*" && local_name == "*") {

View file

@ -30,8 +30,7 @@ public:
JS::NonnullGCPtr<HTMLCollection> children();
JS::NonnullGCPtr<HTMLCollection> get_elements_by_tag_name(FlyString const&);
// FIXME: This should take an Optional<FlyString>
JS::NonnullGCPtr<HTMLCollection> get_elements_by_tag_name_ns(Optional<String> const&, FlyString const&);
JS::NonnullGCPtr<HTMLCollection> get_elements_by_tag_name_ns(Optional<FlyString>, FlyString const&);
WebIDL::ExceptionOr<void> prepend(Vector<Variant<JS::Handle<Node>, String>> const& nodes);
WebIDL::ExceptionOr<void> append(Vector<Variant<JS::Handle<Node>, String>> const& nodes);