diff --git a/shell/platform/fuchsia/flutter/accessibility_bridge.cc b/shell/platform/fuchsia/flutter/accessibility_bridge.cc index 0d801fbffb87f5577bab6283d2f13c8ea26ba349..3a124efff5a94f02b3a32b80df93e213020c211e 100644 --- a/shell/platform/fuchsia/flutter/accessibility_bridge.cc +++ b/shell/platform/fuchsia/flutter/accessibility_bridge.cc @@ -81,6 +81,10 @@ AccessibilityBridge::GetNodeAttributes(const flutter::SemanticsNode& node, *added_size += node.label.size(); } + if (node.HasFlag(flutter::SemanticsFlags::kIsKeyboardKey)) { + attributes.set_is_keyboard_key(true); + } + return attributes; } diff --git a/shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc b/shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc index 44d5174190d108dd5f0bc76b82d20c7da0d21100..0be39fd63d521c4b231a3b496a701f33ef35a2b3 100644 --- a/shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc +++ b/shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc @@ -113,6 +113,21 @@ TEST_F(AccessibilityBridgeTest, RequestAnnounce) { EXPECT_EQ(last_events[0].announce().message(), "message"); } +TEST_F(AccessibilityBridgeTest, PopulatesIsKeyboardKeyAttribute) { + flutter::SemanticsNode node0; + node0.id = 0; + node0.flags = static_cast(flutter::SemanticsFlags::kIsKeyboardKey); + + accessibility_bridge_->AddSemanticsNodeUpdate({{0, node0}}, 1.f); + RunLoopUntilIdle(); + + EXPECT_EQ(1U, semantics_manager_.LastUpdatedNodes().size()); + const auto& fuchsia_node = semantics_manager_.LastUpdatedNodes().at(0u); + EXPECT_EQ(fuchsia_node.node_id(), static_cast(node0.id)); + EXPECT_TRUE(fuchsia_node.has_attributes()); + EXPECT_TRUE(fuchsia_node.attributes().is_keyboard_key()); +} + TEST_F(AccessibilityBridgeTest, UpdatesNodeRoles) { flutter::SemanticsNodeUpdates updates;