From 12b4baf4684d7d8181951dd3c1ce38caa472d34c Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Thu, 12 May 2022 23:06:54 +0200 Subject: [PATCH] [Linux][A11y] use ATK_ROLE_PASSWORD_TEXT for obscured text (#33179) --- shell/platform/linux/fl_accessible_node.cc | 4 ++++ shell/platform/linux/fl_accessible_node_test.cc | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/shell/platform/linux/fl_accessible_node.cc b/shell/platform/linux/fl_accessible_node.cc index ffa9c249abe97..9e5f262d9e81e 100644 --- a/shell/platform/linux/fl_accessible_node.cc +++ b/shell/platform/linux/fl_accessible_node.cc @@ -208,6 +208,10 @@ static AtkRole fl_accessible_node_get_role(AtkObject* accessible) { if ((self->flags & kFlutterSemanticsFlagIsSlider) != 0) { return ATK_ROLE_SLIDER; } + if ((self->flags & kFlutterSemanticsFlagIsTextField) != 0 && + (self->flags & kFlutterSemanticsFlagIsObscured) != 0) { + return ATK_ROLE_PASSWORD_TEXT; + } if ((self->flags & kFlutterSemanticsFlagIsTextField) != 0) { return ATK_ROLE_TEXT; } diff --git a/shell/platform/linux/fl_accessible_node_test.cc b/shell/platform/linux/fl_accessible_node_test.cc index 74817de117e9f..c0f534ddd20c3 100644 --- a/shell/platform/linux/fl_accessible_node_test.cc +++ b/shell/platform/linux/fl_accessible_node_test.cc @@ -108,6 +108,14 @@ TEST(FlAccessibleNodeTest, GetRole) { fl_accessible_node_set_flags(node, static_cast( kFlutterSemanticsFlagHasToggledState)); EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_TOGGLE_BUTTON); + + fl_accessible_node_set_flags(node, kFlutterSemanticsFlagIsTextField); + EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_TEXT); + + fl_accessible_node_set_flags( + node, static_cast(kFlutterSemanticsFlagIsTextField | + kFlutterSemanticsFlagIsObscured)); + EXPECT_EQ(atk_object_get_role(ATK_OBJECT(node)), ATK_ROLE_PASSWORD_TEXT); } // Checks Flutter actions are mapped to the appropriate ATK actions.