From ce4d1dc06f5ccc7d483fb60bd729886d21ef0cd4 Mon Sep 17 00:00:00 2001 From: Chinmay Garde Date: Wed, 4 Dec 2019 13:15:47 -0800 Subject: [PATCH] Fix platform view offsets incorrectly taking into account device pixel ratios. (flutter/engine#14135) This issue was hidden by an incorrect test expectation that has been corrected. Fixes b/144555069 Fixes https://github.com/flutter/flutter/issues/45991 --- .../shell/platform/embedder/embedder_layers.cc | 15 +++++++-------- .../platform/embedder/tests/embedder_unittests.cc | 4 ++-- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/engine/src/flutter/shell/platform/embedder/embedder_layers.cc b/engine/src/flutter/shell/platform/embedder/embedder_layers.cc index 90ba77b6428..dc284e22746 100644 --- a/engine/src/flutter/shell/platform/embedder/embedder_layers.cc +++ b/engine/src/flutter/shell/platform/embedder/embedder_layers.cc @@ -184,16 +184,15 @@ void EmbedderLayers::PushPlatformViewLayer( layer.type = kFlutterLayerContentTypePlatformView; layer.platform_view = platform_views_referenced_.back().get(); - const auto layer_bounds = SkRect::MakeXYWH(params.offsetPixels.x(), // - params.offsetPixels.y(), // - params.sizePoints.width(), // - params.sizePoints.height() // - ); + const auto layer_bounds = + SkRect::MakeXYWH(params.offsetPixels.x(), // + params.offsetPixels.y(), // + params.sizePoints.width() * device_pixel_ratio_, // + params.sizePoints.height() * device_pixel_ratio_ // + ); const auto transformed_layer_bounds = - SkMatrix::Concat(root_surface_transformation_, - SkMatrix::MakeScale(device_pixel_ratio_)) - .mapRect(layer_bounds); + root_surface_transformation_.mapRect(layer_bounds); layer.offset.x = transformed_layer_bounds.x(); layer.offset.y = transformed_layer_bounds.y(); diff --git a/engine/src/flutter/shell/platform/embedder/tests/embedder_unittests.cc b/engine/src/flutter/shell/platform/embedder/tests/embedder_unittests.cc index 47f86c281e4..c8560a6d11e 100644 --- a/engine/src/flutter/shell/platform/embedder/tests/embedder_unittests.cc +++ b/engine/src/flutter/shell/platform/embedder/tests/embedder_unittests.cc @@ -2803,7 +2803,7 @@ TEST_F(EmbedderTest, layer.type = kFlutterLayerContentTypePlatformView; layer.platform_view = &platform_view; layer.size = FlutterSizeMake(800.0, 560.0); - layer.offset = FlutterPointMake(0.0, 80.0); + layer.offset = FlutterPointMake(0.0, 40.0); ASSERT_EQ(*layers[1], layer); } @@ -2902,7 +2902,7 @@ TEST_F( layer.type = kFlutterLayerContentTypePlatformView; layer.platform_view = &platform_view; layer.size = FlutterSizeMake(560.0, 800.0); - layer.offset = FlutterPointMake(80.0, 0.0); + layer.offset = FlutterPointMake(40.0, 0.0); ASSERT_EQ(*layers[1], layer); }