|
@@ -46,6 +46,7 @@
|
|
|
#include <LibWeb/Layout/TableRowGroupBox.h>
|
|
|
#include <LibWeb/Layout/TreeBuilder.h>
|
|
|
#include <LibWeb/Layout/WidgetBox.h>
|
|
|
+#include <LibWeb/Namespace.h>
|
|
|
|
|
|
namespace Web::DOM {
|
|
|
|
|
@@ -344,4 +345,31 @@ bool Element::is_focused() const
|
|
|
return document().focused_element() == this;
|
|
|
}
|
|
|
|
|
|
+NonnullRefPtrVector<Element> Element::get_elements_by_tag_name(const FlyString& tag_name) const
|
|
|
+{
|
|
|
+ // FIXME: Support "*" for tag_name
|
|
|
+ // https://dom.spec.whatwg.org/#concept-getelementsbytagname
|
|
|
+ NonnullRefPtrVector<Element> elements;
|
|
|
+ for_each_in_subtree_of_type<Element>([&](auto& element) {
|
|
|
+ if (element.namespace_() == Namespace::HTML
|
|
|
+ ? element.local_name().to_lowercase() == tag_name.to_lowercase()
|
|
|
+ : element.local_name() == tag_name) {
|
|
|
+ elements.append(element);
|
|
|
+ }
|
|
|
+ return IterationDecision::Continue;
|
|
|
+ });
|
|
|
+ return elements;
|
|
|
+}
|
|
|
+
|
|
|
+NonnullRefPtrVector<Element> Element::get_elements_by_class_name(const FlyString& class_name) const
|
|
|
+{
|
|
|
+ NonnullRefPtrVector<Element> elements;
|
|
|
+ for_each_in_subtree_of_type<Element>([&](auto& element) {
|
|
|
+ if (element.has_class(class_name, m_document->in_quirks_mode() ? CaseSensitivity::CaseInsensitive : CaseSensitivity::CaseSensitive))
|
|
|
+ elements.append(element);
|
|
|
+ return IterationDecision::Continue;
|
|
|
+ });
|
|
|
+ return elements;
|
|
|
+}
|
|
|
+
|
|
|
}
|