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

Commit 9db9a57

Browse files
authored
Revert "Apply dpr transform to fuchsia accessibility bridge (#21364)" (#21458)
This reverts commit cf1fbf2.
1 parent cf1fbf2 commit 9db9a57

File tree

4 files changed

+67
-187
lines changed

4 files changed

+67
-187
lines changed

shell/platform/fuchsia/flutter/accessibility_bridge.cc

Lines changed: 4 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,9 @@ fuchsia::ui::gfx::BoundingBox AccessibilityBridge::GetNodeLocation(
5656

5757
fuchsia::ui::gfx::mat4 AccessibilityBridge::GetNodeTransform(
5858
const flutter::SemanticsNode& node) const {
59-
return ConvertSkiaTransformToMat4(node.transform);
60-
}
61-
62-
fuchsia::ui::gfx::mat4 AccessibilityBridge::ConvertSkiaTransformToMat4(
63-
const SkM44 transform) const {
6459
fuchsia::ui::gfx::mat4 value;
6560
float* m = value.matrix.data();
66-
transform.getColMajor(m);
61+
node.transform.getColMajor(m);
6762
return value;
6863
}
6964

@@ -253,8 +248,7 @@ static void PrintNodeSizeError(uint32_t node_id) {
253248
}
254249

255250
void AccessibilityBridge::AddSemanticsNodeUpdate(
256-
const flutter::SemanticsNodeUpdates update,
257-
float view_pixel_ratio) {
251+
const flutter::SemanticsNodeUpdates update) {
258252
if (update.empty()) {
259253
return;
260254
}
@@ -265,7 +259,7 @@ void AccessibilityBridge::AddSemanticsNodeUpdate(
265259

266260
std::vector<fuchsia::accessibility::semantics::Node> nodes;
267261
size_t current_size = 0;
268-
bool has_root_node_update = false;
262+
269263
// TODO(MI4-2498): Actions, Roles, hit test children, additional
270264
// flags/states/attr
271265

@@ -274,14 +268,6 @@ void AccessibilityBridge::AddSemanticsNodeUpdate(
274268
for (const auto& value : update) {
275269
size_t this_node_size = sizeof(fuchsia::accessibility::semantics::Node);
276270
const auto& flutter_node = value.second;
277-
// We handle root update separately in GetRootNodeUpdate.
278-
// TODO(chunhtai): remove this special case after we remove the inverse
279-
// view pixel ratio transformation in scenic view.
280-
if (flutter_node.id == kRootNodeId) {
281-
root_flutter_semantics_node_ = flutter_node;
282-
has_root_node_update = true;
283-
continue;
284-
}
285271
// Store the nodes for later hit testing.
286272
nodes_[flutter_node.id] = {
287273
.id = flutter_node.id,
@@ -316,6 +302,7 @@ void AccessibilityBridge::AddSemanticsNodeUpdate(
316302
PrintNodeSizeError(flutter_node.id);
317303
return;
318304
}
305+
319306
current_size += this_node_size;
320307

321308
// If we would exceed the max FIDL message size by appending this node,
@@ -332,29 +319,6 @@ void AccessibilityBridge::AddSemanticsNodeUpdate(
332319
PrintNodeSizeError(nodes.back().node_id());
333320
}
334321

335-
// Handles root node update.
336-
if (has_root_node_update || last_seen_view_pixel_ratio_ != view_pixel_ratio) {
337-
last_seen_view_pixel_ratio_ = view_pixel_ratio;
338-
size_t root_node_size;
339-
fuchsia::accessibility::semantics::Node root_update =
340-
GetRootNodeUpdate(root_node_size);
341-
// TODO(MI4-2531, FIDL-718): Remove this
342-
// This is defensive. If, despite our best efforts, we ended up with a node
343-
// that is larger than the max fidl size, we send no updates.
344-
if (root_node_size >= kMaxMessageSize) {
345-
PrintNodeSizeError(kRootNodeId);
346-
return;
347-
}
348-
current_size += root_node_size;
349-
// If we would exceed the max FIDL message size by appending this node,
350-
// we should delete/update/commit now.
351-
if (current_size >= kMaxMessageSize) {
352-
tree_ptr_->UpdateSemanticNodes(std::move(nodes));
353-
nodes.clear();
354-
}
355-
nodes.push_back(std::move(root_update));
356-
}
357-
358322
PruneUnreachableNodes();
359323
UpdateScreenRects();
360324

@@ -364,45 +328,6 @@ void AccessibilityBridge::AddSemanticsNodeUpdate(
364328
tree_ptr_->CommitUpdates([]() {});
365329
}
366330

367-
fuchsia::accessibility::semantics::Node AccessibilityBridge::GetRootNodeUpdate(
368-
size_t& node_size) {
369-
fuchsia::accessibility::semantics::Node root_fuchsia_node;
370-
std::vector<uint32_t> child_ids;
371-
node_size = sizeof(fuchsia::accessibility::semantics::Node);
372-
for (int32_t flutter_child_id :
373-
root_flutter_semantics_node_.childrenInTraversalOrder) {
374-
child_ids.push_back(FlutterIdToFuchsiaId(flutter_child_id));
375-
}
376-
// Applies the inverse view pixel ratio transformation to the root node.
377-
float inverse_view_pixel_ratio = 1.f / last_seen_view_pixel_ratio_;
378-
SkM44 inverse_view_pixel_ratio_transform;
379-
inverse_view_pixel_ratio_transform.setScale(inverse_view_pixel_ratio,
380-
inverse_view_pixel_ratio, 1.f);
381-
382-
SkM44 result = root_flutter_semantics_node_.transform *
383-
inverse_view_pixel_ratio_transform;
384-
nodes_[root_flutter_semantics_node_.id] = {
385-
.id = root_flutter_semantics_node_.id,
386-
.flags = root_flutter_semantics_node_.flags,
387-
.rect = root_flutter_semantics_node_.rect,
388-
.transform = result,
389-
.children_in_hit_test_order =
390-
root_flutter_semantics_node_.childrenInHitTestOrder,
391-
};
392-
root_fuchsia_node.set_node_id(root_flutter_semantics_node_.id)
393-
.set_role(GetNodeRole(root_flutter_semantics_node_))
394-
.set_location(GetNodeLocation(root_flutter_semantics_node_))
395-
.set_transform(ConvertSkiaTransformToMat4(result))
396-
.set_attributes(
397-
GetNodeAttributes(root_flutter_semantics_node_, &node_size))
398-
.set_states(GetNodeStates(root_flutter_semantics_node_, &node_size))
399-
.set_actions(GetNodeActions(root_flutter_semantics_node_, &node_size))
400-
.set_child_ids(child_ids);
401-
node_size += kNodeIdSize *
402-
root_flutter_semantics_node_.childrenInTraversalOrder.size();
403-
return root_fuchsia_node;
404-
}
405-
406331
void AccessibilityBridge::UpdateScreenRects() {
407332
std::unordered_set<int32_t> visited_nodes;
408333
UpdateScreenRects(kRootNodeId, SkM44{}, &visited_nodes);

shell/platform/fuchsia/flutter/accessibility_bridge.h

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,7 @@ class AccessibilityBridge
8282
void SetSemanticsEnabled(bool enabled);
8383

8484
// Adds a semantics node update to the buffer of node updates to apply.
85-
void AddSemanticsNodeUpdate(const flutter::SemanticsNodeUpdates update,
86-
float view_pixel_ratio);
85+
void AddSemanticsNodeUpdate(const flutter::SemanticsNodeUpdates update);
8786

8887
// Notifies the bridge of a 'hover move' touch exploration event.
8988
zx_status_t OnHoverMove(double x, double y);
@@ -116,8 +115,6 @@ class AccessibilityBridge
116115
AccessibilityBridge::Delegate& delegate_;
117116

118117
static constexpr int32_t kRootNodeId = 0;
119-
flutter::SemanticsNode root_flutter_semantics_node_;
120-
float last_seen_view_pixel_ratio_ = 1.f;
121118
fidl::Binding<fuchsia::accessibility::semantics::SemanticListener> binding_;
122119
fuchsia::accessibility::semantics::SemanticsManagerPtr
123120
fuchsia_semantics_manager_;
@@ -127,21 +124,15 @@ class AccessibilityBridge
127124
// Assists with pruning unreachable nodes and hit testing.
128125
std::unordered_map<int32_t, SemanticsNode> nodes_;
129126

130-
fuchsia::accessibility::semantics::Node GetRootNodeUpdate(size_t& node_size);
131-
132127
// Derives the BoundingBox of a Flutter semantics node from its
133128
// rect and elevation.
134129
fuchsia::ui::gfx::BoundingBox GetNodeLocation(
135130
const flutter::SemanticsNode& node) const;
136131

137-
// Gets mat4 transformation from a Flutter semantics node.
132+
// Converts a Flutter semantics node's transformation to a mat4.
138133
fuchsia::ui::gfx::mat4 GetNodeTransform(
139134
const flutter::SemanticsNode& node) const;
140135

141-
// Converts a Flutter semantics node's transformation to a mat4.
142-
fuchsia::ui::gfx::mat4 ConvertSkiaTransformToMat4(
143-
const SkM44 transform) const;
144-
145136
// Derives the attributes for a Fuchsia semantics node from a Flutter
146137
// semantics node.
147138
fuchsia::accessibility::semantics::Attributes GetNodeAttributes(

0 commit comments

Comments
 (0)