Skip to content

Commit

Permalink
Revert "Modifies accessibility bridge to populate new node fields in …
Browse files Browse the repository at this point in the history
…semantic… (flutter#15116)" (flutter#16323)

This reverts commit 4a55b4f.
  • Loading branch information
dnfield committed Feb 1, 2020
1 parent 0498f64 commit f2ade05
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 177 deletions.
35 changes: 4 additions & 31 deletions shell/platform/fuchsia/flutter/accessibility_bridge.cc
Expand Up @@ -80,38 +80,11 @@ AccessibilityBridge::GetNodeAttributes(const flutter::SemanticsNode& node,
}

fuchsia::accessibility::semantics::States AccessibilityBridge::GetNodeStates(
const flutter::SemanticsNode& node,
size_t* additional_size) const {
const flutter::SemanticsNode& node) const {
fuchsia::accessibility::semantics::States states;
(*additional_size) += sizeof(fuchsia::accessibility::semantics::States);

// Set checked state.
if (!node.HasFlag(flutter::SemanticsFlags::kHasCheckedState)) {
states.set_checked_state(
fuchsia::accessibility::semantics::CheckedState::NONE);
} else {
states.set_checked_state(
node.HasFlag(flutter::SemanticsFlags::kIsChecked)
? fuchsia::accessibility::semantics::CheckedState::CHECKED
: fuchsia::accessibility::semantics::CheckedState::UNCHECKED);
if (node.HasFlag(flutter::SemanticsFlags::kHasCheckedState)) {
states.set_checked(node.HasFlag(flutter::SemanticsFlags::kIsChecked));
}

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

// Set hidden state.
states.set_hidden(node.HasFlag(flutter::SemanticsFlags::kIsHidden));

// Set value.
if (node.value.size() > fuchsia::accessibility::semantics::MAX_VALUE_SIZE) {
states.set_value(node.value.substr(
0, fuchsia::accessibility::semantics::MAX_VALUE_SIZE));
(*additional_size) += fuchsia::accessibility::semantics::MAX_VALUE_SIZE;
} else {
states.set_value(node.value);
(*additional_size) += node.value.size();
}

return states;
}

Expand Down Expand Up @@ -226,7 +199,7 @@ void AccessibilityBridge::AddSemanticsNodeUpdate(
.set_location(GetNodeLocation(flutter_node))
.set_transform(GetNodeTransform(flutter_node))
.set_attributes(GetNodeAttributes(flutter_node, &this_node_size))
.set_states(GetNodeStates(flutter_node, &this_node_size))
.set_states(GetNodeStates(flutter_node))
.set_child_ids(child_ids);
this_node_size +=
kNodeIdSize * flutter_node.childrenInTraversalOrder.size();
Expand Down
3 changes: 1 addition & 2 deletions shell/platform/fuchsia/flutter/accessibility_bridge.h
Expand Up @@ -133,8 +133,7 @@ class AccessibilityBridge
// Derives the states for a Fuchsia semantics node from a Flutter semantics
// node.
fuchsia::accessibility::semantics::States GetNodeStates(
const flutter::SemanticsNode& node,
size_t* additional_size) const;
const flutter::SemanticsNode& node) const;

// Gets the set of reachable descendants from the given node id.
std::unordered_set<int32_t> GetDescendants(int32_t node_id) const;
Expand Down
146 changes: 2 additions & 144 deletions shell/platform/fuchsia/flutter/accessibility_bridge_unittest.cc
Expand Up @@ -130,106 +130,6 @@ TEST_F(AccessibilityBridgeTest, DeletesChildrenTransitively) {
EXPECT_FALSE(semantics_manager_.UpdateOverflowed());
}

TEST_F(AccessibilityBridgeTest, PopulatesCheckedState) {
flutter::SemanticsNode node0;
node0.id = 0;
// HasCheckedState = true
// IsChecked = true
// IsSelected = false
// IsHidden = false
node0.flags |= static_cast<int>(flutter::SemanticsFlags::kHasCheckedState);
node0.flags |= static_cast<int>(flutter::SemanticsFlags::kIsChecked);
node0.value = "value";

accessibility_bridge_->AddSemanticsNodeUpdate({{0, node0}});
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_checked_state());
EXPECT_EQ(states.checked_state(),
fuchsia::accessibility::semantics::CheckedState::CHECKED);
EXPECT_TRUE(states.has_selected());
EXPECT_FALSE(states.selected());
EXPECT_TRUE(states.has_hidden());
EXPECT_FALSE(states.hidden());
EXPECT_TRUE(states.has_value());
EXPECT_EQ(states.value(), node0.value);

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

TEST_F(AccessibilityBridgeTest, PopulatesSelectedState) {
flutter::SemanticsNode node0;
node0.id = 0;
// HasCheckedState = false
// IsChecked = false
// IsSelected = true
// IsHidden = false
node0.flags = static_cast<int>(flutter::SemanticsFlags::kIsSelected);

accessibility_bridge_->AddSemanticsNodeUpdate({{0, node0}});
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_checked_state());
EXPECT_EQ(states.checked_state(),
fuchsia::accessibility::semantics::CheckedState::NONE);
EXPECT_TRUE(states.has_selected());
EXPECT_TRUE(states.selected());
EXPECT_TRUE(states.has_hidden());
EXPECT_FALSE(states.hidden());

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

TEST_F(AccessibilityBridgeTest, PopulatesHiddenState) {
flutter::SemanticsNode node0;
node0.id = 0;
// HasCheckedState = false
// IsChecked = false
// IsSelected = false
// IsHidden = true
node0.flags = static_cast<int>(flutter::SemanticsFlags::kIsHidden);

accessibility_bridge_->AddSemanticsNodeUpdate({{0, node0}});
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_checked_state());
EXPECT_EQ(states.checked_state(),
fuchsia::accessibility::semantics::CheckedState::NONE);
EXPECT_TRUE(states.has_selected());
EXPECT_FALSE(states.selected());
EXPECT_TRUE(states.has_hidden());
EXPECT_TRUE(states.hidden());

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

TEST_F(AccessibilityBridgeTest, TruncatesLargeLabel) {
// Test that labels which are too long are truncated.
flutter::SemanticsNode node0;
Expand Down Expand Up @@ -274,48 +174,6 @@ TEST_F(AccessibilityBridgeTest, TruncatesLargeLabel) {
EXPECT_FALSE(semantics_manager_.UpdateOverflowed());
}

TEST_F(AccessibilityBridgeTest, TruncatesLargeValue) {
// Test that values which are too long are truncated.
flutter::SemanticsNode node0;
node0.id = 0;

flutter::SemanticsNode node1;
node1.id = 1;

flutter::SemanticsNode bad_node;
bad_node.id = 2;
bad_node.value =
std::string(fuchsia::accessibility::semantics::MAX_VALUE_SIZE + 1, '2');

node0.childrenInTraversalOrder = {1, 2};

accessibility_bridge_->AddSemanticsNodeUpdate({
{0, node0},
{1, node1},
{2, bad_node},
});
RunLoopUntilIdle();

EXPECT_EQ(0, semantics_manager_.DeleteCount());
EXPECT_EQ(1, semantics_manager_.UpdateCount());
EXPECT_EQ(1, semantics_manager_.CommitCount());
EXPECT_EQ(3U, semantics_manager_.LastUpdatedNodes().size());
auto trimmed_node =
std::find_if(semantics_manager_.LastUpdatedNodes().begin(),
semantics_manager_.LastUpdatedNodes().end(),
[id = static_cast<uint32_t>(bad_node.id)](
fuchsia::accessibility::semantics::Node const& node) {
return node.node_id() == id;
});
ASSERT_NE(trimmed_node, semantics_manager_.LastUpdatedNodes().end());
ASSERT_TRUE(trimmed_node->has_states());
EXPECT_EQ(
trimmed_node->states().value(),
std::string(fuchsia::accessibility::semantics::MAX_VALUE_SIZE, '2'));
EXPECT_FALSE(semantics_manager_.DeleteOverflowed());
EXPECT_FALSE(semantics_manager_.UpdateOverflowed());
}

TEST_F(AccessibilityBridgeTest, SplitsLargeUpdates) {
// Test that labels which are too long are truncated.
flutter::SemanticsNode node0;
Expand All @@ -336,8 +194,8 @@ TEST_F(AccessibilityBridgeTest, SplitsLargeUpdates) {

flutter::SemanticsNode node4;
node4.id = 4;
node4.value =
std::string(fuchsia::accessibility::semantics::MAX_VALUE_SIZE, '4');
node4.label =
std::string(fuchsia::accessibility::semantics::MAX_LABEL_SIZE, '4');

node0.childrenInTraversalOrder = {1, 2};
node0.childrenInHitTestOrder = {1, 2};
Expand Down

0 comments on commit f2ade05

Please sign in to comment.