From 6d76d00c33877fb7ec6c6693cd51ccfa5a272c72 Mon Sep 17 00:00:00 2001 From: Oleg <17007214+Oleh-Sv@users.noreply.github.com> Date: Thu, 29 Sep 2022 17:41:15 +0100 Subject: [PATCH] Fixed visibility of embedded views in safari (google map, video, camera preview etc) (flutter/engine#35948) --- .../lib/src/engine/canvaskit/embedded_views.dart | 5 +++++ .../test/canvaskit/embedded_views_test.dart | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart index 9e1f48e8bb..a2e028a0e8 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/canvaskit/embedded_views.dart @@ -322,6 +322,11 @@ class HtmlViewEmbedder { clipView.style.clipPath = ''; headTransform = Matrix4.identity(); clipView.style.transform = ''; + // We need to set width and height for the clipView to cover the + // bounds of the path since Safari seem to incorrectly intersect + // the element bounding rect with the clip path. + clipView.style.width = '100%'; + clipView.style.height = '100%'; if (mutator.rect != null) { final ui.Rect rect = mutator.rect!; clipView.style.clip = 'rect(${rect.top}px, ${rect.right}px, ' diff --git a/engine/src/flutter/lib/web_ui/test/canvaskit/embedded_views_test.dart b/engine/src/flutter/lib/web_ui/test/canvaskit/embedded_views_test.dart index 7cdb18c012..e72bc0df0c 100644 --- a/engine/src/flutter/lib/web_ui/test/canvaskit/embedded_views_test.dart +++ b/engine/src/flutter/lib/web_ui/test/canvaskit/embedded_views_test.dart @@ -95,6 +95,22 @@ void testMain() { .clipPath, 'url("#svgClip1")', ); + expect( + flutterViewEmbedder.sceneElement! + .querySelectorAll('flt-clip') + .single + .style + .width, + '100%', + ); + expect( + flutterViewEmbedder.sceneElement! + .querySelectorAll('flt-clip') + .single + .style + .height, + '100%', + ); }); test('correctly transforms platform views', () async {