Index: ui/accessibility/platform/ax_platform_node_auralinux.cc |
diff --git a/ui/accessibility/platform/ax_platform_node_auralinux.cc b/ui/accessibility/platform/ax_platform_node_auralinux.cc |
index f65267a9227fa968871175836f90f8f89f86bea9..6d30f501265854207d2d87a8b4192d12857193cf 100644 |
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc |
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc |
@@ -455,10 +455,9 @@ AtkRole AXPlatformNodeAuraLinux::GetAtkRole() { |
} |
void AXPlatformNodeAuraLinux::GetAtkState(AtkStateSet* atk_state_set) { |
- uint32_t state = GetData().state; |
+ const AXNodeData& data = GetData(); |
+ uint32_t state = data.state; |
- if (state & (1 << ui::AX_STATE_CHECKED)) |
- atk_state_set_add_state(atk_state_set, ATK_STATE_CHECKED); |
if (state & (1 << ui::AX_STATE_DEFAULT)) |
atk_state_set_add_state(atk_state_set, ATK_STATE_DEFAULT); |
if (state & (1 << ui::AX_STATE_EDITABLE)) |
@@ -476,6 +475,19 @@ void AXPlatformNodeAuraLinux::GetAtkState(AtkStateSet* atk_state_set) { |
if (state & (1 << ui::AX_STATE_SELECTED)) |
atk_state_set_add_state(atk_state_set, ATK_STATE_SELECTED); |
+ // Checked state |
+ const int checked = GetIntAttribute(ui::AX_ATTR_INVALID_STATE); |
+ switch (checked) { |
+ case ui::AX_CHECKED_STATE_MIXED: |
+ atk_state_set_add_state(atk_state_set, ATK_STATE_INDETERMINATE); |
+ // Fall through |
+ case ui::AX_CHECKED_STATE_TRUE: |
+ atk_state_set_add_state(atk_state_set, ATK_STATE_CHECKED); |
+ break; |
+ default: |
+ break; |
+ } |
+ |
if (delegate_->GetFocus() == GetNativeViewAccessible()) |
atk_state_set_add_state(atk_state_set, ATK_STATE_FOCUSED); |
} |