diff --git a/shell/platform/embedder/embedder.cc b/shell/platform/embedder/embedder.cc index a7ae7575ca4259faf8cb17225fa965fb3841f79b..7dffc91718e77022768e306f7a6a9dedec782b16 100644 --- a/shell/platform/embedder/embedder.cc +++ b/shell/platform/embedder/embedder.cc @@ -412,12 +412,18 @@ FlutterEngineResult FlutterEngineRun(size_t version, user_data](blink::SemanticsNodeUpdates update) { for (const auto& value : update) { const auto& node = value.second; - const auto& transform = node.transform; - auto flutter_transform = FlutterTransformation{ - transform.get(0, 0), transform.get(0, 1), transform.get(0, 2), - transform.get(1, 0), transform.get(1, 1), transform.get(1, 2), - transform.get(2, 0), transform.get(2, 1), transform.get(2, 2)}; - const FlutterSemanticsNode embedder_node = { + SkMatrix transform = static_cast(node.transform); + FlutterTransformation flutter_transform{ + transform.get(SkMatrix::kMScaleX), + transform.get(SkMatrix::kMSkewX), + transform.get(SkMatrix::kMTransX), + transform.get(SkMatrix::kMSkewY), + transform.get(SkMatrix::kMScaleY), + transform.get(SkMatrix::kMTransY), + transform.get(SkMatrix::kMPersp0), + transform.get(SkMatrix::kMPersp1), + transform.get(SkMatrix::kMPersp2)}; + const FlutterSemanticsNode embedder_node{ sizeof(FlutterSemanticsNode), node.id, static_cast(node.flags), diff --git a/shell/platform/embedder/fixtures/a11y_main.dart b/shell/platform/embedder/fixtures/a11y_main.dart index a0315f56a4f60f05a6af92b9476e633dbe321ffc..578bd471c0d0a2233c3e4401480c99958181207b 100644 --- a/shell/platform/embedder/fixtures/a11y_main.dart +++ b/shell/platform/embedder/fixtures/a11y_main.dart @@ -2,12 +2,17 @@ import 'dart:async'; import 'dart:typed_data'; import 'dart:ui'; -Float64List kIdentityTransform = () { +Float64List kTestTransform = () { final Float64List values = Float64List(16); - values[0] = 1.0; - values[5] = 1.0; - values[10] = 1.0; - values[15] = 1.0; + values[0] = 1.0; // scaleX + values[4] = 2.0; // skewX + values[12] = 3.0; // transX + values[1] = 4.0; // skewY + values[5] = 5.0; // scaleY + values[13] = 6.0; // transY + values[3] = 7.0; // pers0 + values[7] = 8.0; // pers1 + values[15] = 9.0; // pers2 return values; }(); @@ -68,7 +73,7 @@ main() async { id: 42, label: 'A: root', rect: Rect.fromLTRB(0.0, 0.0, 10.0, 10.0), - transform: kIdentityTransform, + transform: kTestTransform, childrenInTraversalOrder: Int32List.fromList([84, 96]), childrenInHitTestOrder: Int32List.fromList([96, 84]), ) @@ -76,13 +81,13 @@ main() async { id: 84, label: 'B: leaf', rect: Rect.fromLTRB(40.0, 40.0, 80.0, 80.0), - transform: kIdentityTransform, + transform: kTestTransform, ) ..updateNode( id: 96, label: 'C: branch', rect: Rect.fromLTRB(40.0, 40.0, 80.0, 80.0), - transform: kIdentityTransform, + transform: kTestTransform, childrenInTraversalOrder: Int32List.fromList([128]), childrenInHitTestOrder: Int32List.fromList([128]), ) @@ -90,7 +95,7 @@ main() async { id: 128, label: 'D: leaf', rect: Rect.fromLTRB(40.0, 40.0, 80.0, 80.0), - transform: kIdentityTransform, + transform: kTestTransform, additionalActions: Int32List.fromList([21]), ) ..updateCustomAction( diff --git a/shell/platform/embedder/tests/embedder_a11y_unittests.cc b/shell/platform/embedder/tests/embedder_a11y_unittests.cc index 1959901c197005c2dac2bd9fb20975c30955eec7..cfb15db76dc68e807e6a5dd6038c59f178a9db07 100644 --- a/shell/platform/embedder/tests/embedder_a11y_unittests.cc +++ b/shell/platform/embedder/tests/embedder_a11y_unittests.cc @@ -158,6 +158,15 @@ TEST(EmbedderTest, CanLaunchAndShutdownWithValidProjectArgs) { ++node_batch_end_count; } else { ++node_count; + ASSERT_EQ(1.0, node->transform.scaleX); + ASSERT_EQ(2.0, node->transform.skewX); + ASSERT_EQ(3.0, node->transform.transX); + ASSERT_EQ(4.0, node->transform.skewY); + ASSERT_EQ(5.0, node->transform.scaleY); + ASSERT_EQ(6.0, node->transform.transY); + ASSERT_EQ(7.0, node->transform.pers0); + ASSERT_EQ(8.0, node->transform.pers1); + ASSERT_EQ(9.0, node->transform.pers2); } }; int action_count = 0;