diff --git a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp index fb919fadf6..ecfa0cadf2 100644 --- a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp +++ b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.cpp @@ -176,6 +176,23 @@ Attr const* NamedNodeMap::get_attribute(StringView qualified_name, size_t* item_ return nullptr; } +// https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace +Attr const* NamedNodeMap::get_attribute_ns(Optional const& namespace_, FlyString const& local_name, size_t* item_index) const +{ + // FIXME: We shouldn't need to do any conversion when looking up in the node map. + StringView namespace_view; + if (namespace_.has_value()) + namespace_view = namespace_->bytes_as_string_view(); + + return get_attribute_ns(namespace_view, local_name, item_index); +} + +// https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace +Attr* NamedNodeMap::get_attribute_ns(Optional const& namespace_, FlyString const& local_name, size_t* item_index) +{ + return const_cast(const_cast(this)->get_attribute_ns(namespace_, local_name, item_index)); +} + // https://dom.spec.whatwg.org/#concept-element-attributes-get-by-namespace Attr* NamedNodeMap::get_attribute_ns(StringView namespace_, StringView local_name, size_t* item_index) { diff --git a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h index 82fd1d5af2..3c1591f97e 100644 --- a/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h +++ b/Userland/Libraries/LibWeb/DOM/NamedNodeMap.h @@ -52,6 +52,9 @@ public: void replace_attribute(Attr& old_attribute, Attr& new_attribute, size_t old_attribute_index); void append_attribute(Attr& attribute); + Attr* get_attribute_ns(Optional const& namespace_, FlyString const& local_name, size_t* item_index = nullptr); + Attr const* get_attribute_ns(Optional const& namespace_, FlyString const& local_name, size_t* item_index = nullptr) const; + // FIXME: This should take a 'FlyString cosnt&' Attr const* remove_attribute(StringView qualified_name); Attr const* remove_attribute_ns(StringView namespace_, StringView local_name);