mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-30 04:39:06 +00:00
LibWeb: Make Node::parent_element return GC::Ptr
This is useful for people like myself who run with debug mode to more reliably get stacktraces without spinning up a debugger.
This commit is contained in:
parent
a14481ee05
commit
3e17b1c9ae
Notes:
github-actions[bot]
2025-04-18 09:08:36 +00:00
Author: https://github.com/shannonbooth
Commit: 3e17b1c9ae
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4393
18 changed files with 48 additions and 54 deletions
|
@ -42,84 +42,84 @@ Optional<Role> ARIAMixin::role_from_role_attribute_value() const
|
|||
// without the required accessible parent of role list), User Agents MUST ignore the role token, and return the
|
||||
// computedrole as if the ignored role token had not been included.
|
||||
if (role == ARIA::Role::columnheader) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (ancestor->role_or_default() == ARIA::Role::row)
|
||||
return ARIA::Role::columnheader;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::gridcell) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (ancestor->role_or_default() == ARIA::Role::row)
|
||||
return ARIA::Role::gridcell;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::listitem) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (first_is_one_of(ancestor->role_or_default(), ARIA::Role::directory, ARIA::Role::list))
|
||||
return ARIA::Role::listitem;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::menuitem) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (first_is_one_of(ancestor->role_or_default(), ARIA::Role::menu, ARIA::Role::menubar))
|
||||
return ARIA::Role::menuitem;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::menuitemcheckbox) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (first_is_one_of(ancestor->role_or_default(), ARIA::Role::menu, ARIA::Role::menubar))
|
||||
return ARIA::Role::menuitemcheckbox;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::menuitemradio) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (first_is_one_of(ancestor->role_or_default(), ARIA::Role::menu, ARIA::Role::menubar))
|
||||
return ARIA::Role::menuitemradio;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::option) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (ancestor->role_or_default() == ARIA::Role::listbox)
|
||||
return ARIA::Role::option;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::row) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (first_is_one_of(ancestor->role_or_default(), ARIA::Role::table, ARIA::Role::grid, ARIA::Role::treegrid))
|
||||
return ARIA::Role::row;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::rowgroup) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (first_is_one_of(ancestor->role_or_default(), ARIA::Role::table, ARIA::Role::grid, ARIA::Role::treegrid))
|
||||
return ARIA::Role::rowgroup;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::rowheader) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (ancestor->role_or_default() == ARIA::Role::row)
|
||||
return ARIA::Role::rowheader;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::tab) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (ancestor->role_or_default() == ARIA::Role::tablist)
|
||||
return ARIA::Role::tab;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
if (role == ARIA::Role::treeitem) {
|
||||
for (auto const* ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
for (auto ancestor = to_element()->parent_element(); ancestor; ancestor = ancestor->parent_element()) {
|
||||
if (ancestor->role_or_default() == ARIA::Role::tree)
|
||||
return ARIA::Role::treeitem;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue