SemanticTree: use AXRole enum for interactive role check

This commit is contained in:
Adrià Arrufat
2026-03-06 16:24:49 +09:00
parent f2832447d4
commit e0f0b9f210
2 changed files with 22 additions and 17 deletions

View File

@@ -560,13 +560,31 @@ pub const AXRole = enum(u8) {
none, article, banner, blockquote, button, caption, cell, checkbox, code,
columnheader, combobox, complementary, contentinfo, definition, deletion,
dialog, document, emphasis, figure, form, group, heading, image, insertion,
link, list, listbox, listitem, main, marquee, meter, navigation, option,
link, list, listbox, listitem, main, marquee, menuitem, meter, navigation, option,
paragraph, presentation, progressbar, radio, region, row, rowgroup,
rowheader, searchbox, separator, slider, spinbutton, status, strong,
subscript, superscript, table, term, textbox, time, RootWebArea, LineBreak,
subscript, superscript, @"switch", table, term, textbox, time, RootWebArea, LineBreak,
StaticText,
// zig fmt: on
pub fn isInteractive(self: AXRole) bool {
return switch (self) {
.button,
.link,
.checkbox,
.radio,
.textbox,
.combobox,
.searchbox,
.slider,
.spinbutton,
.@"switch",
.menuitem,
=> true,
else => false,
};
}
fn fromNode(node: *DOMNode) !AXRole {
return switch (node._type) {
.document => return .RootWebArea, // Chrome specific.