mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-08 09:09:43 +00:00
LibWeb: Move ariaActiveDescendantElement to ARIAMixin
Not an issue right now, but all IDL types that include the ARIA mixin will need this.
This commit is contained in:
parent
a7b1f2c800
commit
0289df9357
Notes:
github-actions[bot]
2025-04-25 00:21:29 +00:00
Author: https://github.com/trflynn89
Commit: 0289df9357
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4460
Reviewed-by: https://github.com/tcl3 ✅
4 changed files with 20 additions and 9 deletions
|
@ -11,6 +11,14 @@
|
||||||
|
|
||||||
namespace Web::ARIA {
|
namespace Web::ARIA {
|
||||||
|
|
||||||
|
ARIAMixin::ARIAMixin() = default;
|
||||||
|
ARIAMixin::~ARIAMixin() = default;
|
||||||
|
|
||||||
|
void ARIAMixin::visit_edges(GC::Cell::Visitor& visitor)
|
||||||
|
{
|
||||||
|
visitor.visit(m_aria_active_descendant_element);
|
||||||
|
}
|
||||||
|
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#introroles
|
// https://www.w3.org/TR/wai-aria-1.2/#introroles
|
||||||
Optional<Role> ARIAMixin::role_from_role_attribute_value() const
|
Optional<Role> ARIAMixin::role_from_role_attribute_value() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -17,7 +17,7 @@ namespace Web::ARIA {
|
||||||
|
|
||||||
class ARIAMixin {
|
class ARIAMixin {
|
||||||
public:
|
public:
|
||||||
virtual ~ARIAMixin() = default;
|
virtual ~ARIAMixin();
|
||||||
|
|
||||||
#define __ENUMERATE_ARIA_ATTRIBUTE(name, attribute) \
|
#define __ENUMERATE_ARIA_ATTRIBUTE(name, attribute) \
|
||||||
virtual Optional<String> name() const = 0; \
|
virtual Optional<String> name() const = 0; \
|
||||||
|
@ -48,10 +48,18 @@ public:
|
||||||
// https://www.w3.org/TR/wai-aria-1.2/#valuetype_idref_list
|
// https://www.w3.org/TR/wai-aria-1.2/#valuetype_idref_list
|
||||||
Vector<String> parse_id_reference_list(Optional<String> const&) const;
|
Vector<String> parse_id_reference_list(Optional<String> const&) const;
|
||||||
|
|
||||||
|
GC::Ptr<DOM::Element> aria_active_descendant_element() { return m_aria_active_descendant_element; }
|
||||||
|
void set_aria_active_descendant_element(GC::Ptr<DOM::Element> value) { m_aria_active_descendant_element = value; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
ARIAMixin() = default;
|
ARIAMixin();
|
||||||
|
|
||||||
|
void visit_edges(GC::Cell::Visitor&);
|
||||||
|
|
||||||
virtual bool id_reference_exists(String const&) const = 0;
|
virtual bool id_reference_exists(String const&) const = 0;
|
||||||
|
|
||||||
|
private:
|
||||||
|
GC::Ptr<DOM::Element> m_aria_active_descendant_element;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -105,8 +105,8 @@ void Element::visit_edges(Cell::Visitor& visitor)
|
||||||
Base::visit_edges(visitor);
|
Base::visit_edges(visitor);
|
||||||
SlottableMixin::visit_edges(visitor);
|
SlottableMixin::visit_edges(visitor);
|
||||||
Animatable::visit_edges(visitor);
|
Animatable::visit_edges(visitor);
|
||||||
|
ARIAMixin::visit_edges(visitor);
|
||||||
|
|
||||||
visitor.visit(m_aria_active_descendant_element);
|
|
||||||
visitor.visit(m_attributes);
|
visitor.visit(m_attributes);
|
||||||
visitor.visit(m_inline_style);
|
visitor.visit(m_inline_style);
|
||||||
visitor.visit(m_class_list);
|
visitor.visit(m_class_list);
|
||||||
|
@ -3607,7 +3607,7 @@ void Element::attribute_changed(FlyString const& local_name, Optional<String> co
|
||||||
} else if (local_name == ARIA::AttributeNames::aria_active_descendant) {
|
} else if (local_name == ARIA::AttributeNames::aria_active_descendant) {
|
||||||
// https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:concept-element-attributes-change-ext
|
// https://html.spec.whatwg.org/multipage/common-dom-interfaces.html#reflecting-content-attributes-in-idl-attributes:concept-element-attributes-change-ext
|
||||||
// Set element's explicitly set attr-element to null.
|
// Set element's explicitly set attr-element to null.
|
||||||
m_aria_active_descendant_element = nullptr;
|
set_aria_active_descendant_element({});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -323,9 +323,6 @@ public:
|
||||||
ENUMERATE_ARIA_ATTRIBUTES
|
ENUMERATE_ARIA_ATTRIBUTES
|
||||||
#undef __ENUMERATE_ARIA_ATTRIBUTE
|
#undef __ENUMERATE_ARIA_ATTRIBUTE
|
||||||
|
|
||||||
GC::Ptr<DOM::Element> aria_active_descendant_element() { return m_aria_active_descendant_element; }
|
|
||||||
void set_aria_active_descendant_element(GC::Ptr<DOM::Element> value) { m_aria_active_descendant_element = value; }
|
|
||||||
|
|
||||||
virtual bool exclude_from_accessibility_tree() const override;
|
virtual bool exclude_from_accessibility_tree() const override;
|
||||||
|
|
||||||
virtual bool include_in_accessibility_tree() const override;
|
virtual bool include_in_accessibility_tree() const override;
|
||||||
|
@ -579,8 +576,6 @@ private:
|
||||||
|
|
||||||
OwnPtr<CSS::CountersSet> m_counters_set;
|
OwnPtr<CSS::CountersSet> m_counters_set;
|
||||||
|
|
||||||
GC::Ptr<DOM::Element> m_aria_active_descendant_element;
|
|
||||||
|
|
||||||
// https://drafts.csswg.org/css-contain/#proximity-to-the-viewport
|
// https://drafts.csswg.org/css-contain/#proximity-to-the-viewport
|
||||||
ProximityToTheViewport m_proximity_to_the_viewport { ProximityToTheViewport::NotDetermined };
|
ProximityToTheViewport m_proximity_to_the_viewport { ProximityToTheViewport::NotDetermined };
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue