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..38663ccbd1e507f22344eddd00decce60d326b7b 100644 |
--- a/ui/accessibility/platform/ax_platform_node_auralinux.cc |
+++ b/ui/accessibility/platform/ax_platform_node_auralinux.cc |
@@ -455,10 +455,8 @@ AtkRole AXPlatformNodeAuraLinux::GetAtkRole() { |
} |
void AXPlatformNodeAuraLinux::GetAtkState(AtkStateSet* atk_state_set) { |
- uint32_t state = GetData().state; |
+ const uint32_t state = GetData().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 +474,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_CHECKED_STATE); |
+ switch (checked) { |
+ case ui::AX_CHECKED_STATE_MIXED: |
+ atk_state_set_add_state(atk_state_set, ATK_STATE_INDETERMINATE); |
+ break; |
+ 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); |
} |