@@ -56,14 +56,9 @@ fuchsia::ui::gfx::BoundingBox AccessibilityBridge::GetNodeLocation(
5656
5757fuchsia::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
255250void 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-
406331void AccessibilityBridge::UpdateScreenRects () {
407332 std::unordered_set<int32_t > visited_nodes;
408333 UpdateScreenRects (kRootNodeId , SkM44{}, &visited_nodes);
0 commit comments