Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

A11y enabled state #48653

Merged
merged 4 commits into from
Dec 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions shell/platform/fuchsia/flutter/accessibility_bridge.cc
Original file line number Diff line number Diff line change
Expand Up @@ -340,6 +340,14 @@ fuchsia::accessibility::semantics::States AccessibilityBridge::GetNodeStates(
: fuchsia::accessibility::semantics::CheckedState::UNCHECKED);
}

// Set enabled state.
if (node.HasFlag(flutter::SemanticsFlags::kHasEnabledState)) {
states.set_enabled_state(
node.HasFlag(flutter::SemanticsFlags::kIsEnabled)
? fuchsia::accessibility::semantics::EnabledState::ENABLED
: fuchsia::accessibility::semantics::EnabledState::DISABLED);
}

// Set selected state.
states.set_selected(node.HasFlag(flutter::SemanticsFlags::kIsSelected));

Expand Down
30 changes: 30 additions & 0 deletions shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -483,6 +483,36 @@ TEST_F(AccessibilityBridgeTest, PopulatesToggledState) {
EXPECT_FALSE(semantics_manager_.UpdateOverflowed());
}

TEST_F(AccessibilityBridgeTest, PopulatesEnabledState) {
flutter::SemanticsNode node0;
node0.id = 0;
// HasEnabledState = true
// IsEnabled = true
node0.flags |= static_cast<int>(flutter::SemanticsFlags::kHasEnabledState);
node0.flags |= static_cast<int>(flutter::SemanticsFlags::kIsEnabled);
node0.value = "value";

accessibility_bridge_->AddSemanticsNodeUpdate({{0, node0}}, 1.f);
RunLoopUntilIdle();

EXPECT_EQ(0, semantics_manager_.DeleteCount());
EXPECT_EQ(1, semantics_manager_.UpdateCount());
EXPECT_EQ(1, semantics_manager_.CommitCount());
EXPECT_EQ(1U, semantics_manager_.LastUpdatedNodes().size());
const auto& fuchsia_node = semantics_manager_.LastUpdatedNodes().at(0u);
EXPECT_EQ(fuchsia_node.node_id(), static_cast<unsigned int>(node0.id));
EXPECT_TRUE(fuchsia_node.has_states());
const auto& states = fuchsia_node.states();
EXPECT_TRUE(states.has_enabled_state());
EXPECT_EQ(states.enabled_state(),
fuchsia::accessibility::semantics::EnabledState::ENABLED);
EXPECT_TRUE(states.has_value());
EXPECT_EQ(states.value(), node0.value);

EXPECT_FALSE(semantics_manager_.DeleteOverflowed());
EXPECT_FALSE(semantics_manager_.UpdateOverflowed());
}

TEST_F(AccessibilityBridgeTest, ApplyViewPixelRatioToRoot) {
flutter::SemanticsNode node0;
node0.id = 0;
Expand Down