diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index f96b5c98e499..f1435dd6a8f1 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.12.0 + +* Adds support for retrieving cookies with `PlatformWebViewCookieManager.getCookies`. + ## 4.11.0 * Adds support to opt out of Android inset changes. See diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt index 4f7c259433ac..e5b528d49079 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/AndroidWebkitLibrary.g.kt @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.2.0), do not edit directly. +// Autogenerated from Pigeon (v26.3.4), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") @@ -49,7 +49,7 @@ class AndroidWebKitError( val code: String, override val message: String? = null, val details: Any? = null -) : Throwable() +) : RuntimeException() /** * Maintains instances used to communicate with the corresponding objects in Dart. * @@ -1568,6 +1568,18 @@ abstract class PigeonApiCookieManager( accept: Boolean ) + /** + * Gets all the cookies for the given URL. + * + * This may return multiple key-value pairs if multiple cookies are associated with this URL, in + * which case each cookie will be delimited by "; " characters (semicolon followed by a space). + * Each key-value pair will be of the form "key=value". + * + * Note: Any cookies set with the "Partitioned" attribute will only be returned for the top-level + * partition of url. + */ + abstract fun getCookies(pigeon_instance: android.webkit.CookieManager, url: String): String? + companion object { @Suppress("LocalVariableName") fun setUpMessageHandlers(binaryMessenger: BinaryMessenger, api: PigeonApiCookieManager?) { @@ -1670,6 +1682,29 @@ abstract class PigeonApiCookieManager( channel.setMessageHandler(null) } } + run { + val channel = + BasicMessageChannel( + binaryMessenger, + "dev.flutter.pigeon.webview_flutter_android.CookieManager.getCookies", + codec) + if (api != null) { + channel.setMessageHandler { message, reply -> + val args = message as List + val pigeon_instanceArg = args[0] as android.webkit.CookieManager + val urlArg = args[1] as String + val wrapped: List = + try { + listOf(api.getCookies(pigeon_instanceArg, urlArg)) + } catch (exception: Throwable) { + AndroidWebkitLibraryPigeonUtils.wrapError(exception) + } + reply.reply(wrapped) + } + } else { + channel.setMessageHandler(null) + } + } } } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerProxyApi.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerProxyApi.java index 9c2988e2a54a..38fd34f66905 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerProxyApi.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerProxyApi.java @@ -52,4 +52,9 @@ public void setAcceptThirdPartyCookies( @NonNull CookieManager pigeon_instance, @NonNull WebView webView, boolean accept) { pigeon_instance.setAcceptThirdPartyCookies(webView, accept); } + + @Override + public @NonNull String getCookies(@NonNull CookieManager pigeon_instance, @NonNull String url) { + return pigeon_instance.getCookie(url); + } } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerTest.java index 3a9415b04ca8..e285b26c20bb 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerTest.java @@ -7,6 +7,7 @@ import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import android.webkit.CookieManager; import android.webkit.ValueCallback; @@ -64,4 +65,20 @@ public void setAcceptThirdPartyCookies() { verify(instance).setAcceptThirdPartyCookies(webView, accept); } + + @Test + public void getCookies_returnsCookieString() { + final PigeonApiCookieManager api = new TestProxyApiRegistrar().getPigeonApiCookieManager(); + + final CookieManager instance = mock(CookieManager.class); + final String domain = "https://flutter.dev"; + final String cookieValue = "session=12345"; + + // Mock the CookieManager to return the cookie string + when(instance.getCookie(domain)).thenReturn(cookieValue); + + final String result = api.getCookies(instance, domain); + + assertEquals(cookieValue, result); + } } diff --git a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart index db3d32723ec6..32818807c5e1 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -496,9 +496,17 @@ class SampleMenu extends StatelessWidget { } Future _onListCookies(BuildContext context) async { - final cookies = - await webViewController.runJavaScriptReturningResult('document.cookie') - as String; + final Uri? domain = Uri.tryParse( + (await webViewController.currentUrl()) ?? '', + ); + final List cookies; + + if (domain == null) { + cookies = []; + } else { + cookies = await cookieManager.getCookies(domain); + } + if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -662,13 +670,12 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kAlertTestPage); } - Widget _getCookieList(String cookies) { - if (cookies == '""') { + Widget _getCookieList(List cookies) { + if (cookies.isEmpty) { return Container(); } - final List cookieList = cookies.split(';'); - final Iterable cookieWidgets = cookieList.map( - (String cookie) => Text(cookie), + final Iterable cookieWidgets = cookies.map( + (WebViewCookie cookie) => Text(cookie.toString()), ); return Column( mainAxisAlignment: MainAxisAlignment.end, diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart index 5942f8df08ad..e9b0027f9962 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webkit.g.dart @@ -1,18 +1,18 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.2.0), do not edit directly. +// Autogenerated from Pigeon (v26.3.4), do not edit directly. // See also: https://pub.dev/packages/pigeon -// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, omit_obvious_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers +// ignore_for_file: unused_import, unused_shown_name +// ignore_for_file: type=lint import 'dart:async'; import 'dart:io' show Platform; -import 'dart:typed_data' show Float64List, Int32List, Int64List, Uint8List; +import 'dart:typed_data' show Float64List, Int32List, Int64List; -import 'package:flutter/foundation.dart' - show ReadBuffer, WriteBuffer, immutable, protected, visibleForTesting; import 'package:flutter/services.dart'; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; +import 'package:meta/meta.dart' show immutable, protected, visibleForTesting; Object? _extractReplyValueOrThrow( List? replyList, @@ -654,19 +654,11 @@ class _PigeonInternalInstanceManagerApi { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PigeonInternalInstanceManager.removeStrongReference was null.', - ); - final List args = (message as List?)!; - final int? arg_identifier = (args[0] as int?); - assert( - arg_identifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PigeonInternalInstanceManager.removeStrongReference was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_identifier = args[0]! as int; try { (instanceManager ?? PigeonInstanceManager.instance).remove( - arg_identifier!, + arg_identifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1034,65 +1026,37 @@ class WebResourceRequest extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null, expected non-null int.', - ); - final String? arg_url = (args[1] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null, expected non-null String.', - ); - final bool? arg_isForMainFrame = (args[2] as bool?); - assert( - arg_isForMainFrame != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null, expected non-null bool.', - ); - final bool? arg_isRedirect = (args[3] as bool?); - assert( - arg_isRedirect != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null, expected non-null bool.', - ); - final bool? arg_hasGesture = (args[4] as bool?); - assert( - arg_hasGesture != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null, expected non-null bool.', - ); - final String? arg_method = (args[5] as String?); - assert( - arg_method != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceRequest.pigeon_newInstance was null, expected non-null String.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final String arg_url = args[1]! as String; + final bool arg_isForMainFrame = args[2]! as bool; + final bool arg_isRedirect = args[3]! as bool; + final bool arg_hasGesture = args[4]! as bool; + final String arg_method = args[5]! as String; final Map? arg_requestHeaders = (args[6] as Map?)?.cast(); try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( pigeon_newInstance?.call( - arg_url!, - arg_isForMainFrame!, - arg_isRedirect!, - arg_hasGesture!, - arg_method!, + arg_url, + arg_isForMainFrame, + arg_isRedirect, + arg_hasGesture, + arg_method, arg_requestHeaders, ) ?? WebResourceRequest.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - url: arg_url!, - isForMainFrame: arg_isForMainFrame!, - isRedirect: arg_isRedirect!, - hasGesture: arg_hasGesture!, - method: arg_method!, + url: arg_url, + isForMainFrame: arg_isForMainFrame, + isRedirect: arg_isRedirect, + hasGesture: arg_hasGesture, + method: arg_method, requestHeaders: arg_requestHeaders, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1161,31 +1125,19 @@ class WebResourceResponse extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceResponse.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceResponse.pigeon_newInstance was null, expected non-null int.', - ); - final int? arg_statusCode = (args[1] as int?); - assert( - arg_statusCode != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceResponse.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final int arg_statusCode = args[1]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_statusCode!) ?? + pigeon_newInstance?.call(arg_statusCode) ?? WebResourceResponse.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - statusCode: arg_statusCode!, + statusCode: arg_statusCode, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1255,37 +1207,21 @@ class WebResourceError extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceError.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceError.pigeon_newInstance was null, expected non-null int.', - ); - final int? arg_errorCode = (args[1] as int?); - assert( - arg_errorCode != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceError.pigeon_newInstance was null, expected non-null int.', - ); - final String? arg_description = (args[2] as String?); - assert( - arg_description != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceError.pigeon_newInstance was null, expected non-null String.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final int arg_errorCode = args[1]! as int; + final String arg_description = args[2]! as String; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_errorCode!, arg_description!) ?? + pigeon_newInstance?.call(arg_errorCode, arg_description) ?? WebResourceError.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - errorCode: arg_errorCode!, - description: arg_description!, + errorCode: arg_errorCode, + description: arg_description, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1356,37 +1292,21 @@ class WebResourceErrorCompat extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceErrorCompat.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceErrorCompat.pigeon_newInstance was null, expected non-null int.', - ); - final int? arg_errorCode = (args[1] as int?); - assert( - arg_errorCode != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceErrorCompat.pigeon_newInstance was null, expected non-null int.', - ); - final String? arg_description = (args[2] as String?); - assert( - arg_description != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebResourceErrorCompat.pigeon_newInstance was null, expected non-null String.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final int arg_errorCode = args[1]! as int; + final String arg_description = args[2]! as String; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_errorCode!, arg_description!) ?? + pigeon_newInstance?.call(arg_errorCode, arg_description) ?? WebResourceErrorCompat.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - errorCode: arg_errorCode!, - description: arg_description!, + errorCode: arg_errorCode, + description: arg_description, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1453,37 +1373,21 @@ class WebViewPoint extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewPoint.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewPoint.pigeon_newInstance was null, expected non-null int.', - ); - final int? arg_x = (args[1] as int?); - assert( - arg_x != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewPoint.pigeon_newInstance was null, expected non-null int.', - ); - final int? arg_y = (args[2] as int?); - assert( - arg_y != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewPoint.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final int arg_x = args[1]! as int; + final int arg_y = args[2]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_x!, arg_y!) ?? + pigeon_newInstance?.call(arg_x, arg_y) ?? WebViewPoint.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - x: arg_x!, - y: arg_y!, + x: arg_x, + y: arg_y, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1562,55 +1466,30 @@ class ConsoleMessage extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ConsoleMessage.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ConsoleMessage.pigeon_newInstance was null, expected non-null int.', - ); - final int? arg_lineNumber = (args[1] as int?); - assert( - arg_lineNumber != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ConsoleMessage.pigeon_newInstance was null, expected non-null int.', - ); - final String? arg_message = (args[2] as String?); - assert( - arg_message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ConsoleMessage.pigeon_newInstance was null, expected non-null String.', - ); - final ConsoleMessageLevel? arg_level = - (args[3] as ConsoleMessageLevel?); - assert( - arg_level != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ConsoleMessage.pigeon_newInstance was null, expected non-null ConsoleMessageLevel.', - ); - final String? arg_sourceId = (args[4] as String?); - assert( - arg_sourceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ConsoleMessage.pigeon_newInstance was null, expected non-null String.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final int arg_lineNumber = args[1]! as int; + final String arg_message = args[2]! as String; + final ConsoleMessageLevel arg_level = args[3]! as ConsoleMessageLevel; + final String arg_sourceId = args[4]! as String; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( pigeon_newInstance?.call( - arg_lineNumber!, - arg_message!, - arg_level!, - arg_sourceId!, + arg_lineNumber, + arg_message, + arg_level, + arg_sourceId, ) ?? ConsoleMessage.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - lineNumber: arg_lineNumber!, - message: arg_message!, - level: arg_level!, - sourceId: arg_sourceId!, + lineNumber: arg_lineNumber, + message: arg_message, + level: arg_level, + sourceId: arg_sourceId, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1681,16 +1560,8 @@ class CookieManager extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManager.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManager.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -1699,7 +1570,7 @@ class CookieManager extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -1785,12 +1656,12 @@ class CookieManager extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as bool; + ); + return pigeonVar_replyValue! as bool; } /// Sets whether the `WebView` should allow third party cookies to be set. @@ -1817,6 +1688,37 @@ class CookieManager extends PigeonInternalProxyApiBaseClass { ); } + /// Gets all the cookies for the given URL. + /// + /// This may return multiple key-value pairs if multiple cookies are associated with this URL, + /// in which case each cookie will be delimited by "; " characters (semicolon followed by a space). + /// Each key-value pair will be of the form "key=value". + /// + /// Note: Any cookies set with the "Partitioned" attribute will only be returned for the top-level partition of url. + Future getCookies(String url) async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecCookieManager; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const pigeonVar_channelName = + 'dev.flutter.pigeon.webview_flutter_android.CookieManager.getCookies'; + final pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send( + [this, url], + ); + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( + pigeonVar_replyList, + pigeonVar_channelName, + isNullValid: true, + ); + return pigeonVar_replyValue as String?; + } + @override CookieManager pigeon_copy() { return CookieManager.pigeon_detached( @@ -1959,16 +1861,8 @@ class WebView extends View { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -1977,7 +1871,7 @@ class WebView extends View { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -2001,43 +1895,19 @@ class WebView extends View { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.onScrollChanged was null.', - ); - final List args = (message as List?)!; - final WebView? arg_pigeon_instance = (args[0] as WebView?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.onScrollChanged was null, expected non-null WebView.', - ); - final int? arg_left = (args[1] as int?); - assert( - arg_left != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.onScrollChanged was null, expected non-null int.', - ); - final int? arg_top = (args[2] as int?); - assert( - arg_top != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.onScrollChanged was null, expected non-null int.', - ); - final int? arg_oldLeft = (args[3] as int?); - assert( - arg_oldLeft != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.onScrollChanged was null, expected non-null int.', - ); - final int? arg_oldTop = (args[4] as int?); - assert( - arg_oldTop != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebView.onScrollChanged was null, expected non-null int.', - ); + final List args = message! as List; + final WebView arg_pigeon_instance = args[0]! as WebView; + final int arg_left = args[1]! as int; + final int arg_top = args[2]! as int; + final int arg_oldLeft = args[3]! as int; + final int arg_oldTop = args[4]! as int; try { - (onScrollChanged ?? arg_pigeon_instance!.onScrollChanged)?.call( - arg_pigeon_instance!, - arg_left!, - arg_top!, - arg_oldLeft!, - arg_oldTop!, + (onScrollChanged ?? arg_pigeon_instance.onScrollChanged)?.call( + arg_pigeon_instance, + arg_left, + arg_top, + arg_oldLeft, + arg_oldTop, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -2229,12 +2099,12 @@ class WebView extends View { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as bool; + ); + return pigeonVar_replyValue! as bool; } /// Gets whether this WebView has a forward history item. @@ -2254,12 +2124,12 @@ class WebView extends View { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as bool; + ); + return pigeonVar_replyValue! as bool; } /// Goes back in the history of this WebView. @@ -2661,16 +2531,8 @@ class WebSettings extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettings.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettings.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -2679,7 +2541,7 @@ class WebSettings extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -3076,12 +2938,12 @@ class WebSettings extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as String; + ); + return pigeonVar_replyValue! as String; } /// Configures the WebView's behavior when handling mixed content. @@ -3239,26 +3101,14 @@ class JavaScriptChannel extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannel.postMessage was null.', - ); - final List args = (message as List?)!; - final JavaScriptChannel? arg_pigeon_instance = - (args[0] as JavaScriptChannel?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannel.postMessage was null, expected non-null JavaScriptChannel.', - ); - final String? arg_message = (args[1] as String?); - assert( - arg_message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannel.postMessage was null, expected non-null String.', - ); + final List args = message! as List; + final JavaScriptChannel arg_pigeon_instance = + args[0]! as JavaScriptChannel; + final String arg_message = args[1]! as String; try { - (postMessage ?? arg_pigeon_instance!.postMessage).call( - arg_pigeon_instance!, - arg_message!, + (postMessage ?? arg_pigeon_instance.postMessage).call( + arg_pigeon_instance, + arg_message, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4034,16 +3884,8 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -4052,7 +3894,7 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4076,32 +3918,15 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageStarted was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageStarted was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageStarted was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageStarted was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; try { - (onPageStarted ?? arg_pigeon_instance!.onPageStarted)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, + (onPageStarted ?? arg_pigeon_instance.onPageStarted)?.call( + arg_pigeon_instance, + arg_webView, + arg_url, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4125,32 +3950,15 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageFinished was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageFinished was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageFinished was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageFinished was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; try { - (onPageFinished ?? arg_pigeon_instance!.onPageFinished)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, + (onPageFinished ?? arg_pigeon_instance.onPageFinished)?.call( + arg_pigeon_instance, + arg_webView, + arg_url, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4174,41 +3982,19 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpError was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpError was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpError was null, expected non-null WebView.', - ); - final WebResourceRequest? arg_request = - (args[2] as WebResourceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpError was null, expected non-null WebResourceRequest.', - ); - final WebResourceResponse? arg_response = - (args[3] as WebResourceResponse?); - assert( - arg_response != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpError was null, expected non-null WebResourceResponse.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final WebResourceRequest arg_request = args[2]! as WebResourceRequest; + final WebResourceResponse arg_response = + args[3]! as WebResourceResponse; try { - (onReceivedHttpError ?? arg_pigeon_instance!.onReceivedHttpError) + (onReceivedHttpError ?? arg_pigeon_instance.onReceivedHttpError) ?.call( - arg_pigeon_instance!, - arg_webView!, - arg_request!, - arg_response!, + arg_pigeon_instance, + arg_webView, + arg_request, + arg_response, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4232,41 +4018,19 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestError was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestError was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestError was null, expected non-null WebView.', - ); - final WebResourceRequest? arg_request = - (args[2] as WebResourceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestError was null, expected non-null WebResourceRequest.', - ); - final WebResourceError? arg_error = (args[3] as WebResourceError?); - assert( - arg_error != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestError was null, expected non-null WebResourceError.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final WebResourceRequest arg_request = args[2]! as WebResourceRequest; + final WebResourceError arg_error = args[3]! as WebResourceError; try { (onReceivedRequestError ?? - arg_pigeon_instance!.onReceivedRequestError) + arg_pigeon_instance.onReceivedRequestError) ?.call( - arg_pigeon_instance!, - arg_webView!, - arg_request!, - arg_error!, + arg_pigeon_instance, + arg_webView, + arg_request, + arg_error, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4290,42 +4054,20 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestErrorCompat was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestErrorCompat was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestErrorCompat was null, expected non-null WebView.', - ); - final WebResourceRequest? arg_request = - (args[2] as WebResourceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestErrorCompat was null, expected non-null WebResourceRequest.', - ); - final WebResourceErrorCompat? arg_error = - (args[3] as WebResourceErrorCompat?); - assert( - arg_error != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedRequestErrorCompat was null, expected non-null WebResourceErrorCompat.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final WebResourceRequest arg_request = args[2]! as WebResourceRequest; + final WebResourceErrorCompat arg_error = + args[3]! as WebResourceErrorCompat; try { (onReceivedRequestErrorCompat ?? - arg_pigeon_instance!.onReceivedRequestErrorCompat) + arg_pigeon_instance.onReceivedRequestErrorCompat) ?.call( - arg_pigeon_instance!, - arg_webView!, - arg_request!, - arg_error!, + arg_pigeon_instance, + arg_webView, + arg_request, + arg_error, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4349,33 +4091,15 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.requestLoading was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.requestLoading was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.requestLoading was null, expected non-null WebView.', - ); - final WebResourceRequest? arg_request = - (args[2] as WebResourceRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.requestLoading was null, expected non-null WebResourceRequest.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final WebResourceRequest arg_request = args[2]! as WebResourceRequest; try { - (requestLoading ?? arg_pigeon_instance!.requestLoading)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_request!, + (requestLoading ?? arg_pigeon_instance.requestLoading)?.call( + arg_pigeon_instance, + arg_webView, + arg_request, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4399,32 +4123,15 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.urlLoading was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.urlLoading was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.urlLoading was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.urlLoading was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; try { - (urlLoading ?? arg_pigeon_instance!.urlLoading)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, + (urlLoading ?? arg_pigeon_instance.urlLoading)?.call( + arg_pigeon_instance, + arg_webView, + arg_url, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4448,41 +4155,15 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.doUpdateVisitedHistory was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.doUpdateVisitedHistory was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.doUpdateVisitedHistory was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.doUpdateVisitedHistory was null, expected non-null String.', - ); - final bool? arg_isReload = (args[3] as bool?); - assert( - arg_isReload != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.doUpdateVisitedHistory was null, expected non-null bool.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; + final bool arg_isReload = args[3]! as bool; try { (doUpdateVisitedHistory ?? - arg_pigeon_instance!.doUpdateVisitedHistory) - ?.call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, - arg_isReload!, - ); + arg_pigeon_instance.doUpdateVisitedHistory) + ?.call(arg_pigeon_instance, arg_webView, arg_url, arg_isReload); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -4505,46 +4186,21 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpAuthRequest was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpAuthRequest was null, expected non-null WebViewClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpAuthRequest was null, expected non-null WebView.', - ); - final HttpAuthHandler? arg_handler = (args[2] as HttpAuthHandler?); - assert( - arg_handler != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpAuthRequest was null, expected non-null HttpAuthHandler.', - ); - final String? arg_host = (args[3] as String?); - assert( - arg_host != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpAuthRequest was null, expected non-null String.', - ); - final String? arg_realm = (args[4] as String?); - assert( - arg_realm != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedHttpAuthRequest was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_webView = args[1]! as WebView; + final HttpAuthHandler arg_handler = args[2]! as HttpAuthHandler; + final String arg_host = args[3]! as String; + final String arg_realm = args[4]! as String; try { (onReceivedHttpAuthRequest ?? - arg_pigeon_instance!.onReceivedHttpAuthRequest) + arg_pigeon_instance.onReceivedHttpAuthRequest) ?.call( - arg_pigeon_instance!, - arg_webView!, - arg_handler!, - arg_host!, - arg_realm!, + arg_pigeon_instance, + arg_webView, + arg_handler, + arg_host, + arg_realm, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4568,39 +4224,18 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onFormResubmission was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onFormResubmission was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onFormResubmission was null, expected non-null WebView.', - ); - final AndroidMessage? arg_dontResend = (args[2] as AndroidMessage?); - assert( - arg_dontResend != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onFormResubmission was null, expected non-null AndroidMessage.', - ); - final AndroidMessage? arg_resend = (args[3] as AndroidMessage?); - assert( - arg_resend != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onFormResubmission was null, expected non-null AndroidMessage.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final AndroidMessage arg_dontResend = args[2]! as AndroidMessage; + final AndroidMessage arg_resend = args[3]! as AndroidMessage; try { - (onFormResubmission ?? arg_pigeon_instance!.onFormResubmission) + (onFormResubmission ?? arg_pigeon_instance.onFormResubmission) ?.call( - arg_pigeon_instance!, - arg_view!, - arg_dontResend!, - arg_resend!, + arg_pigeon_instance, + arg_view, + arg_dontResend, + arg_resend, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4624,32 +4259,15 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onLoadResource was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onLoadResource was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onLoadResource was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onLoadResource was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final String arg_url = args[2]! as String; try { - (onLoadResource ?? arg_pigeon_instance!.onLoadResource)?.call( - arg_pigeon_instance!, - arg_view!, - arg_url!, + (onLoadResource ?? arg_pigeon_instance.onLoadResource)?.call( + arg_pigeon_instance, + arg_view, + arg_url, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4673,30 +4291,13 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageCommitVisible was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageCommitVisible was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageCommitVisible was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onPageCommitVisible was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final String arg_url = args[2]! as String; try { - (onPageCommitVisible ?? arg_pigeon_instance!.onPageCommitVisible) - ?.call(arg_pigeon_instance!, arg_view!, arg_url!); + (onPageCommitVisible ?? arg_pigeon_instance.onPageCommitVisible) + ?.call(arg_pigeon_instance, arg_view, arg_url); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -4719,32 +4320,14 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedClientCertRequest was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedClientCertRequest was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedClientCertRequest was null, expected non-null WebView.', - ); - final ClientCertRequest? arg_request = - (args[2] as ClientCertRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedClientCertRequest was null, expected non-null ClientCertRequest.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final ClientCertRequest arg_request = args[2]! as ClientCertRequest; try { (onReceivedClientCertRequest ?? - arg_pigeon_instance!.onReceivedClientCertRequest) - ?.call(arg_pigeon_instance!, arg_view!, arg_request!); + arg_pigeon_instance.onReceivedClientCertRequest) + ?.call(arg_pigeon_instance, arg_view, arg_request); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -4767,42 +4350,21 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedLoginRequest was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedLoginRequest was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedLoginRequest was null, expected non-null WebView.', - ); - final String? arg_realm = (args[2] as String?); - assert( - arg_realm != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedLoginRequest was null, expected non-null String.', - ); - final String? arg_account = (args[3] as String?); - final String? arg_args = (args[4] as String?); - assert( - arg_args != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedLoginRequest was null, expected non-null String.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final String arg_realm = args[2]! as String; + final String? arg_account = args[3] as String?; + final String arg_args = args[4]! as String; try { (onReceivedLoginRequest ?? - arg_pigeon_instance!.onReceivedLoginRequest) + arg_pigeon_instance.onReceivedLoginRequest) ?.call( - arg_pigeon_instance!, - arg_view!, - arg_realm!, + arg_pigeon_instance, + arg_view, + arg_realm, arg_account, - arg_args!, + arg_args, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -4826,40 +4388,14 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedSslError was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedSslError was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedSslError was null, expected non-null WebView.', - ); - final SslErrorHandler? arg_handler = (args[2] as SslErrorHandler?); - assert( - arg_handler != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedSslError was null, expected non-null SslErrorHandler.', - ); - final SslError? arg_error = (args[3] as SslError?); - assert( - arg_error != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onReceivedSslError was null, expected non-null SslError.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final SslErrorHandler arg_handler = args[2]! as SslErrorHandler; + final SslError arg_error = args[3]! as SslError; try { - (onReceivedSslError ?? arg_pigeon_instance!.onReceivedSslError) - ?.call( - arg_pigeon_instance!, - arg_view!, - arg_handler!, - arg_error!, - ); + (onReceivedSslError ?? arg_pigeon_instance.onReceivedSslError) + ?.call(arg_pigeon_instance, arg_view, arg_handler, arg_error); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -4882,38 +4418,17 @@ class WebViewClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onScaleChanged was null.', - ); - final List args = (message as List?)!; - final WebViewClient? arg_pigeon_instance = - (args[0] as WebViewClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onScaleChanged was null, expected non-null WebViewClient.', - ); - final WebView? arg_view = (args[1] as WebView?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onScaleChanged was null, expected non-null WebView.', - ); - final double? arg_oldScale = (args[2] as double?); - assert( - arg_oldScale != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onScaleChanged was null, expected non-null double.', - ); - final double? arg_newScale = (args[3] as double?); - assert( - arg_newScale != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClient.onScaleChanged was null, expected non-null double.', - ); + final List args = message! as List; + final WebViewClient arg_pigeon_instance = args[0]! as WebViewClient; + final WebView arg_view = args[1]! as WebView; + final double arg_oldScale = args[2]! as double; + final double arg_newScale = args[3]! as double; try { - (onScaleChanged ?? arg_pigeon_instance!.onScaleChanged)?.call( - arg_pigeon_instance!, - arg_view!, - arg_oldScale!, - arg_newScale!, + (onScaleChanged ?? arg_pigeon_instance.onScaleChanged)?.call( + arg_pigeon_instance, + arg_view, + arg_oldScale, + arg_newScale, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -5123,50 +4638,22 @@ class DownloadListener extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null.', - ); - final List args = (message as List?)!; - final DownloadListener? arg_pigeon_instance = - (args[0] as DownloadListener?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null, expected non-null DownloadListener.', - ); - final String? arg_url = (args[1] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null, expected non-null String.', - ); - final String? arg_userAgent = (args[2] as String?); - assert( - arg_userAgent != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null, expected non-null String.', - ); - final String? arg_contentDisposition = (args[3] as String?); - assert( - arg_contentDisposition != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null, expected non-null String.', - ); - final String? arg_mimetype = (args[4] as String?); - assert( - arg_mimetype != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null, expected non-null String.', - ); - final int? arg_contentLength = (args[5] as int?); - assert( - arg_contentLength != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListener.onDownloadStart was null, expected non-null int.', - ); + final List args = message! as List; + final DownloadListener arg_pigeon_instance = + args[0]! as DownloadListener; + final String arg_url = args[1]! as String; + final String arg_userAgent = args[2]! as String; + final String arg_contentDisposition = args[3]! as String; + final String arg_mimetype = args[4]! as String; + final int arg_contentLength = args[5]! as int; try { - (onDownloadStart ?? arg_pigeon_instance!.onDownloadStart).call( - arg_pigeon_instance!, - arg_url!, - arg_userAgent!, - arg_contentDisposition!, - arg_mimetype!, - arg_contentLength!, + (onDownloadStart ?? arg_pigeon_instance.onDownloadStart).call( + arg_pigeon_instance, + arg_url, + arg_userAgent, + arg_contentDisposition, + arg_mimetype, + arg_contentLength, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -5710,32 +5197,16 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onProgressChanged was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onProgressChanged was null, expected non-null WebChromeClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onProgressChanged was null, expected non-null WebView.', - ); - final int? arg_progress = (args[2] as int?); - assert( - arg_progress != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onProgressChanged was null, expected non-null int.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final WebView arg_webView = args[1]! as WebView; + final int arg_progress = args[2]! as int; try { - (onProgressChanged ?? arg_pigeon_instance!.onProgressChanged)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_progress!, + (onProgressChanged ?? arg_pigeon_instance.onProgressChanged)?.call( + arg_pigeon_instance, + arg_webView, + arg_progress, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -5759,32 +5230,16 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowFileChooser was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowFileChooser was null, expected non-null WebChromeClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowFileChooser was null, expected non-null WebView.', - ); - final FileChooserParams? arg_params = (args[2] as FileChooserParams?); - assert( - arg_params != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowFileChooser was null, expected non-null FileChooserParams.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final WebView arg_webView = args[1]! as WebView; + final FileChooserParams arg_params = args[2]! as FileChooserParams; try { final List output = await (onShowFileChooser ?? - arg_pigeon_instance!.onShowFileChooser) - .call(arg_pigeon_instance!, arg_webView!, arg_params!); + arg_pigeon_instance.onShowFileChooser) + .call(arg_pigeon_instance, arg_webView, arg_params); return wrapResponse(result: output); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -5807,26 +5262,13 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onPermissionRequest was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onPermissionRequest was null, expected non-null WebChromeClient.', - ); - final PermissionRequest? arg_request = - (args[1] as PermissionRequest?); - assert( - arg_request != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onPermissionRequest was null, expected non-null PermissionRequest.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final PermissionRequest arg_request = args[1]! as PermissionRequest; try { - (onPermissionRequest ?? arg_pigeon_instance!.onPermissionRequest) - ?.call(arg_pigeon_instance!, arg_request!); + (onPermissionRequest ?? arg_pigeon_instance.onPermissionRequest) + ?.call(arg_pigeon_instance, arg_request); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -5849,33 +5291,17 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowCustomView was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowCustomView was null, expected non-null WebChromeClient.', - ); - final View? arg_view = (args[1] as View?); - assert( - arg_view != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowCustomView was null, expected non-null View.', - ); - final CustomViewCallback? arg_callback = - (args[2] as CustomViewCallback?); - assert( - arg_callback != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onShowCustomView was null, expected non-null CustomViewCallback.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final View arg_view = args[1]! as View; + final CustomViewCallback arg_callback = + args[2]! as CustomViewCallback; try { - (onShowCustomView ?? arg_pigeon_instance!.onShowCustomView)?.call( - arg_pigeon_instance!, - arg_view!, - arg_callback!, + (onShowCustomView ?? arg_pigeon_instance.onShowCustomView)?.call( + arg_pigeon_instance, + arg_view, + arg_callback, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -5899,20 +5325,12 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onHideCustomView was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onHideCustomView was null, expected non-null WebChromeClient.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; try { - (onHideCustomView ?? arg_pigeon_instance!.onHideCustomView)?.call( - arg_pigeon_instance!, + (onHideCustomView ?? arg_pigeon_instance.onHideCustomView)?.call( + arg_pigeon_instance, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -5936,32 +5354,16 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onGeolocationPermissionsShowPrompt was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onGeolocationPermissionsShowPrompt was null, expected non-null WebChromeClient.', - ); - final String? arg_origin = (args[1] as String?); - assert( - arg_origin != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onGeolocationPermissionsShowPrompt was null, expected non-null String.', - ); - final GeolocationPermissionsCallback? arg_callback = - (args[2] as GeolocationPermissionsCallback?); - assert( - arg_callback != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onGeolocationPermissionsShowPrompt was null, expected non-null GeolocationPermissionsCallback.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final String arg_origin = args[1]! as String; + final GeolocationPermissionsCallback arg_callback = + args[2]! as GeolocationPermissionsCallback; try { (onGeolocationPermissionsShowPrompt ?? - arg_pigeon_instance!.onGeolocationPermissionsShowPrompt) - ?.call(arg_pigeon_instance!, arg_origin!, arg_callback!); + arg_pigeon_instance.onGeolocationPermissionsShowPrompt) + ?.call(arg_pigeon_instance, arg_origin, arg_callback); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -5984,21 +5386,13 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onGeolocationPermissionsHidePrompt was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onGeolocationPermissionsHidePrompt was null, expected non-null WebChromeClient.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; try { (onGeolocationPermissionsHidePrompt ?? - arg_pigeon_instance!.onGeolocationPermissionsHidePrompt) - ?.call(arg_pigeon_instance!); + arg_pigeon_instance.onGeolocationPermissionsHidePrompt) + ?.call(arg_pigeon_instance); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); @@ -6021,26 +5415,14 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onConsoleMessage was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onConsoleMessage was null, expected non-null WebChromeClient.', - ); - final ConsoleMessage? arg_message = (args[1] as ConsoleMessage?); - assert( - arg_message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onConsoleMessage was null, expected non-null ConsoleMessage.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final ConsoleMessage arg_message = args[1]! as ConsoleMessage; try { - (onConsoleMessage ?? arg_pigeon_instance!.onConsoleMessage)?.call( - arg_pigeon_instance!, - arg_message!, + (onConsoleMessage ?? arg_pigeon_instance.onConsoleMessage)?.call( + arg_pigeon_instance, + arg_message, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -6064,38 +5446,18 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsAlert was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsAlert was null, expected non-null WebChromeClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsAlert was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsAlert was null, expected non-null String.', - ); - final String? arg_message = (args[3] as String?); - assert( - arg_message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsAlert was null, expected non-null String.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; + final String arg_message = args[3]! as String; try { - await (onJsAlert ?? arg_pigeon_instance!.onJsAlert)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, - arg_message!, + await (onJsAlert ?? arg_pigeon_instance.onJsAlert)?.call( + arg_pigeon_instance, + arg_webView, + arg_url, + arg_message, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -6119,39 +5481,19 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsConfirm was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsConfirm was null, expected non-null WebChromeClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsConfirm was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsConfirm was null, expected non-null String.', - ); - final String? arg_message = (args[3] as String?); - assert( - arg_message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsConfirm was null, expected non-null String.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; + final String arg_message = args[3]! as String; try { final bool output = - await (onJsConfirm ?? arg_pigeon_instance!.onJsConfirm).call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, - arg_message!, + await (onJsConfirm ?? arg_pigeon_instance.onJsConfirm).call( + arg_pigeon_instance, + arg_webView, + arg_url, + arg_message, ); return wrapResponse(result: output); } on PlatformException catch (e) { @@ -6175,45 +5517,21 @@ class WebChromeClient extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsPrompt was null.', - ); - final List args = (message as List?)!; - final WebChromeClient? arg_pigeon_instance = - (args[0] as WebChromeClient?); - assert( - arg_pigeon_instance != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsPrompt was null, expected non-null WebChromeClient.', - ); - final WebView? arg_webView = (args[1] as WebView?); - assert( - arg_webView != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsPrompt was null, expected non-null WebView.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsPrompt was null, expected non-null String.', - ); - final String? arg_message = (args[3] as String?); - assert( - arg_message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsPrompt was null, expected non-null String.', - ); - final String? arg_defaultValue = (args[4] as String?); - assert( - arg_defaultValue != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClient.onJsPrompt was null, expected non-null String.', - ); + final List args = message! as List; + final WebChromeClient arg_pigeon_instance = + args[0]! as WebChromeClient; + final WebView arg_webView = args[1]! as WebView; + final String arg_url = args[2]! as String; + final String arg_message = args[3]! as String; + final String arg_defaultValue = args[4]! as String; try { final String? output = - await (onJsPrompt ?? arg_pigeon_instance!.onJsPrompt)?.call( - arg_pigeon_instance!, - arg_webView!, - arg_url!, - arg_message!, - arg_defaultValue!, + await (onJsPrompt ?? arg_pigeon_instance.onJsPrompt)?.call( + arg_pigeon_instance, + arg_webView, + arg_url, + arg_message, + arg_defaultValue, ); return wrapResponse(result: output); } on PlatformException catch (e) { @@ -6477,16 +5795,8 @@ class FlutterAssetManager extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManager.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManager.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -6495,7 +5805,7 @@ class FlutterAssetManager extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -6560,12 +5870,12 @@ class FlutterAssetManager extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return (pigeonVar_replyValue as List).cast(); + ); + return (pigeonVar_replyValue! as List).cast(); } /// Gets the relative file path to the Flutter asset with the given name, including the file's @@ -6591,12 +5901,12 @@ class FlutterAssetManager extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as String; + ); + return pigeonVar_replyValue! as String; } @override @@ -6652,16 +5962,8 @@ class WebStorage extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorage.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorage.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -6670,7 +5972,7 @@ class WebStorage extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -6805,51 +6107,31 @@ class FileChooserParams extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParams.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParams.pigeon_newInstance was null, expected non-null int.', - ); - final bool? arg_isCaptureEnabled = (args[1] as bool?); - assert( - arg_isCaptureEnabled != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParams.pigeon_newInstance was null, expected non-null bool.', - ); - final List? arg_acceptTypes = (args[2] as List?) - ?.cast(); - assert( - arg_acceptTypes != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParams.pigeon_newInstance was null, expected non-null List.', - ); - final FileChooserMode? arg_mode = (args[3] as FileChooserMode?); - assert( - arg_mode != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParams.pigeon_newInstance was null, expected non-null FileChooserMode.', - ); - final String? arg_filenameHint = (args[4] as String?); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final bool arg_isCaptureEnabled = args[1]! as bool; + final List arg_acceptTypes = (args[2]! as List) + .cast(); + final FileChooserMode arg_mode = args[3]! as FileChooserMode; + final String? arg_filenameHint = args[4] as String?; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( pigeon_newInstance?.call( - arg_isCaptureEnabled!, - arg_acceptTypes!, - arg_mode!, + arg_isCaptureEnabled, + arg_acceptTypes, + arg_mode, arg_filenameHint, ) ?? FileChooserParams.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - isCaptureEnabled: arg_isCaptureEnabled!, - acceptTypes: arg_acceptTypes!, - mode: arg_mode!, + isCaptureEnabled: arg_isCaptureEnabled, + acceptTypes: arg_acceptTypes, + mode: arg_mode, filenameHint: arg_filenameHint, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -6921,32 +6203,20 @@ class PermissionRequest extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequest.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequest.pigeon_newInstance was null, expected non-null int.', - ); - final List? arg_resources = (args[1] as List?) - ?.cast(); - assert( - arg_resources != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequest.pigeon_newInstance was null, expected non-null List.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final List arg_resources = (args[1]! as List) + .cast(); try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_resources!) ?? + pigeon_newInstance?.call(arg_resources) ?? PermissionRequest.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - resources: arg_resources!, + resources: arg_resources, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7061,16 +6331,8 @@ class CustomViewCallback extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallback.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallback.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7079,7 +6341,7 @@ class CustomViewCallback extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7166,16 +6428,8 @@ class View extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.View.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.View.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7184,7 +6438,7 @@ class View extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7264,12 +6518,12 @@ class View extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as WebViewPoint; + ); + return pigeonVar_replyValue! as WebViewPoint; } /// Define whether the vertical scrollbar should be drawn or not. @@ -7428,16 +6682,8 @@ class GeolocationPermissionsCallback extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallback.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallback.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7446,7 +6692,7 @@ class GeolocationPermissionsCallback extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7532,16 +6778,8 @@ class HttpAuthHandler extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandler.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandler.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7550,7 +6788,7 @@ class HttpAuthHandler extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7584,12 +6822,12 @@ class HttpAuthHandler extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as bool; + ); + return pigeonVar_replyValue! as bool; } /// Instructs the WebView to cancel the authentication request.. @@ -7689,16 +6927,8 @@ class AndroidMessage extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.AndroidMessage.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.AndroidMessage.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7707,7 +6937,7 @@ class AndroidMessage extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7799,16 +7029,8 @@ class ClientCertRequest extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ClientCertRequest.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ClientCertRequest.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7817,7 +7039,7 @@ class ClientCertRequest extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -7954,16 +7176,8 @@ class PrivateKey extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PrivateKey.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PrivateKey.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -7972,7 +7186,7 @@ class PrivateKey extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8034,16 +7248,8 @@ class X509Certificate extends Certificate { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.X509Certificate.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.X509Certificate.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -8052,7 +7258,7 @@ class X509Certificate extends Certificate { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8114,16 +7320,8 @@ class SslErrorHandler extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslErrorHandler.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslErrorHandler.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -8132,7 +7330,7 @@ class SslErrorHandler extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8254,37 +7452,21 @@ class SslError extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslError.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslError.pigeon_newInstance was null, expected non-null int.', - ); - final SslCertificate? arg_certificate = (args[1] as SslCertificate?); - assert( - arg_certificate != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslError.pigeon_newInstance was null, expected non-null SslCertificate.', - ); - final String? arg_url = (args[2] as String?); - assert( - arg_url != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslError.pigeon_newInstance was null, expected non-null String.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; + final SslCertificate arg_certificate = args[1]! as SslCertificate; + final String arg_url = args[2]! as String; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( - pigeon_newInstance?.call(arg_certificate!, arg_url!) ?? + pigeon_newInstance?.call(arg_certificate, arg_url) ?? SslError.pigeon_detached( pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, - certificate: arg_certificate!, - url: arg_url!, + certificate: arg_certificate, + url: arg_url, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8316,12 +7498,12 @@ class SslError extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as SslErrorType; + ); + return pigeonVar_replyValue! as SslErrorType; } /// Determines whether this object includes the supplied error. @@ -8341,12 +7523,12 @@ class SslError extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as bool; + ); + return pigeonVar_replyValue! as bool; } @override @@ -8403,16 +7585,8 @@ class SslCertificateDName extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslCertificateDName.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslCertificateDName.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -8421,7 +7595,7 @@ class SslCertificateDName extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8453,12 +7627,12 @@ class SslCertificateDName extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as String; + ); + return pigeonVar_replyValue! as String; } /// The distinguished name (normally includes CN, O, and OU names). @@ -8478,12 +7652,12 @@ class SslCertificateDName extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as String; + ); + return pigeonVar_replyValue! as String; } /// The most specific Organization (O) component of this name. @@ -8503,12 +7677,12 @@ class SslCertificateDName extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as String; + ); + return pigeonVar_replyValue! as String; } /// The most specific Organizational Unit (OU) component of this name. @@ -8528,12 +7702,12 @@ class SslCertificateDName extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as String; + ); + return pigeonVar_replyValue! as String; } @override @@ -8583,16 +7757,8 @@ class SslCertificate extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslCertificate.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.SslCertificate.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -8601,7 +7767,7 @@ class SslCertificate extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8793,16 +7959,8 @@ class Certificate extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.Certificate.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.Certificate.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -8811,7 +7969,7 @@ class Certificate extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -8843,12 +8001,12 @@ class Certificate extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as Uint8List; + ); + return pigeonVar_replyValue! as Uint8List; } @override @@ -8900,16 +8058,8 @@ class WebSettingsCompat extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsCompat.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsCompat.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -8918,7 +8068,7 @@ class WebSettingsCompat extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -9016,16 +8166,8 @@ class WebViewFeature extends PigeonInternalProxyApiBaseClass { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { - assert( - message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewFeature.pigeon_newInstance was null.', - ); - final List args = (message as List?)!; - final int? arg_pigeon_instanceIdentifier = (args[0] as int?); - assert( - arg_pigeon_instanceIdentifier != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewFeature.pigeon_newInstance was null, expected non-null int.', - ); + final List args = message! as List; + final int arg_pigeon_instanceIdentifier = args[0]! as int; try { (pigeon_instanceManager ?? PigeonInstanceManager.instance) .addHostCreatedInstance( @@ -9034,7 +8176,7 @@ class WebViewFeature extends PigeonInternalProxyApiBaseClass { pigeon_binaryMessenger: pigeon_binaryMessenger, pigeon_instanceManager: pigeon_instanceManager, ), - arg_pigeon_instanceIdentifier!, + arg_pigeon_instanceIdentifier, ); return wrapResponse(empty: true); } on PlatformException catch (e) { @@ -9074,12 +8216,12 @@ class WebViewFeature extends PigeonInternalProxyApiBaseClass { ); final pigeonVar_replyList = await pigeonVar_sendFuture as List?; - final Object pigeonVar_replyValue = _extractReplyValueOrThrow( + final Object? pigeonVar_replyValue = _extractReplyValueOrThrow( pigeonVar_replyList, pigeonVar_channelName, isNullValid: false, - )!; - return pigeonVar_replyValue as bool; + ); + return pigeonVar_replyValue! as bool; } @override diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_cookie_manager.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_cookie_manager.dart index 621e9baae048..8bee7516a7e9 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_cookie_manager.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_cookie_manager.dart @@ -87,4 +87,26 @@ class AndroidWebViewCookieManager extends PlatformWebViewCookieManager { .getInstanceWithWeakReference(controller.webViewIdentifier)!; return _cookieManager.setAcceptThirdPartyCookies(webView, accept); } + + @override + Future> getCookies(Uri url) async { + final String? cookies = await _cookieManager.getCookies(url.toString()); + if (cookies == null || cookies.isEmpty) { + return []; + } + + final webViewCookies = []; + for (final String cookie in cookies.split('; ')) { + final List cookieValue = cookie.split('='); + webViewCookies.add( + WebViewCookie( + name: cookieValue.first, + value: cookieValue.last, + domain: url.toString(), + ), + ); + } + + return webViewCookies; + } } diff --git a/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart b/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart index 4c9aa4cb9d2f..868fc448ffa8 100644 --- a/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart +++ b/packages/webview_flutter/webview_flutter_android/pigeons/android_webkit.dart @@ -299,6 +299,15 @@ abstract class CookieManager { /// Sets whether the `WebView` should allow third party cookies to be set. void setAcceptThirdPartyCookies(WebView webView, bool accept); + + /// Gets all the cookies for the given URL. + /// + /// This may return multiple key-value pairs if multiple cookies are associated with this URL, + /// in which case each cookie will be delimited by "; " characters (semicolon followed by a space). + /// Each key-value pair will be of the form "key=value". + /// + /// Note: Any cookies set with the "Partitioned" attribute will only be returned for the top-level partition of url. + String? getCookies(String url); } /// A View that displays web pages. diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index da5165f07330..549e7c24d474 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.11.0 +version: 4.12.0 environment: sdk: ^3.9.0 @@ -21,7 +21,7 @@ dependencies: flutter: sdk: flutter meta: ^1.10.0 - webview_flutter_platform_interface: ^2.14.0 + webview_flutter_platform_interface: ^2.15.1 dev_dependencies: build_runner: ^2.1.4 diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.dart index 44695d2eeeca..d5f09d9f63ed 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.dart @@ -108,4 +108,93 @@ void main() { verify(mockCookieManager.setAcceptThirdPartyCookies(webView, false)); }); + + test('getCookies should return list of WebViewCookie for a domain', () async { + final mockCookieManager = MockCookieManager(); + + // Mock the return value of getCookies + when( + mockCookieManager.getCookies('https://flutter.dev'), + ).thenAnswer((_) => Future.value('foo=bar; hello=world')); + + final params = + AndroidWebViewCookieManagerCreationParams.fromPlatformWebViewCookieManagerCreationParams( + const PlatformWebViewCookieManagerCreationParams(), + ); + + final cookieManager = AndroidWebViewCookieManager( + params, + cookieManager: mockCookieManager, + ); + + final List cookies = await cookieManager.getCookies( + Uri.parse('https://flutter.dev'), + ); + + expect(cookies.length, 2); + + expect(cookies[0].name, 'foo'); + expect(cookies[0].value, 'bar'); + expect(cookies[0].domain, 'https://flutter.dev'); + + expect(cookies[1].name, 'hello'); + expect(cookies[1].value, 'world'); + expect(cookies[1].domain, 'https://flutter.dev'); + + verify(mockCookieManager.getCookies('https://flutter.dev')).called(1); + }); + + test('getCookies should return empty list if no cookies exist', () async { + final mockCookieManager = MockCookieManager(); + + when( + mockCookieManager.getCookies('https://flutter.dev'), + ).thenAnswer((_) => Future.value('')); + + final params = + AndroidWebViewCookieManagerCreationParams.fromPlatformWebViewCookieManagerCreationParams( + const PlatformWebViewCookieManagerCreationParams(), + ); + + final cookieManager = AndroidWebViewCookieManager( + params, + cookieManager: mockCookieManager, + ); + + final List cookies = await cookieManager.getCookies( + Uri.parse('https://flutter.dev'), + ); + + expect(cookies, isEmpty); + verify(mockCookieManager.getCookies('https://flutter.dev')).called(1); + }); + + test('getCookies should handle single cookie correctly', () async { + final mockCookieManager = MockCookieManager(); + + when( + mockCookieManager.getCookies('https://flutter.dev'), + ).thenAnswer((_) => Future.value('sessionId=abc123')); + + final params = + AndroidWebViewCookieManagerCreationParams.fromPlatformWebViewCookieManagerCreationParams( + const PlatformWebViewCookieManagerCreationParams(), + ); + + final cookieManager = AndroidWebViewCookieManager( + params, + cookieManager: mockCookieManager, + ); + + final List cookies = await cookieManager.getCookies( + Uri.parse('https://flutter.dev'), + ); + + expect(cookies.length, 1); + expect(cookies[0].name, 'sessionId'); + expect(cookies[0].value, 'abc123'); + expect(cookies[0].domain, 'https://flutter.dev'); + + verify(mockCookieManager.getCookies('https://flutter.dev')).called(1); + }); } diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart index b0d4e68f3413..1577007d3e94 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_cookie_manager_test.mocks.dart @@ -105,6 +105,14 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ) as _i5.Future); + @override + _i5.Future getCookies(String? url) => + (super.noSuchMethod( + Invocation.method(#getCookies, [url]), + returnValue: _i5.Future.value(), + ) + as _i5.Future); + @override _i2.CookieManager pigeon_copy() => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart index 772767b56000..ade0c74a08be 100644 --- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_cookie_manager_test.mocks.dart @@ -82,6 +82,14 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ) as _i3.Future); + @override + _i3.Future getCookies(String? url) => + (super.noSuchMethod( + Invocation.method(#getCookies, [url]), + returnValue: _i3.Future.value(), + ) + as _i3.Future); + @override _i2.CookieManager pigeon_copy() => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index 55138ec0bbf3..cff94db7d0ab 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.25.0 + +* Adds support for retrieving cookies with `PlatformWebViewCookieManager.getCookies`. + ## 3.24.5 * Reverts `3.24.4` to prevent missing `FlutterSceneLifeCycleDelegate` build error. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift index b2f559fec544..7d17082be682 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/Tests/HTTPCookieStoreProxyAPITests.swift @@ -14,38 +14,80 @@ class HTTPCookieStoreProxyAPITests: XCTestCase { let instance: TestCookieStore? = TestCookieStore.customInit() let cookie = HTTPCookie(properties: [ - .name: "foo", .value: "bar", .domain: "http://google.com", .path: "/anything", + .name: "foo", .value: "bar", .domain: "http://google.com", + .path: "/anything", ])! let expect = expectation(description: "Wait for setCookie.") - api.pigeonDelegate.setCookie(pigeonApi: api, pigeonInstance: instance!, cookie: cookie) { + api.pigeonDelegate.setCookie( + pigeonApi: api, + pigeonInstance: instance!, + cookie: cookie + ) { result in switch result { case .success(_): - expect.fulfill() - case .failure(_): - break + XCTAssertEqual(instance!.setCookieArg, cookie) + case .failure(let error): + XCTFail("\(error)") } + expect.fulfill() } wait(for: [expect], timeout: 1.0) - XCTAssertEqual(instance!.setCookieArg, cookie) + } + + @MainActor func testGetCookies() { + let registrar = TestProxyApiRegistrar() + let api = registrar.apiDelegate.pigeonApiWKHTTPCookieStore(registrar) + + let cookie1 = HTTPCookie(properties: [ + .name: "foo", .value: "bar", .domain: "google.com", .path: "/", + ])! + let cookie2 = HTTPCookie(properties: [ + .name: "baz", .value: "qux", .domain: "example.com", .path: "/", + ])! + + let instance: TestCookieStore? = TestCookieStore.customInit() + instance!.allCookies = [cookie1, cookie2] + + // Test fetching all cookies + let expectAll = expectation(description: "Wait for getAllCookies.") + api.pigeonDelegate.getAllCookies( + pigeonApi: api, + pigeonInstance: instance! + ) { result in + switch result { + case .success(let cookies): + XCTAssertEqual(cookies.count, 2) + XCTAssertTrue(cookies.contains(cookie1)) + XCTAssertTrue(cookies.contains(cookie2)) + case .failure(let error): + XCTFail("\(error)") + } + expectAll.fulfill() + } + + wait(for: [expectAll], timeout: 1.0) } } class TestCookieStore: WKHTTPCookieStore { var setCookieArg: HTTPCookie? = nil + var allCookies: [HTTPCookie] = [] // Workaround to subclass an Objective-C class that has an `init` constructor with NS_UNAVAILABLE static func customInit() -> TestCookieStore { let instance = - TestCookieStore.perform(NSSelectorFromString("new")).takeRetainedValue() as! TestCookieStore + TestCookieStore.perform(NSSelectorFromString("new")) + .takeRetainedValue() as! TestCookieStore return instance } #if compiler(>=6.0) public override func setCookie( - _ cookie: HTTPCookie, completionHandler: (@MainActor () -> Void)? = nil + _ cookie: HTTPCookie, + completionHandler: (@MainActor () -> Void)? = nil ) { setCookieArg = cookie DispatchQueue.main.async { @@ -53,11 +95,22 @@ class TestCookieStore: WKHTTPCookieStore { } } #else - public override func setCookie(_ cookie: HTTPCookie, completionHandler: (() -> Void)? = nil) { + public override func setCookie( + _ cookie: HTTPCookie, + completionHandler: (() -> Void)? = nil + ) { setCookieArg = cookie DispatchQueue.main.async { completionHandler?() } } #endif + + override func getAllCookies( + _ completionHandler: @escaping @MainActor ([HTTPCookie]) -> Void + ) { + DispatchQueue.main.async { + completionHandler(self.allCookies) + } + } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieProxyAPIDelegate.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieProxyAPIDelegate.swift index a5b81998200c..fa52bea9a52c 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieProxyAPIDelegate.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieProxyAPIDelegate.swift @@ -110,6 +110,7 @@ class HTTPCookieProxyAPIDelegate: PigeonApiDelegateHTTPCookie { return (newKey, value) } - return Dictionary(uniqueKeysWithValues: keyValueTuples) + // Use newest value in case of duplicates + return Dictionary(keyValueTuples, uniquingKeysWith: { _, last in last }) } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieStoreProxyAPIDelegate.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieStoreProxyAPIDelegate.swift index 74fcf53fb9d6..66aa24cbdb79 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieStoreProxyAPIDelegate.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/HTTPCookieStoreProxyAPIDelegate.swift @@ -11,11 +11,23 @@ import WebKit /// or handle method calls on the associated native class or an instance of that class. class HTTPCookieStoreProxyAPIDelegate: PigeonApiDelegateWKHTTPCookieStore { func setCookie( - pigeonApi: PigeonApiWKHTTPCookieStore, pigeonInstance: WKHTTPCookieStore, cookie: HTTPCookie, + pigeonApi: PigeonApiWKHTTPCookieStore, + pigeonInstance: WKHTTPCookieStore, + cookie: HTTPCookie, completion: @escaping (Result) -> Void ) { pigeonInstance.setCookie(cookie) { completion(.success(Void())) } } + + func getAllCookies( + pigeonApi: PigeonApiWKHTTPCookieStore, pigeonInstance: WKHTTPCookieStore, + completion: @escaping (Result<[HTTPCookie], any Error>) -> Void + ) { + pigeonInstance.getAllCookies { cookies in + completion(.success(cookies)) + } + } + } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift index 98c30356e92d..8848ee4485a5 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift +++ b/packages/webview_flutter/webview_flutter_wkwebview/darwin/webview_flutter_wkwebview/Sources/webview_flutter_wkwebview/WebKitLibrary.g.swift @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.1.4), do not edit directly. +// Autogenerated from Pigeon (v26.1.5), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation @@ -6614,6 +6614,10 @@ protocol PigeonApiDelegateWKHTTPCookieStore { func setCookie( pigeonApi: PigeonApiWKHTTPCookieStore, pigeonInstance: WKHTTPCookieStore, cookie: HTTPCookie, completion: @escaping (Result) -> Void) + /// Fetches all stored cookies. + func getAllCookies( + pigeonApi: PigeonApiWKHTTPCookieStore, pigeonInstance: WKHTTPCookieStore, + completion: @escaping (Result<[HTTPCookie], Error>) -> Void) } protocol PigeonApiProtocolWKHTTPCookieStore { @@ -6665,6 +6669,26 @@ final class PigeonApiWKHTTPCookieStore: PigeonApiProtocolWKHTTPCookieStore { } else { setCookieChannel.setMessageHandler(nil) } + let getAllCookiesChannel = FlutterBasicMessageChannel( + name: "dev.flutter.pigeon.webview_flutter_wkwebview.WKHTTPCookieStore.getAllCookies", + binaryMessenger: binaryMessenger, codec: codec) + if let api = api { + getAllCookiesChannel.setMessageHandler { message, reply in + let args = message as! [Any?] + let pigeonInstanceArg = args[0] as! WKHTTPCookieStore + api.pigeonDelegate.getAllCookies(pigeonApi: api, pigeonInstance: pigeonInstanceArg) { + result in + switch result { + case .success(let res): + reply(wrapResult(res)) + case .failure(let error): + reply(wrapError(error)) + } + } + } + } else { + getAllCookiesChannel.setMessageHandler(nil) + } } ///Creates a Dart instance of WKHTTPCookieStore and attaches it to [pigeonInstance]. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart index 31473b0dc1a4..af45a365a419 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -501,9 +501,17 @@ class SampleMenu extends StatelessWidget { } Future _onListCookies(BuildContext context) async { - final cookies = - await webViewController.runJavaScriptReturningResult('document.cookie') - as String; + final Uri? domain = Uri.tryParse( + (await webViewController.currentUrl()) ?? '', + ); + final List cookies; + + if (domain == null) { + cookies = []; + } else { + cookies = await cookieManager.getCookies(domain); + } + if (context.mounted) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -642,13 +650,12 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kAlertTestPage); } - Widget _getCookieList(String cookies) { - if (cookies == '""') { + Widget _getCookieList(List cookies) { + if (cookies.isEmpty) { return Container(); } - final List cookieList = cookies.split(';'); - final Iterable cookieWidgets = cookieList.map( - (String cookie) => Text(cookie), + final Iterable cookieWidgets = cookies.map( + (WebViewCookie cookie) => Text(cookie.toString()), ); return Column( mainAxisAlignment: MainAxisAlignment.end, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart index 1c7b8a663496..162148fe0407 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/common/web_kit.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v26.1.4), do not edit directly. +// Autogenerated from Pigeon (v26.1.5), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, omit_obvious_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers @@ -8482,6 +8482,40 @@ class WKHTTPCookieStore extends NSObject { } } + /// Fetches all stored cookies. + Future> getAllCookies() async { + final _PigeonInternalProxyApiBaseCodec pigeonChannelCodec = + _pigeonVar_codecWKHTTPCookieStore; + final BinaryMessenger? pigeonVar_binaryMessenger = pigeon_binaryMessenger; + const pigeonVar_channelName = + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHTTPCookieStore.getAllCookies'; + final pigeonVar_channel = BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = pigeonVar_channel.send( + [this], + ); + final pigeonVar_replyList = await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else if (pigeonVar_replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (pigeonVar_replyList[0] as List?)!.cast(); + } + } + @override WKHTTPCookieStore pigeon_copy() { return WKHTTPCookieStore.pigeon_detached( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_cookie_manager.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_cookie_manager.dart index 5556890a39d3..94e2715166cb 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_cookie_manager.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_cookie_manager.dart @@ -73,4 +73,44 @@ class WebKitWebViewCookieManager extends PlatformWebViewCookieManager { return (char < 0x20 || char > 0x3A) && (char < 0x3C || char > 0x7E); }); } + + @override + Future> getCookies(Uri url) async { + final List httpCookies = await _webkitParams + ._websiteDataStore + .httpCookieStore + .getAllCookies(); + + final Iterable> webviewCookies = httpCookies.map(( + cookie, + ) async { + final Map? props = await cookie + .getProperties(); + + if (props == null) { + return null; + } + + final domain = props[HttpCookiePropertyKey.domain].toString(); + + // Follow RFC 6265 guideline for domain matching + var cookieDomain = domain; + if (domain.startsWith('.')) { + cookieDomain = cookieDomain.substring(1); + } + + if (url.host != cookieDomain && !url.host.endsWith('.$cookieDomain')) { + return null; + } + + return WebViewCookie( + name: props[HttpCookiePropertyKey.name].toString(), + value: props[HttpCookiePropertyKey.value].toString(), + domain: domain, + path: props[HttpCookiePropertyKey.path].toString(), + ); + }); + + return (await Future.wait(webviewCookies)).nonNulls.toList(); + } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart b/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart index c66c5bedab91..52e1b9831af7 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart @@ -1100,6 +1100,10 @@ abstract class WKHTTPCookieStore extends NSObject { /// storage. @async void setCookie(HTTPCookie cookie); + + /// Fetches all stored cookies. + @async + List getAllCookies(); } /// The interface for the delegate of a scroll view. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index ec115ab93ecd..9f52248af709 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.24.5 +version: 3.25.0 environment: sdk: ^3.9.0 @@ -26,7 +26,7 @@ dependencies: sdk: flutter meta: ^1.10.0 path: ^1.8.0 - webview_flutter_platform_interface: ^2.14.0 + webview_flutter_platform_interface: ^2.15.1 dev_dependencies: build_runner: ^2.1.5 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart index e02154caacf8..748460f32338 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/legacy/web_kit_cookie_manager_test.mocks.dart @@ -69,6 +69,16 @@ class MockWKHTTPCookieStore extends _i1.Mock implements _i2.WKHTTPCookieStore { ) as _i3.Future); + @override + _i3.Future> getAllCookies() => + (super.noSuchMethod( + Invocation.method(#getAllCookies, []), + returnValue: _i3.Future>.value( + <_i2.HTTPCookie>[], + ), + ) + as _i3.Future>); + @override _i2.WKHTTPCookieStore pigeon_copy() => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.dart index e3f15d030a4b..a083b852d880 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.dart @@ -12,7 +12,7 @@ import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; import 'webkit_webview_cookie_manager_test.mocks.dart'; -@GenerateMocks([WKWebsiteDataStore, WKHTTPCookieStore]) +@GenerateMocks([WKWebsiteDataStore, WKHTTPCookieStore, HTTPCookie]) void main() { WidgetsFlutterBinding.ensureInitialized(); @@ -105,5 +105,82 @@ void main() { throwsArgumentError, ); }); + + test('getAllCookies returns cookies correctly', () async { + final mockWKWebsiteDataStore = MockWKWebsiteDataStore(); + final mockCookieStore = MockWKHTTPCookieStore(); + + when(mockWKWebsiteDataStore.httpCookieStore).thenReturn(mockCookieStore); + + // Mock cookies returned by the cookie store + final mockCookie1 = MockHTTPCookie(); + final mockCookie2 = MockHTTPCookie(); + final mockCookie3 = MockHTTPCookie(); + + when(mockCookie1.getProperties()).thenAnswer( + (_) async => { + HttpCookiePropertyKey.name: 'cookie1', + HttpCookiePropertyKey.value: 'value1', + HttpCookiePropertyKey.domain: 'flutter.dev', + HttpCookiePropertyKey.path: '/', + }, + ); + + when(mockCookie2.getProperties()).thenAnswer( + (_) async => { + HttpCookiePropertyKey.name: 'cookie2', + HttpCookiePropertyKey.value: 'value2', + HttpCookiePropertyKey.domain: 'flutter.dev', + HttpCookiePropertyKey.path: '/path', + }, + ); + + when(mockCookie3.getProperties()).thenAnswer( + (_) async => { + HttpCookiePropertyKey.name: 'cookie3', + HttpCookiePropertyKey.value: 'value3', + HttpCookiePropertyKey.domain: '.flutter.dev', + HttpCookiePropertyKey.path: '/path', + }, + ); + + when( + mockCookieStore.getAllCookies(), + ).thenAnswer((_) async => [mockCookie1, mockCookie2, mockCookie3]); + + PigeonOverrides.wKWebsiteDataStore_defaultDataStore = + mockWKWebsiteDataStore; + + final manager = WebKitWebViewCookieManager( + WebKitWebViewCookieManagerCreationParams(), + ); + + final List cookies = await manager.getCookies( + Uri.parse('https://flutter.dev'), + ); + + expect(cookies.length, 3); + + expect(cookies[0].name, 'cookie1'); + expect(cookies[0].value, 'value1'); + expect(cookies[0].domain, 'flutter.dev'); + expect(cookies[0].path, '/'); + + expect(cookies[1].name, 'cookie2'); + expect(cookies[1].value, 'value2'); + expect(cookies[1].domain, 'flutter.dev'); + expect(cookies[1].path, '/path'); + + final List cookiesWww = await manager.getCookies( + Uri.parse('https://www.flutter.dev'), + ); + + expect(cookiesWww.length, 3); + + expect(cookiesWww[2].name, 'cookie3'); + expect(cookiesWww[2].value, 'value3'); + expect(cookiesWww[2].domain, '.flutter.dev'); + expect(cookiesWww[2].path, '/path'); + }); }); } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart index ed94dc28231c..7c954666fbaf 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_cookie_manager_test.mocks.dart @@ -41,6 +41,11 @@ class _FakeWKWebsiteDataStore_2 extends _i1.SmartFake : super(parent, parentInvocation); } +class _FakeHTTPCookie_3 extends _i1.SmartFake implements _i2.HTTPCookie { + _FakeHTTPCookie_3(Object parent, Invocation parentInvocation) + : super(parent, parentInvocation); +} + /// A class which mocks [WKWebsiteDataStore]. /// /// See the documentation for Mockito's code generation for more information. @@ -159,6 +164,16 @@ class MockWKHTTPCookieStore extends _i1.Mock implements _i2.WKHTTPCookieStore { ) as _i3.Future); + @override + _i3.Future> getAllCookies() => + (super.noSuchMethod( + Invocation.method(#getAllCookies, []), + returnValue: _i3.Future>.value( + <_i2.HTTPCookie>[], + ), + ) + as _i3.Future>); + @override _i2.WKHTTPCookieStore pigeon_copy() => (super.noSuchMethod( @@ -192,3 +207,65 @@ class MockWKHTTPCookieStore extends _i1.Mock implements _i2.WKHTTPCookieStore { ) as _i3.Future); } + +/// A class which mocks [HTTPCookie]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockHTTPCookie extends _i1.Mock implements _i2.HTTPCookie { + MockHTTPCookie() { + _i1.throwOnMissingStub(this); + } + + @override + _i2.PigeonInstanceManager get pigeon_instanceManager => + (super.noSuchMethod( + Invocation.getter(#pigeon_instanceManager), + returnValue: _FakePigeonInstanceManager_1( + this, + Invocation.getter(#pigeon_instanceManager), + ), + ) + as _i2.PigeonInstanceManager); + + @override + _i3.Future?> getProperties() => + (super.noSuchMethod( + Invocation.method(#getProperties, []), + returnValue: + _i3.Future?>.value(), + ) + as _i3.Future?>); + + @override + _i2.HTTPCookie pigeon_copy() => + (super.noSuchMethod( + Invocation.method(#pigeon_copy, []), + returnValue: _FakeHTTPCookie_3( + this, + Invocation.method(#pigeon_copy, []), + ), + ) + as _i2.HTTPCookie); + + @override + _i3.Future addObserver( + _i2.NSObject? observer, + String? keyPath, + List<_i2.KeyValueObservingOptions>? options, + ) => + (super.noSuchMethod( + Invocation.method(#addObserver, [observer, keyPath, options]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); + + @override + _i3.Future removeObserver(_i2.NSObject? observer, String? keyPath) => + (super.noSuchMethod( + Invocation.method(#removeObserver, [observer, keyPath]), + returnValue: _i3.Future.value(), + returnValueForMissingStub: _i3.Future.value(), + ) + as _i3.Future); +}