From 1df6bd099771e107dc83de01a1490641e4aa1b78 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 2 Oct 2023 14:12:24 -0400 Subject: [PATCH] fix user agent bug --- .../webview_flutter/webview_flutter_wkwebview/CHANGELOG.md | 4 ++++ .../example/integration_test/webview_flutter_test.dart | 1 + .../lib/src/webkit_webview_controller.dart | 5 ++++- .../webview_flutter/webview_flutter_wkwebview/pubspec.yaml | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index 0b0101494c2..4de08406bba 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.9.1 + +* Fixes bug where `WebkitWebViewController.getUserAgent` was incorrectly returning an empty String. + ## 3.9.0 * Adds support for `PlatformWebViewController.getUserAgent`. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 4c8fd2b30d7..64d7702f209 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -313,6 +313,7 @@ Future main() async { final String? userAgent = await controller.getUserAgent(); expect(userAgent, isNotNull); + expect(userAgent, isNotEmpty); }); group('Video playback policy', () { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 6fad6d8aaec..a02ed61069e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -666,7 +666,10 @@ window.addEventListener("error", function(e) { @override Future getUserAgent() async { final String? customUserAgent = await _webView.getCustomUserAgent(); - if (customUserAgent != null) { + // Despite the official documentation of `WKWebView.customUserAgent`, the + // default value seems to be an empty String and not null. It's possible it + // could depend on the iOS version, so this checks for both. + if (customUserAgent != null && customUserAgent.isNotEmpty) { return customUserAgent; } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index 685c96ec699..63ed6e4db5f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_wkwebview description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_wkwebview issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 3.9.0 +version: 3.9.1 environment: sdk: ">=2.19.0 <4.0.0"