From 12bc0a3621a14305e59fbe7b5ed91e5d88356f57 Mon Sep 17 00:00:00 2001 From: Jonathan Lau Date: Mon, 10 Nov 2025 14:26:51 -0800 Subject: [PATCH 1/7] Overrides getDefaultVideoPoster() to disable poster image Fixes https://github.com/flutter/flutter/issues/178263 --- .../webviewflutter/WebChromeClientProxyApi.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java index 184661e251a..aa477bde0a5 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java @@ -4,6 +4,8 @@ package io.flutter.plugins.webviewflutter; +import android.graphics.Bitmap; +import android.graphics.Bitmap.Config; import android.net.Uri; import android.os.Message; import android.view.View; @@ -239,6 +241,16 @@ public boolean onJsPrompt( public static class SecureWebChromeClient extends WebChromeClient { @Nullable WebViewClient webViewClient; + /** + * Removes the gray Android player icon. + * + *

See https://issues.chromium.org/issues/40755557. + */ + @Override + public Bitmap getDefaultVideoPoster() { + return Bitmap.createBitmap(1, 1, Config.ALPHA_8); + } + @Override public boolean onCreateWindow( @NonNull final WebView view, From 3071f4f33e9234a7b05a438e73a43e0a5f309e08 Mon Sep 17 00:00:00 2001 From: Jonathan Lau Date: Mon, 10 Nov 2025 14:30:22 -0800 Subject: [PATCH 2/7] Update WebChromeClientTest.java --- .../plugins/webviewflutter/WebChromeClientTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java index 2fe12090773..1a4fffc990e 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java @@ -214,4 +214,14 @@ public void onJsPrompt() { verify(mockApi) .onJsPrompt(eq(instance), eq(webView), eq(url), eq(message), eq(defaultValue), any()); } + + @Test + public void getDefaultVideoPoster() { + final WebChromeClientProxyApi mockApi = mock(WebChromeClientProxyApi.class); + when(mockApi.getPigeonRegistrar()).thenReturn(new TestProxyApiRegistrar()); + + final WebChromeClientImpl instance = new WebChromeClientImpl(mockApi); + + assertNotNull(instance.getDefaultVideoPoster()); + } } From 58d2addf7d8b3fe1f79b7e9867054f43e851a7a8 Mon Sep 17 00:00:00 2001 From: Jonathan Lau Date: Mon, 10 Nov 2025 14:32:47 -0800 Subject: [PATCH 3/7] Update CHANGELOG.md --- packages/webview_flutter/webview_flutter/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md index fad345bad30..d23776ddf4f 100644 --- a/packages/webview_flutter/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md @@ -2,6 +2,7 @@ * Updates minimum supported SDK version to Flutter 3.29/Dart 3.7. * Updates README to reflect that only Android API 24+ is supported. +* Disables legacy Android video poster. ## 4.13.0 From 69eb683bc3d5e661d44f32ef526152530645a12d Mon Sep 17 00:00:00 2001 From: Jonathan Lau Date: Mon, 10 Nov 2025 15:05:20 -0800 Subject: [PATCH 4/7] Add @Nullable to return type --- .../flutter/plugins/webviewflutter/WebChromeClientProxyApi.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java index aa477bde0a5..b3c97d4b3dc 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientProxyApi.java @@ -247,7 +247,7 @@ public static class SecureWebChromeClient extends WebChromeClient { *

See https://issues.chromium.org/issues/40755557. */ @Override - public Bitmap getDefaultVideoPoster() { + public @Nullable Bitmap getDefaultVideoPoster() { return Bitmap.createBitmap(1, 1, Config.ALPHA_8); } From f32000835e81bb47c42e94206bf546d5182f1cf2 Mon Sep 17 00:00:00 2001 From: Jonathan Lau Date: Mon, 10 Nov 2025 15:07:15 -0800 Subject: [PATCH 5/7] Update WebChromeClientTest.java to verify width and height --- .../plugins/webviewflutter/WebChromeClientTest.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java index 1a4fffc990e..ab4fe33d583 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java @@ -4,6 +4,7 @@ package io.flutter.plugins.webviewflutter; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; @@ -13,6 +14,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.graphics.Bitmap; import android.net.Uri; import android.os.Message; import android.view.View; @@ -221,7 +223,10 @@ public void getDefaultVideoPoster() { when(mockApi.getPigeonRegistrar()).thenReturn(new TestProxyApiRegistrar()); final WebChromeClientImpl instance = new WebChromeClientImpl(mockApi); - + final Bitmap poster = instance.getDefaultVideoPoster(); + assertNotNull(instance.getDefaultVideoPoster()); + assertEquals(1, poster.getWidth()); + assertEquals(1, poster.getHeight()); } } From b69875fd83aeb83d1935a5b3c6e56d6137437b1f Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 11 Nov 2025 12:45:35 -0500 Subject: [PATCH 6/7] version bump and undo webview_flutter change --- packages/webview_flutter/webview_flutter/CHANGELOG.md | 1 - packages/webview_flutter/webview_flutter_android/CHANGELOG.md | 4 ++++ .../flutter/plugins/webviewflutter/WebChromeClientTest.java | 2 +- packages/webview_flutter/webview_flutter_android/pubspec.yaml | 2 +- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md index d23776ddf4f..fad345bad30 100644 --- a/packages/webview_flutter/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md @@ -2,7 +2,6 @@ * Updates minimum supported SDK version to Flutter 3.29/Dart 3.7. * Updates README to reflect that only Android API 24+ is supported. -* Disables legacy Android video poster. ## 4.13.0 diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 655226a1965..e146b61edee 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.10.6 + +* Changes default image shown when a video is not playing. + ## 4.10.5 * Resolves Gradle 9 deprecations. diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java index ab4fe33d583..72441a7900b 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java @@ -218,7 +218,7 @@ public void onJsPrompt() { } @Test - public void getDefaultVideoPoster() { + public void getDefaultVideoPosterSetsEmptyBitmap() { final WebChromeClientProxyApi mockApi = mock(WebChromeClientProxyApi.class); when(mockApi.getPigeonRegistrar()).thenReturn(new TestProxyApiRegistrar()); diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index 0b92434e147..0407b498125 100644 --- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_android description: A Flutter plugin that provides a WebView widget on Android. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 4.10.5 +version: 4.10.6 environment: sdk: ^3.9.0 From ab5b85c8b01177f3673950a056c7f188b116b505 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 11 Nov 2025 13:03:08 -0500 Subject: [PATCH 7/7] formatting --- .../io/flutter/plugins/webviewflutter/WebChromeClientTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java index 72441a7900b..378408cefd6 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java @@ -224,7 +224,7 @@ public void getDefaultVideoPosterSetsEmptyBitmap() { final WebChromeClientImpl instance = new WebChromeClientImpl(mockApi); final Bitmap poster = instance.getDefaultVideoPoster(); - + assertNotNull(instance.getDefaultVideoPoster()); assertEquals(1, poster.getWidth()); assertEquals(1, poster.getHeight());