mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-12-14 18:30:38 +00:00
LibWeb: Make getElementsByClassName() case-insensitive in quirks mode
From https://dom.spec.whatwg.org/#concept-getelementsbyclassname: The comparisons for the classes must be done in an ASCII case- insensitive manner if root’s node document’s mode is "quirks", and in an identical to manner otherwise.
This commit is contained in:
parent
5a9094a70a
commit
2a38f008bf
Notes:
sideshowbarker
2024-07-18 22:31:37 +09:00
Author: https://github.com/linusg Commit: https://github.com/SerenityOS/serenity/commit/2a38f008bf9 Pull-request: https://github.com/SerenityOS/serenity/pull/5264 Reviewed-by: https://github.com/Lubrsi
3 changed files with 8 additions and 4 deletions
|
@ -505,7 +505,7 @@ NonnullRefPtrVector<Element> Document::get_elements_by_class_name(const FlyStrin
|
|||
{
|
||||
NonnullRefPtrVector<Element> elements;
|
||||
for_each_in_subtree_of_type<Element>([&](auto& element) {
|
||||
if (element.has_class(class_name))
|
||||
if (element.has_class(class_name, in_quirks_mode() ? CaseSensitivity::CaseInsensitive : CaseSensitivity::CaseSensitive))
|
||||
elements.append(element);
|
||||
return IterationDecision::Continue;
|
||||
});
|
||||
|
|
|
@ -103,9 +103,13 @@ void Element::remove_attribute(const FlyString& name)
|
|||
m_attributes.remove_first_matching([&](auto& attribute) { return attribute.name() == name; });
|
||||
}
|
||||
|
||||
bool Element::has_class(const FlyString& class_name) const
|
||||
bool Element::has_class(const FlyString& class_name, CaseSensitivity case_sensitivity) const
|
||||
{
|
||||
return any_of(m_classes.begin(), m_classes.end(), [&](auto& it) { return it == class_name; });
|
||||
return any_of(m_classes.begin(), m_classes.end(), [&](auto& it) {
|
||||
return case_sensitivity == CaseSensitivity::CaseSensitive
|
||||
? it == class_name
|
||||
: it.to_lowercase() == class_name.to_lowercase();
|
||||
});
|
||||
}
|
||||
|
||||
RefPtr<Layout::Node> Element::create_layout_node()
|
||||
|
|
|
@ -73,7 +73,7 @@ public:
|
|||
callback(attribute.name(), attribute.value());
|
||||
}
|
||||
|
||||
bool has_class(const FlyString&) const;
|
||||
bool has_class(const FlyString&, CaseSensitivity = CaseSensitivity::CaseSensitive) const;
|
||||
const Vector<FlyString>& class_names() const { return m_classes; }
|
||||
|
||||
virtual void apply_presentational_hints(CSS::StyleProperties&) const { }
|
||||
|
|
Loading…
Reference in a new issue