From 517e9d486a30d2485ea0105666941c85586ca2cc Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Thu, 10 Aug 2023 13:38:03 +0200 Subject: [PATCH 01/30] Implement http basic auth --- .../webview_flutter/CHANGELOG.md | 4 + .../webview_flutter_test.dart | 58 +- .../ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../webview_flutter/example/lib/main.dart | 73 +- .../webview_flutter/example/pubspec.yaml | 5 + .../example/test/main_test.dart | 5 + .../lib/src/navigation_delegate.dart | 11 + .../webview_flutter/lib/webview_flutter.dart | 1 + .../webview_flutter/pubspec.yaml | 9 +- .../test/navigation_delegate_test.dart | 13 + .../test/navigation_delegate_test.mocks.dart | 11 + .../test/webview_controller_test.mocks.dart | 11 + .../webview_flutter_android/CHANGELOG.md | 4 + .../GeneratedAndroidWebView.java | 1350 ++++++-------- .../HttpAuthHandlerFlutterApiImpl.java | 51 + .../HttpAuthHandlerHostApiImpl.java | 57 + .../WebViewClientFlutterApiImpl.java | 21 + .../WebViewClientHostApiImpl.java | 22 +- .../webviewflutter/WebViewFlutterPlugin.java | 3 + .../webview_flutter_test.dart | 84 + .../example/lib/main.dart | 70 +- .../example/pubspec.yaml | 5 + .../lib/src/android_proxy.dart | 6 + .../lib/src/android_webview.dart | 40 + .../lib/src/android_webview.g.dart | 817 ++++----- .../lib/src/android_webview_api_impls.dart | 103 +- .../lib/src/android_webview_controller.dart | 29 +- .../pigeons/android_webview.dart | 40 + .../webview_flutter_android/pubspec.yaml | 9 +- .../android_navigation_delegate_test.dart | 67 +- .../test/android_webview_controller_test.dart | 6 + ...android_webview_controller_test.mocks.dart | 35 + .../test/test_android_webview.g.dart | 966 ++++------ .../CHANGELOG.md | 4 + .../lib/src/platform_navigation_delegate.dart | 12 + .../lib/src/platform_webview_controller.dart | 4 +- .../src/types/http_basic_auth_request.dart | 26 + .../lib/src/types/types.dart | 1 + .../pubspec.yaml | 4 +- .../platform_navigation_delegate_test.dart | 14 + ...latform_webview_controller_test.mocks.dart | 11 + .../webview_flutter_wkwebview/CHANGELOG.md | 5 + .../webview_flutter_test.dart | 84 + .../ios/Runner.xcodeproj/project.pbxproj | 17 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../example/ios/Runner/Info.plist | 24 +- .../FWFNavigationDelegateHostApiTests.m | 54 + ...WFURLAuthenticationChallengeHostApiTests.m | 47 + .../FWFURLCredentialHostApiTests.m | 35 + .../FWFURLProtectionSpaceHostApiTests.m | 41 + .../example/lib/main.dart | 73 + .../example/pubspec.yaml | 5 + .../ios/Classes/FLTWebViewFlutterPlugin.m | 6 + .../ios/Classes/FWFDataConverters.h | 22 + .../ios/Classes/FWFDataConverters.m | 33 + .../ios/Classes/FWFGeneratedWebKitApis.h | 577 +++--- .../ios/Classes/FWFGeneratedWebKitApis.m | 1615 +++++++---------- .../Classes/FWFNavigationDelegateHostApi.m | 65 + .../FWFURLAuthenticationChallengeHostApi.h | 33 + .../FWFURLAuthenticationChallengeHostApi.m | 52 + .../ios/Classes/FWFURLCredentialHostApi.h | 24 + .../ios/Classes/FWFURLCredentialHostApi.m | 58 + .../Classes/FWFURLProtectionSpaceHostApi.h | 35 + .../Classes/FWFURLProtectionSpaceHostApi.m | 36 + .../ios/Classes/webview-umbrella.h | 3 + .../lib/src/common/web_kit.g.dart | 936 +++++----- .../lib/src/foundation/foundation.dart | 120 ++ .../src/foundation/foundation_api_impls.dart | 145 ++ .../lib/src/web_kit/web_kit.dart | 13 + .../lib/src/web_kit/web_kit_api_impls.dart | 49 + .../lib/src/webkit_proxy.dart | 8 + .../lib/src/webkit_webview_controller.dart | 56 + .../pigeons/web_kit.dart | 121 ++ .../webview_flutter_wkwebview/pubspec.yaml | 9 +- .../test/src/common/test_web_kit.g.dart | 920 ++++------ .../test/src/foundation/foundation_test.dart | 97 + .../src/foundation/foundation_test.mocks.dart | 30 + .../test/src/web_kit/web_kit_test.dart | 57 + .../test/webkit_navigation_delegate_test.dart | 41 + .../test/webkit_webview_controller_test.dart | 1 + 81 files changed, 5496 insertions(+), 4119 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java create mode 100644 packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md index 9f8374332e9..81a3ae96260 100644 --- a/packages/webview_flutter/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.5.0 + +* Adds support for HTTP basic authentication. See `NavigationDelegate(onReceivedHttpAuthRequest)`. + ## 4.4.1 * Exposes `JavaScriptLogLevel` from platform interface. diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index cee1b8b0344..41e335eab4c 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -32,6 +32,15 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; + } else if (request.uri.path == '/http-basic-authentication') { + final bool isAuthenticating = request.headers['Authorization'] != null; + if (isAuthenticating) { + request.response.writeln('Authorized'); + } else { + request.response.headers + .add('WWW-Authenticate', 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -41,6 +50,7 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; + final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets('loadRequest', (WidgetTester tester) async { final Completer pageFinished = Completer(); @@ -49,12 +59,9 @@ Future main() async { unawaited(controller.setNavigationDelegate( NavigationDelegate(onPageFinished: (_) => pageFinished.complete()), )); - unawaited(controller.loadRequest(Uri.parse(primaryUrl))); - await tester.pumpWidget(WebViewWidget(controller: controller)); - + unawaited(controller.loadRequest(Uri.parse(primaryUrl))); await pageFinished.future; - final String? currentUrl = await controller.currentUrl(); expect(currentUrl, primaryUrl); }); @@ -761,6 +768,49 @@ Future main() async { await expectLater(urlChangeCompleter.future, completion(secondaryUrl)); }); + + testWidgets('can receive HTTP basic auth requests', + (WidgetTester tester) async { + final Completer authRequested = Completer(); + final WebViewController controller = WebViewController(); + + unawaited( + controller.setNavigationDelegate( + NavigationDelegate( + onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => + authRequested.complete(), + ), + ), + ); + + await tester.pumpWidget(WebViewWidget(controller: controller)); + + unawaited(controller.loadRequest(Uri.parse(basicAuthUrl))); + + await expectLater(authRequested.future, completes); + }); + + testWidgets('can reply to HTTP basic auth requests', + (WidgetTester tester) async { + final WebViewController controller = WebViewController(); + final Completer pageFinished = Completer(); + + unawaited( + controller.setNavigationDelegate( + NavigationDelegate( + onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => + request.onProceed('user', 'pass'), + onPageFinished: (_) => pageFinished.complete(), + ), + ), + ); + + await tester.pumpWidget(WebViewWidget(controller: controller)); + + unawaited(controller.loadRequest(Uri.parse(basicAuthUrl))); + + await expectLater(pageFinished.future, completes); + }); }); testWidgets('target _blank opens in same window', diff --git a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj index f4a6c737e42..8c5cae5f9d0 100644 --- a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -274,7 +274,7 @@ isa = PBXProject; attributes = { DefaultBuildSystemTypeForWorkspace = Original; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 68BDCAE823C3F7CB00D9C032 = { diff --git a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cb713d76763..cf07c46df2e 100644 --- a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { if (WebViewPlatform.instance is WebKitWebViewPlatform) { params = WebKitWebViewControllerCreationParams( allowsInlineMediaPlayback: true, - mediaTypesRequiringUserAction: const {}, ); } else { params = const PlatformWebViewControllerCreationParams(); @@ -173,6 +172,11 @@ Page resource error: onUrlChange: (UrlChange change) { debugPrint('url change to ${change.url}'); }, + onHttpBasicAuthRequest: (HttpBasicAuthRequest request) { + debugPrint( + 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + openDialog(request); + }, ), ) ..addJavaScriptChannel( @@ -226,6 +230,60 @@ Page resource error: child: const Icon(Icons.favorite), ); } + + Future openDialog(HttpBasicAuthRequest httpRequest) async { + final TextEditingController usernameTextController = + TextEditingController(); + final TextEditingController passwordTextController = + TextEditingController(); + + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${httpRequest.host}: ${httpRequest.realm}'), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + decoration: const InputDecoration(labelText: 'Username'), + autofocus: true, + controller: usernameTextController, + ), + TextField( + decoration: const InputDecoration(labelText: 'Password'), + controller: passwordTextController, + ), + ], + ), + ), + actions: [ + // Explicitly cancel the request on iOS as the OS does not emit new + // requests when a previous request is pending. + TextButton( + onPressed: () { + httpRequest.onCancel(); + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () { + httpRequest.onProceed( + usernameTextController.text, + passwordTextController.text, + ); + Navigator.of(context).pop(); + }, + child: const Text('Authenticate'), + ), + ], + ); + }, + ); + } } enum MenuOptions { @@ -243,6 +301,7 @@ enum MenuOptions { transparentBackground, setCookie, logExample, + basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -302,6 +361,9 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; + case MenuOptions.basicAuthentication: + _basicAuthExample(); + break; } }, itemBuilder: (BuildContext context) => >[ @@ -362,6 +424,10 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.logExample, child: Text('Log example'), ), + const PopupMenuItem( + value: MenuOptions.basicAuthentication, + child: Text('Basic Authentication Example'), + ), ], ); } @@ -515,6 +581,11 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } + + Future _basicAuthExample() { + return webViewController.loadRequest(Uri.parse( + 'https://www.httpwatch.com/httpgallery/authentication/#showExample10')); + } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml index 3133daf588c..7dd37c5609d 100644 --- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml @@ -36,3 +36,8 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_android: {path: ../../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}, webview_flutter_wkwebview: {path: ../../../webview_flutter/webview_flutter_wkwebview}} diff --git a/packages/webview_flutter/webview_flutter/example/test/main_test.dart b/packages/webview_flutter/webview_flutter/example/test/main_test.dart index b1f36d364ab..baa7983e7ab 100644 --- a/packages/webview_flutter/webview_flutter/example/test/main_test.dart +++ b/packages/webview_flutter/webview_flutter/example/test/main_test.dart @@ -116,4 +116,9 @@ class FakeNavigationDelegate extends PlatformNavigationDelegate { @override Future setOnUrlChange(UrlChangeCallback onUrlChange) async {} + + @override + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback handler, + ) async {} } diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index 9ca6981339d..6c0c8ed301e 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -48,6 +48,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, + void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, }) : this.fromPlatformCreationParams( const PlatformNavigationDelegateCreationParams(), onNavigationRequest: onNavigationRequest, @@ -56,6 +57,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, + onHttpBasicAuthRequest: onHttpBasicAuthRequest, ); /// Constructs a [NavigationDelegate] from creation params for a specific @@ -98,6 +100,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, + void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, }) : this.fromPlatform( PlatformNavigationDelegate(params), onNavigationRequest: onNavigationRequest, @@ -106,6 +109,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, + onHttpBasicAuthRequest: onHttpBasicAuthRequest, ); /// Constructs a [NavigationDelegate] from a specific platform implementation. @@ -119,6 +123,7 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, + this.onHttpBasicAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -138,6 +143,9 @@ class NavigationDelegate { if (onUrlChange != null) { platform.setOnUrlChange(onUrlChange); } + if (onHttpBasicAuthRequest != null) { + platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest!); + } } /// Implementation of [PlatformNavigationDelegate] for the current platform. @@ -166,4 +174,7 @@ class NavigationDelegate { /// Invoked when a resource loading error occurred. final WebResourceErrorCallback? onWebResourceError; + + /// Invoked when a resource required HTTP basic authentication. + final HttpAuthRequestCallback? onHttpBasicAuthRequest; } diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index 4132a61cab7..34701997a63 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -6,6 +6,7 @@ library webview_flutter; export 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' show + HttpBasicAuthRequest, JavaScriptConsoleMessage, JavaScriptLogLevel, JavaScriptMessage, diff --git a/packages/webview_flutter/webview_flutter/pubspec.yaml b/packages/webview_flutter/webview_flutter/pubspec.yaml index 75b9efcc23a..de15f80ab22 100644 --- a/packages/webview_flutter/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 4.4.1 +version: 4.5.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -20,7 +20,7 @@ dependencies: flutter: sdk: flutter webview_flutter_android: ^3.12.0 - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 webview_flutter_wkwebview: ^3.9.0 dev_dependencies: @@ -34,3 +34,8 @@ topics: - html - webview - webview-flutter + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_android: {path: ../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}, webview_flutter_wkwebview: {path: ../../webview_flutter/webview_flutter_wkwebview}} diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart index ffd97718bd4..e0aee949cea 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart @@ -87,6 +87,19 @@ void main() { verify(delegate.platform.setOnUrlChange(onUrlChange)); }); + + test('onHttpBasicAuthRequest', () { + WebViewPlatform.instance = TestWebViewPlatform(); + + void onHttpBasicAuthRequest(HttpBasicAuthRequest request) {} + + final NavigationDelegate delegate = NavigationDelegate( + onHttpBasicAuthRequest: onHttpBasicAuthRequest, + ); + + verify( + delegate.platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest)); + }); }); } diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart index 0a3475f8fcf..ba473193a41 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart @@ -250,4 +250,15 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i8.Future.value(), returnValueForMissingStub: _i8.Future.value(), ) as _i8.Future); + @override + _i8.Future setOnHttpBasicAuthRequest( + _i3.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i8.Future.value(), + returnValueForMissingStub: _i8.Future.value(), + ) as _i8.Future); } diff --git a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart index 343a7ad5689..2b31596b508 100644 --- a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart @@ -466,4 +466,15 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future setOnHttpBasicAuthRequest( + _i6.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); } diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 12f7ba007d2..b257e547a61 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.13.0 + +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. + ## 3.12.0 * Adds support for `PlatformWebViewController.getUserAgent`. diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java index 8e8a12cbd30..e2b697076b8 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -34,7 +35,8 @@ public static class FlutterError extends RuntimeException { /** The error details. Must be a datatype supported by the api codec. */ public final Object details; - public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) { + public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) + { super(message); this.code = code; this.details = details; @@ -53,7 +55,7 @@ protected static ArrayList wrapError(@NonNull Throwable exception) { errorList.add(exception.toString()); errorList.add(exception.getClass().getSimpleName()); errorList.add( - "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); } return errorList; } @@ -61,29 +63,26 @@ protected static ArrayList wrapError(@NonNull Throwable exception) { /** * Mode of how to select files for a file chooser. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. */ public enum FileChooserMode { /** - * Open single file and requires that the file exists before allowing the user to pick it. + * Open single file and requires that the file exists before allowing the + * user to pick it. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. */ OPEN(0), /** * Similar to [open] but allows multiple files to be selected. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. */ OPEN_MULTIPLE(1), /** * Allows picking a nonexistent file and saving it. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. */ SAVE(2); @@ -97,49 +96,44 @@ private FileChooserMode(final int index) { /** * Indicates the type of message logged to the console. * - *

See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel. */ public enum ConsoleMessageLevel { /** * Indicates a message is logged for debugging. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. */ DEBUG(0), /** * Indicates a message is provided as an error. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. */ ERROR(1), /** * Indicates a message is provided as a basic log message. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. */ LOG(2), /** * Indicates a message is provided as a tip. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. */ TIP(3), /** * Indicates a message is provided as a warning. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. */ WARNING(4), /** * Indicates a message with an unknown level. * - *

This does not represent an actual value provided by the platform and only indicates a - * value was provided that isn't currently supported. + * This does not represent an actual value provided by the platform and only + * indicates a value was provided that isn't currently supported. */ UNKNOWN(5); @@ -382,10 +376,7 @@ ArrayList toList() { static @NonNull WebResourceErrorData fromList(@NonNull ArrayList list) { WebResourceErrorData pigeonResult = new WebResourceErrorData(); Object errorCode = list.get(0); - pigeonResult.setErrorCode( - (errorCode == null) - ? null - : ((errorCode instanceof Integer) ? (Integer) errorCode : (Long) errorCode)); + pigeonResult.setErrorCode((errorCode == null) ? null : ((errorCode instanceof Integer) ? (Integer) errorCode : (Long) errorCode)); Object description = list.get(1); pigeonResult.setDescription((String) description); return pigeonResult; @@ -468,9 +459,9 @@ ArrayList toList() { /** * Represents a JavaScript console message from WebCore. * - *

See https://developer.android.com/reference/android/webkit/ConsoleMessage + * See https://developer.android.com/reference/android/webkit/ConsoleMessage * - *

Generated class from Pigeon that represents data sent in messages. + * Generated class from Pigeon that represents data sent in messages. */ public static final class ConsoleMessage { private @NonNull Long lineNumber; @@ -581,10 +572,7 @@ ArrayList toList() { static @NonNull ConsoleMessage fromList(@NonNull ArrayList list) { ConsoleMessage pigeonResult = new ConsoleMessage(); Object lineNumber = list.get(0); - pigeonResult.setLineNumber( - (lineNumber == null) - ? null - : ((lineNumber instanceof Integer) ? (Integer) lineNumber : (Long) lineNumber)); + pigeonResult.setLineNumber((lineNumber == null) ? null : ((lineNumber instanceof Integer) ? (Integer) lineNumber : (Long) lineNumber)); Object message = list.get(1); pigeonResult.setMessage((String) message); Object level = list.get(2); @@ -604,13 +592,13 @@ public interface Result { /** * Host API for managing the native `InstanceManager`. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface InstanceManagerHostApi { /** * Clear the native `InstanceManager`. * - *

This is typically only used after a hot restart. + * This is typically only used after a hot restart. */ void clear(); @@ -618,18 +606,12 @@ public interface InstanceManagerHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `InstanceManagerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable InstanceManagerHostApi api) { + /**Sets up an instance of `InstanceManagerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable InstanceManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -637,7 +619,8 @@ static void setup( try { api.clear(); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -652,11 +635,11 @@ static void setup( /** * Handles methods calls to the native Java Object class. * - *

Also handles calls to remove the reference to an instance with `dispose`. + * Also handles calls to remove the reference to an instance with `dispose`. * - *

See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. + * See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface JavaObjectHostApi { @@ -666,16 +649,12 @@ public interface JavaObjectHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `JavaObjectHostApi` to handle messages through the `binaryMessenger`. - */ + /**Sets up an instance of `JavaObjectHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObjectHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -685,7 +664,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObject try { api.dispose((identifierArg == null) ? null : identifierArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -700,9 +680,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObject /** * Handles callbacks methods for the native Java Object class. * - *

See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. + * See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class JavaObjectFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -711,7 +691,7 @@ public JavaObjectFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -720,13 +700,10 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - public void dispose(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -735,11 +712,11 @@ public void dispose(@NonNull Long identifierArg, @NonNull Reply callback) /** * Host API for `CookieManager`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface CookieManagerHostApi { /** Handles attaching `CookieManager.instance` to a native instance. */ @@ -749,25 +726,18 @@ public interface CookieManagerHostApi { /** Handles Dart method `CookieManager.removeAllCookies`. */ void removeAllCookies(@NonNull Long identifier, @NonNull Result result); /** Handles Dart method `CookieManager.setAcceptThirdPartyCookies`. */ - void setAcceptThirdPartyCookies( - @NonNull Long identifier, @NonNull Long webViewIdentifier, @NonNull Boolean accept); + void setAcceptThirdPartyCookies(@NonNull Long identifier, @NonNull Long webViewIdentifier, @NonNull Boolean accept); /** The codec used by CookieManagerHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `CookieManagerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable CookieManagerHostApi api) { + /**Sets up an instance of `CookieManagerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable CookieManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -775,10 +745,10 @@ static void setup( ArrayList args = (ArrayList) message; Number instanceIdentifierArg = (Number) args.get(0); try { - api.attachInstance( - (instanceIdentifierArg == null) ? null : instanceIdentifierArg.longValue()); + api.attachInstance((instanceIdentifierArg == null) ? null : instanceIdentifierArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -791,9 +761,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -803,10 +771,10 @@ static void setup( String urlArg = (String) args.get(1); String valueArg = (String) args.get(2); try { - api.setCookie( - (identifierArg == null) ? null : identifierArg.longValue(), urlArg, valueArg); + api.setCookie((identifierArg == null) ? null : identifierArg.longValue(), urlArg, valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -819,9 +787,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -841,8 +807,7 @@ public void error(Throwable error) { } }; - api.removeAllCookies( - (identifierArg == null) ? null : identifierArg.longValue(), resultCallback); + api.removeAllCookies((identifierArg == null) ? null : identifierArg.longValue(), resultCallback); }); } else { channel.setMessageHandler(null); @@ -851,9 +816,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -863,12 +826,10 @@ public void error(Throwable error) { Number webViewIdentifierArg = (Number) args.get(1); Boolean acceptArg = (Boolean) args.get(2); try { - api.setAcceptThirdPartyCookies( - (identifierArg == null) ? null : identifierArg.longValue(), - (webViewIdentifierArg == null) ? null : webViewIdentifierArg.longValue(), - acceptArg); + api.setAcceptThirdPartyCookies((identifierArg == null) ? null : identifierArg.longValue(), (webViewIdentifierArg == null) ? null : webViewIdentifierArg.longValue(), acceptArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -912,32 +873,21 @@ public interface WebViewHostApi { void create(@NonNull Long instanceId); - void loadData( - @NonNull Long instanceId, - @NonNull String data, - @Nullable String mimeType, - @Nullable String encoding); + void loadData(@NonNull Long instanceId, @NonNull String data, @Nullable String mimeType, @Nullable String encoding); - void loadDataWithBaseUrl( - @NonNull Long instanceId, - @Nullable String baseUrl, - @NonNull String data, - @Nullable String mimeType, - @Nullable String encoding, - @Nullable String historyUrl); + void loadDataWithBaseUrl(@NonNull Long instanceId, @Nullable String baseUrl, @NonNull String data, @Nullable String mimeType, @Nullable String encoding, @Nullable String historyUrl); - void loadUrl( - @NonNull Long instanceId, @NonNull String url, @NonNull Map headers); + void loadUrl(@NonNull Long instanceId, @NonNull String url, @NonNull Map headers); void postUrl(@NonNull Long instanceId, @NonNull String url, @NonNull byte[] data); - @Nullable + @Nullable String getUrl(@NonNull Long instanceId); - @NonNull + @NonNull Boolean canGoBack(@NonNull Long instanceId); - @NonNull + @NonNull Boolean canGoForward(@NonNull Long instanceId); void goBack(@NonNull Long instanceId); @@ -948,23 +898,22 @@ void loadUrl( void clearCache(@NonNull Long instanceId, @NonNull Boolean includeDiskFiles); - void evaluateJavascript( - @NonNull Long instanceId, @NonNull String javascriptString, @NonNull Result result); + void evaluateJavascript(@NonNull Long instanceId, @NonNull String javascriptString, @NonNull Result result); - @Nullable + @Nullable String getTitle(@NonNull Long instanceId); void scrollTo(@NonNull Long instanceId, @NonNull Long x, @NonNull Long y); void scrollBy(@NonNull Long instanceId, @NonNull Long x, @NonNull Long y); - @NonNull + @NonNull Long getScrollX(@NonNull Long instanceId); - @NonNull + @NonNull Long getScrollY(@NonNull Long instanceId); - @NonNull + @NonNull WebViewPoint getScrollPosition(@NonNull Long instanceId); void setWebContentsDebuggingEnabled(@NonNull Boolean enabled); @@ -973,8 +922,7 @@ void evaluateJavascript( void addJavaScriptChannel(@NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId); - void removeJavaScriptChannel( - @NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId); + void removeJavaScriptChannel(@NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId); void setDownloadListener(@NonNull Long instanceId, @Nullable Long listenerInstanceId); @@ -986,14 +934,12 @@ void removeJavaScriptChannel( static @NonNull MessageCodec getCodec() { return WebViewHostApiCodec.INSTANCE; } - /** Sets up an instance of `WebViewHostApi` to handle messages through the `binaryMessenger`. */ + /**Sets up an instance of `WebViewHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1003,7 +949,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1016,9 +963,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1029,13 +974,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String mimeTypeArg = (String) args.get(2); String encodingArg = (String) args.get(3); try { - api.loadData( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - dataArg, - mimeTypeArg, - encodingArg); + api.loadData((instanceIdArg == null) ? null : instanceIdArg.longValue(), dataArg, mimeTypeArg, encodingArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1048,9 +990,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1063,15 +1003,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String encodingArg = (String) args.get(4); String historyUrlArg = (String) args.get(5); try { - api.loadDataWithBaseUrl( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - baseUrlArg, - dataArg, - mimeTypeArg, - encodingArg, - historyUrlArg); + api.loadDataWithBaseUrl((instanceIdArg == null) ? null : instanceIdArg.longValue(), baseUrlArg, dataArg, mimeTypeArg, encodingArg, historyUrlArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1084,9 +1019,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1096,12 +1029,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String urlArg = (String) args.get(1); Map headersArg = (Map) args.get(2); try { - api.loadUrl( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - urlArg, - headersArg); + api.loadUrl((instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, headersArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1114,9 +1045,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1126,10 +1055,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String urlArg = (String) args.get(1); byte[] dataArg = (byte[]) args.get(2); try { - api.postUrl( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, dataArg); + api.postUrl((instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, dataArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1142,9 +1071,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1152,10 +1079,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - String output = - api.getUrl((instanceIdArg == null) ? null : instanceIdArg.longValue()); + String output = api.getUrl((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1168,9 +1095,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1178,10 +1103,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Boolean output = - api.canGoBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Boolean output = api.canGoBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1194,9 +1119,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1204,10 +1127,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Boolean output = - api.canGoForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Boolean output = api.canGoForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1220,9 +1143,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1232,7 +1153,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.goBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1245,9 +1167,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1257,7 +1177,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.goForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1270,9 +1191,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1282,7 +1201,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.reload((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1295,9 +1215,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1306,11 +1224,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos Number instanceIdArg = (Number) args.get(0); Boolean includeDiskFilesArg = (Boolean) args.get(1); try { - api.clearCache( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - includeDiskFilesArg); + api.clearCache((instanceIdArg == null) ? null : instanceIdArg.longValue(), includeDiskFilesArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1323,9 +1240,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1346,10 +1261,7 @@ public void error(Throwable error) { } }; - api.evaluateJavascript( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - javascriptStringArg, - resultCallback); + api.evaluateJavascript((instanceIdArg == null) ? null : instanceIdArg.longValue(), javascriptStringArg, resultCallback); }); } else { channel.setMessageHandler(null); @@ -1358,9 +1270,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1368,10 +1278,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - String output = - api.getTitle((instanceIdArg == null) ? null : instanceIdArg.longValue()); + String output = api.getTitle((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1384,9 +1294,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1396,12 +1304,10 @@ public void error(Throwable error) { Number xArg = (Number) args.get(1); Number yArg = (Number) args.get(2); try { - api.scrollTo( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (xArg == null) ? null : xArg.longValue(), - (yArg == null) ? null : yArg.longValue()); + api.scrollTo((instanceIdArg == null) ? null : instanceIdArg.longValue(), (xArg == null) ? null : xArg.longValue(), (yArg == null) ? null : yArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1414,9 +1320,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1426,12 +1330,10 @@ public void error(Throwable error) { Number xArg = (Number) args.get(1); Number yArg = (Number) args.get(2); try { - api.scrollBy( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (xArg == null) ? null : xArg.longValue(), - (yArg == null) ? null : yArg.longValue()); + api.scrollBy((instanceIdArg == null) ? null : instanceIdArg.longValue(), (xArg == null) ? null : xArg.longValue(), (yArg == null) ? null : yArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1444,9 +1346,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1454,10 +1354,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Long output = - api.getScrollX((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Long output = api.getScrollX((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1470,9 +1370,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1480,10 +1378,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Long output = - api.getScrollY((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Long output = api.getScrollY((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1496,9 +1394,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1506,11 +1402,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - WebViewPoint output = - api.getScrollPosition( - (instanceIdArg == null) ? null : instanceIdArg.longValue()); + WebViewPoint output = api.getScrollPosition((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1523,9 +1418,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1535,7 +1428,8 @@ public void error(Throwable error) { try { api.setWebContentsDebuggingEnabled(enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1548,9 +1442,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1559,13 +1451,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number webViewClientInstanceIdArg = (Number) args.get(1); try { - api.setWebViewClient( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (webViewClientInstanceIdArg == null) - ? null - : webViewClientInstanceIdArg.longValue()); + api.setWebViewClient((instanceIdArg == null) ? null : instanceIdArg.longValue(), (webViewClientInstanceIdArg == null) ? null : webViewClientInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1578,9 +1467,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1589,13 +1476,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number javaScriptChannelInstanceIdArg = (Number) args.get(1); try { - api.addJavaScriptChannel( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (javaScriptChannelInstanceIdArg == null) - ? null - : javaScriptChannelInstanceIdArg.longValue()); + api.addJavaScriptChannel((instanceIdArg == null) ? null : instanceIdArg.longValue(), (javaScriptChannelInstanceIdArg == null) ? null : javaScriptChannelInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1608,9 +1492,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1619,13 +1501,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number javaScriptChannelInstanceIdArg = (Number) args.get(1); try { - api.removeJavaScriptChannel( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (javaScriptChannelInstanceIdArg == null) - ? null - : javaScriptChannelInstanceIdArg.longValue()); + api.removeJavaScriptChannel((instanceIdArg == null) ? null : instanceIdArg.longValue(), (javaScriptChannelInstanceIdArg == null) ? null : javaScriptChannelInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1638,9 +1517,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1649,11 +1526,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number listenerInstanceIdArg = (Number) args.get(1); try { - api.setDownloadListener( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (listenerInstanceIdArg == null) ? null : listenerInstanceIdArg.longValue()); + api.setDownloadListener((instanceIdArg == null) ? null : instanceIdArg.longValue(), (listenerInstanceIdArg == null) ? null : listenerInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1666,9 +1542,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1677,11 +1551,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number clientInstanceIdArg = (Number) args.get(1); try { - api.setWebChromeClient( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (clientInstanceIdArg == null) ? null : clientInstanceIdArg.longValue()); + api.setWebChromeClient((instanceIdArg == null) ? null : instanceIdArg.longValue(), (clientInstanceIdArg == null) ? null : clientInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1694,9 +1567,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1705,11 +1576,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number colorArg = (Number) args.get(1); try { - api.setBackgroundColor( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (colorArg == null) ? null : colorArg.longValue()); + api.setBackgroundColor((instanceIdArg == null) ? null : instanceIdArg.longValue(), (colorArg == null) ? null : colorArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1724,12 +1594,13 @@ public void error(Throwable error) { /** * Flutter API for `WebView`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/webkit/WebView. + * See https://developer.android.com/reference/android/webkit/WebView. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class WebViewFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -1738,7 +1609,7 @@ public WebViewFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -1751,9 +1622,7 @@ public interface Reply { public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -1790,23 +1659,19 @@ public interface WebSettingsHostApi { void setTextZoom(@NonNull Long instanceId, @NonNull Long textZoom); - @NonNull + @NonNull String getUserAgentString(@NonNull Long instanceId); /** The codec used by WebSettingsHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebSettingsHostApi` to handle messages through the `binaryMessenger`. - */ + /**Sets up an instance of `WebSettingsHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSettingsHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1815,11 +1680,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Number webViewInstanceIdArg = (Number) args.get(1); try { - api.create( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (webViewInstanceIdArg == null) ? null : webViewInstanceIdArg.longValue()); + api.create((instanceIdArg == null) ? null : instanceIdArg.longValue(), (webViewInstanceIdArg == null) ? null : webViewInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1832,9 +1696,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1843,10 +1705,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean flagArg = (Boolean) args.get(1); try { - api.setDomStorageEnabled( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); + api.setDomStorageEnabled((instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1859,9 +1721,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1870,10 +1730,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean flagArg = (Boolean) args.get(1); try { - api.setJavaScriptCanOpenWindowsAutomatically( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); + api.setJavaScriptCanOpenWindowsAutomatically((instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1886,9 +1746,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1897,10 +1755,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean supportArg = (Boolean) args.get(1); try { - api.setSupportMultipleWindows( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); + api.setSupportMultipleWindows((instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1913,9 +1771,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1924,10 +1780,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean flagArg = (Boolean) args.get(1); try { - api.setJavaScriptEnabled( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); + api.setJavaScriptEnabled((instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1940,9 +1796,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1951,11 +1805,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); String userAgentStringArg = (String) args.get(1); try { - api.setUserAgentString( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - userAgentStringArg); + api.setUserAgentString((instanceIdArg == null) ? null : instanceIdArg.longValue(), userAgentStringArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1968,9 +1821,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1979,10 +1830,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean requireArg = (Boolean) args.get(1); try { - api.setMediaPlaybackRequiresUserGesture( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), requireArg); + api.setMediaPlaybackRequiresUserGesture((instanceIdArg == null) ? null : instanceIdArg.longValue(), requireArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1995,9 +1846,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2006,10 +1855,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean supportArg = (Boolean) args.get(1); try { - api.setSupportZoom( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); + api.setSupportZoom((instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2022,9 +1871,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2033,10 +1880,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean overviewArg = (Boolean) args.get(1); try { - api.setLoadWithOverviewMode( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), overviewArg); + api.setLoadWithOverviewMode((instanceIdArg == null) ? null : instanceIdArg.longValue(), overviewArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2049,9 +1896,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2060,10 +1905,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean useArg = (Boolean) args.get(1); try { - api.setUseWideViewPort( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), useArg); + api.setUseWideViewPort((instanceIdArg == null) ? null : instanceIdArg.longValue(), useArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2076,9 +1921,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2087,10 +1930,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean enabledArg = (Boolean) args.get(1); try { - api.setDisplayZoomControls( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); + api.setDisplayZoomControls((instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2103,9 +1946,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2114,10 +1955,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean enabledArg = (Boolean) args.get(1); try { - api.setBuiltInZoomControls( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); + api.setBuiltInZoomControls((instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2130,9 +1971,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2141,10 +1980,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean enabledArg = (Boolean) args.get(1); try { - api.setAllowFileAccess( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); + api.setAllowFileAccess((instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2157,9 +1996,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2168,11 +2005,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Number textZoomArg = (Number) args.get(1); try { - api.setTextZoom( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (textZoomArg == null) ? null : textZoomArg.longValue()); + api.setTextZoom((instanceIdArg == null) ? null : instanceIdArg.longValue(), (textZoomArg == null) ? null : textZoomArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2185,9 +2021,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2195,11 +2029,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - String output = - api.getUserAgentString( - (instanceIdArg == null) ? null : instanceIdArg.longValue()); + String output = api.getUserAgentString((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2220,18 +2053,12 @@ public interface JavaScriptChannelHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `JavaScriptChannelHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable JavaScriptChannelHostApi api) { + /**Sets up an instance of `JavaScriptChannelHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaScriptChannelHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2240,10 +2067,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); String channelNameArg = (String) args.get(1); try { - api.create( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), channelNameArg); + api.create((instanceIdArg == null) ? null : instanceIdArg.longValue(), channelNameArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2263,7 +2090,7 @@ public JavaScriptChannelFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2272,14 +2099,10 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - - public void postMessage( - @NonNull Long instanceIdArg, @NonNull String messageArg, @NonNull Reply callback) { + public void postMessage(@NonNull Long instanceIdArg, @NonNull String messageArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, messageArg)), channelReply -> callback.reply(null)); @@ -2290,25 +2113,18 @@ public interface WebViewClientHostApi { void create(@NonNull Long instanceId); - void setSynchronousReturnValueForShouldOverrideUrlLoading( - @NonNull Long instanceId, @NonNull Boolean value); + void setSynchronousReturnValueForShouldOverrideUrlLoading(@NonNull Long instanceId, @NonNull Boolean value); /** The codec used by WebViewClientHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebViewClientHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable WebViewClientHostApi api) { + /**Sets up an instance of `WebViewClientHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewClientHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2318,7 +2134,8 @@ static void setup( try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2331,9 +2148,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2342,10 +2157,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); Boolean valueArg = (Boolean) args.get(1); try { - api.setSynchronousReturnValueForShouldOverrideUrlLoading( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); + api.setSynchronousReturnValueForShouldOverrideUrlLoading((instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2397,7 +2212,7 @@ public WebViewClientFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2406,121 +2221,68 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return WebViewClientFlutterApiCodec.INSTANCE; } - - public void onPageStarted( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Reply callback) { + public void onPageStarted(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg)), channelReply -> callback.reply(null)); } - - public void onPageFinished( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Reply callback) { + public void onPageFinished(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg)), channelReply -> callback.reply(null)); } - - public void onReceivedRequestError( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull WebResourceRequestData requestArg, - @NonNull WebResourceErrorData errorArg, - @NonNull Reply callback) { + public void onReceivedRequestError(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull WebResourceRequestData requestArg, @NonNull WebResourceErrorData errorArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, webViewInstanceIdArg, requestArg, errorArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, requestArg, errorArg)), channelReply -> callback.reply(null)); } - - public void onReceivedError( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long errorCodeArg, - @NonNull String descriptionArg, - @NonNull String failingUrlArg, - @NonNull Reply callback) { + public void onReceivedError(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long errorCodeArg, @NonNull String descriptionArg, @NonNull String failingUrlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError", getCodec()); channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - webViewInstanceIdArg, - errorCodeArg, - descriptionArg, - failingUrlArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, errorCodeArg, descriptionArg, failingUrlArg)), channelReply -> callback.reply(null)); } - - public void requestLoading( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull WebResourceRequestData requestArg, - @NonNull Reply callback) { + public void requestLoading(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull WebResourceRequestData requestArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, requestArg)), channelReply -> callback.reply(null)); } - - public void urlLoading( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Reply callback) { + public void urlLoading(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg)), channelReply -> callback.reply(null)); } - - public void doUpdateVisitedHistory( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Boolean isReloadArg, - @NonNull Reply callback) { + public void doUpdateVisitedHistory(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Boolean isReloadArg, @NonNull Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory", getCodec()); + channel.send( + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg, isReloadArg)), + channelReply -> callback.reply(null)); + } + public void onReceivedHttpAuthRequest(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long httpAuthHandlerInstanceIdArg, @NonNull String hostArg, @NonNull String realmArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg, isReloadArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, httpAuthHandlerInstanceIdArg, hostArg, realmArg)), channelReply -> callback.reply(null)); } } @@ -2533,18 +2295,12 @@ public interface DownloadListenerHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `DownloadListenerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable DownloadListenerHostApi api) { + /**Sets up an instance of `DownloadListenerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable DownloadListenerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2554,7 +2310,8 @@ static void setup( try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2574,7 +2331,7 @@ public DownloadListenerFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2583,29 +2340,12 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - - public void onDownloadStart( - @NonNull Long instanceIdArg, - @NonNull String urlArg, - @NonNull String userAgentArg, - @NonNull String contentDispositionArg, - @NonNull String mimetypeArg, - @NonNull Long contentLengthArg, - @NonNull Reply callback) { + public void onDownloadStart(@NonNull Long instanceIdArg, @NonNull String urlArg, @NonNull String userAgentArg, @NonNull String contentDispositionArg, @NonNull String mimetypeArg, @NonNull Long contentLengthArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart", getCodec()); channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - urlArg, - userAgentArg, - contentDispositionArg, - mimetypeArg, - contentLengthArg)), + new ArrayList(Arrays.asList(instanceIdArg, urlArg, userAgentArg, contentDispositionArg, mimetypeArg, contentLengthArg)), channelReply -> callback.reply(null)); } } @@ -2614,28 +2354,20 @@ public interface WebChromeClientHostApi { void create(@NonNull Long instanceId); - void setSynchronousReturnValueForOnShowFileChooser( - @NonNull Long instanceId, @NonNull Boolean value); + void setSynchronousReturnValueForOnShowFileChooser(@NonNull Long instanceId, @NonNull Boolean value); - void setSynchronousReturnValueForOnConsoleMessage( - @NonNull Long instanceId, @NonNull Boolean value); + void setSynchronousReturnValueForOnConsoleMessage(@NonNull Long instanceId, @NonNull Boolean value); /** The codec used by WebChromeClientHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebChromeClientHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable WebChromeClientHostApi api) { + /**Sets up an instance of `WebChromeClientHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebChromeClientHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2645,7 +2377,8 @@ static void setup( try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2658,9 +2391,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2669,10 +2400,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); Boolean valueArg = (Boolean) args.get(1); try { - api.setSynchronousReturnValueForOnShowFileChooser( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); + api.setSynchronousReturnValueForOnShowFileChooser((instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2685,9 +2416,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2696,10 +2425,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); Boolean valueArg = (Boolean) args.get(1); try { - api.setSynchronousReturnValueForOnConsoleMessage( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); + api.setSynchronousReturnValueForOnConsoleMessage((instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2714,28 +2443,22 @@ static void setup( /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface FlutterAssetManagerHostApi { - @NonNull + @NonNull List list(@NonNull String path); - @NonNull + @NonNull String getAssetFilePathByName(@NonNull String name); /** The codec used by FlutterAssetManagerHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `FlutterAssetManagerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable FlutterAssetManagerHostApi api) { + /**Sets up an instance of `FlutterAssetManagerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable FlutterAssetManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2745,7 +2468,8 @@ static void setup( try { List output = api.list(pathArg); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2758,9 +2482,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2770,7 +2492,8 @@ static void setup( try { String output = api.getAssetFilePathByName(nameArg); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2784,8 +2507,7 @@ static void setup( } private static class WebChromeClientFlutterApiCodec extends StandardMessageCodec { - public static final WebChromeClientFlutterApiCodec INSTANCE = - new WebChromeClientFlutterApiCodec(); + public static final WebChromeClientFlutterApiCodec INSTANCE = new WebChromeClientFlutterApiCodec(); private WebChromeClientFlutterApiCodec() {} @@ -2818,7 +2540,7 @@ public WebChromeClientFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2827,35 +2549,20 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return WebChromeClientFlutterApiCodec.INSTANCE; } - - public void onProgressChanged( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long progressArg, - @NonNull Reply callback) { + public void onProgressChanged(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long progressArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, progressArg)), channelReply -> callback.reply(null)); } - - public void onShowFileChooser( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long paramsInstanceIdArg, - @NonNull Reply> callback) { + public void onShowFileChooser(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long paramsInstanceIdArg, @NonNull Reply> callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, webViewInstanceIdArg, paramsInstanceIdArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, paramsInstanceIdArg)), channelReply -> { @SuppressWarnings("ConstantConditions") List output = (List) channelReply; @@ -2863,83 +2570,55 @@ public void onShowFileChooser( }); } /** Callback to Dart function `WebChromeClient.onPermissionRequest`. */ - public void onPermissionRequest( - @NonNull Long instanceIdArg, - @NonNull Long requestInstanceIdArg, - @NonNull Reply callback) { + public void onPermissionRequest(@NonNull Long instanceIdArg, @NonNull Long requestInstanceIdArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, requestInstanceIdArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onShowCustomView`. */ - public void onShowCustomView( - @NonNull Long instanceIdArg, - @NonNull Long viewIdentifierArg, - @NonNull Long callbackIdentifierArg, - @NonNull Reply callback) { + public void onShowCustomView(@NonNull Long instanceIdArg, @NonNull Long viewIdentifierArg, @NonNull Long callbackIdentifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, viewIdentifierArg, callbackIdentifierArg)), + new ArrayList(Arrays.asList(instanceIdArg, viewIdentifierArg, callbackIdentifierArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onHideCustomView`. */ public void onHideCustomView(@NonNull Long instanceIdArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView", getCodec()); channel.send( new ArrayList(Collections.singletonList(instanceIdArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onGeolocationPermissionsShowPrompt`. */ - public void onGeolocationPermissionsShowPrompt( - @NonNull Long instanceIdArg, - @NonNull Long paramsInstanceIdArg, - @NonNull String originArg, - @NonNull Reply callback) { + public void onGeolocationPermissionsShowPrompt(@NonNull Long instanceIdArg, @NonNull Long paramsInstanceIdArg, @NonNull String originArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, paramsInstanceIdArg, originArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onGeolocationPermissionsHidePrompt`. */ - public void onGeolocationPermissionsHidePrompt( - @NonNull Long identifierArg, @NonNull Reply callback) { + public void onGeolocationPermissionsHidePrompt(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onConsoleMessage`. */ - public void onConsoleMessage( - @NonNull Long instanceIdArg, - @NonNull ConsoleMessage messageArg, - @NonNull Reply callback) { + public void onConsoleMessage(@NonNull Long instanceIdArg, @NonNull ConsoleMessage messageArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, messageArg)), channelReply -> callback.reply(null)); @@ -2956,16 +2635,12 @@ public interface WebStorageHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebStorageHostApi` to handle messages through the `binaryMessenger`. - */ + /**Sets up an instance of `WebStorageHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorageHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2975,7 +2650,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2988,9 +2664,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3000,7 +2674,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage try { api.deleteAllData((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3015,10 +2690,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage /** * Handles callbacks methods for the native Java FileChooserParams class. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class FileChooserParamsFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3027,7 +2701,7 @@ public FileChooserParamsFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3036,40 +2710,25 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - - public void create( - @NonNull Long instanceIdArg, - @NonNull Boolean isCaptureEnabledArg, - @NonNull List acceptTypesArg, - @NonNull FileChooserMode modeArg, - @Nullable String filenameHintArg, - @NonNull Reply callback) { + public void create(@NonNull Long instanceIdArg, @NonNull Boolean isCaptureEnabledArg, @NonNull List acceptTypesArg, @NonNull FileChooserMode modeArg, @Nullable String filenameHintArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create", getCodec()); channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - isCaptureEnabledArg, - acceptTypesArg, - modeArg.index, - filenameHintArg)), + new ArrayList(Arrays.asList(instanceIdArg, isCaptureEnabledArg, acceptTypesArg, modeArg.index, filenameHintArg)), channelReply -> callback.reply(null)); } } /** * Host API for `PermissionRequest`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

See https://developer.android.com/reference/android/webkit/PermissionRequest. + * See https://developer.android.com/reference/android/webkit/PermissionRequest. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface PermissionRequestHostApi { /** Handles Dart method `PermissionRequest.grant`. */ @@ -3081,18 +2740,12 @@ public interface PermissionRequestHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `PermissionRequestHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable PermissionRequestHostApi api) { + /**Sets up an instance of `PermissionRequestHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PermissionRequestHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3101,10 +2754,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); List resourcesArg = (List) args.get(1); try { - api.grant( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), resourcesArg); + api.grant((instanceIdArg == null) ? null : instanceIdArg.longValue(), resourcesArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3117,9 +2770,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3129,7 +2780,8 @@ static void setup( try { api.deny((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3144,12 +2796,13 @@ static void setup( /** * Flutter API for `PermissionRequest`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/webkit/PermissionRequest. + * See https://developer.android.com/reference/android/webkit/PermissionRequest. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class PermissionRequestFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3158,7 +2811,7 @@ public PermissionRequestFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3168,15 +2821,10 @@ public interface Reply { return new StandardMessageCodec(); } /** Create a new Dart instance and add it to the `InstanceManager`. */ - public void create( - @NonNull Long instanceIdArg, - @NonNull List resourcesArg, - @NonNull Reply callback) { + public void create(@NonNull Long instanceIdArg, @NonNull List resourcesArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, resourcesArg)), channelReply -> callback.reply(null)); @@ -3185,14 +2833,13 @@ public void create( /** * Host API for `CustomViewCallback`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface CustomViewCallbackHostApi { /** Handles Dart method `CustomViewCallback.onCustomViewHidden`. */ @@ -3202,18 +2849,12 @@ public interface CustomViewCallbackHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `CustomViewCallbackHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable CustomViewCallbackHostApi api) { + /**Sets up an instance of `CustomViewCallbackHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable CustomViewCallbackHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3221,10 +2862,10 @@ static void setup( ArrayList args = (ArrayList) message; Number identifierArg = (Number) args.get(0); try { - api.onCustomViewHidden( - (identifierArg == null) ? null : identifierArg.longValue()); + api.onCustomViewHidden((identifierArg == null) ? null : identifierArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3239,13 +2880,13 @@ static void setup( /** * Flutter API for `CustomViewCallback`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class CustomViewCallbackFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3254,7 +2895,7 @@ public CustomViewCallbackFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3267,9 +2908,7 @@ public interface Reply { public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -3278,12 +2917,13 @@ public void create(@NonNull Long identifierArg, @NonNull Reply callback) { /** * Flutter API for `View`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/view/View. + * See https://developer.android.com/reference/android/view/View. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class ViewFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3292,7 +2932,7 @@ public ViewFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3305,9 +2945,7 @@ public interface Reply { public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -3316,39 +2954,28 @@ public void create(@NonNull Long identifierArg, @NonNull Reply callback) { /** * Host API for `GeolocationPermissionsCallback`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. + * See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface GeolocationPermissionsCallbackHostApi { /** Handles Dart method `GeolocationPermissionsCallback.invoke`. */ - void invoke( - @NonNull Long instanceId, - @NonNull String origin, - @NonNull Boolean allow, - @NonNull Boolean retain); + void invoke(@NonNull Long instanceId, @NonNull String origin, @NonNull Boolean allow, @NonNull Boolean retain); /** The codec used by GeolocationPermissionsCallbackHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `GeolocationPermissionsCallbackHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, - @Nullable GeolocationPermissionsCallbackHostApi api) { + /**Sets up an instance of `GeolocationPermissionsCallbackHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable GeolocationPermissionsCallbackHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3359,13 +2986,10 @@ static void setup( Boolean allowArg = (Boolean) args.get(2); Boolean retainArg = (Boolean) args.get(3); try { - api.invoke( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - originArg, - allowArg, - retainArg); + api.invoke((instanceIdArg == null) ? null : instanceIdArg.longValue(), originArg, allowArg, retainArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3380,12 +3004,13 @@ static void setup( /** * Flutter API for `GeolocationPermissionsCallback`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. + * See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class GeolocationPermissionsCallbackFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3394,7 +3019,7 @@ public GeolocationPermissionsCallbackFlutterApi(@NonNull BinaryMessenger argBina this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3407,9 +3032,146 @@ public interface Reply { public void create(@NonNull Long instanceIdArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create", getCodec()); + channel.send( + new ArrayList(Collections.singletonList(instanceIdArg)), + channelReply -> callback.reply(null)); + } + } + /** + * Host API for `HttpAuthHandler`. + * + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. + * + * See https://developer.android.com/reference/android/webkit/HttpAuthHandler. + * + * Generated interface from Pigeon that represents a handler of messages from Flutter. + */ + public interface HttpAuthHandlerHostApi { + /** Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. */ + @NonNull + Boolean useHttpAuthUsernamePassword(@NonNull Long instanceId); + /** Handles Dart method `HttpAuthHandler.cancel`. */ + void cancel(@NonNull Long instanceId); + /** Handles Dart method `HttpAuthHandler.proceed`. */ + void proceed(@NonNull Long instanceId, @NonNull String username, @NonNull String password); + + /** The codec used by HttpAuthHandlerHostApi. */ + static @NonNull MessageCodec getCodec() { + return new StandardMessageCodec(); + } + /**Sets up an instance of `HttpAuthHandlerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable HttpAuthHandlerHostApi api) { + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword", getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + try { + Boolean output = api.useHttpAuthUsernamePassword((instanceIdArg == null) ? null : instanceIdArg.longValue()); + wrapped.add(0, output); + } + catch (Throwable exception) { + ArrayList wrappedError = wrapError(exception); + wrapped = wrappedError; + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel", getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + try { + api.cancel((instanceIdArg == null) ? null : instanceIdArg.longValue()); + wrapped.add(0, null); + } + catch (Throwable exception) { + ArrayList wrappedError = wrapError(exception); + wrapped = wrappedError; + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed", getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String usernameArg = (String) args.get(1); + String passwordArg = (String) args.get(2); + try { + api.proceed((instanceIdArg == null) ? null : instanceIdArg.longValue(), usernameArg, passwordArg); + wrapped.add(0, null); + } + catch (Throwable exception) { + ArrayList wrappedError = wrapError(exception); + wrapped = wrappedError; + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + } + } + /** + * Flutter API for `HttpAuthHandler`. + * + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. + * + * See https://developer.android.com/reference/android/webkit/HttpAuthHandler. + * + * Generated class from Pigeon that represents Flutter messages that can be called from Java. + */ + public static class HttpAuthHandlerFlutterApi { + private final @NonNull BinaryMessenger binaryMessenger; + + public HttpAuthHandlerFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { + this.binaryMessenger = argBinaryMessenger; + } + + /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") + public interface Reply { + void reply(T reply); + } + /** The codec used by HttpAuthHandlerFlutterApi. */ + static @NonNull MessageCodec getCodec() { + return new StandardMessageCodec(); + } + /** Create a new Dart instance and add it to the `InstanceManager`. */ + public void create(@NonNull Long instanceIdArg, @NonNull Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(instanceIdArg)), channelReply -> callback.reply(null)); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java new file mode 100644 index 00000000000..1d5a170ff3b --- /dev/null +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java @@ -0,0 +1,51 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.webviewflutter; + +import android.webkit.HttpAuthHandler; +import androidx.annotation.NonNull; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerFlutterApi; + +/** + * Flutter API implementation for {@link HttpAuthHandler}. + * + *

This class may handle adding native instances that are attached to a Dart instance or passing + * arguments of callbacks methods to a Dart instance. + */ +public class HttpAuthHandlerFlutterApiImpl { + // To ease adding additional methods, this value is added prematurely. + @SuppressWarnings({"unused", "FieldCanBeLocal"}) + private final BinaryMessenger binaryMessenger; + + private final InstanceManager instanceManager; + + private final HttpAuthHandlerFlutterApi api; + + /** + * Constructs a {@link HttpAuthHandlerFlutterApiImpl}. + * + * @param binaryMessenger used to communicate with Dart over asynchronous messages + * @param instanceManager maintains instances stored to communicate with attached Dart objects + */ + public HttpAuthHandlerFlutterApiImpl( + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { + this.binaryMessenger = binaryMessenger; + this.instanceManager = instanceManager; + api = new HttpAuthHandlerFlutterApi(binaryMessenger); + } + + /** + * Stores the `HttpAuthHandler` instance and notifies Dart to create and store a new + * `HttpAuthHandler` instance that is attached to this one. If `instance` has already been added, + * this method does nothing. + */ + public void create( + @NonNull HttpAuthHandler instance, @NonNull HttpAuthHandlerFlutterApi.Reply callback) { + if (!instanceManager.containsInstance(instance)) { + api.create(instanceManager.addHostCreatedInstance(instance), callback); + } + } +} diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java new file mode 100644 index 00000000000..591571d2a6c --- /dev/null +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java @@ -0,0 +1,57 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.webviewflutter; + +import android.webkit.HttpAuthHandler; +import androidx.annotation.NonNull; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerHostApi; +import java.util.Objects; + +/** + * Host api implementation for {@link HttpAuthHandler}. + * + *

Handles creating {@link HttpAuthHandler}s that intercommunicate with a paired Dart object. + */ +public class HttpAuthHandlerHostApiImpl implements HttpAuthHandlerHostApi { + // To ease adding additional methods, this value is added prematurely. + @SuppressWarnings({"unused", "FieldCanBeLocal"}) + private final BinaryMessenger binaryMessenger; + + private final InstanceManager instanceManager; + + /** + * Constructs a {@link HttpAuthHandlerHostApiImpl}. + * + * @param binaryMessenger used to communicate with Dart over asynchronous messages + * @param instanceManager maintains instances stored to communicate with attached Dart objects + */ + public HttpAuthHandlerHostApiImpl( + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { + this.binaryMessenger = binaryMessenger; + this.instanceManager = instanceManager; + } + + @NonNull + @Override + public Boolean useHttpAuthUsernamePassword(@NonNull Long instanceId) { + return getHttpAuthHandlerInstance(instanceId).useHttpAuthUsernamePassword(); + } + + @Override + public void cancel(@NonNull Long instanceId) { + getHttpAuthHandlerInstance(instanceId).cancel(); + } + + @Override + public void proceed( + @NonNull Long instanceId, @NonNull String username, @NonNull String password) { + getHttpAuthHandlerInstance(instanceId).proceed(username, password); + } + + private HttpAuthHandler getHttpAuthHandlerInstance(@NonNull Long instanceId) { + return Objects.requireNonNull(instanceManager.getInstance(instanceId)); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java index 4dee9c0ad3f..7a5a057cf11 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java @@ -6,6 +6,7 @@ import android.annotation.SuppressLint; import android.os.Build; +import android.webkit.HttpAuthHandler; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -230,6 +231,26 @@ public void doUpdateVisitedHistory( getIdentifierForClient(webViewClient), webViewIdentifier, url, isReload, callback); } + /** Passes arguments from {@link WebViewClient#onReceivedHttpAuthRequest} to Dart. */ + public void onReceivedHttpAuthRequest( + @NonNull WebViewClient webViewClient, + @NonNull WebView webview, + @NonNull HttpAuthHandler httpAuthHandler, + @NonNull String host, + @NonNull String realm, + @NonNull Reply callback) { + new HttpAuthHandlerFlutterApiImpl(binaryMessenger, instanceManager) + .create(httpAuthHandler, reply -> {}); + + onReceivedHttpAuthRequest( + Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(webViewClient)), + Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(webview)), + Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(httpAuthHandler)), + host, + realm, + callback); + } + private long getIdentifierForClient(WebViewClient webViewClient) { final Long identifier = instanceManager.getIdentifierForStrongReference(webViewClient); if (identifier == null) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 35ae02a7625..30f414380c9 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.os.Build; import android.view.KeyEvent; +import android.webkit.HttpAuthHandler; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -38,7 +39,7 @@ public static class WebViewClientImpl extends WebViewClient { /** * Creates a {@link WebViewClient} that passes arguments of callbacks methods to Dart. * - * @param flutterApi handles sending messages to Dart + * @param flutterApi handles sending messages to Dart. */ public WebViewClientImpl(@NonNull WebViewClientFlutterApiImpl flutterApi) { this.flutterApi = flutterApi; @@ -95,6 +96,15 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } + @Override + public void onReceivedHttpAuthRequest( + @NonNull WebView view, + @NonNull HttpAuthHandler handler, + @NonNull String host, + @NonNull String realm) { + flutterApi.onReceivedHttpAuthRequest(this, view, handler, host, realm, reply -> {}); + } + @Override public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be @@ -176,6 +186,16 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } + // Handles an HTTP Basic Authentication request. + // + // This callback is invoked when the WebView encounters a website requiring HTTP authentication. + // [host] and [realm] are provided for matching against stored credentials, if any. + @Override + public void onReceivedHttpAuthRequest( + @NonNull WebView view, HttpAuthHandler handler, String host, String realm) { + flutterApi.onReceivedHttpAuthRequest(this, view, handler, host, realm, reply -> {}); + } + @Override public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java index e763c919e02..7f026119f47 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java @@ -19,6 +19,7 @@ import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.DownloadListenerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.FlutterAssetManagerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.GeolocationPermissionsCallbackHostApi; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.InstanceManagerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaObjectHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaScriptChannelHostApi; @@ -144,6 +145,8 @@ private void setUp( new GeolocationPermissionsCallbackHostApiImpl(binaryMessenger, instanceManager)); CustomViewCallbackHostApi.setup( binaryMessenger, new CustomViewCallbackHostApiImpl(binaryMessenger, instanceManager)); + HttpAuthHandlerHostApi.setup( + binaryMessenger, new HttpAuthHandlerHostApiImpl(binaryMessenger, instanceManager)); } @Override diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 19fd1a44758..a5e2a38e851 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -35,6 +35,15 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; + } else if (request.uri.path == '/http-basic-authentication') { + final bool isAuthenticating = request.headers['Authorization'] != null; + if (isAuthenticating) { + request.response.writeln('Authorized'); + } else { + request.response.headers + .add('WWW-Authenticate', 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -44,6 +53,7 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; + final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets('loadRequest', (WidgetTester tester) async { final Completer pageFinished = Completer(); @@ -1119,6 +1129,80 @@ Future main() async { }); }); + testWidgets('can receive HTTP basic auth requests', + (WidgetTester tester) async { + final Completer authRequested = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => authRequested.complete()); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + AndroidWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(authRequested.future, completes); + }); + + testWidgets('can reply to HTTP basic auth requests', + (WidgetTester tester) async { + final Completer pageFinished = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + ); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + AndroidWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(pageFinished.future, completes); + }); + testWidgets('target _blank opens in same window', (WidgetTester tester) async { final Completer pageLoaded = Completer(); 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 92a8fe2bd77..ba6991bf206 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -161,6 +161,11 @@ Page resource error: }) ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); + }) + ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + debugPrint( + 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + openDialog(request); }), ) ..addJavaScriptChannel(JavaScriptChannelParams( @@ -179,9 +184,11 @@ Page resource error: request.grant(); }, ) - ..loadRequest(LoadRequestParams( - uri: Uri.parse('https://flutter.dev'), - )); + ..loadRequest( + LoadRequestParams( + uri: Uri.parse('https://flutter.dev'), + ), + ); } @override @@ -219,6 +226,48 @@ Page resource error: child: const Icon(Icons.favorite), ); } + + Future openDialog(HttpBasicAuthRequest httpRequest) async { + final TextEditingController usernameTextController = + TextEditingController(); + final TextEditingController passwordTextController = + TextEditingController(); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${httpRequest.host}: ${httpRequest.realm}'), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + decoration: const InputDecoration(labelText: 'Username'), + autofocus: true, + controller: usernameTextController, + ), + TextField( + decoration: const InputDecoration(labelText: 'Password'), + controller: passwordTextController, + ), + ], + ), + actions: [ + TextButton( + onPressed: () { + httpRequest.onProceed( + usernameTextController.text, + passwordTextController.text, + ); + Navigator.of(context).pop(); + }, + child: const Text('Authenticate'), + ), + ], + ); + }, + ); + } } enum MenuOptions { @@ -237,6 +286,7 @@ enum MenuOptions { setCookie, videoExample, logExample, + basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -303,6 +353,9 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; + case MenuOptions.basicAuthentication: + _basicAuthExample(); + break; } }, itemBuilder: (BuildContext context) => >[ @@ -367,6 +420,10 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.videoExample, child: Text('Video example'), ), + const PopupMenuItem( + value: MenuOptions.basicAuthentication, + child: Text('Basic Authentication Example'), + ), ], ); } @@ -546,9 +603,14 @@ class SampleMenu extends StatelessWidget { debugPrint( '== JS == ${consoleMessage.level.name}: ${consoleMessage.message}'); }); - return webViewController.loadHtmlString(kLogExamplePage); } + + Future _basicAuthExample() { + return webViewController.loadRequest(LoadRequestParams( + uri: Uri.parse( + 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index acba2006e84..12575464eb5 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -33,3 +33,8 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_android: {path: ../../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart index f3d00ebd88e..339ce9fed2b 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart @@ -78,6 +78,12 @@ class AndroidWebViewProxy { void Function(android_webview.WebView webView, String url)? urlLoading, void Function(android_webview.WebView webView, String url, bool isReload)? doUpdateVisitedHistory, + void Function( + android_webview.WebView webView, + android_webview.HttpAuthHandler handler, + String host, + String realm, + )? onReceivedHttpAuthRequest, }) createAndroidWebViewClient; /// Constructs a [android_webview.FlutterAssetManager]. diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index c0778ed0722..f2ad37d698a 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -769,6 +769,7 @@ class WebViewClient extends JavaObject { this.requestLoading, this.urlLoading, this.doUpdateVisitedHistory, + this.onReceivedHttpAuthRequest, @visibleForTesting super.binaryMessenger, @visibleForTesting super.instanceManager, }) : super.detached() { @@ -789,6 +790,7 @@ class WebViewClient extends JavaObject { this.requestLoading, this.urlLoading, this.doUpdateVisitedHistory, + this.onReceivedHttpAuthRequest, super.binaryMessenger, super.instanceManager, }) : super.detached(); @@ -937,6 +939,14 @@ class WebViewClient extends JavaObject { final void Function(WebView webView, String url, bool isReload)? doUpdateVisitedHistory; + /// This callback is only called for requests that require HTTP basic authentication. + final void Function( + WebView webView, + HttpAuthHandler handler, + String host, + String realm, + )? onReceivedHttpAuthRequest; + /// Sets the required synchronous return value for the Java method, /// `WebViewClient.shouldOverrideUrlLoading(...)`. /// @@ -965,6 +975,7 @@ class WebViewClient extends JavaObject { requestLoading: requestLoading, urlLoading: urlLoading, doUpdateVisitedHistory: doUpdateVisitedHistory, + onReceivedHttpAuthRequest: onReceivedHttpAuthRequest, binaryMessenger: _api.binaryMessenger, instanceManager: _api.instanceManager, ); @@ -1496,3 +1507,32 @@ class CustomViewCallback extends JavaObject { ); } } + +/// Represents a request for HTTP basic authentication. +/// +/// Instances of this class are created by the [WebView] and passed to +/// [WebViewClient.onReceivedHttpAuthRequest]. The host application must call +/// either [HttpAuthHandler.proceed] or [HttpAuthHandler.cancel] to set the +/// WebView's response to the request. +class HttpAuthHandler extends JavaObject { + /// Constructs a [HttpAuthHandler]. + HttpAuthHandler({ + super.binaryMessenger, + super.instanceManager, + }) : super.detached(); + + /// Pigeon Host Api implementation for [HttpAuthHandler]. + @visibleForTesting + static HttpAuthHandlerHostApiImpl api = HttpAuthHandlerHostApiImpl(); + + /// Instructs the WebView to cancel the authentication request. + Future cancel() { + return api.cancelFromInstance(this); + } + + /// Instructs the WebView to proceed with the authentication with the provided + /// credentials. + Future proceed(String username, String password) { + return api.proceedFromInstance(this, username, password); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart index 8435f7302fa..a94d855e1d2 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart @@ -20,12 +20,10 @@ enum FileChooserMode { /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. open, - /// Similar to [open] but allows multiple files to be selected. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. openMultiple, - /// Allows picking a nonexistent file and saving it. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. @@ -40,27 +38,22 @@ enum ConsoleMessageLevel { /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. debug, - /// Indicates a message is provided as an error. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. error, - /// Indicates a message is provided as a basic log message. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. log, - /// Indicates a message is provided as a tip. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. tip, - /// Indicates a message is provided as a warning. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. warning, - /// Indicates a message with an unknown level. /// /// This does not represent an actual value provided by the platform and only @@ -109,8 +102,7 @@ class WebResourceRequestData { isRedirect: result[2] as bool?, hasGesture: result[3]! as bool, method: result[4]! as String, - requestHeaders: - (result[5] as Map?)!.cast(), + requestHeaders: (result[5] as Map?)!.cast(), ); } } @@ -222,10 +214,10 @@ class InstanceManagerHostApi { /// This is typically only used after a hot restart. Future clear() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', - codec, + 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -260,8 +252,7 @@ class JavaObjectHostApi { Future dispose(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -290,19 +281,17 @@ abstract class JavaObjectFlutterApi { void dispose(int identifier); - static void setup(JavaObjectFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(JavaObjectFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -333,8 +322,7 @@ class CookieManagerHostApi { /// Handles attaching `CookieManager.instance` to a native instance. Future attachInstance(int arg_instanceIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceIdentifier]) as List?; @@ -355,14 +343,12 @@ class CookieManagerHostApi { } /// Handles Dart method `CookieManager.setCookie`. - Future setCookie( - int arg_identifier, String arg_url, String arg_value) async { + Future setCookie(int arg_identifier, String arg_url, String arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_url, arg_value]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_url, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -382,8 +368,7 @@ class CookieManagerHostApi { /// Handles Dart method `CookieManager.removeAllCookies`. Future removeAllCookies(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -409,15 +394,12 @@ class CookieManagerHostApi { } /// Handles Dart method `CookieManager.setAcceptThirdPartyCookies`. - Future setAcceptThirdPartyCookies( - int arg_identifier, int arg_webViewIdentifier, bool arg_accept) async { + Future setAcceptThirdPartyCookies(int arg_identifier, int arg_webViewIdentifier, bool arg_accept) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_webViewIdentifier, arg_accept]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_webViewIdentifier, arg_accept]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -450,7 +432,7 @@ class _WebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WebViewPoint.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -470,8 +452,7 @@ class WebViewHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -491,15 +472,12 @@ class WebViewHostApi { } } - Future loadData(int arg_instanceId, String arg_data, - String? arg_mimeType, String? arg_encoding) async { + Future loadData(int arg_instanceId, String arg_data, String? arg_mimeType, String? arg_encoding) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send( - [arg_instanceId, arg_data, arg_mimeType, arg_encoding]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_data, arg_mimeType, arg_encoding]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -516,25 +494,12 @@ class WebViewHostApi { } } - Future loadDataWithBaseUrl( - int arg_instanceId, - String? arg_baseUrl, - String arg_data, - String? arg_mimeType, - String? arg_encoding, - String? arg_historyUrl) async { + Future loadDataWithBaseUrl(int arg_instanceId, String? arg_baseUrl, String arg_data, String? arg_mimeType, String? arg_encoding, String? arg_historyUrl) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send([ - arg_instanceId, - arg_baseUrl, - arg_data, - arg_mimeType, - arg_encoding, - arg_historyUrl - ]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_baseUrl, arg_data, arg_mimeType, arg_encoding, arg_historyUrl]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -551,15 +516,12 @@ class WebViewHostApi { } } - Future loadUrl(int arg_instanceId, String arg_url, - Map arg_headers) async { + Future loadUrl(int arg_instanceId, String arg_url, Map arg_headers) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_url, arg_headers]) - as List?; + await channel.send([arg_instanceId, arg_url, arg_headers]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -576,14 +538,12 @@ class WebViewHostApi { } } - Future postUrl( - int arg_instanceId, String arg_url, Uint8List arg_data) async { + Future postUrl(int arg_instanceId, String arg_url, Uint8List arg_data) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_url, arg_data]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_url, arg_data]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -602,8 +562,7 @@ class WebViewHostApi { Future getUrl(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -625,8 +584,7 @@ class WebViewHostApi { Future canGoBack(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -653,8 +611,7 @@ class WebViewHostApi { Future canGoForward(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -681,8 +638,7 @@ class WebViewHostApi { Future goBack(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -704,8 +660,7 @@ class WebViewHostApi { Future goForward(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -727,8 +682,7 @@ class WebViewHostApi { Future reload(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -750,12 +704,10 @@ class WebViewHostApi { Future clearCache(int arg_instanceId, bool arg_includeDiskFiles) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_includeDiskFiles]) - as List?; + await channel.send([arg_instanceId, arg_includeDiskFiles]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -772,15 +724,12 @@ class WebViewHostApi { } } - Future evaluateJavascript( - int arg_instanceId, String arg_javascriptString) async { + Future evaluateJavascript(int arg_instanceId, String arg_javascriptString) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_javascriptString]) - as List?; + await channel.send([arg_instanceId, arg_javascriptString]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -799,8 +748,7 @@ class WebViewHostApi { Future getTitle(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -822,11 +770,10 @@ class WebViewHostApi { Future scrollTo(int arg_instanceId, int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -845,11 +792,10 @@ class WebViewHostApi { Future scrollBy(int arg_instanceId, int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -868,8 +814,7 @@ class WebViewHostApi { Future getScrollX(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -896,8 +841,7 @@ class WebViewHostApi { Future getScrollY(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -924,8 +868,7 @@ class WebViewHostApi { Future getScrollPosition(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -952,8 +895,7 @@ class WebViewHostApi { Future setWebContentsDebuggingEnabled(bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_enabled]) as List?; @@ -973,15 +915,12 @@ class WebViewHostApi { } } - Future setWebViewClient( - int arg_instanceId, int arg_webViewClientInstanceId) async { + Future setWebViewClient(int arg_instanceId, int arg_webViewClientInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_webViewClientInstanceId]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_webViewClientInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -998,15 +937,12 @@ class WebViewHostApi { } } - Future addJavaScriptChannel( - int arg_instanceId, int arg_javaScriptChannelInstanceId) async { + Future addJavaScriptChannel(int arg_instanceId, int arg_javaScriptChannelInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_javaScriptChannelInstanceId]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_javaScriptChannelInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1023,15 +959,12 @@ class WebViewHostApi { } } - Future removeJavaScriptChannel( - int arg_instanceId, int arg_javaScriptChannelInstanceId) async { + Future removeJavaScriptChannel(int arg_instanceId, int arg_javaScriptChannelInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_javaScriptChannelInstanceId]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_javaScriptChannelInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1048,15 +981,12 @@ class WebViewHostApi { } } - Future setDownloadListener( - int arg_instanceId, int? arg_listenerInstanceId) async { + Future setDownloadListener(int arg_instanceId, int? arg_listenerInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_listenerInstanceId]) - as List?; + await channel.send([arg_instanceId, arg_listenerInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1073,15 +1003,12 @@ class WebViewHostApi { } } - Future setWebChromeClient( - int arg_instanceId, int? arg_clientInstanceId) async { + Future setWebChromeClient(int arg_instanceId, int? arg_clientInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_clientInstanceId]) - as List?; + await channel.send([arg_instanceId, arg_clientInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1100,11 +1027,10 @@ class WebViewHostApi { Future setBackgroundColor(int arg_instanceId, int arg_color) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_color]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_color]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1135,19 +1061,17 @@ abstract class WebViewFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int identifier); - static void setup(WebViewFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WebViewFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1172,12 +1096,10 @@ class WebSettingsHostApi { Future create(int arg_instanceId, int arg_webViewInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_webViewInstanceId]) - as List?; + await channel.send([arg_instanceId, arg_webViewInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1196,11 +1118,10 @@ class WebSettingsHostApi { Future setDomStorageEnabled(int arg_instanceId, bool arg_flag) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_flag]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_flag]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1217,14 +1138,12 @@ class WebSettingsHostApi { } } - Future setJavaScriptCanOpenWindowsAutomatically( - int arg_instanceId, bool arg_flag) async { + Future setJavaScriptCanOpenWindowsAutomatically(int arg_instanceId, bool arg_flag) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_flag]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_flag]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1241,14 +1160,12 @@ class WebSettingsHostApi { } } - Future setSupportMultipleWindows( - int arg_instanceId, bool arg_support) async { + Future setSupportMultipleWindows(int arg_instanceId, bool arg_support) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_support]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_support]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1267,11 +1184,10 @@ class WebSettingsHostApi { Future setJavaScriptEnabled(int arg_instanceId, bool arg_flag) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_flag]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_flag]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1288,14 +1204,12 @@ class WebSettingsHostApi { } } - Future setUserAgentString( - int arg_instanceId, String? arg_userAgentString) async { + Future setUserAgentString(int arg_instanceId, String? arg_userAgentString) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_userAgentString]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_userAgentString]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1312,14 +1226,12 @@ class WebSettingsHostApi { } } - Future setMediaPlaybackRequiresUserGesture( - int arg_instanceId, bool arg_require) async { + Future setMediaPlaybackRequiresUserGesture(int arg_instanceId, bool arg_require) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_require]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_require]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1338,11 +1250,10 @@ class WebSettingsHostApi { Future setSupportZoom(int arg_instanceId, bool arg_support) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_support]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_support]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1359,14 +1270,12 @@ class WebSettingsHostApi { } } - Future setLoadWithOverviewMode( - int arg_instanceId, bool arg_overview) async { + Future setLoadWithOverviewMode(int arg_instanceId, bool arg_overview) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_overview]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_overview]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1385,11 +1294,10 @@ class WebSettingsHostApi { Future setUseWideViewPort(int arg_instanceId, bool arg_use) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_use]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_use]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1406,14 +1314,12 @@ class WebSettingsHostApi { } } - Future setDisplayZoomControls( - int arg_instanceId, bool arg_enabled) async { + Future setDisplayZoomControls(int arg_instanceId, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1430,14 +1336,12 @@ class WebSettingsHostApi { } } - Future setBuiltInZoomControls( - int arg_instanceId, bool arg_enabled) async { + Future setBuiltInZoomControls(int arg_instanceId, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1456,11 +1360,10 @@ class WebSettingsHostApi { Future setAllowFileAccess(int arg_instanceId, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1479,11 +1382,10 @@ class WebSettingsHostApi { Future setTextZoom(int arg_instanceId, int arg_textZoom) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_textZoom]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_textZoom]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1502,8 +1404,7 @@ class WebSettingsHostApi { Future getUserAgentString(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -1541,11 +1442,10 @@ class JavaScriptChannelHostApi { Future create(int arg_instanceId, String arg_channelName) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_channelName]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_channelName]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1568,19 +1468,17 @@ abstract class JavaScriptChannelFlutterApi { void postMessage(int instanceId, String message); - static void setup(JavaScriptChannelFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(JavaScriptChannelFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1608,8 +1506,7 @@ class WebViewClientHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -1629,14 +1526,12 @@ class WebViewClientHostApi { } } - Future setSynchronousReturnValueForShouldOverrideUrlLoading( - int arg_instanceId, bool arg_value) async { + Future setSynchronousReturnValueForShouldOverrideUrlLoading(int arg_instanceId, bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_value]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1672,9 +1567,9 @@ class _WebViewClientFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WebResourceErrorData.decode(readValue(buffer)!); - case 129: + case 129: return WebResourceRequestData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1689,33 +1584,29 @@ abstract class WebViewClientFlutterApi { void onPageFinished(int instanceId, int webViewInstanceId, String url); - void onReceivedRequestError(int instanceId, int webViewInstanceId, - WebResourceRequestData request, WebResourceErrorData error); + void onReceivedRequestError(int instanceId, int webViewInstanceId, WebResourceRequestData request, WebResourceErrorData error); - void onReceivedError(int instanceId, int webViewInstanceId, int errorCode, - String description, String failingUrl); + void onReceivedError(int instanceId, int webViewInstanceId, int errorCode, String description, String failingUrl); - void requestLoading( - int instanceId, int webViewInstanceId, WebResourceRequestData request); + void requestLoading(int instanceId, int webViewInstanceId, WebResourceRequestData request); void urlLoading(int instanceId, int webViewInstanceId, String url); - void doUpdateVisitedHistory( - int instanceId, int webViewInstanceId, String url, bool isReload); + void doUpdateVisitedHistory(int instanceId, int webViewInstanceId, String url, bool isReload); - static void setup(WebViewClientFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + void onReceivedHttpAuthRequest(int instanceId, int webViewInstanceId, int httpAuthHandlerInstanceId, String host, String realm); + + static void setup(WebViewClientFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1733,15 +1624,14 @@ abstract class WebViewClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1759,15 +1649,14 @@ abstract class WebViewClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1775,31 +1664,27 @@ abstract class WebViewClientFlutterApi { final int? arg_webViewInstanceId = (args[1] as int?); assert(arg_webViewInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null int.'); - final WebResourceRequestData? arg_request = - (args[2] as WebResourceRequestData?); + final WebResourceRequestData? arg_request = (args[2] as WebResourceRequestData?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null WebResourceRequestData.'); - final WebResourceErrorData? arg_error = - (args[3] as WebResourceErrorData?); + final WebResourceErrorData? arg_error = (args[3] as WebResourceErrorData?); assert(arg_error != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null WebResourceErrorData.'); - api.onReceivedRequestError(arg_instanceId!, arg_webViewInstanceId!, - arg_request!, arg_error!); + api.onReceivedRequestError(arg_instanceId!, arg_webViewInstanceId!, arg_request!, arg_error!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1816,23 +1701,21 @@ abstract class WebViewClientFlutterApi { final String? arg_failingUrl = (args[4] as String?); assert(arg_failingUrl != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError was null, expected non-null String.'); - api.onReceivedError(arg_instanceId!, arg_webViewInstanceId!, - arg_errorCode!, arg_description!, arg_failingUrl!); + api.onReceivedError(arg_instanceId!, arg_webViewInstanceId!, arg_errorCode!, arg_description!, arg_failingUrl!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1840,27 +1723,24 @@ abstract class WebViewClientFlutterApi { final int? arg_webViewInstanceId = (args[1] as int?); assert(arg_webViewInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null, expected non-null int.'); - final WebResourceRequestData? arg_request = - (args[2] as WebResourceRequestData?); + final WebResourceRequestData? arg_request = (args[2] as WebResourceRequestData?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null, expected non-null WebResourceRequestData.'); - api.requestLoading( - arg_instanceId!, arg_webViewInstanceId!, arg_request!); + api.requestLoading(arg_instanceId!, arg_webViewInstanceId!, arg_request!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1878,15 +1758,14 @@ abstract class WebViewClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1900,8 +1779,38 @@ abstract class WebViewClientFlutterApi { final bool? arg_isReload = (args[3] as bool?); assert(arg_isReload != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory was null, expected non-null bool.'); - api.doUpdateVisitedHistory( - arg_instanceId!, arg_webViewInstanceId!, arg_url!, arg_isReload!); + api.doUpdateVisitedHistory(arg_instanceId!, arg_webViewInstanceId!, arg_url!, arg_isReload!); + return; + }); + } + } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); + final int? arg_webViewInstanceId = (args[1] as int?); + assert(arg_webViewInstanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); + final int? arg_httpAuthHandlerInstanceId = (args[2] as int?); + assert(arg_httpAuthHandlerInstanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); + final String? arg_host = (args[3] as String?); + assert(arg_host != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.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.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null String.'); + api.onReceivedHttpAuthRequest(arg_instanceId!, arg_webViewInstanceId!, arg_httpAuthHandlerInstanceId!, arg_host!, arg_realm!); return; }); } @@ -1921,8 +1830,7 @@ class DownloadListenerHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -1946,22 +1854,19 @@ class DownloadListenerHostApi { abstract class DownloadListenerFlutterApi { static const MessageCodec codec = StandardMessageCodec(); - void onDownloadStart(int instanceId, String url, String userAgent, - String contentDisposition, String mimetype, int contentLength); + void onDownloadStart(int instanceId, String url, String userAgent, String contentDisposition, String mimetype, int contentLength); - static void setup(DownloadListenerFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(DownloadListenerFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart', - codec, + 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1981,8 +1886,7 @@ abstract class DownloadListenerFlutterApi { final int? arg_contentLength = (args[5] as int?); assert(arg_contentLength != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null int.'); - api.onDownloadStart(arg_instanceId!, arg_url!, arg_userAgent!, - arg_contentDisposition!, arg_mimetype!, arg_contentLength!); + api.onDownloadStart(arg_instanceId!, arg_url!, arg_userAgent!, arg_contentDisposition!, arg_mimetype!, arg_contentLength!); return; }); } @@ -2002,8 +1906,7 @@ class WebChromeClientHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2023,14 +1926,12 @@ class WebChromeClientHostApi { } } - Future setSynchronousReturnValueForOnShowFileChooser( - int arg_instanceId, bool arg_value) async { + Future setSynchronousReturnValueForOnShowFileChooser(int arg_instanceId, bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_value]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2047,14 +1948,12 @@ class WebChromeClientHostApi { } } - Future setSynchronousReturnValueForOnConsoleMessage( - int arg_instanceId, bool arg_value) async { + Future setSynchronousReturnValueForOnConsoleMessage(int arg_instanceId, bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_value]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2084,8 +1983,7 @@ class FlutterAssetManagerHostApi { Future> list(String arg_path) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_path]) as List?; @@ -2112,8 +2010,7 @@ class FlutterAssetManagerHostApi { Future getAssetFilePathByName(String arg_name) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_name]) as List?; @@ -2154,7 +2051,7 @@ class _WebChromeClientFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ConsoleMessage.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2167,22 +2064,19 @@ abstract class WebChromeClientFlutterApi { void onProgressChanged(int instanceId, int webViewInstanceId, int progress); - Future> onShowFileChooser( - int instanceId, int webViewInstanceId, int paramsInstanceId); + Future> onShowFileChooser(int instanceId, int webViewInstanceId, int paramsInstanceId); /// Callback to Dart function `WebChromeClient.onPermissionRequest`. void onPermissionRequest(int instanceId, int requestInstanceId); /// Callback to Dart function `WebChromeClient.onShowCustomView`. - void onShowCustomView( - int instanceId, int viewIdentifier, int callbackIdentifier); + void onShowCustomView(int instanceId, int viewIdentifier, int callbackIdentifier); /// Callback to Dart function `WebChromeClient.onHideCustomView`. void onHideCustomView(int instanceId); /// Callback to Dart function `WebChromeClient.onGeolocationPermissionsShowPrompt`. - void onGeolocationPermissionsShowPrompt( - int instanceId, int paramsInstanceId, String origin); + void onGeolocationPermissionsShowPrompt(int instanceId, int paramsInstanceId, String origin); /// Callback to Dart function `WebChromeClient.onGeolocationPermissionsHidePrompt`. void onGeolocationPermissionsHidePrompt(int identifier); @@ -2190,19 +2084,17 @@ abstract class WebChromeClientFlutterApi { /// Callback to Dart function `WebChromeClient.onConsoleMessage`. void onConsoleMessage(int instanceId, ConsoleMessage message); - static void setup(WebChromeClientFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WebChromeClientFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2213,23 +2105,21 @@ abstract class WebChromeClientFlutterApi { final int? arg_progress = (args[2] as int?); assert(arg_progress != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged was null, expected non-null int.'); - api.onProgressChanged( - arg_instanceId!, arg_webViewInstanceId!, arg_progress!); + api.onProgressChanged(arg_instanceId!, arg_webViewInstanceId!, arg_progress!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2240,23 +2130,21 @@ abstract class WebChromeClientFlutterApi { final int? arg_paramsInstanceId = (args[2] as int?); assert(arg_paramsInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser was null, expected non-null int.'); - final List output = await api.onShowFileChooser( - arg_instanceId!, arg_webViewInstanceId!, arg_paramsInstanceId!); + final List output = await api.onShowFileChooser(arg_instanceId!, arg_webViewInstanceId!, arg_paramsInstanceId!); return output; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2271,15 +2159,14 @@ abstract class WebChromeClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2290,23 +2177,21 @@ abstract class WebChromeClientFlutterApi { final int? arg_callbackIdentifier = (args[2] as int?); assert(arg_callbackIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView was null, expected non-null int.'); - api.onShowCustomView( - arg_instanceId!, arg_viewIdentifier!, arg_callbackIdentifier!); + api.onShowCustomView(arg_instanceId!, arg_viewIdentifier!, arg_callbackIdentifier!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2318,15 +2203,14 @@ abstract class WebChromeClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2337,23 +2221,21 @@ abstract class WebChromeClientFlutterApi { final String? arg_origin = (args[2] as String?); assert(arg_origin != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt was null, expected non-null String.'); - api.onGeolocationPermissionsShowPrompt( - arg_instanceId!, arg_paramsInstanceId!, arg_origin!); + api.onGeolocationPermissionsShowPrompt(arg_instanceId!, arg_paramsInstanceId!, arg_origin!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2365,15 +2247,14 @@ abstract class WebChromeClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2401,8 +2282,7 @@ class WebStorageHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2424,8 +2304,7 @@ class WebStorageHostApi { Future deleteAllData(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2452,22 +2331,19 @@ class WebStorageHostApi { abstract class FileChooserParamsFlutterApi { static const MessageCodec codec = StandardMessageCodec(); - void create(int instanceId, bool isCaptureEnabled, List acceptTypes, - FileChooserMode mode, String? filenameHint); + void create(int instanceId, bool isCaptureEnabled, List acceptTypes, FileChooserMode mode, String? filenameHint); - static void setup(FileChooserParamsFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(FileChooserParamsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2475,17 +2351,14 @@ abstract class FileChooserParamsFlutterApi { final bool? arg_isCaptureEnabled = (args[1] as bool?); assert(arg_isCaptureEnabled != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null, expected non-null bool.'); - final List? arg_acceptTypes = - (args[2] as List?)?.cast(); + final List? arg_acceptTypes = (args[2] as List?)?.cast(); assert(arg_acceptTypes != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null, expected non-null List.'); - final FileChooserMode? arg_mode = - args[3] == null ? null : FileChooserMode.values[args[3]! as int]; + final FileChooserMode? arg_mode = args[3] == null ? null : FileChooserMode.values[args[3]! as int]; assert(arg_mode != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null, expected non-null FileChooserMode.'); final String? arg_filenameHint = (args[4] as String?); - api.create(arg_instanceId!, arg_isCaptureEnabled!, arg_acceptTypes!, - arg_mode!, arg_filenameHint); + api.create(arg_instanceId!, arg_isCaptureEnabled!, arg_acceptTypes!, arg_mode!, arg_filenameHint); return; }); } @@ -2513,11 +2386,10 @@ class PermissionRequestHostApi { /// Handles Dart method `PermissionRequest.grant`. Future grant(int arg_instanceId, List arg_resources) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_resources]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_resources]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2537,8 +2409,7 @@ class PermissionRequestHostApi { /// Handles Dart method `PermissionRequest.deny`. Future deny(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2572,25 +2443,22 @@ abstract class PermissionRequestFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId, List resources); - static void setup(PermissionRequestFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(PermissionRequestFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null, expected non-null int.'); - final List? arg_resources = - (args[1] as List?)?.cast(); + final List? arg_resources = (args[1] as List?)?.cast(); assert(arg_resources != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null, expected non-null List.'); api.create(arg_instanceId!, arg_resources!); @@ -2621,8 +2489,7 @@ class CustomViewCallbackHostApi { /// Handles Dart method `CustomViewCallback.onCustomViewHidden`. Future onCustomViewHidden(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2656,19 +2523,17 @@ abstract class CustomViewCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int identifier); - static void setup(CustomViewCallbackFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(CustomViewCallbackFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2697,15 +2562,14 @@ abstract class ViewFlutterApi { static void setup(ViewFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2736,15 +2600,12 @@ class GeolocationPermissionsCallbackHostApi { static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `GeolocationPermissionsCallback.invoke`. - Future invoke(int arg_instanceId, String arg_origin, bool arg_allow, - bool arg_retain) async { + Future invoke(int arg_instanceId, String arg_origin, bool arg_allow, bool arg_retain) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', - codec, + 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_origin, arg_allow, arg_retain]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_origin, arg_allow, arg_retain]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2775,19 +2636,17 @@ abstract class GeolocationPermissionsCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId); - static void setup(GeolocationPermissionsCallbackFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(GeolocationPermissionsCallbackFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2799,3 +2658,131 @@ abstract class GeolocationPermissionsCallbackFlutterApi { } } } + +/// Host API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +class HttpAuthHandlerHostApi { + /// Constructor for [HttpAuthHandlerHostApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + HttpAuthHandlerHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; + final BinaryMessenger? _binaryMessenger; + + static const MessageCodec codec = StandardMessageCodec(); + + /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. + Future useHttpAuthUsernamePassword(int arg_instanceId) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_instanceId]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else if (replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (replyList[0] as bool?)!; + } + } + + /// Handles Dart method `HttpAuthHandler.cancel`. + Future cancel(int arg_instanceId) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_instanceId]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } + + /// Handles Dart method `HttpAuthHandler.proceed`. + Future proceed(int arg_instanceId, String arg_username, String arg_password) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_instanceId, arg_username, arg_password]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } +} + +/// Flutter API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +abstract class HttpAuthHandlerFlutterApi { + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int instanceId); + + static void setup(HttpAuthHandlerFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create was null, expected non-null int.'); + api.create(arg_instanceId!); + return; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index 4ecb06b0579..dcf92be467f 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -2,10 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:typed_data'; import 'dart:ui'; -import 'package:flutter/services.dart' show BinaryMessenger; +import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -50,6 +49,7 @@ class AndroidWebViewFlutterApis { PermissionRequestFlutterApiImpl? permissionRequestFlutterApi, CustomViewCallbackFlutterApiImpl? customViewCallbackFlutterApi, ViewFlutterApiImpl? viewFlutterApi, + HttpAuthHandlerFlutterApiImpl? httpAuthHandlerFlutterApi, }) { this.javaObjectFlutterApi = javaObjectFlutterApi ?? JavaObjectFlutterApiImpl(); @@ -72,6 +72,8 @@ class AndroidWebViewFlutterApis { this.customViewCallbackFlutterApi = customViewCallbackFlutterApi ?? CustomViewCallbackFlutterApiImpl(); this.viewFlutterApi = viewFlutterApi ?? ViewFlutterApiImpl(); + this.httpAuthHandlerFlutterApi = + httpAuthHandlerFlutterApi ?? HttpAuthHandlerFlutterApiImpl(); } static bool _haveBeenSetUp = false; @@ -115,6 +117,9 @@ class AndroidWebViewFlutterApis { /// Flutter Api for [View]. late final ViewFlutterApiImpl viewFlutterApi; + /// Flutter Api for [HttpAuthHandler]. + late final HttpAuthHandlerFlutterApiImpl httpAuthHandlerFlutterApi; + /// Ensures all the Flutter APIs have been setup to receive calls from native code. void ensureSetUp() { if (!_haveBeenSetUp) { @@ -130,6 +135,7 @@ class AndroidWebViewFlutterApis { PermissionRequestFlutterApi.setup(permissionRequestFlutterApi); CustomViewCallbackFlutterApi.setup(customViewCallbackFlutterApi); ViewFlutterApi.setup(viewFlutterApi); + HttpAuthHandlerFlutterApi.setup(httpAuthHandlerFlutterApi); _haveBeenSetUp = true; } } @@ -803,16 +809,49 @@ class WebViewClientFlutterApiImpl extends WebViewClientFlutterApi { .getInstanceWithWeakReference(webViewInstanceId) as WebView?; assert( instance != null, - 'InstanceManager does not contain an WebViewClient with instanceId: $instanceId', + 'InstanceManager does not contain a WebViewClient with instanceId: $instanceId', ); assert( webViewInstance != null, - 'InstanceManager does not contain an WebView with instanceId: $webViewInstanceId', + 'InstanceManager does not contain a WebView with instanceId: $webViewInstanceId', ); if (instance!.doUpdateVisitedHistory != null) { instance.doUpdateVisitedHistory!(webViewInstance!, url, isReload); } } + + @override + void onReceivedHttpAuthRequest( + int instanceId, + int webViewInstanceId, + int httpAuthHandlerInstanceId, + String host, + String realm, + ) { + final WebViewClient? instance = instanceManager + .getInstanceWithWeakReference(instanceId) as WebViewClient?; + final WebView? webViewInstance = instanceManager + .getInstanceWithWeakReference(webViewInstanceId) as WebView?; + final HttpAuthHandler? httpAuthHandlerInstance = + instanceManager.getInstanceWithWeakReference(httpAuthHandlerInstanceId) + as HttpAuthHandler?; + assert( + instance != null, + 'InstanceManager does not contain a WebViewClient with instanceId: $instanceId', + ); + assert( + webViewInstance != null, + 'InstanceManager does not contain a WebView with instanceId: $webViewInstanceId', + ); + assert( + httpAuthHandlerInstance != null, + 'InstanceManager does not contain a HttpAuthHandler with instanceId: $httpAuthHandlerInstanceId', + ); + if (instance!.onReceivedHttpAuthRequest != null) { + return instance.onReceivedHttpAuthRequest!( + webViewInstance!, httpAuthHandlerInstance!, host, realm); + } + } } /// Host api implementation for [DownloadListener]. @@ -1390,3 +1429,59 @@ class CookieManagerHostApiImpl extends CookieManagerHostApi { ); } } + +/// Host api implementation for [HttpAuthHandler]. +class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { + /// Constructs a [HttpAuthHandlerHostApiImpl]. + HttpAuthHandlerHostApiImpl({ + super.binaryMessenger, + InstanceManager? instanceManager, + }) : _instanceManager = instanceManager ?? JavaObject.globalInstanceManager; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager _instanceManager; + + /// Helper method to convert instance ids to objects. + Future cancelFromInstance(HttpAuthHandler instance) { + return cancel(_instanceManager.getIdentifier(instance)!); + } + + /// Helper method to convert instance ids to objects. + Future proceedFromInstance( + HttpAuthHandler instance, + String username, + String password, + ) { + return proceed( + _instanceManager.getIdentifier(instance)!, + username, + password, + ); + } +} + +/// Flutter API implementation for [HttpAuthHandler]. +class HttpAuthHandlerFlutterApiImpl extends HttpAuthHandlerFlutterApi { + /// Constructs a [HttpAuthHandlerFlutterApiImpl]. + HttpAuthHandlerFlutterApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? JavaObject.globalInstanceManager; + + /// Receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager instanceManager; + + @override + void create(int instanceId) { + instanceManager.addHostCreatedInstance( + HttpAuthHandler(), + instanceId, + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index ccfe14391e8..3988a5bf8e5 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -77,7 +77,7 @@ class AndroidWebViewPermissionResourceType /// Implementation of the [PlatformWebViewController] with the Android WebView API. class AndroidWebViewController extends PlatformWebViewController { - /// Creates a new [AndroidWebViewCookieManager]. + /// Creates a new [AndroidWebViewController]. AndroidWebViewController(PlatformWebViewControllerCreationParams params) : super.implementation(params is AndroidWebViewControllerCreationParams ? params @@ -1268,6 +1268,25 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { callback(AndroidUrlChange(url: url, isReload: isReload)); } }, + onReceivedHttpAuthRequest: ( + android_webview.WebView webView, + android_webview.HttpAuthHandler httpAuthHandler, + String host, + String realm, + ) { + final void Function(HttpBasicAuthRequest)? callback = + weakThis.target?._onHttpAuthRequest; + if (callback != null) { + callback( + HttpBasicAuthRequest( + onProceed: httpAuthHandler.proceed, + onCancel: httpAuthHandler.cancel, + host: host, + realm: realm, + ), + ); + } + }, ); _downloadListener = (this.params as AndroidNavigationDelegateCreationParams) @@ -1324,6 +1343,7 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { NavigationRequestCallback? _onNavigationRequest; LoadRequestCallback? _onLoadRequest; UrlChangeCallback? _onUrlChange; + HttpAuthRequestCallback? _onHttpAuthRequest; void _handleNavigation( String url, { @@ -1410,4 +1430,11 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async { _onUrlChange = onUrlChange; } + + @override + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback onHttpAuthRequest, + ) async { + _onHttpAuthRequest = onHttpAuthRequest; + } } diff --git a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart index 6cce34382a1..34e8f21bde1 100644 --- a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart @@ -358,6 +358,14 @@ abstract class WebViewClientFlutterApi { String url, bool isReload, ); + + void onReceivedHttpAuthRequest( + int instanceId, + int webViewInstanceId, + int httpAuthHandlerInstanceId, + String host, + String realm, + ); } @HostApi(dartHostTestHandler: 'TestDownloadListenerHostApi') @@ -551,3 +559,35 @@ abstract class GeolocationPermissionsCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId); } + +/// Host API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +@HostApi(dartHostTestHandler: 'TestHttpAuthHandlerHostApi') +abstract class HttpAuthHandlerHostApi { + /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. + bool useHttpAuthUsernamePassword(int instanceId); + + /// Handles Dart method `HttpAuthHandler.cancel`. + void cancel(int instanceId); + + /// Handles Dart method `HttpAuthHandler.proceed`. + void proceed(int instanceId, String username, String password); +} + +/// Flutter API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +@FlutterApi() +abstract class HttpAuthHandlerFlutterApi { + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int instanceId); +} diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index 8087d795748..8b695cf660a 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: 3.12.0 +version: 3.13.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -20,7 +20,7 @@ flutter: dependencies: flutter: sdk: flutter - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 dev_dependencies: build_runner: ^2.1.4 @@ -33,3 +33,8 @@ topics: - html - webview - webview-flutter + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart index 269123e081d..5efdc8e3363 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart @@ -446,27 +446,53 @@ void main() { expect(callbackNavigationRequest.url, 'https://www.google.com'); expect(completer.isCompleted, true); }); - }); - test('onUrlChange', () { - final AndroidNavigationDelegate androidNavigationDelegate = - AndroidNavigationDelegate(_buildCreationParams()); - - late final AndroidUrlChange urlChange; - androidNavigationDelegate.setOnUrlChange( - (UrlChange change) { - urlChange = change as AndroidUrlChange; - }, - ); - - CapturingWebViewClient.lastCreatedDelegate.doUpdateVisitedHistory!( - android_webview.WebView.detached(), - 'https://www.google.com', - false, - ); - - expect(urlChange.url, 'https://www.google.com'); - expect(urlChange.isReload, isFalse); + test('onUrlChange', () { + final AndroidNavigationDelegate androidNavigationDelegate = + AndroidNavigationDelegate(_buildCreationParams()); + + late final AndroidUrlChange urlChange; + androidNavigationDelegate.setOnUrlChange( + (UrlChange change) { + urlChange = change as AndroidUrlChange; + }, + ); + + CapturingWebViewClient.lastCreatedDelegate.doUpdateVisitedHistory!( + android_webview.WebView.detached(), + 'https://www.google.com', + false, + ); + + expect(urlChange.url, 'https://www.google.com'); + expect(urlChange.isReload, isFalse); + }); + + test('onReceivedHttpAuthRequest emits host and realm', () { + final AndroidNavigationDelegate androidNavigationDelegate = + AndroidNavigationDelegate(_buildCreationParams()); + + String? callbackHost; + String? callbackRealm; + androidNavigationDelegate + .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + callbackHost = request.host; + callbackRealm = request.realm; + }); + + const String expectedHost = 'expectedHost'; + const String expectedRealm = 'expectedRealm'; + + CapturingWebViewClient.lastCreatedDelegate.onReceivedHttpAuthRequest!( + android_webview.WebView.detached(), + android_webview.HttpAuthHandler(), + expectedHost, + expectedRealm, + ); + + expect(callbackHost, expectedHost); + expect(callbackRealm, expectedRealm); + }); }); } @@ -489,6 +515,7 @@ class CapturingWebViewClient extends android_webview.WebViewClient { super.onPageFinished, super.onPageStarted, super.onReceivedError, + super.onReceivedHttpAuthRequest, super.onReceivedRequestError, super.requestLoading, super.urlLoading, diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart index 6a7bf30e614..ee1e27a2a69 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart @@ -132,6 +132,12 @@ void main() { String description, String failingUrl, )? onReceivedError, + void Function( + android_webview.WebView webView, + android_webview.HttpAuthHandler hander, + String host, + String realm, + )? onReceivedHttpAuthRequest, void Function( android_webview.WebView webView, android_webview.WebResourceRequest request, diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart index ebb01cf8f11..12c50605da7 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart @@ -377,6 +377,17 @@ class MockAndroidNavigationDelegate extends _i1.Mock ) as _i9.Future); @override + _i9.Future setOnHttpBasicAuthRequest( + _i3.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i9.Future.value(), + returnValueForMissingStub: _i9.Future.value(), + ) as _i9.Future); + @override _i9.Future setOnHttpError(_i3.HttpResponseErrorCallback? onHttpError) => (super.noSuchMethod( Invocation.method( @@ -989,6 +1000,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1024,6 +1041,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1062,6 +1085,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1100,6 +1129,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, diff --git a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart index 9644887711d..353b1d92544 100644 --- a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart @@ -15,8 +15,7 @@ import 'package:webview_flutter_android/src/android_webview.g.dart'; /// Host API for managing the native `InstanceManager`. abstract class TestInstanceManagerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Clear the native `InstanceManager`. @@ -24,20 +23,15 @@ abstract class TestInstanceManagerHostApi { /// This is typically only used after a hot restart. void clear(); - static void setup(TestInstanceManagerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestInstanceManagerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', - codec, + 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { // ignore message api.clear(); return []; @@ -53,28 +47,22 @@ abstract class TestInstanceManagerHostApi { /// /// See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. abstract class TestJavaObjectHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void dispose(int identifier); - static void setup(TestJavaObjectHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestJavaObjectHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -93,8 +81,7 @@ abstract class TestJavaObjectHostApi { /// are attached to a Dart instance or handle method calls on the associated /// native class or an instance of the class. abstract class TestCookieManagerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles attaching `CookieManager.instance` to a native instance. @@ -107,25 +94,19 @@ abstract class TestCookieManagerHostApi { Future removeAllCookies(int identifier); /// Handles Dart method `CookieManager.setAcceptThirdPartyCookies`. - void setAcceptThirdPartyCookies( - int identifier, int webViewIdentifier, bool accept); + void setAcceptThirdPartyCookies(int identifier, int webViewIdentifier, bool accept); - static void setup(TestCookieManagerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestCookieManagerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance was null.'); final List args = (message as List?)!; final int? arg_instanceIdentifier = (args[0] as int?); assert(arg_instanceIdentifier != null, @@ -137,18 +118,14 @@ abstract class TestCookieManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -166,18 +143,14 @@ abstract class TestCookieManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -189,18 +162,14 @@ abstract class TestCookieManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -211,8 +180,7 @@ abstract class TestCookieManagerHostApi { final bool? arg_accept = (args[2] as bool?); assert(arg_accept != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies was null, expected non-null bool.'); - api.setAcceptThirdPartyCookies( - arg_identifier!, arg_webViewIdentifier!, arg_accept!); + api.setAcceptThirdPartyCookies(arg_identifier!, arg_webViewIdentifier!, arg_accept!); return []; }); } @@ -235,7 +203,7 @@ class _TestWebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WebViewPoint.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -244,17 +212,14 @@ class _TestWebViewHostApiCodec extends StandardMessageCodec { } abstract class TestWebViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestWebViewHostApiCodec(); void create(int instanceId); - void loadData( - int instanceId, String data, String? mimeType, String? encoding); + void loadData(int instanceId, String data, String? mimeType, String? encoding); - void loadDataWithBaseUrl(int instanceId, String? baseUrl, String data, - String? mimeType, String? encoding, String? historyUrl); + void loadDataWithBaseUrl(int instanceId, String? baseUrl, String data, String? mimeType, String? encoding, String? historyUrl); void loadUrl(int instanceId, String url, Map headers); @@ -302,22 +267,17 @@ abstract class TestWebViewHostApi { void setBackgroundColor(int instanceId, int color); - static void setup(TestWebViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -329,18 +289,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -357,18 +313,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -380,26 +332,21 @@ abstract class TestWebViewHostApi { final String? arg_mimeType = (args[3] as String?); final String? arg_encoding = (args[4] as String?); final String? arg_historyUrl = (args[5] as String?); - api.loadDataWithBaseUrl(arg_instanceId!, arg_baseUrl, arg_data!, - arg_mimeType, arg_encoding, arg_historyUrl); + api.loadDataWithBaseUrl(arg_instanceId!, arg_baseUrl, arg_data!, arg_mimeType, arg_encoding, arg_historyUrl); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -407,8 +354,7 @@ abstract class TestWebViewHostApi { final String? arg_url = (args[1] as String?); assert(arg_url != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null, expected non-null String.'); - final Map? arg_headers = - (args[2] as Map?)?.cast(); + final Map? arg_headers = (args[2] as Map?)?.cast(); assert(arg_headers != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null, expected non-null Map.'); api.loadUrl(arg_instanceId!, arg_url!, arg_headers!); @@ -418,18 +364,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -447,18 +389,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -470,18 +408,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -493,18 +427,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -516,18 +446,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -539,18 +465,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -562,18 +484,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -585,18 +503,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -611,18 +525,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -630,26 +540,21 @@ abstract class TestWebViewHostApi { final String? arg_javascriptString = (args[1] as String?); assert(arg_javascriptString != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript was null, expected non-null String.'); - final String? output = await api.evaluateJavascript( - arg_instanceId!, arg_javascriptString!); + final String? output = await api.evaluateJavascript(arg_instanceId!, arg_javascriptString!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -661,18 +566,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -690,18 +591,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -719,18 +616,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -742,18 +635,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -765,18 +654,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -788,18 +673,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled was null.'); final List args = (message as List?)!; final bool? arg_enabled = (args[0] as bool?); assert(arg_enabled != null, @@ -811,18 +692,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -837,18 +714,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -856,26 +729,21 @@ abstract class TestWebViewHostApi { final int? arg_javaScriptChannelInstanceId = (args[1] as int?); assert(arg_javaScriptChannelInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel was null, expected non-null int.'); - api.addJavaScriptChannel( - arg_instanceId!, arg_javaScriptChannelInstanceId!); + api.addJavaScriptChannel(arg_instanceId!, arg_javaScriptChannelInstanceId!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -883,26 +751,21 @@ abstract class TestWebViewHostApi { final int? arg_javaScriptChannelInstanceId = (args[1] as int?); assert(arg_javaScriptChannelInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel was null, expected non-null int.'); - api.removeJavaScriptChannel( - arg_instanceId!, arg_javaScriptChannelInstanceId!); + api.removeJavaScriptChannel(arg_instanceId!, arg_javaScriptChannelInstanceId!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -915,18 +778,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -939,18 +798,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -967,8 +822,7 @@ abstract class TestWebViewHostApi { } abstract class TestWebSettingsHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId, int webViewInstanceId); @@ -1001,22 +855,17 @@ abstract class TestWebSettingsHostApi { String getUserAgentString(int instanceId); - static void setup(TestWebSettingsHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebSettingsHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1031,18 +880,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1057,18 +902,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1076,26 +917,21 @@ abstract class TestWebSettingsHostApi { final bool? arg_flag = (args[1] as bool?); assert(arg_flag != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null, expected non-null bool.'); - api.setJavaScriptCanOpenWindowsAutomatically( - arg_instanceId!, arg_flag!); + api.setJavaScriptCanOpenWindowsAutomatically(arg_instanceId!, arg_flag!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1110,18 +946,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1136,18 +968,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1160,18 +988,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1179,26 +1003,21 @@ abstract class TestWebSettingsHostApi { final bool? arg_require = (args[1] as bool?); assert(arg_require != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null, expected non-null bool.'); - api.setMediaPlaybackRequiresUserGesture( - arg_instanceId!, arg_require!); + api.setMediaPlaybackRequiresUserGesture(arg_instanceId!, arg_require!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1213,18 +1032,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1239,18 +1054,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1265,18 +1076,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1291,18 +1098,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1317,18 +1120,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1343,18 +1142,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1369,18 +1164,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1394,28 +1185,22 @@ abstract class TestWebSettingsHostApi { } abstract class TestJavaScriptChannelHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId, String channelName); - static void setup(TestJavaScriptChannelHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestJavaScriptChannelHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1432,31 +1217,24 @@ abstract class TestJavaScriptChannelHostApi { } abstract class TestWebViewClientHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); - void setSynchronousReturnValueForShouldOverrideUrlLoading( - int instanceId, bool value); + void setSynchronousReturnValueForShouldOverrideUrlLoading(int instanceId, bool value); - static void setup(TestWebViewClientHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebViewClientHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1468,18 +1246,14 @@ abstract class TestWebViewClientHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1487,8 +1261,7 @@ abstract class TestWebViewClientHostApi { final bool? arg_value = (args[1] as bool?); assert(arg_value != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null, expected non-null bool.'); - api.setSynchronousReturnValueForShouldOverrideUrlLoading( - arg_instanceId!, arg_value!); + api.setSynchronousReturnValueForShouldOverrideUrlLoading(arg_instanceId!, arg_value!); return []; }); } @@ -1497,28 +1270,22 @@ abstract class TestWebViewClientHostApi { } abstract class TestDownloadListenerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); - static void setup(TestDownloadListenerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestDownloadListenerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1532,33 +1299,26 @@ abstract class TestDownloadListenerHostApi { } abstract class TestWebChromeClientHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); - void setSynchronousReturnValueForOnShowFileChooser( - int instanceId, bool value); + void setSynchronousReturnValueForOnShowFileChooser(int instanceId, bool value); void setSynchronousReturnValueForOnConsoleMessage(int instanceId, bool value); - static void setup(TestWebChromeClientHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebChromeClientHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1570,18 +1330,14 @@ abstract class TestWebChromeClientHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1589,26 +1345,21 @@ abstract class TestWebChromeClientHostApi { final bool? arg_value = (args[1] as bool?); assert(arg_value != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null, expected non-null bool.'); - api.setSynchronousReturnValueForOnShowFileChooser( - arg_instanceId!, arg_value!); + api.setSynchronousReturnValueForOnShowFileChooser(arg_instanceId!, arg_value!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1616,8 +1367,7 @@ abstract class TestWebChromeClientHostApi { final bool? arg_value = (args[1] as bool?); assert(arg_value != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage was null, expected non-null bool.'); - api.setSynchronousReturnValueForOnConsoleMessage( - arg_instanceId!, arg_value!); + api.setSynchronousReturnValueForOnConsoleMessage(arg_instanceId!, arg_value!); return []; }); } @@ -1626,30 +1376,24 @@ abstract class TestWebChromeClientHostApi { } abstract class TestAssetManagerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); List list(String path); String getAssetFilePathByName(String name); - static void setup(TestAssetManagerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestAssetManagerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list was null.'); final List args = (message as List?)!; final String? arg_path = (args[0] as String?); assert(arg_path != null, @@ -1661,18 +1405,14 @@ abstract class TestAssetManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName was null.'); final List args = (message as List?)!; final String? arg_name = (args[0] as String?); assert(arg_name != null, @@ -1686,30 +1426,24 @@ abstract class TestAssetManagerHostApi { } abstract class TestWebStorageHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); void deleteAllData(int instanceId); - static void setup(TestWebStorageHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebStorageHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1721,18 +1455,14 @@ abstract class TestWebStorageHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1753,8 +1483,7 @@ abstract class TestWebStorageHostApi { /// /// See https://developer.android.com/reference/android/webkit/PermissionRequest. abstract class TestPermissionRequestHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `PermissionRequest.grant`. @@ -1763,28 +1492,22 @@ abstract class TestPermissionRequestHostApi { /// Handles Dart method `PermissionRequest.deny`. void deny(int instanceId); - static void setup(TestPermissionRequestHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestPermissionRequestHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null, expected non-null int.'); - final List? arg_resources = - (args[1] as List?)?.cast(); + final List? arg_resources = (args[1] as List?)?.cast(); assert(arg_resources != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null, expected non-null List.'); api.grant(arg_instanceId!, arg_resources!); @@ -1794,18 +1517,14 @@ abstract class TestPermissionRequestHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1826,29 +1545,23 @@ abstract class TestPermissionRequestHostApi { /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. abstract class TestCustomViewCallbackHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `CustomViewCallback.onCustomViewHidden`. void onCustomViewHidden(int identifier); - static void setup(TestCustomViewCallbackHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestCustomViewCallbackHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1869,29 +1582,23 @@ abstract class TestCustomViewCallbackHostApi { /// /// See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. abstract class TestGeolocationPermissionsCallbackHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `GeolocationPermissionsCallback.invoke`. void invoke(int instanceId, String origin, bool allow, bool retain); - static void setup(TestGeolocationPermissionsCallbackHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestGeolocationPermissionsCallbackHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', - codec, + 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1912,3 +1619,90 @@ abstract class TestGeolocationPermissionsCallbackHostApi { } } } + +/// Host API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +abstract class TestHttpAuthHandlerHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = StandardMessageCodec(); + + /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. + bool useHttpAuthUsernamePassword(int instanceId); + + /// Handles Dart method `HttpAuthHandler.cancel`. + void cancel(int instanceId); + + /// Handles Dart method `HttpAuthHandler.proceed`. + void proceed(int instanceId, String username, String password); + + static void setup(TestHttpAuthHandlerHostApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword was null, expected non-null int.'); + final bool output = api.useHttpAuthUsernamePassword(arg_instanceId!); + return [output]; + }); + } + } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel was null, expected non-null int.'); + api.cancel(arg_instanceId!); + return []; + }); + } + } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null int.'); + final String? arg_username = (args[1] as String?); + assert(arg_username != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null String.'); + final String? arg_password = (args[2] as String?); + assert(arg_password != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null String.'); + api.proceed(arg_instanceId!, arg_username!, arg_password!); + return []; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 2748ea394cc..37be10e472e 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.7.0 + +* Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. + ## 2.6.0 * Adds support to register a callback to intercept messages that are written to diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart index dc3fefbb513..66da0b97e68 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart @@ -30,6 +30,10 @@ typedef WebResourceErrorCallback = void Function(WebResourceError error); /// url of the web view. typedef UrlChangeCallback = void Function(UrlChange change); +/// Signature for callbacks that notify the host application of an +/// authentication request. +typedef HttpAuthRequestCallback = void Function(HttpBasicAuthRequest request); + /// An interface defining navigation events that occur on the native platform. /// /// The [PlatformWebViewController] is notifying this delegate on events that @@ -132,4 +136,12 @@ abstract class PlatformNavigationDelegate extends PlatformInterface { 'setOnUrlChange is not implemented on the current platform.', ); } + + /// Invoked when the web view is requesting authentication. + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback onHttpAuthRequest) { + throw UnimplementedError( + 'setOnHttpBasicAuthRequest is not implemented on the current platform.', + ); + } } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart index 806d2a7a6b6..d81cdaf2351 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart @@ -17,7 +17,7 @@ import 'webview_platform.dart' show WebViewPlatform; /// changes. Extending this class (using `extends`) ensures that the subclass /// will get the default implementation, while platform implementations that /// `implements` this interface will be broken by newly added -/// [PlatformWebViewCookieManager] methods. +/// [PlatformWebViewController] methods. abstract class PlatformWebViewController extends PlatformInterface { /// Creates a new [PlatformWebViewController] factory PlatformWebViewController( @@ -267,7 +267,7 @@ abstract class PlatformWebViewController extends PlatformInterface { void Function(PlatformWebViewPermissionRequest request) onPermissionRequest, ) { throw UnimplementedError( - 'setOnPermissionRequest is not implemented on the current platform', + 'setOnPlatformPermissionRequest is not implemented on the current platform', ); } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart new file mode 100644 index 00000000000..23fed00d5e8 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart @@ -0,0 +1,26 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/// Defines the parameters of a pending HTTP basic authentication request. +class HttpBasicAuthRequest { + /// Creates a [HttpBasicAuthRequest]. + const HttpBasicAuthRequest({ + required this.onProceed, + required this.onCancel, + required this.host, + required this.realm, + }); + + /// The callback to authenticate. + final void Function(String username, String password) onProceed; + + /// The callback to cancel authentication. + final void Function() onCancel; + + /// The host requiring authentication. + final String host; + + /// The realm requiring authentication. + final String realm; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart index c6cbe6967a6..9846248ba92 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +export 'http_basic_auth_request.dart'; export 'http_response_error.dart'; export 'javascript_console_message.dart'; export 'javascript_log_level.dart'; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml index 71e85f32ded..a0fe637d7f8 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/webview_flutt issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.6.0 +version: 2.7.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -14,7 +14,7 @@ dependencies: flutter: sdk: flutter meta: ^1.7.0 - plugin_platform_interface: ^2.1.0 + plugin_platform_interface: ^2.1.6 dev_dependencies: build_runner: ^2.1.8 diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart index ac9f065e2be..946b76e46dd 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart @@ -142,6 +142,20 @@ void main() { throwsUnimplementedError, ); }); + + test( + 'Default implementation of setOnReceiveHttpAuthRequest should throw unimplemented error', + () { + final PlatformNavigationDelegate callbackDelegate = + ExtendsPlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams()); + + expect( + () => callbackDelegate + .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) {}), + throwsUnimplementedError, + ); + }); } class MockWebViewPlatformWithMixin extends MockWebViewPlatform diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart index 3ab612ee8c5..65c87843aee 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart @@ -124,4 +124,15 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future setOnHttpBasicAuthRequest( + _i3.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index 197c5d70784..f6917bad8f9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.10.0 + +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`.<<<<<<< HEAD + ## 3.9.2 * Fixes error caused by calling `WKWebViewConfiguration.limitsNavigationsToAppBoundDomains` on @@ -18,6 +22,7 @@ ## 3.7.4 * Adds pub topics to package metadata. + * Updates minimum supported SDK version to Flutter 3.7/Dart 2.19. ## 3.7.3 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 64d7702f209..0dd23fc53c0 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -34,6 +34,15 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; + } else if (request.uri.path == '/http-basic-authentication') { + final bool isAuthenticating = request.headers['Authorization'] != null; + if (isAuthenticating) { + request.response.writeln('Authorized'); + } else { + request.response.headers + .add('WWW-Authenticate', 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -43,6 +52,7 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; + final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets( 'withWeakReferenceTo allows encapsulating class to be garbage collected', @@ -1127,6 +1137,80 @@ Future main() async { }); }); + testWidgets('can receive HTTP basic auth requests', + (WidgetTester tester) async { + final Completer authRequested = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => authRequested.complete()); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + WebKitWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(authRequested.future, completes); + }); + + testWidgets('can reply to HTTP basic auth requests', + (WidgetTester tester) async { + final Completer pageFinished = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + ); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + WebKitWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(pageFinished.future, completes); + }); + testWidgets('launches with gestureNavigationEnabled on iOS', (WidgetTester tester) async { final WebKitWebViewController controller = WebKitWebViewController( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj index 32c0bf9872c..5b13ebad68f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj @@ -11,6 +11,9 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 8F4FF949299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4FF948299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m */; }; 8F4FF94B29AC223F000A6586 /* FWFURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4FF94A29AC223F000A6586 /* FWFURLTests.m */; }; + 8F562F902A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F562F8F2A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m */; }; + 8F562F922A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F562F912A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m */; }; + 8F562F942A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F562F932A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m */; }; 8F78EAAA2A02CB9100C2E520 /* FWFErrorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F78EAA92A02CB9100C2E520 /* FWFErrorTests.m */; }; 8FA6A87928062CD000A4B183 /* FWFInstanceManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA6A87828062CD000A4B183 /* FWFInstanceManagerTests.m */; }; 8FB79B5328134C3100C101D3 /* FWFWebViewHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB79B5228134C3100C101D3 /* FWFWebViewHostApiTests.m */; }; @@ -81,6 +84,9 @@ 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 8F4FF948299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FWFWebViewFlutterWKWebViewExternalAPITests.m; sourceTree = ""; }; 8F4FF94A29AC223F000A6586 /* FWFURLTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLTests.m; sourceTree = ""; }; + 8F562F8F2A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLCredentialHostApiTests.m; sourceTree = ""; }; + 8F562F912A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLProtectionSpaceHostApiTests.m; sourceTree = ""; }; + 8F562F932A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLAuthenticationChallengeHostApiTests.m; sourceTree = ""; }; 8F78EAA92A02CB9100C2E520 /* FWFErrorTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFErrorTests.m; sourceTree = ""; }; 8FA6A87828062CD000A4B183 /* FWFInstanceManagerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFInstanceManagerTests.m; sourceTree = ""; }; 8FB79B5228134C3100C101D3 /* FWFWebViewHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFWebViewHostApiTests.m; sourceTree = ""; }; @@ -167,6 +173,9 @@ 8FB79B902820BAC700C101D3 /* FWFUIViewHostApiTests.m */, 8FB79B962821985200C101D3 /* FWFObjectHostApiTests.m */, 8F4FF94A29AC223F000A6586 /* FWFURLTests.m */, + 8F562F8F2A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m */, + 8F562F912A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m */, + 8F562F932A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m */, 8F78EAA92A02CB9100C2E520 /* FWFErrorTests.m */, ); path = RunnerTests; @@ -318,7 +327,7 @@ isa = PBXProject; attributes = { DefaultBuildSystemTypeForWorkspace = Original; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 68BDCAE823C3F7CB00D9C032 = { @@ -327,7 +336,6 @@ }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = 7624MWN53C; }; F7151F73266057800028CB91 = { CreatedOnToolsVersion = 12.5; @@ -474,12 +482,15 @@ 8FB79B852820A3A400C101D3 /* FWFUIDelegateHostApiTests.m in Sources */, 8FB79B972821985200C101D3 /* FWFObjectHostApiTests.m in Sources */, 8FB79B672820453400C101D3 /* FWFHTTPCookieStoreHostApiTests.m in Sources */, + 8F562F942A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m in Sources */, 8FB79B5328134C3100C101D3 /* FWFWebViewHostApiTests.m in Sources */, 8FB79B73282096B500C101D3 /* FWFScriptMessageHandlerHostApiTests.m in Sources */, 8FB79B7928209D1300C101D3 /* FWFUserContentControllerHostApiTests.m in Sources */, + 8F562F902A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m in Sources */, 8F4FF949299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m in Sources */, 8FB79B6B28204EE500C101D3 /* FWFWebsiteDataStoreHostApiTests.m in Sources */, 8FB79B8F2820BAB300C101D3 /* FWFScrollViewHostApiTests.m in Sources */, + 8F562F922A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m in Sources */, 8FB79B912820BAC700C101D3 /* FWFUIViewHostApiTests.m in Sources */, 8FB79B55281B24F600C101D3 /* FWFDataConvertersTests.m in Sources */, 8FB79B6D2820533B00C101D3 /* FWFWebViewConfigurationHostApiTests.m in Sources */, @@ -689,6 +700,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -715,6 +727,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cb713d76763..cf07c46df2e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion en CFBundleExecutable @@ -22,6 +24,17 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoadsInWebContent + + + NSCameraUsageDescription + If you want to use the camera, you have to give permission. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -39,16 +52,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - NSCameraUsageDescription - If you want to use the camera, you have to give permission. - NSAppTransportSecurity - - NSAllowsArbitraryLoadsInWebContent - - diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m index 570a1f73ad9..17c26669667 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m @@ -213,4 +213,58 @@ - (void)testWebViewWebContentProcessDidTerminate { webViewIdentifier:@1 completion:OCMOCK_ANY]); } + +- (void)testDidReceiveAuthenticationChallenge { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + + FWFNavigationDelegate *mockDelegate = [self mockNavigationDelegateWithManager:instanceManager + identifier:0]; + FWFNavigationDelegateFlutterApiImpl *mockFlutterAPI = + [self mockFlutterApiWithManager:instanceManager]; + + OCMStub([mockDelegate navigationDelegateAPI]).andReturn(mockFlutterAPI); + + WKWebView *mockWebView = OCMClassMock([WKWebView class]); + [instanceManager addDartCreatedInstance:mockWebView withIdentifier:1]; + + NSURLAuthenticationChallenge *mockChallenge = OCMClassMock([NSURLAuthenticationChallenge class]); + NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"host" + port:0 + protocol:nil + realm:@"realm" + authenticationMethod:nil]; + OCMStub([mockChallenge protectionSpace]).andReturn(protectionSpace); + [instanceManager addDartCreatedInstance:mockChallenge withIdentifier:2]; + + NSURLCredential *credential = [NSURLCredential credentialWithUser:@"user" + password:@"password" + persistence:NSURLCredentialPersistenceNone]; + [instanceManager addDartCreatedInstance:credential withIdentifier:5]; + + OCMStub([mockFlutterAPI + didReceiveAuthenticationChallengeForDelegateWithIdentifier:@0 + webViewIdentifier:@1 + challengeIdentifier:@(2) + completion: + ([OCMArg + invokeBlockWithArgs: + [FWFAuthenticationChallengeResponse + makeWithDisposition: + FWFNSUrlSessionAuthChallengeDispositionCancelAuthenticationChallenge + credentialIdentifier:@(5)], + [NSNull null], nil])]); + + NSURLSessionAuthChallengeDisposition __block callbackDisposition = -1; + NSURLCredential *__block callbackCredential; + [mockDelegate webView:mockWebView + didReceiveAuthenticationChallenge:mockChallenge + completionHandler:^(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential *credential) { + callbackDisposition = disposition; + callbackCredential = credential; + }]; + + XCTAssertEqual(callbackDisposition, NSURLSessionAuthChallengeCancelAuthenticationChallenge); + XCTAssertEqualObjects(callbackCredential, credential); +} @end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m new file mode 100644 index 00000000000..2de5eb67ddb --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m @@ -0,0 +1,47 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +@import Flutter; +@import XCTest; +@import webview_flutter_wkwebview; + +#import + +@interface FWFURLAuthenticationChallengeHostApiTests : XCTestCase + +@end + +@implementation FWFURLAuthenticationChallengeHostApiTests +- (void)testFlutterApiCreate { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + FWFURLAuthenticationChallengeFlutterApiImpl *flutterApi = + [[FWFURLAuthenticationChallengeFlutterApiImpl alloc] + initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger)) + instanceManager:instanceManager]; + + flutterApi.api = OCMClassMock([FWFNSUrlAuthenticationChallengeFlutterApi class]); + + NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"host" + port:0 + protocol:nil + realm:@"realm" + authenticationMethod:nil]; + + NSURLAuthenticationChallenge *mockChallenge = OCMClassMock([NSURLAuthenticationChallenge class]); + OCMStub([mockChallenge protectionSpace]).andReturn(protectionSpace); + + [flutterApi createWithInstance:mockChallenge + protectionSpace:protectionSpace + completion:^(FlutterError *error){ + + }]; + + long identifier = [instanceManager identifierWithStrongReferenceForInstance:mockChallenge]; + long protectionSpaceIdentifier = + [instanceManager identifierWithStrongReferenceForInstance:protectionSpace]; + OCMVerify([flutterApi.api createWithIdentifier:@(identifier) + protectionSpaceIdentifier:@(protectionSpaceIdentifier) + completion:OCMOCK_ANY]); +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m new file mode 100644 index 00000000000..70c9e29ee95 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m @@ -0,0 +1,35 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +@import Flutter; +@import XCTest; +@import webview_flutter_wkwebview; + +#import + +@interface FWFURLCredentialHostApiTests : XCTestCase +@end + +@implementation FWFURLCredentialHostApiTests +- (void)testHostApiCreate { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + + FWFURLCredentialHostApiImpl *hostApi = [[FWFURLCredentialHostApiImpl alloc] + initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger)) + instanceManager:instanceManager]; + + FlutterError *error; + [hostApi createWithUserWithIdentifier:@0 + user:@"user" + password:@"password" + persistence:FWFNSUrlCredentialPersistencePermanent + error:&error]; + XCTAssertNil(error); + + NSURLCredential *credential = (NSURLCredential *)[instanceManager instanceForIdentifier:0]; + XCTAssertEqualObjects(credential.user, @"user"); + XCTAssertEqualObjects(credential.password, @"password"); + XCTAssertEqual(credential.persistence, NSURLCredentialPersistencePermanent); +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m new file mode 100644 index 00000000000..08b2e4fe888 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m @@ -0,0 +1,41 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +@import Flutter; +@import XCTest; +@import webview_flutter_wkwebview; + +#import + +@interface FWFURLProtectionSpaceHostApiTests : XCTestCase +@end + +@implementation FWFURLProtectionSpaceHostApiTests +- (void)testFlutterApiCreate { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + FWFURLProtectionSpaceFlutterApiImpl *flutterApi = [[FWFURLProtectionSpaceFlutterApiImpl alloc] + initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger)) + instanceManager:instanceManager]; + + flutterApi.api = OCMClassMock([FWFNSUrlProtectionSpaceFlutterApi class]); + + NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"host" + port:0 + protocol:nil + realm:@"realm" + authenticationMethod:nil]; + [flutterApi createWithInstance:protectionSpace + host:@"host" + realm:@"realm" + completion:^(FlutterError *error){ + + }]; + + long identifier = [instanceManager identifierWithStrongReferenceForInstance:protectionSpace]; + OCMVerify([flutterApi.api createWithIdentifier:@(identifier) + host:@"host" + realm:@"realm" + completion:OCMOCK_ANY]); +} +@end 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 4180650574d..05b8c04041d 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -162,6 +162,11 @@ Page resource error: }) ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); + }) + ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + debugPrint( + 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + openDialog(request); }), ) ..addJavaScriptChannel(JavaScriptChannelParams( @@ -220,6 +225,60 @@ Page resource error: child: const Icon(Icons.favorite), ); } + + Future openDialog(HttpBasicAuthRequest httpRequest) async { + final TextEditingController usernameTextController = + TextEditingController(); + final TextEditingController passwordTextController = + TextEditingController(); + + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${httpRequest.host}: ${httpRequest.realm}'), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + decoration: const InputDecoration(labelText: 'Username'), + autofocus: true, + controller: usernameTextController, + ), + TextField( + decoration: const InputDecoration(labelText: 'Password'), + controller: passwordTextController, + ), + ], + ), + ), + actions: [ + // Explicitly cancel the request on iOS as the OS does not emit new + // requests when a previous request is pending. + TextButton( + onPressed: () { + httpRequest.onCancel(); + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () { + httpRequest.onProceed( + usernameTextController.text, + passwordTextController.text, + ); + Navigator.of(context).pop(); + }, + child: const Text('Authenticate'), + ), + ], + ); + }, + ); + } } enum MenuOptions { @@ -237,6 +296,7 @@ enum MenuOptions { transparentBackground, setCookie, logExample, + basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -300,6 +360,9 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; + case MenuOptions.basicAuthentication: + _basicAuthExample(); + break; } }, itemBuilder: (BuildContext context) => >[ @@ -360,6 +423,10 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.logExample, child: Text('Log example'), ), + const PopupMenuItem( + value: MenuOptions.basicAuthentication, + child: Text('Basic Authentication Example'), + ), ], ); } @@ -518,6 +585,12 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } + + Future _basicAuthExample() { + return webViewController.loadRequest(LoadRequestParams( + uri: Uri.parse( + 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml index 11f6bc6092f..ffde401a8e2 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml @@ -32,3 +32,8 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m index 2f919839aa5..5c672fff9a8 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m @@ -13,6 +13,7 @@ #import "FWFScrollViewHostApi.h" #import "FWFUIDelegateHostApi.h" #import "FWFUIViewHostApi.h" +#import "FWFURLCredentialHostApi.h" #import "FWFURLHostApi.h" #import "FWFUserContentControllerHostApi.h" #import "FWFWebViewConfigurationHostApi.h" @@ -105,6 +106,11 @@ + (void)registerWithRegistrar:(NSObject *)registrar { [[FWFURLHostApiImpl alloc] initWithBinaryMessenger:registrar.messenger instanceManager:instanceManager]); + FWFNSUrlCredentialHostApiSetup( + registrar.messenger, + [[FWFURLCredentialHostApiImpl alloc] initWithBinaryMessenger:registrar.messenger + instanceManager:instanceManager]); + FWFWebViewFactory *webviewFactory = [[FWFWebViewFactory alloc] initWithManager:instanceManager]; [registrar registerViewFactory:webviewFactory withId:@"plugins.flutter.io/webview"]; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h index 005cecb39b4..e9405f3bb90 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h @@ -193,4 +193,26 @@ API_AVAILABLE(ios(15.0)) extern FWFWKMediaCaptureTypeData *FWFWKMediaCaptureTypeDataFromNativeWKMediaCaptureType( WKMediaCaptureType type); +/** + * Converts an FWFNSUrlSessionAuthChallengeDisposition to an NSURLSessionAuthChallengeDisposition. + * + * @param value The object containing information to create an NSURLSessionAuthChallengeDisposition. + * + * @return A NSURLSessionAuthChallengeDisposition or -1 if data could not be converted. + */ +extern NSURLSessionAuthChallengeDisposition +FWFNativeNSURLSessionAuthChallengeDispositionFromFWFNSUrlSessionAuthChallengeDisposition( + FWFNSUrlSessionAuthChallengeDisposition value); + +/** + * Converts an FWFNSUrlCredentialPersistence to an NSURLCredentialPersistence. + * + * @param value The object containing information to create an NSURLCredentialPersistence. + * + * @return A NSURLCredentialPersistence or -1 if data could not be converted. + */ +extern NSURLCredentialPersistence +FWFNativeNSURLCredentialPersistenceFromFWFNSUrlCredentialPersistence( + FWFNSUrlCredentialPersistence value); + NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m index 28c029888a3..d517b356029 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m @@ -285,3 +285,36 @@ WKPermissionDecision FWFNativeWKPermissionDecisionFromData(FWFWKPermissionDecisi return nil; } + +NSURLSessionAuthChallengeDisposition +FWFNativeNSURLSessionAuthChallengeDispositionFromFWFNSUrlSessionAuthChallengeDisposition( + FWFNSUrlSessionAuthChallengeDisposition value) { + switch (value) { + case FWFNSUrlSessionAuthChallengeDispositionUseCredential: + return NSURLSessionAuthChallengeUseCredential; + case FWFNSUrlSessionAuthChallengeDispositionPerformDefaultHandling: + return NSURLSessionAuthChallengePerformDefaultHandling; + case FWFNSUrlSessionAuthChallengeDispositionCancelAuthenticationChallenge: + return NSURLSessionAuthChallengeCancelAuthenticationChallenge; + case FWFNSUrlSessionAuthChallengeDispositionRejectProtectionSpace: + return NSURLSessionAuthChallengeRejectProtectionSpace; + } + + return -1; +} + +NSURLCredentialPersistence FWFNativeNSURLCredentialPersistenceFromFWFNSUrlCredentialPersistence( + FWFNSUrlCredentialPersistence value) { + switch (value) { + case FWFNSUrlCredentialPersistenceNone: + return NSURLCredentialPersistenceNone; + case FWFNSUrlCredentialPersistenceSession: + return NSURLCredentialPersistenceForSession; + case FWFNSUrlCredentialPersistencePermanent: + return NSURLCredentialPersistencePermanent; + case FWFNSUrlCredentialPersistenceSynchronizable: + return NSURLCredentialPersistenceSynchronizable; + } + + return -1; +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h index 11c49d24b54..0ece7c35870 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @@ -15,8 +15,7 @@ NS_ASSUME_NONNULL_BEGIN /// Mirror of NSKeyValueObservingOptions. /// -/// See -/// https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions?language=objc. +/// See https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions?language=objc. typedef NS_ENUM(NSUInteger, FWFNSKeyValueObservingOptionsEnum) { FWFNSKeyValueObservingOptionsEnumNewValue = 0, FWFNSKeyValueObservingOptionsEnumOldValue = 1, @@ -56,8 +55,7 @@ typedef NS_ENUM(NSUInteger, FWFWKUserScriptInjectionTimeEnum) { /// Mirror of WKAudiovisualMediaTypes. /// -/// See -/// [WKAudiovisualMediaTypes](https://developer.apple.com/documentation/webkit/wkaudiovisualmediatypes?language=objc). +/// See [WKAudiovisualMediaTypes](https://developer.apple.com/documentation/webkit/wkaudiovisualmediatypes?language=objc). typedef NS_ENUM(NSUInteger, FWFWKAudiovisualMediaTypeEnum) { FWFWKAudiovisualMediaTypeEnumNone = 0, FWFWKAudiovisualMediaTypeEnumAudio = 1, @@ -67,8 +65,7 @@ typedef NS_ENUM(NSUInteger, FWFWKAudiovisualMediaTypeEnum) { /// Mirror of WKWebsiteDataTypes. /// -/// See -/// https://developer.apple.com/documentation/webkit/wkwebsitedatarecord/data_store_record_types?language=objc. +/// See https://developer.apple.com/documentation/webkit/wkwebsitedatarecord/data_store_record_types?language=objc. typedef NS_ENUM(NSUInteger, FWFWKWebsiteDataTypeEnum) { FWFWKWebsiteDataTypeEnumCookies = 0, FWFWKWebsiteDataTypeEnumMemoryCache = 1, @@ -111,38 +108,31 @@ typedef NS_ENUM(NSUInteger, FWFNSHttpCookiePropertyKeyEnum) { /// An object that contains information about an action that causes navigation /// to occur. /// -/// Wraps -/// [WKNavigationType](https://developer.apple.com/documentation/webkit/wknavigationaction?language=objc). +/// Wraps [WKNavigationType](https://developer.apple.com/documentation/webkit/wknavigationaction?language=objc). typedef NS_ENUM(NSUInteger, FWFWKNavigationType) { /// A link activation. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypelinkactivated?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypelinkactivated?language=objc. FWFWKNavigationTypeLinkActivated = 0, /// A request to submit a form. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformsubmitted?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformsubmitted?language=objc. FWFWKNavigationTypeSubmitted = 1, /// A request for the frame’s next or previous item. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypebackforward?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypebackforward?language=objc. FWFWKNavigationTypeBackForward = 2, /// A request to reload the webpage. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypereload?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypereload?language=objc. FWFWKNavigationTypeReload = 3, /// A request to resubmit a form. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformresubmitted?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformresubmitted?language=objc. FWFWKNavigationTypeFormResubmitted = 4, /// A navigation request that originates for some other reason. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeother?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeother?language=objc. FWFWKNavigationTypeOther = 5, /// An unknown navigation type. /// @@ -157,18 +147,15 @@ typedef NS_ENUM(NSUInteger, FWFWKNavigationType) { typedef NS_ENUM(NSUInteger, FWFWKPermissionDecision) { /// Deny permission for the requested resource. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiondeny?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiondeny?language=objc. FWFWKPermissionDecisionDeny = 0, /// Deny permission for the requested resource. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiongrant?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiongrant?language=objc. FWFWKPermissionDecisionGrant = 1, /// Prompt the user for permission for the requested resource. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisionprompt?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisionprompt?language=objc. FWFWKPermissionDecisionPrompt = 2, }; @@ -178,18 +165,15 @@ typedef NS_ENUM(NSUInteger, FWFWKPermissionDecision) { typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// A media device that can capture video. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecamera?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecamera?language=objc. FWFWKMediaCaptureTypeCamera = 0, /// A media device or devices that can capture audio and video. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecameraandmicrophone?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecameraandmicrophone?language=objc. FWFWKMediaCaptureTypeCameraAndMicrophone = 1, /// A media device that can capture audio. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypemicrophone?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypemicrophone?language=objc. FWFWKMediaCaptureTypeMicrophone = 2, /// An unknown media device. /// @@ -198,6 +182,52 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { FWFWKMediaCaptureTypeUnknown = 3, }; +/// Responses to an authentication challenge. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition?language=objc. +typedef NS_ENUM(NSUInteger, FWFNSUrlSessionAuthChallengeDisposition) { + /// Use the specified credential, which may be nil. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeusecredential?language=objc. + FWFNSUrlSessionAuthChallengeDispositionUseCredential = 0, + /// Use the default handling for the challenge as though this delegate method + /// were not implemented. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeperformdefaulthandling?language=objc. + FWFNSUrlSessionAuthChallengeDispositionPerformDefaultHandling = 1, + /// Cancel the entire request. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengecancelauthenticationchallenge?language=objc. + FWFNSUrlSessionAuthChallengeDispositionCancelAuthenticationChallenge = 2, + /// Reject this challenge, and call the authentication delegate method again + /// with the next authentication protection space. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengerejectprotectionspace?language=objc. + FWFNSUrlSessionAuthChallengeDispositionRejectProtectionSpace = 3, +}; + +/// Specifies how long a credential will be kept. +typedef NS_ENUM(NSUInteger, FWFNSUrlCredentialPersistence) { + /// The credential should not be stored. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencenone?language=objc. + FWFNSUrlCredentialPersistenceNone = 0, + /// The credential should be stored only for this session. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistenceforsession?language=objc. + FWFNSUrlCredentialPersistenceSession = 1, + /// The credential should be stored in the keychain. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencepermanent?language=objc. + FWFNSUrlCredentialPersistencePermanent = 2, + /// The credential should be stored permanently in the keychain, and in + /// addition should be distributed to other devices based on the owning Apple + /// ID. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencesynchronizable?language=objc. + FWFNSUrlCredentialPersistenceSynchronizable = 3, +}; + @class FWFNSKeyValueObservingOptionsEnumData; @class FWFNSKeyValueChangeKeyEnumData; @class FWFWKUserScriptInjectionTimeEnumData; @@ -216,6 +246,7 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @class FWFWKSecurityOriginData; @class FWFNSHttpCookieData; @class FWFObjectOrIdentifier; +@class FWFAuthenticationChallengeResponse; @interface FWFNSKeyValueObservingOptionsEnumData : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. @@ -287,13 +318,13 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithUrl:(NSString *)url - httpMethod:(nullable NSString *)httpMethod - httpBody:(nullable FlutterStandardTypedData *)httpBody - allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields; -@property(nonatomic, copy) NSString *url; -@property(nonatomic, copy, nullable) NSString *httpMethod; -@property(nonatomic, strong, nullable) FlutterStandardTypedData *httpBody; -@property(nonatomic, strong) NSDictionary *allHttpHeaderFields; + httpMethod:(nullable NSString *)httpMethod + httpBody:(nullable FlutterStandardTypedData *)httpBody + allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields; +@property(nonatomic, copy) NSString * url; +@property(nonatomic, copy, nullable) NSString * httpMethod; +@property(nonatomic, strong, nullable) FlutterStandardTypedData * httpBody; +@property(nonatomic, strong) NSDictionary * allHttpHeaderFields; @end /// Mirror of WKUserScript. @@ -303,11 +334,11 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithSource:(NSString *)source - injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime - isMainFrameOnly:(NSNumber *)isMainFrameOnly; -@property(nonatomic, copy) NSString *source; -@property(nonatomic, strong, nullable) FWFWKUserScriptInjectionTimeEnumData *injectionTime; -@property(nonatomic, strong) NSNumber *isMainFrameOnly; + injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime + isMainFrameOnly:(NSNumber *)isMainFrameOnly; +@property(nonatomic, copy) NSString * source; +@property(nonatomic, strong, nullable) FWFWKUserScriptInjectionTimeEnumData * injectionTime; +@property(nonatomic, strong) NSNumber * isMainFrameOnly; @end /// Mirror of WKNavigationAction. @@ -317,10 +348,10 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithRequest:(FWFNSUrlRequestData *)request - targetFrame:(FWFWKFrameInfoData *)targetFrame - navigationType:(FWFWKNavigationType)navigationType; -@property(nonatomic, strong) FWFNSUrlRequestData *request; -@property(nonatomic, strong) FWFWKFrameInfoData *targetFrame; + targetFrame:(FWFWKFrameInfoData *)targetFrame + navigationType:(FWFWKNavigationType)navigationType; +@property(nonatomic, strong) FWFNSUrlRequestData * request; +@property(nonatomic, strong) FWFWKFrameInfoData * targetFrame; @property(nonatomic, assign) FWFWKNavigationType navigationType; @end @@ -331,7 +362,7 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithIsMainFrame:(NSNumber *)isMainFrame; -@property(nonatomic, strong) NSNumber *isMainFrame; +@property(nonatomic, strong) NSNumber * isMainFrame; @end /// Mirror of NSError. @@ -341,11 +372,11 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithCode:(NSNumber *)code - domain:(NSString *)domain - userInfo:(nullable NSDictionary *)userInfo; -@property(nonatomic, strong) NSNumber *code; -@property(nonatomic, copy) NSString *domain; -@property(nonatomic, strong, nullable) NSDictionary *userInfo; + domain:(NSString *)domain + userInfo:(nullable NSDictionary *)userInfo; +@property(nonatomic, strong) NSNumber * code; +@property(nonatomic, copy) NSString * domain; +@property(nonatomic, strong, nullable) NSDictionary * userInfo; @end /// Mirror of WKScriptMessage. @@ -354,9 +385,10 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @interface FWFWKScriptMessageData : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithName:(NSString *)name body:(id)body; -@property(nonatomic, copy) NSString *name; -@property(nonatomic, strong) id body; ++ (instancetype)makeWithName:(NSString *)name + body:(id )body; +@property(nonatomic, copy) NSString * name; +@property(nonatomic, strong) id body; @end /// Mirror of WKSecurityOrigin. @@ -365,10 +397,12 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @interface FWFWKSecurityOriginData : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithHost:(NSString *)host port:(NSNumber *)port protocol:(NSString *)protocol; -@property(nonatomic, copy) NSString *host; -@property(nonatomic, strong) NSNumber *port; -@property(nonatomic, copy) NSString *protocol; ++ (instancetype)makeWithHost:(NSString *)host + port:(NSNumber *)port + protocol:(NSString *)protocol; +@property(nonatomic, copy) NSString * host; +@property(nonatomic, strong) NSNumber * port; +@property(nonatomic, copy) NSString * protocol; @end /// Mirror of NSHttpCookieData. @@ -378,9 +412,9 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithPropertyKeys:(NSArray *)propertyKeys - propertyValues:(NSArray *)propertyValues; -@property(nonatomic, strong) NSArray *propertyKeys; -@property(nonatomic, strong) NSArray *propertyValues; + propertyValues:(NSArray *)propertyValues; +@property(nonatomic, strong) NSArray * propertyKeys; +@property(nonatomic, strong) NSArray * propertyValues; @end /// An object that can represent either a value supported by @@ -389,11 +423,21 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @interface FWFObjectOrIdentifier : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithValue:(id)value isIdentifier:(NSNumber *)isIdentifier; -@property(nonatomic, strong) id value; ++ (instancetype)makeWithValue:(id )value + isIdentifier:(NSNumber *)isIdentifier; +@property(nonatomic, strong) id value; /// Whether value is an int that is used to retrieve an instance stored in an /// `InstanceManager`. -@property(nonatomic, strong) NSNumber *isIdentifier; +@property(nonatomic, strong) NSNumber * isIdentifier; +@end + +@interface FWFAuthenticationChallengeResponse : NSObject +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithDisposition:(FWFNSUrlSessionAuthChallengeDisposition)disposition + credentialIdentifier:(nullable NSNumber *)credentialIdentifier; +@property(nonatomic, assign) FWFNSUrlSessionAuthChallengeDisposition disposition; +@property(nonatomic, strong, nullable) NSNumber * credentialIdentifier; @end /// The codec used by FWFWKWebsiteDataStoreHostApi. @@ -403,21 +447,12 @@ NSObject *FWFWKWebsiteDataStoreHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkwebsitedatastore?language=objc. @protocol FWFWKWebsiteDataStoreHostApi -- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)createDefaultDataStoreWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeDataFromDataStoreWithIdentifier:(NSNumber *)identifier - ofTypes:(NSArray *)dataTypes - modifiedSince:(NSNumber *)modificationTimeInSecondsSinceEpoch - completion:(void (^)(NSNumber *_Nullable, - FlutterError *_Nullable))completion; -@end - -extern void FWFWKWebsiteDataStoreHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createDefaultDataStoreWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeDataFromDataStoreWithIdentifier:(NSNumber *)identifier ofTypes:(NSArray *)dataTypes modifiedSince:(NSNumber *)modificationTimeInSecondsSinceEpoch completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion; +@end + +extern void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFUIViewHostApi. NSObject *FWFUIViewHostApiGetCodec(void); @@ -426,16 +461,11 @@ NSObject *FWFUIViewHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/uikit/uiview?language=objc. @protocol FWFUIViewHostApi -- (void)setBackgroundColorForViewWithIdentifier:(NSNumber *)identifier - toValue:(nullable NSNumber *)value - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setOpaqueForViewWithIdentifier:(NSNumber *)identifier - isOpaque:(NSNumber *)opaque - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setBackgroundColorForViewWithIdentifier:(NSNumber *)identifier toValue:(nullable NSNumber *)value error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setOpaqueForViewWithIdentifier:(NSNumber *)identifier isOpaque:(NSNumber *)opaque error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFUIViewHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFUIViewHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFUIScrollViewHostApi. NSObject *FWFUIScrollViewHostApiGetCodec(void); @@ -444,25 +474,14 @@ NSObject *FWFUIScrollViewHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/uikit/uiscrollview?language=objc. @protocol FWFUIScrollViewHostApi -- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSArray *) - contentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)scrollByForScrollViewWithIdentifier:(NSNumber *)identifier - x:(NSNumber *)x - y:(NSNumber *)y - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setContentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier - toX:(NSNumber *)x - y:(NSNumber *)y - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void FWFUIScrollViewHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +- (nullable NSArray *)contentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)scrollByForScrollViewWithIdentifier:(NSNumber *)identifier x:(NSNumber *)x y:(NSNumber *)y error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setContentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier toX:(NSNumber *)x y:(NSNumber *)y error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFUIScrollViewHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKWebViewConfigurationHostApi. NSObject *FWFWKWebViewConfigurationHostApiGetCodec(void); @@ -472,32 +491,13 @@ NSObject *FWFWKWebViewConfigurationHostApiGetCodec(void); /// See https://developer.apple.com/documentation/webkit/wkwebviewconfiguration?language=objc. @protocol FWFWKWebViewConfigurationHostApi - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; -- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:(NSNumber *)identifier - isAllowed:(NSNumber *)allow - error: - (FlutterError *_Nullable *_Nonnull) - error; -- (void)setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:(NSNumber *)identifier - isLimited:(NSNumber *)limit - error:(FlutterError *_Nullable - *_Nonnull)error; -- (void) - setMediaTypesRequiresUserActionForConfigurationWithIdentifier:(NSNumber *)identifier - forTypes: - (NSArray< - FWFWKAudiovisualMediaTypeEnumData - *> *)types - error: - (FlutterError *_Nullable *_Nonnull) - error; -@end - -extern void FWFWKWebViewConfigurationHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:(NSNumber *)identifier isAllowed:(NSNumber *)allow error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:(NSNumber *)identifier isLimited:(NSNumber *)limit error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setMediaTypesRequiresUserActionForConfigurationWithIdentifier:(NSNumber *)identifier forTypes:(NSArray *)types error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFWKWebViewConfigurationHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKWebViewConfigurationFlutterApi. NSObject *FWFWKWebViewConfigurationFlutterApiGetCodec(void); @@ -507,8 +507,7 @@ NSObject *FWFWKWebViewConfigurationFlutterApiGetCodec(void) /// See https://developer.apple.com/documentation/webkit/wkwebviewconfiguration?language=objc. @interface FWFWKWebViewConfigurationFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)createWithIdentifier:(NSNumber *)identifier - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)createWithIdentifier:(NSNumber *)identifier completion:(void (^)(FlutterError *_Nullable))completion; @end /// The codec used by FWFWKUserContentControllerHostApi. @@ -518,31 +517,15 @@ NSObject *FWFWKUserContentControllerHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkusercontentcontroller?language=objc. @protocol FWFWKUserContentControllerHostApi -- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)addScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier - handlerIdentifier:(NSNumber *)handlerIdentifier - ofName:(NSString *)name - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier - name:(NSString *)name - error:(FlutterError *_Nullable *_Nonnull) - error; -- (void)removeAllScriptMessageHandlersForControllerWithIdentifier:(NSNumber *)identifier - error: - (FlutterError *_Nullable *_Nonnull) - error; -- (void)addUserScriptForControllerWithIdentifier:(NSNumber *)identifier - userScript:(FWFWKUserScriptData *)userScript - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeAllUserScriptsForControllerWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void FWFWKUserContentControllerHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)addScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier handlerIdentifier:(NSNumber *)handlerIdentifier ofName:(NSString *)name error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier name:(NSString *)name error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeAllScriptMessageHandlersForControllerWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)addUserScriptForControllerWithIdentifier:(NSNumber *)identifier userScript:(FWFWKUserScriptData *)userScript error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeAllUserScriptsForControllerWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFWKUserContentControllerHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKPreferencesHostApi. NSObject *FWFWKPreferencesHostApiGetCodec(void); @@ -551,16 +534,11 @@ NSObject *FWFWKPreferencesHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkpreferences?language=objc. @protocol FWFWKPreferencesHostApi -- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setJavaScriptEnabledForPreferencesWithIdentifier:(NSNumber *)identifier - isEnabled:(NSNumber *)enabled - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setJavaScriptEnabledForPreferencesWithIdentifier:(NSNumber *)identifier isEnabled:(NSNumber *)enabled error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKPreferencesHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKPreferencesHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKScriptMessageHandlerHostApi. NSObject *FWFWKScriptMessageHandlerHostApiGetCodec(void); @@ -572,9 +550,7 @@ NSObject *FWFWKScriptMessageHandlerHostApiGetCodec(void); - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKScriptMessageHandlerHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKScriptMessageHandlerHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKScriptMessageHandlerFlutterApi. NSObject *FWFWKScriptMessageHandlerFlutterApiGetCodec(void); @@ -584,11 +560,7 @@ NSObject *FWFWKScriptMessageHandlerFlutterApiGetCodec(void) /// See https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?language=objc. @interface FWFWKScriptMessageHandlerFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)identifier - userContentControllerIdentifier:(NSNumber *)userContentControllerIdentifier - message:(FWFWKScriptMessageData *)message - completion: - (void (^)(FlutterError *_Nullable))completion; +- (void)didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)identifier userContentControllerIdentifier:(NSNumber *)userContentControllerIdentifier message:(FWFWKScriptMessageData *)message completion:(void (^)(FlutterError *_Nullable))completion; @end /// The codec used by FWFWKNavigationDelegateHostApi. @@ -601,9 +573,7 @@ NSObject *FWFWKNavigationDelegateHostApiGetCodec(void); - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKNavigationDelegateHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKNavigationDelegateHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKNavigationDelegateFlutterApi. NSObject *FWFWKNavigationDelegateFlutterApiGetCodec(void); @@ -613,38 +583,13 @@ NSObject *FWFWKNavigationDelegateFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc. @interface FWFWKNavigationDelegateFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - URL:(nullable NSString *)url - completion:(void (^)(FlutterError *_Nullable))completion; -- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - URL:(nullable NSString *)url - completion:(void (^)(FlutterError *_Nullable)) - completion; -- (void) - decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - navigationAction: - (FWFWKNavigationActionData *)navigationAction - completion: - (void (^)(FWFWKNavigationActionPolicyEnumData - *_Nullable, - FlutterError *_Nullable))completion; -- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FWFNSErrorData *)error - completion:(void (^)(FlutterError *_Nullable))completion; -- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FWFNSErrorData *)error - completion:(void (^)(FlutterError *_Nullable)) - completion; -- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - completion: - (void (^)(FlutterError *_Nullable)) - completion; +- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier URL:(nullable NSString *)url completion:(void (^)(FlutterError *_Nullable))completion; +- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier URL:(nullable NSString *)url completion:(void (^)(FlutterError *_Nullable))completion; +- (void)decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier navigationAction:(FWFWKNavigationActionData *)navigationAction completion:(void (^)(FWFWKNavigationActionPolicyEnumData *_Nullable, FlutterError *_Nullable))completion; +- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FWFNSErrorData *)error completion:(void (^)(FlutterError *_Nullable))completion; +- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FWFNSErrorData *)error completion:(void (^)(FlutterError *_Nullable))completion; +- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier completion:(void (^)(FlutterError *_Nullable))completion; +- (void)didReceiveAuthenticationChallengeForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier challengeIdentifier:(NSNumber *)challengeIdentifier completion:(void (^)(FWFAuthenticationChallengeResponse *_Nullable, FlutterError *_Nullable))completion; @end /// The codec used by FWFNSObjectHostApi. @@ -654,22 +599,12 @@ NSObject *FWFNSObjectHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/objectivec/nsobject. @protocol FWFNSObjectHostApi -- (void)disposeObjectWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)addObserverForObjectWithIdentifier:(NSNumber *)identifier - observerIdentifier:(NSNumber *)observerIdentifier - keyPath:(NSString *)keyPath - options: - (NSArray *)options - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeObserverForObjectWithIdentifier:(NSNumber *)identifier - observerIdentifier:(NSNumber *)observerIdentifier - keyPath:(NSString *)keyPath - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void FWFNSObjectHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +- (void)disposeObjectWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)addObserverForObjectWithIdentifier:(NSNumber *)identifier observerIdentifier:(NSNumber *)observerIdentifier keyPath:(NSString *)keyPath options:(NSArray *)options error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeObserverForObjectWithIdentifier:(NSNumber *)identifier observerIdentifier:(NSNumber *)observerIdentifier keyPath:(NSString *)keyPath error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFNSObjectHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFNSObjectFlutterApi. NSObject *FWFNSObjectFlutterApiGetCodec(void); @@ -679,14 +614,8 @@ NSObject *FWFNSObjectFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/objectivec/nsobject. @interface FWFNSObjectFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)observeValueForObjectWithIdentifier:(NSNumber *)identifier - keyPath:(NSString *)keyPath - objectIdentifier:(NSNumber *)objectIdentifier - changeKeys:(NSArray *)changeKeys - changeValues:(NSArray *)changeValues - completion:(void (^)(FlutterError *_Nullable))completion; -- (void)disposeObjectWithIdentifier:(NSNumber *)identifier - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)observeValueForObjectWithIdentifier:(NSNumber *)identifier keyPath:(NSString *)keyPath objectIdentifier:(NSNumber *)objectIdentifier changeKeys:(NSArray *)changeKeys changeValues:(NSArray *)changeValues completion:(void (^)(FlutterError *_Nullable))completion; +- (void)disposeObjectWithIdentifier:(NSNumber *)identifier completion:(void (^)(FlutterError *_Nullable))completion; @end /// The codec used by FWFWKWebViewHostApi. @@ -696,71 +625,32 @@ NSObject *FWFWKWebViewHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkwebview?language=objc. @protocol FWFWKWebViewHostApi -- (void)createWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setUIDelegateForWebViewWithIdentifier:(NSNumber *)identifier - delegateIdentifier:(nullable NSNumber *)uiDelegateIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setNavigationDelegateForWebViewWithIdentifier:(NSNumber *)identifier - delegateIdentifier: - (nullable NSNumber *)navigationDelegateIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable NSString *)URLForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setUIDelegateForWebViewWithIdentifier:(NSNumber *)identifier delegateIdentifier:(nullable NSNumber *)uiDelegateIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setNavigationDelegateForWebViewWithIdentifier:(NSNumber *)identifier delegateIdentifier:(nullable NSNumber *)navigationDelegateIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)URLForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSNumber *)estimatedProgressForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull) - error; -- (void)loadRequestForWebViewWithIdentifier:(NSNumber *)identifier - request:(FWFNSUrlRequestData *)request - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)loadHTMLForWebViewWithIdentifier:(NSNumber *)identifier - HTMLString:(NSString *)string - baseURL:(nullable NSString *)baseUrl - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)loadFileForWebViewWithIdentifier:(NSNumber *)identifier - fileURL:(NSString *)url - readAccessURL:(NSString *)readAccessUrl - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)loadAssetForWebViewWithIdentifier:(NSNumber *)identifier - assetKey:(NSString *)key - error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSNumber *)estimatedProgressForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadRequestForWebViewWithIdentifier:(NSNumber *)identifier request:(FWFNSUrlRequestData *)request error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadHTMLForWebViewWithIdentifier:(NSNumber *)identifier HTMLString:(NSString *)string baseURL:(nullable NSString *)baseUrl error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadFileForWebViewWithIdentifier:(NSNumber *)identifier fileURL:(NSString *)url readAccessURL:(NSString *)readAccessUrl error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadAssetForWebViewWithIdentifier:(NSNumber *)identifier assetKey:(NSString *)key error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSNumber *)canGoBackForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSNumber *)canGoBackForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSNumber *)canGoForwardForWebViewWithIdentifier:(NSNumber *)identifier - error: - (FlutterError *_Nullable *_Nonnull)error; -- (void)goBackForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)goForwardForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)reloadWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable NSString *)titleForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setAllowsBackForwardForWebViewWithIdentifier:(NSNumber *)identifier - isAllowed:(NSNumber *)allow - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setCustomUserAgentForWebViewWithIdentifier:(NSNumber *)identifier - userAgent:(nullable NSString *)userAgent - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)evaluateJavaScriptForWebViewWithIdentifier:(NSNumber *)identifier - javaScriptString:(NSString *)javaScriptString - completion:(void (^)(id _Nullable, - FlutterError *_Nullable))completion; -- (void)setInspectableForWebViewWithIdentifier:(NSNumber *)identifier - inspectable:(NSNumber *)inspectable - error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable NSString *)customUserAgentForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull) - error; -@end - -extern void FWFWKWebViewHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +- (nullable NSNumber *)canGoForwardForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)goBackForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)goForwardForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)reloadWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)titleForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setAllowsBackForwardForWebViewWithIdentifier:(NSNumber *)identifier isAllowed:(NSNumber *)allow error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setCustomUserAgentForWebViewWithIdentifier:(NSNumber *)identifier userAgent:(nullable NSString *)userAgent error:(FlutterError *_Nullable *_Nonnull)error; +- (void)evaluateJavaScriptForWebViewWithIdentifier:(NSNumber *)identifier javaScriptString:(NSString *)javaScriptString completion:(void (^)(id _Nullable, FlutterError *_Nullable))completion; +- (void)setInspectableForWebViewWithIdentifier:(NSNumber *)identifier inspectable:(NSNumber *)inspectable error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)customUserAgentForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFWKWebViewHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKUIDelegateHostApi. NSObject *FWFWKUIDelegateHostApiGetCodec(void); @@ -772,8 +662,7 @@ NSObject *FWFWKUIDelegateHostApiGetCodec(void); - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKUIDelegateHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKUIDelegateHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKUIDelegateFlutterApi. NSObject *FWFWKUIDelegateFlutterApiGetCodec(void); @@ -783,21 +672,9 @@ NSObject *FWFWKUIDelegateFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/webkit/wkuidelegate?language=objc. @interface FWFWKUIDelegateFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - configurationIdentifier:(NSNumber *)configurationIdentifier - navigationAction:(FWFWKNavigationActionData *)navigationAction - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier configurationIdentifier:(NSNumber *)configurationIdentifier navigationAction:(FWFWKNavigationActionData *)navigationAction completion:(void (^)(FlutterError *_Nullable))completion; /// Callback to Dart function `WKUIDelegate.requestMediaCapturePermission`. -- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - origin:(FWFWKSecurityOriginData *)origin - frame:(FWFWKFrameInfoData *)frame - type:(FWFWKMediaCaptureTypeData *)type - completion: - (void (^)( - FWFWKPermissionDecisionData *_Nullable, - FlutterError *_Nullable))completion; +- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier origin:(FWFWKSecurityOriginData *)origin frame:(FWFWKFrameInfoData *)frame type:(FWFWKMediaCaptureTypeData *)type completion:(void (^)(FWFWKPermissionDecisionData *_Nullable, FlutterError *_Nullable))completion; @end /// The codec used by FWFWKHttpCookieStoreHostApi. @@ -807,16 +684,11 @@ NSObject *FWFWKHttpCookieStoreHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkhttpcookiestore?language=objc. @protocol FWFWKHttpCookieStoreHostApi -- (void)createFromWebsiteDataStoreWithIdentifier:(NSNumber *)identifier - dataStoreIdentifier:(NSNumber *)websiteDataStoreIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setCookieForStoreWithIdentifier:(NSNumber *)identifier - cookie:(FWFNSHttpCookieData *)cookie - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)createFromWebsiteDataStoreWithIdentifier:(NSNumber *)identifier dataStoreIdentifier:(NSNumber *)websiteDataStoreIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setCookieForStoreWithIdentifier:(NSNumber *)identifier cookie:(FWFNSHttpCookieData *)cookie completion:(void (^)(FlutterError *_Nullable))completion; @end -extern void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFNSUrlHostApi. NSObject *FWFNSUrlHostApiGetCodec(void); @@ -829,13 +701,10 @@ NSObject *FWFNSUrlHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/foundation/nsurl?language=objc. @protocol FWFNSUrlHostApi -- (nullable NSString *)absoluteStringForNSURLWithIdentifier:(NSNumber *)identifier - error: - (FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)absoluteStringForNSURLWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFNSUrlHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFNSUrlHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFNSUrlFlutterApi. NSObject *FWFNSUrlFlutterApiGetCodec(void); @@ -849,8 +718,56 @@ NSObject *FWFNSUrlFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/foundation/nsurl?language=objc. @interface FWFNSUrlFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)createWithIdentifier:(NSNumber *)identifier - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)createWithIdentifier:(NSNumber *)identifier completion:(void (^)(FlutterError *_Nullable))completion; +@end + +/// The codec used by FWFNSUrlCredentialHostApi. +NSObject *FWFNSUrlCredentialHostApiGetCodec(void); + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +@protocol FWFNSUrlCredentialHostApi +/// Create a new native instance and add it to the `InstanceManager`. +- (void)createWithUserWithIdentifier:(NSNumber *)identifier user:(NSString *)user password:(NSString *)password persistence:(FWFNSUrlCredentialPersistence)persistence error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFNSUrlCredentialHostApiSetup(id binaryMessenger, NSObject *_Nullable api); + +/// The codec used by FWFNSUrlProtectionSpaceFlutterApi. +NSObject *FWFNSUrlProtectionSpaceFlutterApiGetCodec(void); + +/// Flutter API for `NSUrlProtectionSpace`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +@interface FWFNSUrlProtectionSpaceFlutterApi : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger; +/// Create a new Dart instance and add it to the `InstanceManager`. +- (void)createWithIdentifier:(NSNumber *)identifier host:(nullable NSString *)host realm:(nullable NSString *)realm authenticationMethod:(nullable NSString *)authenticationMethod completion:(void (^)(FlutterError *_Nullable))completion; +@end + +/// The codec used by FWFNSUrlAuthenticationChallengeFlutterApi. +NSObject *FWFNSUrlAuthenticationChallengeFlutterApiGetCodec(void); + +/// Flutter API for `NSUrlAuthenticationChallenge`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +@interface FWFNSUrlAuthenticationChallengeFlutterApi : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger; +/// Create a new Dart instance and add it to the `InstanceManager`. +- (void)createWithIdentifier:(NSNumber *)identifier protectionSpaceIdentifier:(NSNumber *)protectionSpaceIdentifier completion:(void (^)(FlutterError *_Nullable))completion; @end NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m index cc58067418e..a3e443fb41e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "FWFGeneratedWebKitApis.h" @@ -137,16 +137,20 @@ + (nullable FWFObjectOrIdentifier *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end +@interface FWFAuthenticationChallengeResponse () ++ (FWFAuthenticationChallengeResponse *)fromList:(NSArray *)list; ++ (nullable FWFAuthenticationChallengeResponse *)nullableFromList:(NSArray *)list; +- (NSArray *)toList; +@end + @implementation FWFNSKeyValueObservingOptionsEnumData + (instancetype)makeWithValue:(FWFNSKeyValueObservingOptionsEnum)value { - FWFNSKeyValueObservingOptionsEnumData *pigeonResult = - [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; + FWFNSKeyValueObservingOptionsEnumData* pigeonResult = [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFNSKeyValueObservingOptionsEnumData *)fromList:(NSArray *)list { - FWFNSKeyValueObservingOptionsEnumData *pigeonResult = - [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; + FWFNSKeyValueObservingOptionsEnumData *pigeonResult = [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -162,7 +166,7 @@ - (NSArray *)toList { @implementation FWFNSKeyValueChangeKeyEnumData + (instancetype)makeWithValue:(FWFNSKeyValueChangeKeyEnum)value { - FWFNSKeyValueChangeKeyEnumData *pigeonResult = [[FWFNSKeyValueChangeKeyEnumData alloc] init]; + FWFNSKeyValueChangeKeyEnumData* pigeonResult = [[FWFNSKeyValueChangeKeyEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -183,14 +187,12 @@ - (NSArray *)toList { @implementation FWFWKUserScriptInjectionTimeEnumData + (instancetype)makeWithValue:(FWFWKUserScriptInjectionTimeEnum)value { - FWFWKUserScriptInjectionTimeEnumData *pigeonResult = - [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; + FWFWKUserScriptInjectionTimeEnumData* pigeonResult = [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFWKUserScriptInjectionTimeEnumData *)fromList:(NSArray *)list { - FWFWKUserScriptInjectionTimeEnumData *pigeonResult = - [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; + FWFWKUserScriptInjectionTimeEnumData *pigeonResult = [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -206,14 +208,12 @@ - (NSArray *)toList { @implementation FWFWKAudiovisualMediaTypeEnumData + (instancetype)makeWithValue:(FWFWKAudiovisualMediaTypeEnum)value { - FWFWKAudiovisualMediaTypeEnumData *pigeonResult = - [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; + FWFWKAudiovisualMediaTypeEnumData* pigeonResult = [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFWKAudiovisualMediaTypeEnumData *)fromList:(NSArray *)list { - FWFWKAudiovisualMediaTypeEnumData *pigeonResult = - [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; + FWFWKAudiovisualMediaTypeEnumData *pigeonResult = [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -229,7 +229,7 @@ - (NSArray *)toList { @implementation FWFWKWebsiteDataTypeEnumData + (instancetype)makeWithValue:(FWFWKWebsiteDataTypeEnum)value { - FWFWKWebsiteDataTypeEnumData *pigeonResult = [[FWFWKWebsiteDataTypeEnumData alloc] init]; + FWFWKWebsiteDataTypeEnumData* pigeonResult = [[FWFWKWebsiteDataTypeEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -250,14 +250,12 @@ - (NSArray *)toList { @implementation FWFWKNavigationActionPolicyEnumData + (instancetype)makeWithValue:(FWFWKNavigationActionPolicyEnum)value { - FWFWKNavigationActionPolicyEnumData *pigeonResult = - [[FWFWKNavigationActionPolicyEnumData alloc] init]; + FWFWKNavigationActionPolicyEnumData* pigeonResult = [[FWFWKNavigationActionPolicyEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFWKNavigationActionPolicyEnumData *)fromList:(NSArray *)list { - FWFWKNavigationActionPolicyEnumData *pigeonResult = - [[FWFWKNavigationActionPolicyEnumData alloc] init]; + FWFWKNavigationActionPolicyEnumData *pigeonResult = [[FWFWKNavigationActionPolicyEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -273,14 +271,12 @@ - (NSArray *)toList { @implementation FWFNSHttpCookiePropertyKeyEnumData + (instancetype)makeWithValue:(FWFNSHttpCookiePropertyKeyEnum)value { - FWFNSHttpCookiePropertyKeyEnumData *pigeonResult = - [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; + FWFNSHttpCookiePropertyKeyEnumData* pigeonResult = [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFNSHttpCookiePropertyKeyEnumData *)fromList:(NSArray *)list { - FWFNSHttpCookiePropertyKeyEnumData *pigeonResult = - [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; + FWFNSHttpCookiePropertyKeyEnumData *pigeonResult = [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -296,7 +292,7 @@ - (NSArray *)toList { @implementation FWFWKPermissionDecisionData + (instancetype)makeWithValue:(FWFWKPermissionDecision)value { - FWFWKPermissionDecisionData *pigeonResult = [[FWFWKPermissionDecisionData alloc] init]; + FWFWKPermissionDecisionData* pigeonResult = [[FWFWKPermissionDecisionData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -317,7 +313,7 @@ - (NSArray *)toList { @implementation FWFWKMediaCaptureTypeData + (instancetype)makeWithValue:(FWFWKMediaCaptureType)value { - FWFWKMediaCaptureTypeData *pigeonResult = [[FWFWKMediaCaptureTypeData alloc] init]; + FWFWKMediaCaptureTypeData* pigeonResult = [[FWFWKMediaCaptureTypeData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -338,10 +334,10 @@ - (NSArray *)toList { @implementation FWFNSUrlRequestData + (instancetype)makeWithUrl:(NSString *)url - httpMethod:(nullable NSString *)httpMethod - httpBody:(nullable FlutterStandardTypedData *)httpBody - allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields { - FWFNSUrlRequestData *pigeonResult = [[FWFNSUrlRequestData alloc] init]; + httpMethod:(nullable NSString *)httpMethod + httpBody:(nullable FlutterStandardTypedData *)httpBody + allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields { + FWFNSUrlRequestData* pigeonResult = [[FWFNSUrlRequestData alloc] init]; pigeonResult.url = url; pigeonResult.httpMethod = httpMethod; pigeonResult.httpBody = httpBody; @@ -373,9 +369,9 @@ - (NSArray *)toList { @implementation FWFWKUserScriptData + (instancetype)makeWithSource:(NSString *)source - injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime - isMainFrameOnly:(NSNumber *)isMainFrameOnly { - FWFWKUserScriptData *pigeonResult = [[FWFWKUserScriptData alloc] init]; + injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime + isMainFrameOnly:(NSNumber *)isMainFrameOnly { + FWFWKUserScriptData* pigeonResult = [[FWFWKUserScriptData alloc] init]; pigeonResult.source = source; pigeonResult.injectionTime = injectionTime; pigeonResult.isMainFrameOnly = isMainFrameOnly; @@ -385,8 +381,7 @@ + (FWFWKUserScriptData *)fromList:(NSArray *)list { FWFWKUserScriptData *pigeonResult = [[FWFWKUserScriptData alloc] init]; pigeonResult.source = GetNullableObjectAtIndex(list, 0); NSAssert(pigeonResult.source != nil, @""); - pigeonResult.injectionTime = - [FWFWKUserScriptInjectionTimeEnumData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; + pigeonResult.injectionTime = [FWFWKUserScriptInjectionTimeEnumData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; pigeonResult.isMainFrameOnly = GetNullableObjectAtIndex(list, 2); NSAssert(pigeonResult.isMainFrameOnly != nil, @""); return pigeonResult; @@ -405,9 +400,9 @@ - (NSArray *)toList { @implementation FWFWKNavigationActionData + (instancetype)makeWithRequest:(FWFNSUrlRequestData *)request - targetFrame:(FWFWKFrameInfoData *)targetFrame - navigationType:(FWFWKNavigationType)navigationType { - FWFWKNavigationActionData *pigeonResult = [[FWFWKNavigationActionData alloc] init]; + targetFrame:(FWFWKFrameInfoData *)targetFrame + navigationType:(FWFWKNavigationType)navigationType { + FWFWKNavigationActionData* pigeonResult = [[FWFWKNavigationActionData alloc] init]; pigeonResult.request = request; pigeonResult.targetFrame = targetFrame; pigeonResult.navigationType = navigationType; @@ -417,8 +412,7 @@ + (FWFWKNavigationActionData *)fromList:(NSArray *)list { FWFWKNavigationActionData *pigeonResult = [[FWFWKNavigationActionData alloc] init]; pigeonResult.request = [FWFNSUrlRequestData nullableFromList:(GetNullableObjectAtIndex(list, 0))]; NSAssert(pigeonResult.request != nil, @""); - pigeonResult.targetFrame = - [FWFWKFrameInfoData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; + pigeonResult.targetFrame = [FWFWKFrameInfoData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; NSAssert(pigeonResult.targetFrame != nil, @""); pigeonResult.navigationType = [GetNullableObjectAtIndex(list, 2) integerValue]; return pigeonResult; @@ -437,7 +431,7 @@ - (NSArray *)toList { @implementation FWFWKFrameInfoData + (instancetype)makeWithIsMainFrame:(NSNumber *)isMainFrame { - FWFWKFrameInfoData *pigeonResult = [[FWFWKFrameInfoData alloc] init]; + FWFWKFrameInfoData* pigeonResult = [[FWFWKFrameInfoData alloc] init]; pigeonResult.isMainFrame = isMainFrame; return pigeonResult; } @@ -459,9 +453,9 @@ - (NSArray *)toList { @implementation FWFNSErrorData + (instancetype)makeWithCode:(NSNumber *)code - domain:(NSString *)domain - userInfo:(nullable NSDictionary *)userInfo { - FWFNSErrorData *pigeonResult = [[FWFNSErrorData alloc] init]; + domain:(NSString *)domain + userInfo:(nullable NSDictionary *)userInfo { + FWFNSErrorData* pigeonResult = [[FWFNSErrorData alloc] init]; pigeonResult.code = code; pigeonResult.domain = domain; pigeonResult.userInfo = userInfo; @@ -489,8 +483,9 @@ - (NSArray *)toList { @end @implementation FWFWKScriptMessageData -+ (instancetype)makeWithName:(NSString *)name body:(id)body { - FWFWKScriptMessageData *pigeonResult = [[FWFWKScriptMessageData alloc] init]; ++ (instancetype)makeWithName:(NSString *)name + body:(id )body { + FWFWKScriptMessageData* pigeonResult = [[FWFWKScriptMessageData alloc] init]; pigeonResult.name = name; pigeonResult.body = body; return pigeonResult; @@ -514,8 +509,10 @@ - (NSArray *)toList { @end @implementation FWFWKSecurityOriginData -+ (instancetype)makeWithHost:(NSString *)host port:(NSNumber *)port protocol:(NSString *)protocol { - FWFWKSecurityOriginData *pigeonResult = [[FWFWKSecurityOriginData alloc] init]; ++ (instancetype)makeWithHost:(NSString *)host + port:(NSNumber *)port + protocol:(NSString *)protocol { + FWFWKSecurityOriginData* pigeonResult = [[FWFWKSecurityOriginData alloc] init]; pigeonResult.host = host; pigeonResult.port = port; pigeonResult.protocol = protocol; @@ -545,8 +542,8 @@ - (NSArray *)toList { @implementation FWFNSHttpCookieData + (instancetype)makeWithPropertyKeys:(NSArray *)propertyKeys - propertyValues:(NSArray *)propertyValues { - FWFNSHttpCookieData *pigeonResult = [[FWFNSHttpCookieData alloc] init]; + propertyValues:(NSArray *)propertyValues { + FWFNSHttpCookieData* pigeonResult = [[FWFNSHttpCookieData alloc] init]; pigeonResult.propertyKeys = propertyKeys; pigeonResult.propertyValues = propertyValues; return pigeonResult; @@ -571,8 +568,9 @@ - (NSArray *)toList { @end @implementation FWFObjectOrIdentifier -+ (instancetype)makeWithValue:(id)value isIdentifier:(NSNumber *)isIdentifier { - FWFObjectOrIdentifier *pigeonResult = [[FWFObjectOrIdentifier alloc] init]; ++ (instancetype)makeWithValue:(id )value + isIdentifier:(NSNumber *)isIdentifier { + FWFObjectOrIdentifier* pigeonResult = [[FWFObjectOrIdentifier alloc] init]; pigeonResult.value = value; pigeonResult.isIdentifier = isIdentifier; return pigeonResult; @@ -595,12 +593,37 @@ - (NSArray *)toList { } @end +@implementation FWFAuthenticationChallengeResponse ++ (instancetype)makeWithDisposition:(FWFNSUrlSessionAuthChallengeDisposition)disposition + credentialIdentifier:(nullable NSNumber *)credentialIdentifier { + FWFAuthenticationChallengeResponse* pigeonResult = [[FWFAuthenticationChallengeResponse alloc] init]; + pigeonResult.disposition = disposition; + pigeonResult.credentialIdentifier = credentialIdentifier; + return pigeonResult; +} ++ (FWFAuthenticationChallengeResponse *)fromList:(NSArray *)list { + FWFAuthenticationChallengeResponse *pigeonResult = [[FWFAuthenticationChallengeResponse alloc] init]; + pigeonResult.disposition = [GetNullableObjectAtIndex(list, 0) integerValue]; + pigeonResult.credentialIdentifier = GetNullableObjectAtIndex(list, 1); + return pigeonResult; +} ++ (nullable FWFAuthenticationChallengeResponse *)nullableFromList:(NSArray *)list { + return (list) ? [FWFAuthenticationChallengeResponse fromList:list] : nil; +} +- (NSArray *)toList { + return @[ + @(self.disposition), + (self.credentialIdentifier ?: [NSNull null]), + ]; +} +@end + @interface FWFWKWebsiteDataStoreHostApiCodecReader : FlutterStandardReader @end @implementation FWFWKWebsiteDataStoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKWebsiteDataTypeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -636,36 +659,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKWebsiteDataStoreHostApiCodecReaderWriter *readerWriter = - [[FWFWKWebsiteDataStoreHostApiCodecReaderWriter alloc] init]; + FWFWKWebsiteDataStoreHostApiCodecReaderWriter *readerWriter = [[FWFWKWebsiteDataStoreHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi." - @"createFromWebViewConfiguration" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration" binaryMessenger:binaryMessenger - codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; + codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)], @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to @selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewConfigurationWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createFromWebViewConfigurationWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -673,16 +687,13 @@ void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenge } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi." - @"createDefaultDataStore" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore" binaryMessenger:binaryMessenger - codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; + codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createDefaultDataStoreWithIdentifier:error:)], - @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to " - @"@selector(createDefaultDataStoreWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createDefaultDataStoreWithIdentifier:error:)], @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to @selector(createDefaultDataStoreWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -695,30 +706,21 @@ void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenge } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi." - @"removeDataOfTypes" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes" binaryMessenger:binaryMessenger - codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; + codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector - (removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)], - @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to " - @"@selector(removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)", - api); + NSCAssert([api respondsToSelector:@selector(removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)], @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to @selector(removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSArray *arg_dataTypes = GetNullableObjectAtIndex(args, 1); NSNumber *arg_modificationTimeInSecondsSinceEpoch = GetNullableObjectAtIndex(args, 2); - [api removeDataFromDataStoreWithIdentifier:arg_identifier - ofTypes:arg_dataTypes - modifiedSince:arg_modificationTimeInSecondsSinceEpoch - completion:^(NSNumber *_Nullable output, - FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api removeDataFromDataStoreWithIdentifier:arg_identifier ofTypes:arg_dataTypes modifiedSince:arg_modificationTimeInSecondsSinceEpoch completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; @@ -731,20 +733,15 @@ void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenge return sSharedObject; } -void FWFUIViewHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFUIViewHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor" binaryMessenger:binaryMessenger - codec:FWFUIViewHostApiGetCodec()]; + codec:FWFUIViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setBackgroundColorForViewWithIdentifier: - toValue:error:)], - @"FWFUIViewHostApi api (%@) doesn't respond to " - @"@selector(setBackgroundColorForViewWithIdentifier:toValue:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setBackgroundColorForViewWithIdentifier:toValue:error:)], @"FWFUIViewHostApi api (%@) doesn't respond to @selector(setBackgroundColorForViewWithIdentifier:toValue:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -758,15 +755,13 @@ void FWFUIViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque" binaryMessenger:binaryMessenger - codec:FWFUIViewHostApiGetCodec()]; + codec:FWFUIViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setOpaqueForViewWithIdentifier:isOpaque:error:)], - @"FWFUIViewHostApi api (%@) doesn't respond to " - @"@selector(setOpaqueForViewWithIdentifier:isOpaque:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setOpaqueForViewWithIdentifier:isOpaque:error:)], @"FWFUIViewHostApi api (%@) doesn't respond to @selector(setOpaqueForViewWithIdentifier:isOpaque:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -786,28 +781,21 @@ void FWFUIViewHostApiSetup(id binaryMessenger, return sSharedObject; } -void FWFUIScrollViewHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFUIScrollViewHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier: - webViewIdentifier:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_webViewIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewWithIdentifier:arg_identifier - webViewIdentifier:arg_webViewIdentifier - error:&error]; + [api createFromWebViewWithIdentifier:arg_identifier webViewIdentifier:arg_webViewIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -815,22 +803,18 @@ void FWFUIScrollViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(contentOffsetForScrollViewWithIdentifier:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(contentOffsetForScrollViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(contentOffsetForScrollViewWithIdentifier:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(contentOffsetForScrollViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FlutterError *error; - NSArray *output = [api contentOffsetForScrollViewWithIdentifier:arg_identifier - error:&error]; + NSArray *output = [api contentOffsetForScrollViewWithIdentifier:arg_identifier error:&error]; callback(wrapResult(output, error)); }]; } else { @@ -838,15 +822,13 @@ void FWFUIScrollViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(scrollByForScrollViewWithIdentifier:x:y:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(scrollByForScrollViewWithIdentifier:x:y:error:)", - api); + NSCAssert([api respondsToSelector:@selector(scrollByForScrollViewWithIdentifier:x:y:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(scrollByForScrollViewWithIdentifier:x:y:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -861,27 +843,20 @@ void FWFUIScrollViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setContentOffsetForScrollViewWithIdentifier:toX:y:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(setContentOffsetForScrollViewWithIdentifier:toX:y:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setContentOffsetForScrollViewWithIdentifier:toX:y:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(setContentOffsetForScrollViewWithIdentifier:toX:y:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_x = GetNullableObjectAtIndex(args, 1); NSNumber *arg_y = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api setContentOffsetForScrollViewWithIdentifier:arg_identifier - toX:arg_x - y:arg_y - error:&error]; + [api setContentOffsetForScrollViewWithIdentifier:arg_identifier toX:arg_x y:arg_y error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -894,7 +869,7 @@ @interface FWFWKWebViewConfigurationHostApiCodecReader : FlutterStandardReader @implementation FWFWKWebViewConfigurationHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKAudiovisualMediaTypeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -930,26 +905,21 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKWebViewConfigurationHostApiCodecReaderWriter *readerWriter = - [[FWFWKWebViewConfigurationHostApiCodecReaderWriter alloc] init]; + FWFWKWebViewConfigurationHostApiCodecReaderWriter *readerWriter = [[FWFWKWebViewConfigurationHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKWebViewConfigurationHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKWebViewConfigurationHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -962,25 +932,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.createFromWebView" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier: - webViewIdentifier:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_webViewIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewWithIdentifier:arg_identifier - webViewIdentifier:arg_webViewIdentifier - error:&error]; + [api createFromWebViewWithIdentifier:arg_identifier webViewIdentifier:arg_webViewIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -988,26 +952,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector - (setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_allow = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:arg_identifier - isAllowed:arg_allow - error:&error]; + [api setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:arg_identifier isAllowed:arg_allow error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1015,27 +972,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier: - isLimited:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:" - @"isLimited:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:isLimited:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:isLimited:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_limit = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:arg_identifier - isLimited:arg_limit - error:&error]; + [api setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:arg_identifier isLimited:arg_limit error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1043,27 +992,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setMediaTypesRequiresUserActionForConfigurationWithIdentifier: - forTypes:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(setMediaTypesRequiresUserActionForConfigurationWithIdentifier:forTypes:" - @"error:)", - api); + NSCAssert([api respondsToSelector:@selector(setMediaTypesRequiresUserActionForConfigurationWithIdentifier:forTypes:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(setMediaTypesRequiresUserActionForConfigurationWithIdentifier:forTypes:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSArray *arg_types = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setMediaTypesRequiresUserActionForConfigurationWithIdentifier:arg_identifier - forTypes:arg_types - error:&error]; + [api setMediaTypesRequiresUserActionForConfigurationWithIdentifier:arg_identifier forTypes:arg_types error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1090,17 +1031,15 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)createWithIdentifier:(NSNumber *)arg_identifier - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create" - binaryMessenger:self.binaryMessenger - codec:FWFWKWebViewConfigurationFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; +- (void)createWithIdentifier:(NSNumber *)arg_identifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create" + binaryMessenger:self.binaryMessenger + codec:FWFWKWebViewConfigurationFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end @@ -1109,9 +1048,9 @@ @interface FWFWKUserContentControllerHostApiCodecReader : FlutterStandardReader @implementation FWFWKUserContentControllerHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKUserScriptData fromList:[self readValue]]; - case 129: + case 129: return [FWFWKUserScriptInjectionTimeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1150,36 +1089,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKUserContentControllerHostApiCodecReaderWriter *readerWriter = - [[FWFWKUserContentControllerHostApiCodecReaderWriter alloc] init]; + FWFWKUserContentControllerHostApiCodecReaderWriter *readerWriter = [[FWFWKUserContentControllerHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKUserContentControllerHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKUserContentControllerHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.createFromWebViewConfiguration" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewConfigurationWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createFromWebViewConfigurationWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1187,29 +1117,20 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.addScriptMessageHandler" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (addScriptMessageHandlerForControllerWithIdentifier: - handlerIdentifier:ofName:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(addScriptMessageHandlerForControllerWithIdentifier:handlerIdentifier:" - @"ofName:error:)", - api); + NSCAssert([api respondsToSelector:@selector(addScriptMessageHandlerForControllerWithIdentifier:handlerIdentifier:ofName:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(addScriptMessageHandlerForControllerWithIdentifier:handlerIdentifier:ofName:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_handlerIdentifier = GetNullableObjectAtIndex(args, 1); NSString *arg_name = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api addScriptMessageHandlerForControllerWithIdentifier:arg_identifier - handlerIdentifier:arg_handlerIdentifier - ofName:arg_name - error:&error]; + [api addScriptMessageHandlerForControllerWithIdentifier:arg_identifier handlerIdentifier:arg_handlerIdentifier ofName:arg_name error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1217,25 +1138,19 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.removeScriptMessageHandler" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (removeScriptMessageHandlerForControllerWithIdentifier:name:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(removeScriptMessageHandlerForControllerWithIdentifier:name:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeScriptMessageHandlerForControllerWithIdentifier:name:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(removeScriptMessageHandlerForControllerWithIdentifier:name:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_name = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api removeScriptMessageHandlerForControllerWithIdentifier:arg_identifier - name:arg_name - error:&error]; + [api removeScriptMessageHandlerForControllerWithIdentifier:arg_identifier name:arg_name error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1243,17 +1158,13 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.removeAllScriptMessageHandlers" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (removeAllScriptMessageHandlersForControllerWithIdentifier:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(removeAllScriptMessageHandlersForControllerWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeAllScriptMessageHandlersForControllerWithIdentifier:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(removeAllScriptMessageHandlersForControllerWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1266,25 +1177,19 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.addUserScript" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(addUserScriptForControllerWithIdentifier: - userScript:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(addUserScriptForControllerWithIdentifier:userScript:error:)", - api); + NSCAssert([api respondsToSelector:@selector(addUserScriptForControllerWithIdentifier:userScript:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(addUserScriptForControllerWithIdentifier:userScript:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FWFWKUserScriptData *arg_userScript = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api addUserScriptForControllerWithIdentifier:arg_identifier - userScript:arg_userScript - error:&error]; + [api addUserScriptForControllerWithIdentifier:arg_identifier userScript:arg_userScript error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1292,17 +1197,13 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.removeAllUserScripts" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (removeAllUserScriptsForControllerWithIdentifier:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(removeAllUserScriptsForControllerWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeAllUserScriptsForControllerWithIdentifier:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(removeAllUserScriptsForControllerWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1321,29 +1222,21 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes return sSharedObject; } -void FWFWKPreferencesHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKPreferencesHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi." - @"createFromWebViewConfiguration" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration" binaryMessenger:binaryMessenger - codec:FWFWKPreferencesHostApiGetCodec()]; + codec:FWFWKPreferencesHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKPreferencesHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)], @"FWFWKPreferencesHostApi api (%@) doesn't respond to @selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewConfigurationWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createFromWebViewConfigurationWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1351,25 +1244,19 @@ void FWFWKPreferencesHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi." - @"setJavaScriptEnabled" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled" binaryMessenger:binaryMessenger - codec:FWFWKPreferencesHostApiGetCodec()]; + codec:FWFWKPreferencesHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)], - @"FWFWKPreferencesHostApi api (%@) doesn't respond to " - @"@selector(setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)], @"FWFWKPreferencesHostApi api (%@) doesn't respond to @selector(setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_enabled = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setJavaScriptEnabledForPreferencesWithIdentifier:arg_identifier - isEnabled:arg_enabled - error:&error]; + [api setJavaScriptEnabledForPreferencesWithIdentifier:arg_identifier isEnabled:arg_enabled error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1383,19 +1270,15 @@ void FWFWKPreferencesHostApiSetup(id binaryMessenger, return sSharedObject; } -void FWFWKScriptMessageHandlerHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKScriptMessageHandlerHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKScriptMessageHandlerHostApiGetCodec()]; + codec:FWFWKScriptMessageHandlerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKScriptMessageHandlerHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKScriptMessageHandlerHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1413,7 +1296,7 @@ @interface FWFWKScriptMessageHandlerFlutterApiCodecReader : FlutterStandardReade @implementation FWFWKScriptMessageHandlerFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKScriptMessageData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1449,8 +1332,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter *readerWriter = - [[FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter alloc] init]; + FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter *readerWriter = [[FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -1469,23 +1351,15 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void) - didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)arg_identifier - userContentControllerIdentifier:(NSNumber *)arg_userContentControllerIdentifier - message:(FWFWKScriptMessageData *)arg_message - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage" - binaryMessenger:self.binaryMessenger - codec:FWFWKScriptMessageHandlerFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_userContentControllerIdentifier ?: [NSNull null], - arg_message ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; +- (void)didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)arg_identifier userContentControllerIdentifier:(NSNumber *)arg_userContentControllerIdentifier message:(FWFWKScriptMessageData *)arg_message completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage" + binaryMessenger:self.binaryMessenger + codec:FWFWKScriptMessageHandlerFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_userContentControllerIdentifier ?: [NSNull null], arg_message ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end @@ -1495,19 +1369,15 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina return sSharedObject; } -void FWFWKNavigationDelegateHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKNavigationDelegateHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKNavigationDelegateHostApiGetCodec()]; + codec:FWFWKNavigationDelegateHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKNavigationDelegateHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKNavigationDelegateHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1525,15 +1395,17 @@ @interface FWFWKNavigationDelegateFlutterApiCodecReader : FlutterStandardReader @implementation FWFWKNavigationDelegateFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: + return [FWFAuthenticationChallengeResponse fromList:[self readValue]]; + case 129: return [FWFNSErrorData fromList:[self readValue]]; - case 129: + case 130: return [FWFNSUrlRequestData fromList:[self readValue]]; - case 130: + case 131: return [FWFWKFrameInfoData fromList:[self readValue]]; - case 131: + case 132: return [FWFWKNavigationActionData fromList:[self readValue]]; - case 132: + case 133: return [FWFWKNavigationActionPolicyEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1545,21 +1417,24 @@ @interface FWFWKNavigationDelegateFlutterApiCodecWriter : FlutterStandardWriter @end @implementation FWFWKNavigationDelegateFlutterApiCodecWriter - (void)writeValue:(id)value { - if ([value isKindOfClass:[FWFNSErrorData class]]) { + if ([value isKindOfClass:[FWFAuthenticationChallengeResponse class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { + } else if ([value isKindOfClass:[FWFNSErrorData class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { + } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { + } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { [self writeByte:131]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { [self writeByte:132]; [self writeValue:[value toList]]; + } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { + [self writeByte:133]; + [self writeValue:[value toList]]; } else { [super writeValue:value]; } @@ -1581,8 +1456,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKNavigationDelegateFlutterApiCodecReaderWriter *readerWriter = - [[FWFWKNavigationDelegateFlutterApiCodecReaderWriter alloc] init]; + FWFWKNavigationDelegateFlutterApiCodecReaderWriter *readerWriter = [[FWFWKNavigationDelegateFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -1601,114 +1475,77 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - URL:(nullable NSString *)arg_url - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didFinishNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_url ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - URL:(nullable NSString *)arg_url - completion:(void (^)(FlutterError *_Nullable)) - completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didStartProvisionalNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_url ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - navigationAction:(FWFWKNavigationActionData *) - arg_navigationAction - completion: - (void (^)( - FWFWKNavigationActionPolicyEnumData - *_Nullable, - FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_navigationAction ?: [NSNull null] - ] - reply:^(id reply) { - FWFWKNavigationActionPolicyEnumData *output = reply; - completion(output, nil); - }]; -} -- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - error:(FWFNSErrorData *)arg_error - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didFailNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_error ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - error:(FWFNSErrorData *)arg_error - completion:(void (^)(FlutterError *_Nullable)) - completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didFailProvisionalNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_error ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier: - (NSNumber *)arg_webViewIdentifier - completion: - (void (^)(FlutterError *_Nullable)) - completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; +- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier URL:(nullable NSString *)arg_url completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_url ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier URL:(nullable NSString *)arg_url completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_url ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier navigationAction:(FWFWKNavigationActionData *)arg_navigationAction completion:(void (^)(FWFWKNavigationActionPolicyEnumData *_Nullable, FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_navigationAction ?: [NSNull null]] reply:^(id reply) { + FWFWKNavigationActionPolicyEnumData *output = reply; + completion(output, nil); + }]; +} +- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier error:(FWFNSErrorData *)arg_error completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_error ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier error:(FWFNSErrorData *)arg_error completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_error ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)didReceiveAuthenticationChallengeForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier challengeIdentifier:(NSNumber *)arg_challengeIdentifier completion:(void (^)(FWFAuthenticationChallengeResponse *_Nullable, FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_challengeIdentifier ?: [NSNull null]] reply:^(id reply) { + FWFAuthenticationChallengeResponse *output = reply; + completion(output, nil); + }]; } @end @@ -1717,7 +1554,7 @@ @interface FWFNSObjectHostApiCodecReader : FlutterStandardReader @implementation FWFNSObjectHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSKeyValueObservingOptionsEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1753,25 +1590,21 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFNSObjectHostApiCodecReaderWriter *readerWriter = - [[FWFNSObjectHostApiCodecReaderWriter alloc] init]; + FWFNSObjectHostApiCodecReaderWriter *readerWriter = [[FWFNSObjectHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFNSObjectHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFNSObjectHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose" binaryMessenger:binaryMessenger - codec:FWFNSObjectHostApiGetCodec()]; + codec:FWFNSObjectHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(disposeObjectWithIdentifier:error:)], - @"FWFNSObjectHostApi api (%@) doesn't respond to " - @"@selector(disposeObjectWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(disposeObjectWithIdentifier:error:)], @"FWFNSObjectHostApi api (%@) doesn't respond to @selector(disposeObjectWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1784,31 +1617,21 @@ void FWFNSObjectHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver" binaryMessenger:binaryMessenger - codec:FWFNSObjectHostApiGetCodec()]; + codec:FWFNSObjectHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (addObserverForObjectWithIdentifier: - observerIdentifier:keyPath:options:error:)], - @"FWFNSObjectHostApi api (%@) doesn't respond to " - @"@selector(addObserverForObjectWithIdentifier:observerIdentifier:keyPath:options:" - @"error:)", - api); + NSCAssert([api respondsToSelector:@selector(addObserverForObjectWithIdentifier:observerIdentifier:keyPath:options:error:)], @"FWFNSObjectHostApi api (%@) doesn't respond to @selector(addObserverForObjectWithIdentifier:observerIdentifier:keyPath:options:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_observerIdentifier = GetNullableObjectAtIndex(args, 1); NSString *arg_keyPath = GetNullableObjectAtIndex(args, 2); - NSArray *arg_options = - GetNullableObjectAtIndex(args, 3); + NSArray *arg_options = GetNullableObjectAtIndex(args, 3); FlutterError *error; - [api addObserverForObjectWithIdentifier:arg_identifier - observerIdentifier:arg_observerIdentifier - keyPath:arg_keyPath - options:arg_options - error:&error]; + [api addObserverForObjectWithIdentifier:arg_identifier observerIdentifier:arg_observerIdentifier keyPath:arg_keyPath options:arg_options error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1816,28 +1639,20 @@ void FWFNSObjectHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver" binaryMessenger:binaryMessenger - codec:FWFNSObjectHostApiGetCodec()]; + codec:FWFNSObjectHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(removeObserverForObjectWithIdentifier: - observerIdentifier:keyPath:error:)], - @"FWFNSObjectHostApi api (%@) doesn't respond to " - @"@selector(removeObserverForObjectWithIdentifier:observerIdentifier:keyPath:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeObserverForObjectWithIdentifier:observerIdentifier:keyPath:error:)], @"FWFNSObjectHostApi api (%@) doesn't respond to @selector(removeObserverForObjectWithIdentifier:observerIdentifier:keyPath:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_observerIdentifier = GetNullableObjectAtIndex(args, 1); NSString *arg_keyPath = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api removeObserverForObjectWithIdentifier:arg_identifier - observerIdentifier:arg_observerIdentifier - keyPath:arg_keyPath - error:&error]; + [api removeObserverForObjectWithIdentifier:arg_identifier observerIdentifier:arg_observerIdentifier keyPath:arg_keyPath error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1850,9 +1665,9 @@ @interface FWFNSObjectFlutterApiCodecReader : FlutterStandardReader @implementation FWFNSObjectFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSKeyValueChangeKeyEnumData fromList:[self readValue]]; - case 129: + case 129: return [FWFObjectOrIdentifier fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1891,8 +1706,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFNSObjectFlutterApiCodecReaderWriter *readerWriter = - [[FWFNSObjectFlutterApiCodecReaderWriter alloc] init]; + FWFNSObjectFlutterApiCodecReaderWriter *readerWriter = [[FWFNSObjectFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -1911,38 +1725,25 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)observeValueForObjectWithIdentifier:(NSNumber *)arg_identifier - keyPath:(NSString *)arg_keyPath - objectIdentifier:(NSNumber *)arg_objectIdentifier - changeKeys: - (NSArray *)arg_changeKeys - changeValues:(NSArray *)arg_changeValues - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue" - binaryMessenger:self.binaryMessenger - codec:FWFNSObjectFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_keyPath ?: [NSNull null], - arg_objectIdentifier ?: [NSNull null], arg_changeKeys ?: [NSNull null], - arg_changeValues ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)disposeObjectWithIdentifier:(NSNumber *)arg_identifier - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose" - binaryMessenger:self.binaryMessenger - codec:FWFNSObjectFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; +- (void)observeValueForObjectWithIdentifier:(NSNumber *)arg_identifier keyPath:(NSString *)arg_keyPath objectIdentifier:(NSNumber *)arg_objectIdentifier changeKeys:(NSArray *)arg_changeKeys changeValues:(NSArray *)arg_changeValues completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue" + binaryMessenger:self.binaryMessenger + codec:FWFNSObjectFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_keyPath ?: [NSNull null], arg_objectIdentifier ?: [NSNull null], arg_changeKeys ?: [NSNull null], arg_changeValues ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)disposeObjectWithIdentifier:(NSNumber *)arg_identifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose" + binaryMessenger:self.binaryMessenger + codec:FWFNSObjectFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end @@ -1951,41 +1752,43 @@ @interface FWFWKWebViewHostApiCodecReader : FlutterStandardReader @implementation FWFWKWebViewHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: + return [FWFAuthenticationChallengeResponse fromList:[self readValue]]; + case 129: return [FWFNSErrorData fromList:[self readValue]]; - case 129: + case 130: return [FWFNSHttpCookieData fromList:[self readValue]]; - case 130: + case 131: return [FWFNSHttpCookiePropertyKeyEnumData fromList:[self readValue]]; - case 131: + case 132: return [FWFNSKeyValueChangeKeyEnumData fromList:[self readValue]]; - case 132: + case 133: return [FWFNSKeyValueObservingOptionsEnumData fromList:[self readValue]]; - case 133: + case 134: return [FWFNSUrlRequestData fromList:[self readValue]]; - case 134: + case 135: return [FWFObjectOrIdentifier fromList:[self readValue]]; - case 135: + case 136: return [FWFWKAudiovisualMediaTypeEnumData fromList:[self readValue]]; - case 136: + case 137: return [FWFWKFrameInfoData fromList:[self readValue]]; - case 137: + case 138: return [FWFWKMediaCaptureTypeData fromList:[self readValue]]; - case 138: + case 139: return [FWFWKNavigationActionData fromList:[self readValue]]; - case 139: + case 140: return [FWFWKNavigationActionPolicyEnumData fromList:[self readValue]]; - case 140: + case 141: return [FWFWKPermissionDecisionData fromList:[self readValue]]; - case 141: + case 142: return [FWFWKScriptMessageData fromList:[self readValue]]; - case 142: + case 143: return [FWFWKSecurityOriginData fromList:[self readValue]]; - case 143: + case 144: return [FWFWKUserScriptData fromList:[self readValue]]; - case 144: + case 145: return [FWFWKUserScriptInjectionTimeEnumData fromList:[self readValue]]; - case 145: + case 146: return [FWFWKWebsiteDataTypeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1997,60 +1800,63 @@ @interface FWFWKWebViewHostApiCodecWriter : FlutterStandardWriter @end @implementation FWFWKWebViewHostApiCodecWriter - (void)writeValue:(id)value { - if ([value isKindOfClass:[FWFNSErrorData class]]) { + if ([value isKindOfClass:[FWFAuthenticationChallengeResponse class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSHttpCookieData class]]) { + } else if ([value isKindOfClass:[FWFNSErrorData class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSHttpCookiePropertyKeyEnumData class]]) { + } else if ([value isKindOfClass:[FWFNSHttpCookieData class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSKeyValueChangeKeyEnumData class]]) { + } else if ([value isKindOfClass:[FWFNSHttpCookiePropertyKeyEnumData class]]) { [self writeByte:131]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSKeyValueObservingOptionsEnumData class]]) { + } else if ([value isKindOfClass:[FWFNSKeyValueChangeKeyEnumData class]]) { [self writeByte:132]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { + } else if ([value isKindOfClass:[FWFNSKeyValueObservingOptionsEnumData class]]) { [self writeByte:133]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFObjectOrIdentifier class]]) { + } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { [self writeByte:134]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKAudiovisualMediaTypeEnumData class]]) { + } else if ([value isKindOfClass:[FWFObjectOrIdentifier class]]) { [self writeByte:135]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { + } else if ([value isKindOfClass:[FWFWKAudiovisualMediaTypeEnumData class]]) { [self writeByte:136]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKMediaCaptureTypeData class]]) { + } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { [self writeByte:137]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { + } else if ([value isKindOfClass:[FWFWKMediaCaptureTypeData class]]) { [self writeByte:138]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { [self writeByte:139]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKPermissionDecisionData class]]) { + } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { [self writeByte:140]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKScriptMessageData class]]) { + } else if ([value isKindOfClass:[FWFWKPermissionDecisionData class]]) { [self writeByte:141]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKSecurityOriginData class]]) { + } else if ([value isKindOfClass:[FWFWKScriptMessageData class]]) { [self writeByte:142]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKUserScriptData class]]) { + } else if ([value isKindOfClass:[FWFWKSecurityOriginData class]]) { [self writeByte:143]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKUserScriptInjectionTimeEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKUserScriptData class]]) { [self writeByte:144]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKWebsiteDataTypeEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKUserScriptInjectionTimeEnumData class]]) { [self writeByte:145]; [self writeValue:[value toList]]; + } else if ([value isKindOfClass:[FWFWKWebsiteDataTypeEnumData class]]) { + [self writeByte:146]; + [self writeValue:[value toList]]; } else { [super writeValue:value]; } @@ -2072,34 +1878,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKWebViewHostApiCodecReaderWriter *readerWriter = - [[FWFWKWebViewHostApiCodecReaderWriter alloc] init]; + FWFWKWebViewHostApiCodecReaderWriter *readerWriter = [[FWFWKWebViewHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKWebViewHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKWebViewHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:configurationIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(createWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2107,25 +1906,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setUIDelegateForWebViewWithIdentifier: - delegateIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setUIDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setUIDelegateForWebViewWithIdentifier:delegateIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setUIDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_uiDelegateIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setUIDelegateForWebViewWithIdentifier:arg_identifier - delegateIdentifier:arg_uiDelegateIdentifier - error:&error]; + [api setUIDelegateForWebViewWithIdentifier:arg_identifier delegateIdentifier:arg_uiDelegateIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2133,26 +1926,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi." - @"setNavigationDelegate" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(setNavigationDelegateForWebViewWithIdentifier: - delegateIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setNavigationDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setNavigationDelegateForWebViewWithIdentifier:delegateIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setNavigationDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_navigationDelegateIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setNavigationDelegateForWebViewWithIdentifier:arg_identifier - delegateIdentifier:arg_navigationDelegateIdentifier - error:&error]; + [api setNavigationDelegateForWebViewWithIdentifier:arg_identifier delegateIdentifier:arg_navigationDelegateIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2160,15 +1946,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(URLForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(URLForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(URLForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(URLForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2181,23 +1965,18 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(estimatedProgressForWebViewWithIdentifier: - error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(estimatedProgressForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(estimatedProgressForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(estimatedProgressForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FlutterError *error; - NSNumber *output = [api estimatedProgressForWebViewWithIdentifier:arg_identifier - error:&error]; + NSNumber *output = [api estimatedProgressForWebViewWithIdentifier:arg_identifier error:&error]; callback(wrapResult(output, error)); }]; } else { @@ -2205,16 +1984,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadRequestForWebViewWithIdentifier: - request:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadRequestForWebViewWithIdentifier:request:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadRequestForWebViewWithIdentifier:request:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadRequestForWebViewWithIdentifier:request:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2228,27 +2004,20 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadHTMLForWebViewWithIdentifier: - HTMLString:baseURL:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadHTMLForWebViewWithIdentifier:HTMLString:baseURL:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadHTMLForWebViewWithIdentifier:HTMLString:baseURL:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadHTMLForWebViewWithIdentifier:HTMLString:baseURL:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_string = GetNullableObjectAtIndex(args, 1); NSString *arg_baseUrl = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api loadHTMLForWebViewWithIdentifier:arg_identifier - HTMLString:arg_string - baseURL:arg_baseUrl - error:&error]; + [api loadHTMLForWebViewWithIdentifier:arg_identifier HTMLString:arg_string baseURL:arg_baseUrl error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2256,26 +2025,20 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_url = GetNullableObjectAtIndex(args, 1); NSString *arg_readAccessUrl = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api loadFileForWebViewWithIdentifier:arg_identifier - fileURL:arg_url - readAccessURL:arg_readAccessUrl - error:&error]; + [api loadFileForWebViewWithIdentifier:arg_identifier fileURL:arg_url readAccessURL:arg_readAccessUrl error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2283,17 +2046,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadAssetForWebViewWithIdentifier: - assetKey:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadAssetForWebViewWithIdentifier:assetKey:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadAssetForWebViewWithIdentifier:assetKey:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadAssetForWebViewWithIdentifier:assetKey:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2307,15 +2066,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(canGoBackForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(canGoBackForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(canGoBackForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(canGoBackForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2328,16 +2085,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(canGoForwardForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(canGoForwardForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(canGoForwardForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(canGoForwardForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2350,15 +2104,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(goBackForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(goBackForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(goBackForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(goBackForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2371,15 +2123,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(goForwardForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(goForwardForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(goForwardForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(goForwardForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2392,15 +2142,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(reloadWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(reloadWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(reloadWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(reloadWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2413,15 +2161,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(titleForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(titleForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(titleForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(titleForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2434,25 +2180,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi." - @"setAllowsBackForwardNavigationGestures" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_allow = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setAllowsBackForwardForWebViewWithIdentifier:arg_identifier - isAllowed:arg_allow - error:&error]; + [api setAllowsBackForwardForWebViewWithIdentifier:arg_identifier isAllowed:arg_allow error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2460,25 +2200,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_userAgent = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setCustomUserAgentForWebViewWithIdentifier:arg_identifier - userAgent:arg_userAgent - error:&error]; + [api setCustomUserAgentForWebViewWithIdentifier:arg_identifier userAgent:arg_userAgent error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2486,53 +2220,39 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector - (evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)", - api); + NSCAssert([api respondsToSelector:@selector(evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_javaScriptString = GetNullableObjectAtIndex(args, 1); - [api evaluateJavaScriptForWebViewWithIdentifier:arg_identifier - javaScriptString:arg_javaScriptString - completion:^(id _Nullable output, - FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api evaluateJavaScriptForWebViewWithIdentifier:arg_identifier javaScriptString:arg_javaScriptString completion:^(id _Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setInspectableForWebViewWithIdentifier: - inspectable:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setInspectableForWebViewWithIdentifier:inspectable:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setInspectableForWebViewWithIdentifier:inspectable:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setInspectableForWebViewWithIdentifier:inspectable:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_inspectable = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setInspectableForWebViewWithIdentifier:arg_identifier - inspectable:arg_inspectable - error:&error]; + [api setInspectableForWebViewWithIdentifier:arg_identifier inspectable:arg_inspectable error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2540,22 +2260,18 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(customUserAgentForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(customUserAgentForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(customUserAgentForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(customUserAgentForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FlutterError *error; - NSString *output = [api customUserAgentForWebViewWithIdentifier:arg_identifier - error:&error]; + NSString *output = [api customUserAgentForWebViewWithIdentifier:arg_identifier error:&error]; callback(wrapResult(output, error)); }]; } else { @@ -2569,18 +2285,15 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, return sSharedObject; } -void FWFWKUIDelegateHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKUIDelegateHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKUIDelegateHostApiGetCodec()]; + codec:FWFWKUIDelegateHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKUIDelegateHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKUIDelegateHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2598,17 +2311,17 @@ @interface FWFWKUIDelegateFlutterApiCodecReader : FlutterStandardReader @implementation FWFWKUIDelegateFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSUrlRequestData fromList:[self readValue]]; - case 129: + case 129: return [FWFWKFrameInfoData fromList:[self readValue]]; - case 130: + case 130: return [FWFWKMediaCaptureTypeData fromList:[self readValue]]; - case 131: + case 131: return [FWFWKNavigationActionData fromList:[self readValue]]; - case 132: + case 132: return [FWFWKPermissionDecisionData fromList:[self readValue]]; - case 133: + case 133: return [FWFWKSecurityOriginData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -2659,8 +2372,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKUIDelegateFlutterApiCodecReaderWriter *readerWriter = - [[FWFWKUIDelegateFlutterApiCodecReaderWriter alloc] init]; + FWFWKUIDelegateFlutterApiCodecReaderWriter *readerWriter = [[FWFWKUIDelegateFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -2679,46 +2391,26 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - configurationIdentifier:(NSNumber *)arg_configurationIdentifier - navigationAction:(FWFWKNavigationActionData *)arg_navigationAction - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView" - binaryMessenger:self.binaryMessenger - codec:FWFWKUIDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_configurationIdentifier ?: [NSNull null], arg_navigationAction ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - origin:(FWFWKSecurityOriginData *)arg_origin - frame:(FWFWKFrameInfoData *)arg_frame - type:(FWFWKMediaCaptureTypeData *)arg_type - completion: - (void (^)( - FWFWKPermissionDecisionData *_Nullable, - FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi." - @"requestMediaCapturePermission" - binaryMessenger:self.binaryMessenger - codec:FWFWKUIDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_origin ?: [NSNull null], arg_frame ?: [NSNull null], arg_type ?: [NSNull null] - ] - reply:^(id reply) { - FWFWKPermissionDecisionData *output = reply; - completion(output, nil); - }]; +- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier configurationIdentifier:(NSNumber *)arg_configurationIdentifier navigationAction:(FWFWKNavigationActionData *)arg_navigationAction completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView" + binaryMessenger:self.binaryMessenger + codec:FWFWKUIDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_configurationIdentifier ?: [NSNull null], arg_navigationAction ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier origin:(FWFWKSecurityOriginData *)arg_origin frame:(FWFWKFrameInfoData *)arg_frame type:(FWFWKMediaCaptureTypeData *)arg_type completion:(void (^)(FWFWKPermissionDecisionData *_Nullable, FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission" + binaryMessenger:self.binaryMessenger + codec:FWFWKUIDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_origin ?: [NSNull null], arg_frame ?: [NSNull null], arg_type ?: [NSNull null]] reply:^(id reply) { + FWFWKPermissionDecisionData *output = reply; + completion(output, nil); + }]; } @end @@ -2727,9 +2419,9 @@ @interface FWFWKHttpCookieStoreHostApiCodecReader : FlutterStandardReader @implementation FWFWKHttpCookieStoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSHttpCookieData fromList:[self readValue]]; - case 129: + case 129: return [FWFNSHttpCookiePropertyKeyEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -2768,35 +2460,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKHttpCookieStoreHostApiCodecReaderWriter *readerWriter = - [[FWFWKHttpCookieStoreHostApiCodecReaderWriter alloc] init]; + FWFWKHttpCookieStoreHostApiCodecReaderWriter *readerWriter = [[FWFWKHttpCookieStoreHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi." - @"createFromWebsiteDataStore" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore" binaryMessenger:binaryMessenger - codec:FWFWKHttpCookieStoreHostApiGetCodec()]; + codec:FWFWKHttpCookieStoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createFromWebsiteDataStoreWithIdentifier: - dataStoreIdentifier:error:)], - @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to " - @"@selector(createFromWebsiteDataStoreWithIdentifier:dataStoreIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebsiteDataStoreWithIdentifier:dataStoreIdentifier:error:)], @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to @selector(createFromWebsiteDataStoreWithIdentifier:dataStoreIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_websiteDataStoreIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebsiteDataStoreWithIdentifier:arg_identifier - dataStoreIdentifier:arg_websiteDataStoreIdentifier - error:&error]; + [api createFromWebsiteDataStoreWithIdentifier:arg_identifier dataStoreIdentifier:arg_websiteDataStoreIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2804,26 +2488,20 @@ void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie" binaryMessenger:binaryMessenger - codec:FWFWKHttpCookieStoreHostApiGetCodec()]; + codec:FWFWKHttpCookieStoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setCookieForStoreWithIdentifier: - cookie:completion:)], - @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to " - @"@selector(setCookieForStoreWithIdentifier:cookie:completion:)", - api); + NSCAssert([api respondsToSelector:@selector(setCookieForStoreWithIdentifier:cookie:completion:)], @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to @selector(setCookieForStoreWithIdentifier:cookie:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FWFNSHttpCookieData *arg_cookie = GetNullableObjectAtIndex(args, 1); - [api setCookieForStoreWithIdentifier:arg_identifier - cookie:arg_cookie - completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api setCookieForStoreWithIdentifier:arg_identifier cookie:arg_cookie completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; @@ -2836,19 +2514,15 @@ void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger return sSharedObject; } -void FWFNSUrlHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFNSUrlHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString" binaryMessenger:binaryMessenger - codec:FWFNSUrlHostApiGetCodec()]; + codec:FWFNSUrlHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(absoluteStringForNSURLWithIdentifier:error:)], - @"FWFNSUrlHostApi api (%@) doesn't respond to " - @"@selector(absoluteStringForNSURLWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(absoluteStringForNSURLWithIdentifier:error:)], @"FWFNSUrlHostApi api (%@) doesn't respond to @selector(absoluteStringForNSURLWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2880,15 +2554,108 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)createWithIdentifier:(NSNumber *)arg_identifier - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel +- (void)createWithIdentifier:(NSNumber *)arg_identifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create" - binaryMessenger:self.binaryMessenger - codec:FWFNSUrlFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; + binaryMessenger:self.binaryMessenger + codec:FWFNSUrlFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end + +NSObject *FWFNSUrlCredentialHostApiGetCodec(void) { + static FlutterStandardMessageCodec *sSharedObject = nil; + sSharedObject = [FlutterStandardMessageCodec sharedInstance]; + return sSharedObject; +} + +void FWFNSUrlCredentialHostApiSetup(id binaryMessenger, NSObject *api) { + /// Create a new native instance and add it to the `InstanceManager`. + { + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser" + binaryMessenger:binaryMessenger + codec:FWFNSUrlCredentialHostApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(createWithUserWithIdentifier:user:password:persistence:error:)], @"FWFNSUrlCredentialHostApi api (%@) doesn't respond to @selector(createWithUserWithIdentifier:user:password:persistence:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); + NSString *arg_user = GetNullableObjectAtIndex(args, 1); + NSString *arg_password = GetNullableObjectAtIndex(args, 2); + FWFNSUrlCredentialPersistence arg_persistence = [GetNullableObjectAtIndex(args, 3) integerValue]; + FlutterError *error; + [api createWithUserWithIdentifier:arg_identifier user:arg_user password:arg_password persistence:arg_persistence error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } +} +NSObject *FWFNSUrlProtectionSpaceFlutterApiGetCodec(void) { + static FlutterStandardMessageCodec *sSharedObject = nil; + sSharedObject = [FlutterStandardMessageCodec sharedInstance]; + return sSharedObject; +} + +@interface FWFNSUrlProtectionSpaceFlutterApi () +@property(nonatomic, strong) NSObject *binaryMessenger; +@end + +@implementation FWFNSUrlProtectionSpaceFlutterApi + +- (instancetype)initWithBinaryMessenger:(NSObject *)binaryMessenger { + self = [super init]; + if (self) { + _binaryMessenger = binaryMessenger; + } + return self; +} +- (void)createWithIdentifier:(NSNumber *)arg_identifier host:(nullable NSString *)arg_host realm:(nullable NSString *)arg_realm authenticationMethod:(nullable NSString *)arg_authenticationMethod completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlProtectionSpaceFlutterApi.create" + binaryMessenger:self.binaryMessenger + codec:FWFNSUrlProtectionSpaceFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_host ?: [NSNull null], arg_realm ?: [NSNull null], arg_authenticationMethod ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +@end + +NSObject *FWFNSUrlAuthenticationChallengeFlutterApiGetCodec(void) { + static FlutterStandardMessageCodec *sSharedObject = nil; + sSharedObject = [FlutterStandardMessageCodec sharedInstance]; + return sSharedObject; +} + +@interface FWFNSUrlAuthenticationChallengeFlutterApi () +@property(nonatomic, strong) NSObject *binaryMessenger; +@end + +@implementation FWFNSUrlAuthenticationChallengeFlutterApi + +- (instancetype)initWithBinaryMessenger:(NSObject *)binaryMessenger { + self = [super init]; + if (self) { + _binaryMessenger = binaryMessenger; + } + return self; +} +- (void)createWithIdentifier:(NSNumber *)arg_identifier protectionSpaceIdentifier:(NSNumber *)arg_protectionSpaceIdentifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create" + binaryMessenger:self.binaryMessenger + codec:FWFNSUrlAuthenticationChallengeFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_protectionSpaceIdentifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +@end + diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m index f8b5925f221..4b95e979e01 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m @@ -4,9 +4,13 @@ #import "FWFNavigationDelegateHostApi.h" #import "FWFDataConverters.h" +#import "FWFURLAuthenticationChallengeHostApi.h" #import "FWFWebViewConfigurationHostApi.h" @interface FWFNavigationDelegateFlutterApiImpl () +// BinaryMessenger must be weak to prevent a circular reference with the host API it +// references. +@property(nonatomic, weak) id binaryMessenger; // InstanceManager must be weak to prevent a circular reference with the object it stores. @property(nonatomic, weak) FWFInstanceManager *instanceManager; @end @@ -16,6 +20,7 @@ - (instancetype)initWithBinaryMessenger:(id)binaryMessen instanceManager:(FWFInstanceManager *)instanceManager { self = [self initWithBinaryMessenger:binaryMessenger]; if (self) { + _binaryMessenger = binaryMessenger; _instanceManager = instanceManager; } return self; @@ -105,6 +110,36 @@ - (void)webViewWebContentProcessDidTerminateForDelegate:(FWFNavigationDelegate * webViewIdentifier:webViewIdentifier completion:completion]; } + +- (void) + didReceiveAuthenticationChallengeForDelegate:(FWFNavigationDelegate *)instance + webView:(WKWebView *)webView + challenge:(NSURLAuthenticationChallenge *)challenge + completion: + (void (^)(FWFAuthenticationChallengeResponse *_Nullable, + FlutterError *_Nullable))completion { + NSNumber *webViewIdentifier = + @([self.instanceManager identifierWithStrongReferenceForInstance:webView]); + + FWFURLAuthenticationChallengeFlutterApiImpl *challengeApi = + [[FWFURLAuthenticationChallengeFlutterApiImpl alloc] + initWithBinaryMessenger:self.binaryMessenger + instanceManager:self.instanceManager]; + [challengeApi createWithInstance:challenge + protectionSpace:challenge.protectionSpace + completion:^(FlutterError *error) { + NSAssert(!error, @"%@", error); + }]; + + [self didReceiveAuthenticationChallengeForDelegateWithIdentifier: + @([self identifierForDelegate:instance]) + webViewIdentifier:webViewIdentifier + challengeIdentifier: + @([self.instanceManager + identifierWithStrongReferenceForInstance: + challenge]) + completion:completion]; +} @end @implementation FWFNavigationDelegate @@ -182,6 +217,36 @@ - (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView { NSAssert(!error, @"%@", error); }]; } + +- (void)webView:(WKWebView *)webView + didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, + NSURLCredential *_Nullable))completionHandler { + [self.navigationDelegateAPI + didReceiveAuthenticationChallengeForDelegate:self + webView:webView + challenge:challenge + completion:^(FWFAuthenticationChallengeResponse *response, + FlutterError *error) { + NSAssert(!error, @"%@", error); + if (!error) { + NSURLSessionAuthChallengeDisposition disposition = + FWFNativeNSURLSessionAuthChallengeDispositionFromFWFNSUrlSessionAuthChallengeDisposition( + response.disposition); + + NSURLCredential *credential = + response.credentialIdentifier + ? (NSURLCredential *)[self.navigationDelegateAPI + .instanceManager + instanceForIdentifier: + response.credentialIdentifier + .longValue] + : nil; + + completionHandler(disposition, credential); + } + }]; +} @end @interface FWFNavigationDelegateHostApiImpl () diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h new file mode 100644 index 00000000000..6100b703c29 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h @@ -0,0 +1,33 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "FWFGeneratedWebKitApis.h" +#import "FWFInstanceManager.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Flutter API implementation for `NSURLAuthenticationChallenge`. + * + * This class may handle instantiating and adding Dart instances that are attached to a native + * instance or sending callback methods from an overridden native class. + */ +@interface FWFURLAuthenticationChallengeFlutterApiImpl : NSObject +/** + * The Flutter API used to send messages back to Dart. + */ +@property FWFNSUrlAuthenticationChallengeFlutterApi *api; +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager; +/** + * Sends a message to Dart to create a new Dart instance and add it to the `InstanceManager`. + */ +- (void)createWithInstance:(NSURLAuthenticationChallenge *)instance + protectionSpace:(NSURLProtectionSpace *)protectionSpace + completion:(void (^)(FlutterError *_Nullable))completion; +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m new file mode 100644 index 00000000000..b1d5356e91a --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m @@ -0,0 +1,52 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "FWFURLAuthenticationChallengeHostApi.h" +#import "FWFURLProtectionSpaceHostApi.h" + +@interface FWFURLAuthenticationChallengeFlutterApiImpl () +// BinaryMessenger must be weak to prevent a circular reference with the host API it +// references. +@property(nonatomic, weak) id binaryMessenger; +// InstanceManager must be weak to prevent a circular reference with the object it stores. +@property(nonatomic, weak) FWFInstanceManager *instanceManager; +@end + +@implementation FWFURLAuthenticationChallengeFlutterApiImpl +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager { + self = [self init]; + if (self) { + _binaryMessenger = binaryMessenger; + _instanceManager = instanceManager; + _api = + [[FWFNSUrlAuthenticationChallengeFlutterApi alloc] initWithBinaryMessenger:binaryMessenger]; + } + return self; +} + +- (void)createWithInstance:(NSURLAuthenticationChallenge *)instance + protectionSpace:(NSURLProtectionSpace *)protectionSpace + completion:(void (^)(FlutterError *_Nullable))completion { + if ([self.instanceManager containsInstance:instance]) { + return; + } + + FWFURLProtectionSpaceFlutterApiImpl *protectionSpaceApi = + [[FWFURLProtectionSpaceFlutterApiImpl alloc] initWithBinaryMessenger:self.binaryMessenger + instanceManager:self.instanceManager]; + [protectionSpaceApi createWithInstance:protectionSpace + host:protectionSpace.host + realm:protectionSpace.realm + authenticationMethod:protectionSpace.authenticationMethod + completion:^(FlutterError *error) { + NSAssert(!error, @"%@", error); + }]; + + [self.api createWithIdentifier:@([self.instanceManager addHostCreatedInstance:instance]) + protectionSpaceIdentifier:@([self.instanceManager + identifierWithStrongReferenceForInstance:protectionSpace]) + completion:completion]; +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h new file mode 100644 index 00000000000..fe9b3d0d8d5 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h @@ -0,0 +1,24 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "FWFDataConverters.h" +#import "FWFGeneratedWebKitApis.h" +#import "FWFInstanceManager.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Host API implementation for `NSURLCredential`. + * + * This class may handle instantiating and adding native object instances that are attached to a + * Dart instance or method calls on the associated native class or an instance of the class. + */ +@interface FWFURLCredentialHostApiImpl : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager; +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m new file mode 100644 index 00000000000..1a1492d518b --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m @@ -0,0 +1,58 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "FWFURLCredentialHostApi.h" + +@interface FWFURLCredentialHostApiImpl () +// BinaryMessenger must be weak to prevent a circular reference with the host API it +// references. +@property(nonatomic, weak) id binaryMessenger; +// InstanceManager must be weak to prevent a circular reference with the object it stores. +@property(nonatomic, weak) FWFInstanceManager *instanceManager; +@end + +@implementation FWFURLCredentialHostApiImpl +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager { + self = [self init]; + if (self) { + _binaryMessenger = binaryMessenger; + _instanceManager = instanceManager; + } + return self; +} + +- (void)createWithUserWithIdentifier:(nonnull NSNumber *)identifier + user:(nonnull NSString *)user + password:(nonnull NSString *)password + persistence:(FWFNSUrlCredentialPersistence)persistence + error:(FlutterError *_Nullable __autoreleasing *_Nonnull)error { + [self.instanceManager + addDartCreatedInstance: + [NSURLCredential + credentialWithUser:user + password:password + persistence: + FWFNativeNSURLCredentialPersistenceFromFWFNSUrlCredentialPersistence( + persistence)] + withIdentifier:identifier.longValue]; +} + +- (nullable NSURL *)credentialForIdentifier:(NSNumber *)identifier + error: + (FlutterError *_Nullable __autoreleasing *_Nonnull)error { + NSURL *instance = (NSURL *)[self.instanceManager instanceForIdentifier:identifier.longValue]; + + if (!instance) { + NSString *message = + [NSString stringWithFormat:@"InstanceManager does not contain an NSURL with identifier: %@", + identifier]; + *error = [FlutterError errorWithCode:NSInternalInconsistencyException + message:message + details:nil]; + } + + return instance; +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h new file mode 100644 index 00000000000..5e57ab5404a --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h @@ -0,0 +1,35 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "FWFGeneratedWebKitApis.h" +#import "FWFInstanceManager.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Flutter API implementation for `NSURLProtectionSpace`. + * + * This class may handle instantiating and adding Dart instances that are attached to a native + * instance or sending callback methods from an overridden native class. + */ +@interface FWFURLProtectionSpaceFlutterApiImpl : NSObject +/** + * The Flutter API used to send messages back to Dart. + */ +@property FWFNSUrlProtectionSpaceFlutterApi *api; +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager; +/** + * Sends a message to Dart to create a new Dart instance and add it to the `InstanceManager`. + */ +- (void)createWithInstance:(NSURLProtectionSpace *)instance + host:(nullable NSString *)host + realm:(nullable NSString *)realm + authenticationMethod:(nullable NSString *)authenticationMethod + completion:(void (^)(FlutterError *_Nullable))completion; +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m new file mode 100644 index 00000000000..c00519907f0 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m @@ -0,0 +1,36 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "FWFURLProtectionSpaceHostApi.h" + +@interface FWFURLProtectionSpaceFlutterApiImpl () +// InstanceManager must be weak to prevent a circular reference with the object it stores. +@property(nonatomic, weak) FWFInstanceManager *instanceManager; +@end + +@implementation FWFURLProtectionSpaceFlutterApiImpl +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager { + self = [self init]; + if (self) { + _instanceManager = instanceManager; + _api = [[FWFNSUrlProtectionSpaceFlutterApi alloc] initWithBinaryMessenger:binaryMessenger]; + } + return self; +} + +- (void)createWithInstance:(NSURLProtectionSpace *)instance + host:(nullable NSString *)host + realm:(nullable NSString *)realm + authenticationMethod:(nullable NSString *)authenticationMethod + completion:(void (^)(FlutterError *_Nullable))completion { + if (![self.instanceManager containsInstance:instance]) { + [self.api createWithIdentifier:@([self.instanceManager addHostCreatedInstance:instance]) + host:host + realm:realm + authenticationMethod:authenticationMethod + completion:completion]; + } +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h index 283682957c2..6d97c07e374 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h @@ -16,7 +16,10 @@ #import "FWFScrollViewHostApi.h" #import "FWFUIDelegateHostApi.h" #import "FWFUIViewHostApi.h" +#import "FWFURLAuthenticationChallengeHostApi.h" +#import "FWFURLCredentialHostApi.h" #import "FWFURLHostApi.h" +#import "FWFURLProtectionSpaceHostApi.h" #import "FWFUserContentControllerHostApi.h" #import "FWFWebViewConfigurationHostApi.h" #import "FWFWebViewFlutterWKWebViewExternalAPI.h" 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 b0eaadeb739..e1491b34e99 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. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), 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, unused_shown_name, unnecessary_import @@ -112,32 +112,26 @@ enum WKNavigationType { /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypelinkactivated?language=objc. linkActivated, - /// A request to submit a form. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformsubmitted?language=objc. submitted, - /// A request for the frame’s next or previous item. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypebackforward?language=objc. backForward, - /// A request to reload the webpage. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypereload?language=objc. reload, - /// A request to resubmit a form. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformresubmitted?language=objc. formResubmitted, - /// A navigation request that originates for some other reason. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeother?language=objc. other, - /// An unknown navigation type. /// /// This does not represent an actual value provided by the platform and only @@ -153,12 +147,10 @@ enum WKPermissionDecision { /// /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiondeny?language=objc. deny, - /// Deny permission for the requested resource. /// /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiongrant?language=objc. grant, - /// Prompt the user for permission for the requested resource. /// /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisionprompt?language=objc. @@ -173,17 +165,14 @@ enum WKMediaCaptureType { /// /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecamera?language=objc. camera, - /// A media device or devices that can capture audio and video. /// /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecameraandmicrophone?language=objc. cameraAndMicrophone, - /// A media device that can capture audio. /// /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypemicrophone?language=objc. microphone, - /// An unknown media device. /// /// This does not represent an actual value provided by the platform and only @@ -191,6 +180,52 @@ enum WKMediaCaptureType { unknown, } +/// Responses to an authentication challenge. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition?language=objc. +enum NSUrlSessionAuthChallengeDisposition { + /// Use the specified credential, which may be nil. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeusecredential?language=objc. + useCredential, + /// Use the default handling for the challenge as though this delegate method + /// were not implemented. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeperformdefaulthandling?language=objc. + performDefaultHandling, + /// Cancel the entire request. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengecancelauthenticationchallenge?language=objc. + cancelAuthenticationChallenge, + /// Reject this challenge, and call the authentication delegate method again + /// with the next authentication protection space. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengerejectprotectionspace?language=objc. + rejectProtectionSpace, +} + +/// Specifies how long a credential will be kept. +enum NSUrlCredentialPersistence { + /// The credential should not be stored. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencenone?language=objc. + none, + /// The credential should be stored only for this session. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistenceforsession?language=objc. + session, + /// The credential should be stored in the keychain. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencepermanent?language=objc. + permanent, + /// The credential should be stored permanently in the keychain, and in + /// addition should be distributed to other devices based on the owning Apple + /// ID. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencesynchronizable?language=objc. + synchronizable, +} + class NSKeyValueObservingOptionsEnumData { NSKeyValueObservingOptionsEnumData({ required this.value, @@ -414,8 +449,7 @@ class NSUrlRequestData { url: result[0]! as String, httpMethod: result[1] as String?, httpBody: result[2] as Uint8List?, - allHttpHeaderFields: - (result[3] as Map?)!.cast(), + allHttpHeaderFields: (result[3] as Map?)!.cast(), ); } } @@ -449,8 +483,7 @@ class WKUserScriptData { return WKUserScriptData( source: result[0]! as String, injectionTime: result[1] != null - ? WKUserScriptInjectionTimeEnumData.decode( - result[1]! as List) + ? WKUserScriptInjectionTimeEnumData.decode(result[1]! as List) : null, isMainFrameOnly: result[2]! as bool, ); @@ -635,8 +668,7 @@ class NSHttpCookieData { static NSHttpCookieData decode(Object result) { result as List; return NSHttpCookieData( - propertyKeys: (result[0] as List?)! - .cast(), + propertyKeys: (result[0] as List?)!.cast(), propertyValues: (result[1] as List?)!.cast(), ); } @@ -673,6 +705,32 @@ class ObjectOrIdentifier { } } +class AuthenticationChallengeResponse { + AuthenticationChallengeResponse({ + required this.disposition, + this.credentialIdentifier, + }); + + NSUrlSessionAuthChallengeDisposition disposition; + + int? credentialIdentifier; + + Object encode() { + return [ + disposition.index, + credentialIdentifier, + ]; + } + + static AuthenticationChallengeResponse decode(Object result) { + result as List; + return AuthenticationChallengeResponse( + disposition: NSUrlSessionAuthChallengeDisposition.values[result[0]! as int], + credentialIdentifier: result[1] as int?, + ); + } +} + class _WKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { const _WKWebsiteDataStoreHostApiCodec(); @override @@ -688,7 +746,7 @@ class _WKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -709,15 +767,12 @@ class WKWebsiteDataStoreHostApi { static const MessageCodec codec = _WKWebsiteDataStoreHostApiCodec(); - Future createFromWebViewConfiguration( - int arg_identifier, int arg_configurationIdentifier) async { + Future createFromWebViewConfiguration(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -736,8 +791,7 @@ class WKWebsiteDataStoreHostApi { Future createDefaultDataStore(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -757,19 +811,12 @@ class WKWebsiteDataStoreHostApi { } } - Future removeDataOfTypes( - int arg_identifier, - List arg_dataTypes, - double arg_modificationTimeInSecondsSinceEpoch) async { + Future removeDataOfTypes(int arg_identifier, List arg_dataTypes, double arg_modificationTimeInSecondsSinceEpoch) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send([ - arg_identifier, - arg_dataTypes, - arg_modificationTimeInSecondsSinceEpoch - ]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_dataTypes, arg_modificationTimeInSecondsSinceEpoch]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -807,11 +854,10 @@ class UIViewHostApi { Future setBackgroundColor(int arg_identifier, int? arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_value]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -830,11 +876,10 @@ class UIViewHostApi { Future setOpaque(int arg_identifier, bool arg_opaque) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_opaque]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_opaque]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -865,15 +910,12 @@ class UIScrollViewHostApi { static const MessageCodec codec = StandardMessageCodec(); - Future createFromWebView( - int arg_identifier, int arg_webViewIdentifier) async { + Future createFromWebView(int arg_identifier, int arg_webViewIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_webViewIdentifier]) - as List?; + await channel.send([arg_identifier, arg_webViewIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -892,8 +934,7 @@ class UIScrollViewHostApi { Future> getContentOffset(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -920,11 +961,10 @@ class UIScrollViewHostApi { Future scrollBy(int arg_identifier, double arg_x, double arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -941,14 +981,12 @@ class UIScrollViewHostApi { } } - Future setContentOffset( - int arg_identifier, double arg_x, double arg_y) async { + Future setContentOffset(int arg_identifier, double arg_x, double arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -981,7 +1019,7 @@ class _WKWebViewConfigurationHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1000,13 +1038,11 @@ class WKWebViewConfigurationHostApi { : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = - _WKWebViewConfigurationHostApiCodec(); + static const MessageCodec codec = _WKWebViewConfigurationHostApiCodec(); Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1026,15 +1062,12 @@ class WKWebViewConfigurationHostApi { } } - Future createFromWebView( - int arg_identifier, int arg_webViewIdentifier) async { + Future createFromWebView(int arg_identifier, int arg_webViewIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_webViewIdentifier]) - as List?; + await channel.send([arg_identifier, arg_webViewIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1051,14 +1084,12 @@ class WKWebViewConfigurationHostApi { } } - Future setAllowsInlineMediaPlayback( - int arg_identifier, bool arg_allow) async { + Future setAllowsInlineMediaPlayback(int arg_identifier, bool arg_allow) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_allow]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_allow]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1075,14 +1106,12 @@ class WKWebViewConfigurationHostApi { } } - Future setLimitsNavigationsToAppBoundDomains( - int arg_identifier, bool arg_limit) async { + Future setLimitsNavigationsToAppBoundDomains(int arg_identifier, bool arg_limit) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_limit]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_limit]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1099,14 +1128,12 @@ class WKWebViewConfigurationHostApi { } } - Future setMediaTypesRequiringUserActionForPlayback(int arg_identifier, - List arg_types) async { + Future setMediaTypesRequiringUserActionForPlayback(int arg_identifier, List arg_types) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_types]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_types]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1132,19 +1159,17 @@ abstract class WKWebViewConfigurationFlutterApi { void create(int identifier); - static void setup(WKWebViewConfigurationFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WKWebViewConfigurationFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1175,9 +1200,9 @@ class _WKUserContentControllerHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKUserScriptData.decode(readValue(buffer)!); - case 129: + case 129: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1196,18 +1221,14 @@ class WKUserContentControllerHostApi { : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = - _WKUserContentControllerHostApiCodec(); + static const MessageCodec codec = _WKUserContentControllerHostApiCodec(); - Future createFromWebViewConfiguration( - int arg_identifier, int arg_configurationIdentifier) async { + Future createFromWebViewConfiguration(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1224,15 +1245,12 @@ class WKUserContentControllerHostApi { } } - Future addScriptMessageHandler( - int arg_identifier, int arg_handlerIdentifier, String arg_name) async { + Future addScriptMessageHandler(int arg_identifier, int arg_handlerIdentifier, String arg_name) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_handlerIdentifier, arg_name]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_handlerIdentifier, arg_name]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1249,14 +1267,12 @@ class WKUserContentControllerHostApi { } } - Future removeScriptMessageHandler( - int arg_identifier, String arg_name) async { + Future removeScriptMessageHandler(int arg_identifier, String arg_name) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_name]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_name]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1275,8 +1291,7 @@ class WKUserContentControllerHostApi { Future removeAllScriptMessageHandlers(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1296,14 +1311,12 @@ class WKUserContentControllerHostApi { } } - Future addUserScript( - int arg_identifier, WKUserScriptData arg_userScript) async { + Future addUserScript(int arg_identifier, WKUserScriptData arg_userScript) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_userScript]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_userScript]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1322,8 +1335,7 @@ class WKUserContentControllerHostApi { Future removeAllUserScripts(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1357,15 +1369,12 @@ class WKPreferencesHostApi { static const MessageCodec codec = StandardMessageCodec(); - Future createFromWebViewConfiguration( - int arg_identifier, int arg_configurationIdentifier) async { + Future createFromWebViewConfiguration(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1382,14 +1391,12 @@ class WKPreferencesHostApi { } } - Future setJavaScriptEnabled( - int arg_identifier, bool arg_enabled) async { + Future setJavaScriptEnabled(int arg_identifier, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1422,8 +1429,7 @@ class WKScriptMessageHandlerHostApi { Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1459,7 +1465,7 @@ class _WKScriptMessageHandlerFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKScriptMessageData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1471,25 +1477,21 @@ class _WKScriptMessageHandlerFlutterApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?language=objc. abstract class WKScriptMessageHandlerFlutterApi { - static const MessageCodec codec = - _WKScriptMessageHandlerFlutterApiCodec(); + static const MessageCodec codec = _WKScriptMessageHandlerFlutterApiCodec(); - void didReceiveScriptMessage(int identifier, - int userContentControllerIdentifier, WKScriptMessageData message); + void didReceiveScriptMessage(int identifier, int userContentControllerIdentifier, WKScriptMessageData message); - static void setup(WKScriptMessageHandlerFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WKScriptMessageHandlerFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1497,12 +1499,10 @@ abstract class WKScriptMessageHandlerFlutterApi { final int? arg_userContentControllerIdentifier = (args[1] as int?); assert(arg_userContentControllerIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null, expected non-null int.'); - final WKScriptMessageData? arg_message = - (args[2] as WKScriptMessageData?); + final WKScriptMessageData? arg_message = (args[2] as WKScriptMessageData?); assert(arg_message != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null, expected non-null WKScriptMessageData.'); - api.didReceiveScriptMessage(arg_identifier!, - arg_userContentControllerIdentifier!, arg_message!); + api.didReceiveScriptMessage(arg_identifier!, arg_userContentControllerIdentifier!, arg_message!); return; }); } @@ -1525,8 +1525,7 @@ class WKNavigationDelegateHostApi { Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1551,21 +1550,24 @@ class _WKNavigationDelegateFlutterApiCodec extends StandardMessageCodec { const _WKNavigationDelegateFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is NSErrorData) { + if (value is AuthenticationChallengeResponse) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is NSUrlRequestData) { + } else if (value is NSErrorData) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is WKFrameInfoData) { + } else if (value is NSUrlRequestData) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionData) { + } else if (value is WKFrameInfoData) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionPolicyEnumData) { + } else if (value is WKNavigationActionData) { buffer.putUint8(132); writeValue(buffer, value.encode()); + } else if (value is WKNavigationActionPolicyEnumData) { + buffer.putUint8(133); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -1574,15 +1576,17 @@ class _WKNavigationDelegateFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: + return AuthenticationChallengeResponse.decode(readValue(buffer)!); + case 129: return NSErrorData.decode(readValue(buffer)!); - case 129: + case 130: return NSUrlRequestData.decode(readValue(buffer)!); - case 130: + case 131: return WKFrameInfoData.decode(readValue(buffer)!); - case 131: + case 132: return WKNavigationActionData.decode(readValue(buffer)!); - case 132: + case 133: return WKNavigationActionPolicyEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1594,41 +1598,33 @@ class _WKNavigationDelegateFlutterApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc. abstract class WKNavigationDelegateFlutterApi { - static const MessageCodec codec = - _WKNavigationDelegateFlutterApiCodec(); + static const MessageCodec codec = _WKNavigationDelegateFlutterApiCodec(); void didFinishNavigation(int identifier, int webViewIdentifier, String? url); - void didStartProvisionalNavigation( - int identifier, int webViewIdentifier, String? url); + void didStartProvisionalNavigation(int identifier, int webViewIdentifier, String? url); - Future decidePolicyForNavigationAction( - int identifier, - int webViewIdentifier, - WKNavigationActionData navigationAction); + Future decidePolicyForNavigationAction(int identifier, int webViewIdentifier, WKNavigationActionData navigationAction); - void didFailNavigation( - int identifier, int webViewIdentifier, NSErrorData error); + void didFailNavigation(int identifier, int webViewIdentifier, NSErrorData error); - void didFailProvisionalNavigation( - int identifier, int webViewIdentifier, NSErrorData error); + void didFailProvisionalNavigation(int identifier, int webViewIdentifier, NSErrorData error); - void webViewWebContentProcessDidTerminate( - int identifier, int webViewIdentifier); + void webViewWebContentProcessDidTerminate(int identifier, int webViewIdentifier); - static void setup(WKNavigationDelegateFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + Future didReceiveAuthenticationChallenge(int identifier, int webViewIdentifier, int challengeIdentifier); + + static void setup(WKNavigationDelegateFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1637,23 +1633,21 @@ abstract class WKNavigationDelegateFlutterApi { assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation was null, expected non-null int.'); final String? arg_url = (args[2] as String?); - api.didFinishNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_url); + api.didFinishNavigation(arg_identifier!, arg_webViewIdentifier!, arg_url); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1662,23 +1656,21 @@ abstract class WKNavigationDelegateFlutterApi { assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation was null, expected non-null int.'); final String? arg_url = (args[2] as String?); - api.didStartProvisionalNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_url); + api.didStartProvisionalNavigation(arg_identifier!, arg_webViewIdentifier!, arg_url); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1686,28 +1678,24 @@ abstract class WKNavigationDelegateFlutterApi { final int? arg_webViewIdentifier = (args[1] as int?); assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null, expected non-null int.'); - final WKNavigationActionData? arg_navigationAction = - (args[2] as WKNavigationActionData?); + final WKNavigationActionData? arg_navigationAction = (args[2] as WKNavigationActionData?); assert(arg_navigationAction != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null, expected non-null WKNavigationActionData.'); - final WKNavigationActionPolicyEnumData output = - await api.decidePolicyForNavigationAction(arg_identifier!, - arg_webViewIdentifier!, arg_navigationAction!); + final WKNavigationActionPolicyEnumData output = await api.decidePolicyForNavigationAction(arg_identifier!, arg_webViewIdentifier!, arg_navigationAction!); return output; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1718,23 +1706,21 @@ abstract class WKNavigationDelegateFlutterApi { final NSErrorData? arg_error = (args[2] as NSErrorData?); assert(arg_error != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation was null, expected non-null NSErrorData.'); - api.didFailNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_error!); + api.didFailNavigation(arg_identifier!, arg_webViewIdentifier!, arg_error!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1745,23 +1731,21 @@ abstract class WKNavigationDelegateFlutterApi { final NSErrorData? arg_error = (args[2] as NSErrorData?); assert(arg_error != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation was null, expected non-null NSErrorData.'); - api.didFailProvisionalNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_error!); + api.didFailProvisionalNavigation(arg_identifier!, arg_webViewIdentifier!, arg_error!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1769,12 +1753,36 @@ abstract class WKNavigationDelegateFlutterApi { final int? arg_webViewIdentifier = (args[1] as int?); assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate was null, expected non-null int.'); - api.webViewWebContentProcessDidTerminate( - arg_identifier!, arg_webViewIdentifier!); + api.webViewWebContentProcessDidTerminate(arg_identifier!, arg_webViewIdentifier!); return; }); } } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge 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_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge was null, expected non-null int.'); + final int? arg_webViewIdentifier = (args[1] as int?); + assert(arg_webViewIdentifier != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge was null, expected non-null int.'); + final int? arg_challengeIdentifier = (args[2] as int?); + assert(arg_challengeIdentifier != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge was null, expected non-null int.'); + final AuthenticationChallengeResponse output = await api.didReceiveAuthenticationChallenge(arg_identifier!, arg_webViewIdentifier!, arg_challengeIdentifier!); + return output; + }); + } + } } } @@ -1793,7 +1801,7 @@ class _NSObjectHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1816,8 +1824,7 @@ class NSObjectHostApi { Future dispose(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1837,21 +1844,12 @@ class NSObjectHostApi { } } - Future addObserver( - int arg_identifier, - int arg_observerIdentifier, - String arg_keyPath, - List arg_options) async { + Future addObserver(int arg_identifier, int arg_observerIdentifier, String arg_keyPath, List arg_options) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send([ - arg_identifier, - arg_observerIdentifier, - arg_keyPath, - arg_options - ]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_observerIdentifier, arg_keyPath, arg_options]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1868,15 +1866,12 @@ class NSObjectHostApi { } } - Future removeObserver(int arg_identifier, int arg_observerIdentifier, - String arg_keyPath) async { + Future removeObserver(int arg_identifier, int arg_observerIdentifier, String arg_keyPath) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send( - [arg_identifier, arg_observerIdentifier, arg_keyPath]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_observerIdentifier, arg_keyPath]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1912,9 +1907,9 @@ class _NSObjectFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSKeyValueChangeKeyEnumData.decode(readValue(buffer)!); - case 129: + case 129: return ObjectOrIdentifier.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1928,28 +1923,21 @@ class _NSObjectFlutterApiCodec extends StandardMessageCodec { abstract class NSObjectFlutterApi { static const MessageCodec codec = _NSObjectFlutterApiCodec(); - void observeValue( - int identifier, - String keyPath, - int objectIdentifier, - List changeKeys, - List changeValues); + void observeValue(int identifier, String keyPath, int objectIdentifier, List changeKeys, List changeValues); void dispose(int identifier); - static void setup(NSObjectFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NSObjectFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1960,31 +1948,27 @@ abstract class NSObjectFlutterApi { final int? arg_objectIdentifier = (args[2] as int?); assert(arg_objectIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null, expected non-null int.'); - final List? arg_changeKeys = - (args[3] as List?)?.cast(); + final List? arg_changeKeys = (args[3] as List?)?.cast(); assert(arg_changeKeys != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null, expected non-null List.'); - final List? arg_changeValues = - (args[4] as List?)?.cast(); + final List? arg_changeValues = (args[4] as List?)?.cast(); assert(arg_changeValues != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null, expected non-null List.'); - api.observeValue(arg_identifier!, arg_keyPath!, arg_objectIdentifier!, - arg_changeKeys!, arg_changeValues!); + api.observeValue(arg_identifier!, arg_keyPath!, arg_objectIdentifier!, arg_changeKeys!, arg_changeValues!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2001,60 +1985,63 @@ class _WKWebViewHostApiCodec extends StandardMessageCodec { const _WKWebViewHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is NSErrorData) { + if (value is AuthenticationChallengeResponse) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookieData) { + } else if (value is NSErrorData) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookiePropertyKeyEnumData) { + } else if (value is NSHttpCookieData) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueChangeKeyEnumData) { + } else if (value is NSHttpCookiePropertyKeyEnumData) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueObservingOptionsEnumData) { + } else if (value is NSKeyValueChangeKeyEnumData) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is NSUrlRequestData) { + } else if (value is NSKeyValueObservingOptionsEnumData) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is ObjectOrIdentifier) { + } else if (value is NSUrlRequestData) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is WKAudiovisualMediaTypeEnumData) { + } else if (value is ObjectOrIdentifier) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is WKFrameInfoData) { + } else if (value is WKAudiovisualMediaTypeEnumData) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is WKMediaCaptureTypeData) { + } else if (value is WKFrameInfoData) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionData) { + } else if (value is WKMediaCaptureTypeData) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionPolicyEnumData) { + } else if (value is WKNavigationActionData) { buffer.putUint8(139); writeValue(buffer, value.encode()); - } else if (value is WKPermissionDecisionData) { + } else if (value is WKNavigationActionPolicyEnumData) { buffer.putUint8(140); writeValue(buffer, value.encode()); - } else if (value is WKScriptMessageData) { + } else if (value is WKPermissionDecisionData) { buffer.putUint8(141); writeValue(buffer, value.encode()); - } else if (value is WKSecurityOriginData) { + } else if (value is WKScriptMessageData) { buffer.putUint8(142); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptData) { + } else if (value is WKSecurityOriginData) { buffer.putUint8(143); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptInjectionTimeEnumData) { + } else if (value is WKUserScriptData) { buffer.putUint8(144); writeValue(buffer, value.encode()); - } else if (value is WKWebsiteDataTypeEnumData) { + } else if (value is WKUserScriptInjectionTimeEnumData) { buffer.putUint8(145); writeValue(buffer, value.encode()); + } else if (value is WKWebsiteDataTypeEnumData) { + buffer.putUint8(146); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -2063,41 +2050,43 @@ class _WKWebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: + return AuthenticationChallengeResponse.decode(readValue(buffer)!); + case 129: return NSErrorData.decode(readValue(buffer)!); - case 129: + case 130: return NSHttpCookieData.decode(readValue(buffer)!); - case 130: + case 131: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); - case 131: + case 132: return NSKeyValueChangeKeyEnumData.decode(readValue(buffer)!); - case 132: + case 133: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); - case 133: + case 134: return NSUrlRequestData.decode(readValue(buffer)!); - case 134: + case 135: return ObjectOrIdentifier.decode(readValue(buffer)!); - case 135: + case 136: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); - case 136: + case 137: return WKFrameInfoData.decode(readValue(buffer)!); - case 137: + case 138: return WKMediaCaptureTypeData.decode(readValue(buffer)!); - case 138: + case 139: return WKNavigationActionData.decode(readValue(buffer)!); - case 139: + case 140: return WKNavigationActionPolicyEnumData.decode(readValue(buffer)!); - case 140: + case 141: return WKPermissionDecisionData.decode(readValue(buffer)!); - case 141: + case 142: return WKScriptMessageData.decode(readValue(buffer)!); - case 142: + case 143: return WKSecurityOriginData.decode(readValue(buffer)!); - case 143: + case 144: return WKUserScriptData.decode(readValue(buffer)!); - case 144: + case 145: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); - case 145: + case 146: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2118,15 +2107,12 @@ class WKWebViewHostApi { static const MessageCodec codec = _WKWebViewHostApiCodec(); - Future create( - int arg_identifier, int arg_configurationIdentifier) async { + Future create(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2143,15 +2129,12 @@ class WKWebViewHostApi { } } - Future setUIDelegate( - int arg_identifier, int? arg_uiDelegateIdentifier) async { + Future setUIDelegate(int arg_identifier, int? arg_uiDelegateIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_uiDelegateIdentifier]) - as List?; + await channel.send([arg_identifier, arg_uiDelegateIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2168,15 +2151,12 @@ class WKWebViewHostApi { } } - Future setNavigationDelegate( - int arg_identifier, int? arg_navigationDelegateIdentifier) async { + Future setNavigationDelegate(int arg_identifier, int? arg_navigationDelegateIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_navigationDelegateIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_navigationDelegateIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2195,8 +2175,7 @@ class WKWebViewHostApi { Future getUrl(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2218,8 +2197,7 @@ class WKWebViewHostApi { Future getEstimatedProgress(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2244,14 +2222,12 @@ class WKWebViewHostApi { } } - Future loadRequest( - int arg_identifier, NSUrlRequestData arg_request) async { + Future loadRequest(int arg_identifier, NSUrlRequestData arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_request]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_request]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2268,15 +2244,12 @@ class WKWebViewHostApi { } } - Future loadHtmlString( - int arg_identifier, String arg_string, String? arg_baseUrl) async { + Future loadHtmlString(int arg_identifier, String arg_string, String? arg_baseUrl) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_string, arg_baseUrl]) - as List?; + await channel.send([arg_identifier, arg_string, arg_baseUrl]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2293,15 +2266,12 @@ class WKWebViewHostApi { } } - Future loadFileUrl( - int arg_identifier, String arg_url, String arg_readAccessUrl) async { + Future loadFileUrl(int arg_identifier, String arg_url, String arg_readAccessUrl) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_url, arg_readAccessUrl]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_url, arg_readAccessUrl]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2320,11 +2290,10 @@ class WKWebViewHostApi { Future loadFlutterAsset(int arg_identifier, String arg_key) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_key]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_key]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2343,8 +2312,7 @@ class WKWebViewHostApi { Future canGoBack(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2371,8 +2339,7 @@ class WKWebViewHostApi { Future canGoForward(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2399,8 +2366,7 @@ class WKWebViewHostApi { Future goBack(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2422,8 +2388,7 @@ class WKWebViewHostApi { Future goForward(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2445,8 +2410,7 @@ class WKWebViewHostApi { Future reload(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2468,8 +2432,7 @@ class WKWebViewHostApi { Future getTitle(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2489,14 +2452,12 @@ class WKWebViewHostApi { } } - Future setAllowsBackForwardNavigationGestures( - int arg_identifier, bool arg_allow) async { + Future setAllowsBackForwardNavigationGestures(int arg_identifier, bool arg_allow) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_allow]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_allow]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2513,14 +2474,12 @@ class WKWebViewHostApi { } } - Future setCustomUserAgent( - int arg_identifier, String? arg_userAgent) async { + Future setCustomUserAgent(int arg_identifier, String? arg_userAgent) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_userAgent]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_userAgent]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2537,15 +2496,12 @@ class WKWebViewHostApi { } } - Future evaluateJavaScript( - int arg_identifier, String arg_javaScriptString) async { + Future evaluateJavaScript(int arg_identifier, String arg_javaScriptString) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_javaScriptString]) - as List?; + await channel.send([arg_identifier, arg_javaScriptString]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2564,11 +2520,10 @@ class WKWebViewHostApi { Future setInspectable(int arg_identifier, bool arg_inspectable) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_inspectable]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_inspectable]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2587,8 +2542,7 @@ class WKWebViewHostApi { Future getCustomUserAgent(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2624,8 +2578,7 @@ class WKUIDelegateHostApi { Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2676,17 +2629,17 @@ class _WKUIDelegateFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSUrlRequestData.decode(readValue(buffer)!); - case 129: + case 129: return WKFrameInfoData.decode(readValue(buffer)!); - case 130: + case 130: return WKMediaCaptureTypeData.decode(readValue(buffer)!); - case 131: + case 131: return WKNavigationActionData.decode(readValue(buffer)!); - case 132: + case 132: return WKPermissionDecisionData.decode(readValue(buffer)!); - case 133: + case 133: return WKSecurityOriginData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2700,30 +2653,22 @@ class _WKUIDelegateFlutterApiCodec extends StandardMessageCodec { abstract class WKUIDelegateFlutterApi { static const MessageCodec codec = _WKUIDelegateFlutterApiCodec(); - void onCreateWebView(int identifier, int webViewIdentifier, - int configurationIdentifier, WKNavigationActionData navigationAction); + void onCreateWebView(int identifier, int webViewIdentifier, int configurationIdentifier, WKNavigationActionData navigationAction); /// Callback to Dart function `WKUIDelegate.requestMediaCapturePermission`. - Future requestMediaCapturePermission( - int identifier, - int webViewIdentifier, - WKSecurityOriginData origin, - WKFrameInfoData frame, - WKMediaCaptureTypeData type); - - static void setup(WKUIDelegateFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + Future requestMediaCapturePermission(int identifier, int webViewIdentifier, WKSecurityOriginData origin, WKFrameInfoData frame, WKMediaCaptureTypeData type); + + static void setup(WKUIDelegateFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2734,27 +2679,24 @@ abstract class WKUIDelegateFlutterApi { final int? arg_configurationIdentifier = (args[2] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null, expected non-null int.'); - final WKNavigationActionData? arg_navigationAction = - (args[3] as WKNavigationActionData?); + final WKNavigationActionData? arg_navigationAction = (args[3] as WKNavigationActionData?); assert(arg_navigationAction != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null, expected non-null WKNavigationActionData.'); - api.onCreateWebView(arg_identifier!, arg_webViewIdentifier!, - arg_configurationIdentifier!, arg_navigationAction!); + api.onCreateWebView(arg_identifier!, arg_webViewIdentifier!, arg_configurationIdentifier!, arg_navigationAction!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2762,20 +2704,16 @@ abstract class WKUIDelegateFlutterApi { final int? arg_webViewIdentifier = (args[1] as int?); assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null int.'); - final WKSecurityOriginData? arg_origin = - (args[2] as WKSecurityOriginData?); + final WKSecurityOriginData? arg_origin = (args[2] as WKSecurityOriginData?); assert(arg_origin != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null WKSecurityOriginData.'); final WKFrameInfoData? arg_frame = (args[3] as WKFrameInfoData?); assert(arg_frame != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null WKFrameInfoData.'); - final WKMediaCaptureTypeData? arg_type = - (args[4] as WKMediaCaptureTypeData?); + final WKMediaCaptureTypeData? arg_type = (args[4] as WKMediaCaptureTypeData?); assert(arg_type != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null WKMediaCaptureTypeData.'); - final WKPermissionDecisionData output = - await api.requestMediaCapturePermission(arg_identifier!, - arg_webViewIdentifier!, arg_origin!, arg_frame!, arg_type!); + final WKPermissionDecisionData output = await api.requestMediaCapturePermission(arg_identifier!, arg_webViewIdentifier!, arg_origin!, arg_frame!, arg_type!); return output; }); } @@ -2801,9 +2739,9 @@ class _WKHttpCookieStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSHttpCookieData.decode(readValue(buffer)!); - case 129: + case 129: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2824,15 +2762,12 @@ class WKHttpCookieStoreHostApi { static const MessageCodec codec = _WKHttpCookieStoreHostApiCodec(); - Future createFromWebsiteDataStore( - int arg_identifier, int arg_websiteDataStoreIdentifier) async { + Future createFromWebsiteDataStore(int arg_identifier, int arg_websiteDataStoreIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_websiteDataStoreIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_websiteDataStoreIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2849,14 +2784,12 @@ class WKHttpCookieStoreHostApi { } } - Future setCookie( - int arg_identifier, NSHttpCookieData arg_cookie) async { + Future setCookie(int arg_identifier, NSHttpCookieData arg_cookie) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_cookie]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_cookie]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2893,8 +2826,7 @@ class NSUrlHostApi { Future getAbsoluteString(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2930,15 +2862,14 @@ abstract class NSUrlFlutterApi { static void setup(NSUrlFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2950,3 +2881,122 @@ abstract class NSUrlFlutterApi { } } } + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +class NSUrlCredentialHostApi { + /// Constructor for [NSUrlCredentialHostApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + NSUrlCredentialHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; + final BinaryMessenger? _binaryMessenger; + + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new native instance and add it to the `InstanceManager`. + Future createWithUser(int arg_identifier, String arg_user, String arg_password, NSUrlCredentialPersistence arg_persistence) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_identifier, arg_user, arg_password, arg_persistence.index]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } +} + +/// Flutter API for `NSUrlProtectionSpace`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +abstract class NSUrlProtectionSpaceFlutterApi { + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int identifier, String? host, String? realm, String? authenticationMethod); + + static void setup(NSUrlProtectionSpaceFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlProtectionSpaceFlutterApi.create', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlProtectionSpaceFlutterApi.create 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_wkwebview.NSUrlProtectionSpaceFlutterApi.create was null, expected non-null int.'); + final String? arg_host = (args[1] as String?); + final String? arg_realm = (args[2] as String?); + final String? arg_authenticationMethod = (args[3] as String?); + api.create(arg_identifier!, arg_host, arg_realm, arg_authenticationMethod); + return; + }); + } + } + } +} + +/// Flutter API for `NSUrlAuthenticationChallenge`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +abstract class NSUrlAuthenticationChallengeFlutterApi { + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int identifier, int protectionSpaceIdentifier); + + static void setup(NSUrlAuthenticationChallengeFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create 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_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create was null, expected non-null int.'); + final int? arg_protectionSpaceIdentifier = (args[1] as int?); + assert(arg_protectionSpaceIdentifier != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create was null, expected non-null int.'); + api.create(arg_identifier!, arg_protectionSpaceIdentifier!); + return; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart index 3fe1a57c1b2..131b6111d02 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart @@ -9,6 +9,9 @@ import '../common/instance_manager.dart'; import '../common/weak_reference_utils.dart'; import 'foundation_api_impls.dart'; +export 'foundation_api_impls.dart' + show NSUrlSessionAuthChallengeDisposition, NSUrlCredentialPersistence; + /// The values that can be returned in a change map. /// /// Wraps [NSKeyValueObservingOptions](https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions?language=objc). @@ -387,3 +390,120 @@ class NSObject with Copyable { ); } } + +/// An authentication credential consisting of information specific to the type +/// of credential and the type of persistent storage to use, if any. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +class NSUrlCredential extends NSObject { + /// Creates a URL credential instance for internet password authentication + /// with a given user name and password, using a given persistence setting. + NSUrlCredential.withUser({ + required String user, + required String password, + required NSUrlCredentialPersistence persistence, + @visibleForTesting super.binaryMessenger, + @visibleForTesting super.instanceManager, + }) : _urlCredentialApi = NSUrlCredentialHostApiImpl( + binaryMessenger: binaryMessenger, instanceManager: instanceManager), + super.detached() { + // Ensures Flutter Apis are setup. + FoundationFlutterApis.instance.ensureSetUp(); + _urlCredentialApi.createWithUserFromInstances( + this, + user, + password, + persistence, + ); + } + + /// Instantiates a [NSUrlCredential] without creating and attaching to an + /// instance of the associated native class. + /// + /// This should only be used outside of tests by subclasses created by this + /// library or to create a copy for an [InstanceManager]. + @protected + NSUrlCredential.detached({super.binaryMessenger, super.instanceManager}) + : _urlCredentialApi = NSUrlCredentialHostApiImpl( + binaryMessenger: binaryMessenger, instanceManager: instanceManager), + super.detached(); + + final NSUrlCredentialHostApiImpl _urlCredentialApi; + + @override + NSObject copy() { + return NSUrlCredential.detached( + binaryMessenger: _urlCredentialApi.binaryMessenger, + instanceManager: _urlCredentialApi.instanceManager, + ); + } +} + +/// A server or an area on a server, commonly referred to as a realm, that +/// requires authentication. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +class NSUrlProtectionSpace extends NSObject { + /// Instantiates a [NSUrlProtectionSpace] without creating and attaching to an + /// instance of the associated native class. + /// + /// This should only be used outside of tests by subclasses created by this + /// library or to create a copy for an [InstanceManager]. + @protected + NSUrlProtectionSpace.detached({ + required this.host, + required this.realm, + required this.authenticationMethod, + super.binaryMessenger, + super.instanceManager, + }) : super.detached(); + + /// The receiver’s host. + final String? host; + + /// The receiver’s authentication realm. + final String? realm; + + /// The authentication method used by the receiver. + final String? authenticationMethod; + + @override + NSUrlProtectionSpace copy() { + return NSUrlProtectionSpace.detached( + host: host, + realm: realm, + authenticationMethod: authenticationMethod, + ); + } +} + +/// Use HTTP basic authentication for this protection space. +const String urlAuthenticationMethodHTTPBasic = + 'NSURLAuthenticationMethodHTTPBasic'; + +/// A challenge from a server requiring authentication from the client. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +class NSUrlAuthenticationChallenge extends NSObject { + /// Instantiates a [NSUrlAuthenticationChallenge] without creating and + /// attaching to an instance of the associated native class. + /// + /// This should only be used outside of tests by subclasses created by this + /// library or to create a copy for an [InstanceManager]. + @protected + NSUrlAuthenticationChallenge.detached({ + required this.protectionSpace, + super.binaryMessenger, + super.instanceManager, + }) : super.detached(); + + /// The receiver’s protection space. + late final NSUrlProtectionSpace protectionSpace; + + @override + NSUrlAuthenticationChallenge copy() { + return NSUrlAuthenticationChallenge.detached( + protectionSpace: protectionSpace, + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart index 4f73c082558..7bd1259e2f7 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart @@ -9,6 +9,9 @@ import '../common/instance_manager.dart'; import '../common/web_kit.g.dart'; import 'foundation.dart'; +export '../common/web_kit.g.dart' + show NSUrlSessionAuthChallengeDisposition, NSUrlCredentialPersistence; + Iterable _toNSKeyValueObservingOptionsEnumData( Iterable options, @@ -56,6 +59,14 @@ class FoundationFlutterApis { url = NSUrlFlutterApiImpl( binaryMessenger: binaryMessenger, instanceManager: instanceManager, + ), + urlProtectionSpace = NSUrlProtectionSpaceFlutterApiImpl( + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, + ), + urlAuthenticationChallenge = NSUrlAuthenticationChallengeFlutterApiImpl( + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, ); static FoundationFlutterApis _instance = FoundationFlutterApis(); @@ -82,6 +93,14 @@ class FoundationFlutterApis { @visibleForTesting final NSUrlFlutterApiImpl url; + /// Flutter Api for [NSUrlProtectionSpace]. + @visibleForTesting + final NSUrlProtectionSpaceFlutterApiImpl urlProtectionSpace; + + /// Flutter Api for [NSUrlAuthenticationChallenge]. + @visibleForTesting + final NSUrlAuthenticationChallengeFlutterApiImpl urlAuthenticationChallenge; + /// Ensures all the Flutter APIs have been set up to receive calls from native code. void ensureSetUp() { if (!_hasBeenSetUp) { @@ -90,6 +109,14 @@ class FoundationFlutterApis { binaryMessenger: _binaryMessenger, ); NSUrlFlutterApi.setup(url, binaryMessenger: _binaryMessenger); + NSUrlProtectionSpaceFlutterApi.setup( + urlProtectionSpace, + binaryMessenger: _binaryMessenger, + ); + NSUrlAuthenticationChallengeFlutterApi.setup( + urlAuthenticationChallenge, + binaryMessenger: _binaryMessenger, + ); _hasBeenSetUp = true; } } @@ -249,3 +276,121 @@ class NSUrlFlutterApiImpl implements NSUrlFlutterApi { ); } } + +/// Host api implementation for [NSUrlCredential]. +class NSUrlCredentialHostApiImpl extends NSUrlCredentialHostApi { + /// Constructs an [NSUrlCredentialHostApiImpl]. + NSUrlCredentialHostApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? NSObject.globalInstanceManager, + super(binaryMessenger: binaryMessenger); + + /// Sends binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with Objective-C objects. + final InstanceManager instanceManager; + + /// Calls [createWithUser] with the ids of the provided object instances. + Future createWithUserFromInstances( + NSUrlCredential instance, + String user, + String password, + NSUrlCredentialPersistence persistence, + ) { + return createWithUser( + instanceManager.addDartCreatedInstance(instance), + user, + password, + persistence, + ); + } +} + +/// Flutter API implementation for [NSUrlProtectionSpace]. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +@protected +class NSUrlProtectionSpaceFlutterApiImpl + implements NSUrlProtectionSpaceFlutterApi { + /// Constructs a [NSUrlProtectionSpaceFlutterApiImpl]. + NSUrlProtectionSpaceFlutterApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? NSObject.globalInstanceManager; + + /// Receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager instanceManager; + + @override + void create( + int identifier, + String? host, + String? realm, + String? authenticationMethod, + ) { + instanceManager.addHostCreatedInstance( + NSUrlProtectionSpace.detached( + host: host, + realm: realm, + authenticationMethod: authenticationMethod, + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, + ), + identifier, + ); + } +} + +/// Flutter API implementation for [NSUrlAuthenticationChallenge]. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +@protected +class NSUrlAuthenticationChallengeFlutterApiImpl + implements NSUrlAuthenticationChallengeFlutterApi { + /// Constructs a [NSUrlAuthenticationChallengeFlutterApiImpl]. + NSUrlAuthenticationChallengeFlutterApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? NSObject.globalInstanceManager; + + /// Receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager instanceManager; + + @override + void create( + int identifier, + int protectionSpaceIdentifier, + ) { + instanceManager.addHostCreatedInstance( + NSUrlAuthenticationChallenge.detached( + protectionSpace: instanceManager.getInstanceWithWeakReference( + protectionSpaceIdentifier, + )!, + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, + ), + identifier, + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart index db9f41c2851..b5bfcd9d346 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart @@ -830,6 +830,7 @@ class WKNavigationDelegate extends NSObject { this.didFailNavigation, this.didFailProvisionalNavigation, this.webViewWebContentProcessDidTerminate, + this.didReceiveAuthenticationChallenge, super.observeValue, super.binaryMessenger, super.instanceManager, @@ -855,6 +856,7 @@ class WKNavigationDelegate extends NSObject { this.didFailNavigation, this.didFailProvisionalNavigation, this.webViewWebContentProcessDidTerminate, + this.didReceiveAuthenticationChallenge, super.observeValue, super.binaryMessenger, super.instanceManager, @@ -901,6 +903,16 @@ class WKNavigationDelegate extends NSObject { /// {@macro webview_flutter_wkwebview.foundation.callbacks} final void Function(WKWebView webView)? webViewWebContentProcessDidTerminate; + /// Called when the delegate needs a response to an authentication challenge. + final void Function( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + )? didReceiveAuthenticationChallenge; + @override WKNavigationDelegate copy() { return WKNavigationDelegate.detached( @@ -911,6 +923,7 @@ class WKNavigationDelegate extends NSObject { didFailProvisionalNavigation: didFailProvisionalNavigation, webViewWebContentProcessDidTerminate: webViewWebContentProcessDidTerminate, + didReceiveAuthenticationChallenge: didReceiveAuthenticationChallenge, observeValue: observeValue, binaryMessenger: _navigationDelegateApi.binaryMessenger, instanceManager: _navigationDelegateApi.instanceManager, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart index ee545d45b71..bb86f2b5bcc 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:async'; + import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; @@ -904,6 +906,53 @@ class WKNavigationDelegateFlutterApiImpl as WKWebView, ); } + + @override + Future didReceiveAuthenticationChallenge( + int identifier, + int webViewIdentifier, + int challengeIdentifier, + ) async { + final void Function( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ), + )? function = _getDelegate(identifier).didReceiveAuthenticationChallenge; + + if (function == null) { + return AuthenticationChallengeResponse( + disposition: NSUrlSessionAuthChallengeDisposition.rejectProtectionSpace, + ); + } + + final Completer responseCompleter = + Completer(); + + function.call( + instanceManager.getInstanceWithWeakReference(webViewIdentifier)! + as WKWebView, + instanceManager.getInstanceWithWeakReference(challengeIdentifier)! + as NSUrlAuthenticationChallenge, + ( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) { + responseCompleter.complete( + AuthenticationChallengeResponse( + disposition: disposition, + credentialIdentifier: credential != null + ? instanceManager.getIdentifier(credential) + : null, + ), + ); + }, + ); + + return responseCompleter.future; + } } /// Host api implementation for [WKWebView]. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart index 68ce9132021..4b0c4ccd993 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart @@ -71,6 +71,14 @@ class WebKitProxy { void Function(WKWebView webView, NSError error)? didFailProvisionalNavigation, void Function(WKWebView webView)? webViewWebContentProcessDidTerminate, + void Function( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + )? didReceiveAuthenticationChallenge, }) createNavigationDelegate; /// Constructs a [WKUIDelegate]. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index d15b2825182..897093a1004 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -948,6 +948,54 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ); } }, + didReceiveAuthenticationChallenge: ( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + ) { + if (challenge.protectionSpace.authenticationMethod == + urlAuthenticationMethodHTTPBasic) { + final void Function(HttpBasicAuthRequest)? callback = + weakThis.target?._onHttpAuthRequest; + final String? host = challenge.protectionSpace.host; + final String? realm = challenge.protectionSpace.realm; + + if (callback != null && host != null && realm != null) { + callback( + HttpBasicAuthRequest( + onProceed: (String username, String password) { + return completionHandler( + NSUrlSessionAuthChallengeDisposition.useCredential, + NSUrlCredential.withUser( + user: username, + password: password, + persistence: NSUrlCredentialPersistence.session, + ), + ); + }, + onCancel: () { + completionHandler( + NSUrlSessionAuthChallengeDisposition + .cancelAuthenticationChallenge, + null, + ); + }, + host: host, + realm: realm, + ), + ); + return; + } + } + + completionHandler( + NSUrlSessionAuthChallengeDisposition.performDefaultHandling, + null, + ); + }, ); } @@ -960,6 +1008,7 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { WebResourceErrorCallback? _onWebResourceError; NavigationRequestCallback? _onNavigationRequest; UrlChangeCallback? _onUrlChange; + HttpAuthRequestCallback? _onHttpAuthRequest; @override Future setOnPageFinished(PageEventCallback onPageFinished) async { @@ -994,6 +1043,13 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async { _onUrlChange = onUrlChange; } + + @override + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback onHttpAuthRequest, + ) async { + _onHttpAuthRequest = onHttpAuthRequest; + } } /// WebKit implementation of [PlatformWebViewPermissionRequest]. 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 8e9e16ff425..c4894692f57 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart @@ -258,6 +258,58 @@ class WKMediaCaptureTypeData { late WKMediaCaptureType value; } +/// Responses to an authentication challenge. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition?language=objc. +enum NSUrlSessionAuthChallengeDisposition { + /// Use the specified credential, which may be nil. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeusecredential?language=objc. + useCredential, + + /// Use the default handling for the challenge as though this delegate method + /// were not implemented. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeperformdefaulthandling?language=objc. + performDefaultHandling, + + /// Cancel the entire request. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengecancelauthenticationchallenge?language=objc. + cancelAuthenticationChallenge, + + /// Reject this challenge, and call the authentication delegate method again + /// with the next authentication protection space. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengerejectprotectionspace?language=objc. + rejectProtectionSpace, +} + +/// Specifies how long a credential will be kept. +enum NSUrlCredentialPersistence { + /// The credential should not be stored. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencenone?language=objc. + none, + + /// The credential should be stored only for this session. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistenceforsession?language=objc. + session, + + /// The credential should be stored in the keychain. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencepermanent?language=objc. + permanent, + + /// The credential should be stored permanently in the keychain, and in + /// addition should be distributed to other devices based on the owning Apple + /// ID. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencesynchronizable?language=objc. + synchronizable, +} + /// Mirror of NSURLRequest. /// /// See https://developer.apple.com/documentation/foundation/nsurlrequest?language=objc. @@ -343,6 +395,11 @@ class ObjectOrIdentifier { late bool isIdentifier; } +class AuthenticationChallengeResponse { + late NSUrlSessionAuthChallengeDisposition disposition; + late int? credentialIdentifier; +} + /// Mirror of WKWebsiteDataStore. /// /// See https://developer.apple.com/documentation/webkit/wkwebsitedatastore?language=objc. @@ -582,6 +639,16 @@ abstract class WKNavigationDelegateFlutterApi { int identifier, int webViewIdentifier, ); + + @async + @ObjCSelector( + 'didReceiveAuthenticationChallengeForDelegateWithIdentifier:webViewIdentifier:challengeIdentifier:', + ) + AuthenticationChallengeResponse didReceiveAuthenticationChallenge( + int identifier, + int webViewIdentifier, + int challengeIdentifier, + ); } /// Mirror of NSObject. @@ -781,3 +848,57 @@ abstract class NSUrlFlutterApi { @ObjCSelector('createWithIdentifier:') void create(int identifier); } + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +@HostApi(dartHostTestHandler: 'TestNSUrlCredentialHostApi') +abstract class NSUrlCredentialHostApi { + /// Create a new native instance and add it to the `InstanceManager`. + @ObjCSelector( + 'createWithUserWithIdentifier:user:password:persistence:', + ) + void createWithUser( + int identifier, + String user, + String password, + NSUrlCredentialPersistence persistence, + ); +} + +/// Flutter API for `NSUrlProtectionSpace`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +@FlutterApi() +abstract class NSUrlProtectionSpaceFlutterApi { + /// Create a new Dart instance and add it to the `InstanceManager`. + @ObjCSelector('createWithIdentifier:host:realm:authenticationMethod:') + void create( + int identifier, + String? host, + String? realm, + String? authenticationMethod, + ); +} + +/// Flutter API for `NSUrlAuthenticationChallenge`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +@FlutterApi() +abstract class NSUrlAuthenticationChallengeFlutterApi { + /// Create a new Dart instance and add it to the `InstanceManager`. + @ObjCSelector('createWithIdentifier:protectionSpaceIdentifier:') + void create(int identifier, int protectionSpaceIdentifier); +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index 2d469bd8382..69540b39eb1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_wkwebview description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_wkwebview issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 3.9.2 +version: 3.10.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -20,7 +20,7 @@ dependencies: flutter: sdk: flutter path: ^1.8.0 - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 dev_dependencies: build_runner: ^2.1.5 @@ -33,3 +33,8 @@ topics: - html - webview - webview-flutter + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart index 03e5b6cbca5..4d1138275c2 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), 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, unnecessary_import // ignore_for_file: avoid_relative_lib_imports @@ -28,7 +28,7 @@ class _TestWKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -40,37 +40,26 @@ class _TestWKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkwebsitedatastore?language=objc. abstract class TestWKWebsiteDataStoreHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKWebsiteDataStoreHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKWebsiteDataStoreHostApiCodec(); - void createFromWebViewConfiguration( - int identifier, int configurationIdentifier); + void createFromWebViewConfiguration(int identifier, int configurationIdentifier); void createDefaultDataStore(int identifier); - Future removeDataOfTypes( - int identifier, - List dataTypes, - double modificationTimeInSecondsSinceEpoch); + Future removeDataOfTypes(int identifier, List dataTypes, double modificationTimeInSecondsSinceEpoch); - static void setup(TestWKWebsiteDataStoreHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKWebsiteDataStoreHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -78,26 +67,21 @@ abstract class TestWKWebsiteDataStoreHostApi { final int? arg_configurationIdentifier = (args[1] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration was null, expected non-null int.'); - api.createFromWebViewConfiguration( - arg_identifier!, arg_configurationIdentifier!); + api.createFromWebViewConfiguration(arg_identifier!, arg_configurationIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -109,32 +93,25 @@ abstract class TestWKWebsiteDataStoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes 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_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null, expected non-null int.'); - final List? arg_dataTypes = - (args[1] as List?)?.cast(); + final List? arg_dataTypes = (args[1] as List?)?.cast(); assert(arg_dataTypes != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null, expected non-null List.'); - final double? arg_modificationTimeInSecondsSinceEpoch = - (args[2] as double?); + final double? arg_modificationTimeInSecondsSinceEpoch = (args[2] as double?); assert(arg_modificationTimeInSecondsSinceEpoch != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null, expected non-null double.'); - final bool output = await api.removeDataOfTypes(arg_identifier!, - arg_dataTypes!, arg_modificationTimeInSecondsSinceEpoch!); + final bool output = await api.removeDataOfTypes(arg_identifier!, arg_dataTypes!, arg_modificationTimeInSecondsSinceEpoch!); return [output]; }); } @@ -146,30 +123,24 @@ abstract class TestWKWebsiteDataStoreHostApi { /// /// See https://developer.apple.com/documentation/uikit/uiview?language=objc. abstract class TestUIViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void setBackgroundColor(int identifier, int? value); void setOpaque(int identifier, bool opaque); - static void setup(TestUIViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestUIViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -182,18 +153,14 @@ abstract class TestUIViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -213,8 +180,7 @@ abstract class TestUIViewHostApi { /// /// See https://developer.apple.com/documentation/uikit/uiscrollview?language=objc. abstract class TestUIScrollViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void createFromWebView(int identifier, int webViewIdentifier); @@ -225,22 +191,17 @@ abstract class TestUIScrollViewHostApi { void setContentOffset(int identifier, double x, double y); - static void setup(TestUIScrollViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestUIScrollViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -255,18 +216,14 @@ abstract class TestUIScrollViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -278,18 +235,14 @@ abstract class TestUIScrollViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -307,18 +260,14 @@ abstract class TestUIScrollViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -352,7 +301,7 @@ class _TestWKWebViewConfigurationHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -364,10 +313,8 @@ class _TestWKWebViewConfigurationHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkwebviewconfiguration?language=objc. abstract class TestWKWebViewConfigurationHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKWebViewConfigurationHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKWebViewConfigurationHostApiCodec(); void create(int identifier); @@ -377,25 +324,19 @@ abstract class TestWKWebViewConfigurationHostApi { void setLimitsNavigationsToAppBoundDomains(int identifier, bool limit); - void setMediaTypesRequiringUserActionForPlayback( - int identifier, List types); + void setMediaTypesRequiringUserActionForPlayback(int identifier, List types); - static void setup(TestWKWebViewConfigurationHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKWebViewConfigurationHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -407,18 +348,14 @@ abstract class TestWKWebViewConfigurationHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -433,18 +370,14 @@ abstract class TestWKWebViewConfigurationHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -459,18 +392,14 @@ abstract class TestWKWebViewConfigurationHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -478,37 +407,29 @@ abstract class TestWKWebViewConfigurationHostApi { final bool? arg_limit = (args[1] as bool?); assert(arg_limit != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains was null, expected non-null bool.'); - api.setLimitsNavigationsToAppBoundDomains( - arg_identifier!, arg_limit!); + api.setLimitsNavigationsToAppBoundDomains(arg_identifier!, arg_limit!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback 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_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback was null, expected non-null int.'); - final List? arg_types = - (args[1] as List?) - ?.cast(); + final List? arg_types = (args[1] as List?)?.cast(); assert(arg_types != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback was null, expected non-null List.'); - api.setMediaTypesRequiringUserActionForPlayback( - arg_identifier!, arg_types!); + api.setMediaTypesRequiringUserActionForPlayback(arg_identifier!, arg_types!); return []; }); } @@ -534,9 +455,9 @@ class _TestWKUserContentControllerHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKUserScriptData.decode(readValue(buffer)!); - case 129: + case 129: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -548,16 +469,12 @@ class _TestWKUserContentControllerHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkusercontentcontroller?language=objc. abstract class TestWKUserContentControllerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKUserContentControllerHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKUserContentControllerHostApiCodec(); - void createFromWebViewConfiguration( - int identifier, int configurationIdentifier); + void createFromWebViewConfiguration(int identifier, int configurationIdentifier); - void addScriptMessageHandler( - int identifier, int handlerIdentifier, String name); + void addScriptMessageHandler(int identifier, int handlerIdentifier, String name); void removeScriptMessageHandler(int identifier, String name); @@ -567,22 +484,17 @@ abstract class TestWKUserContentControllerHostApi { void removeAllUserScripts(int identifier); - static void setup(TestWKUserContentControllerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKUserContentControllerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -590,26 +502,21 @@ abstract class TestWKUserContentControllerHostApi { final int? arg_configurationIdentifier = (args[1] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration was null, expected non-null int.'); - api.createFromWebViewConfiguration( - arg_identifier!, arg_configurationIdentifier!); + api.createFromWebViewConfiguration(arg_identifier!, arg_configurationIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -620,26 +527,21 @@ abstract class TestWKUserContentControllerHostApi { final String? arg_name = (args[2] as String?); assert(arg_name != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler was null, expected non-null String.'); - api.addScriptMessageHandler( - arg_identifier!, arg_handlerIdentifier!, arg_name!); + api.addScriptMessageHandler(arg_identifier!, arg_handlerIdentifier!, arg_name!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -654,18 +556,14 @@ abstract class TestWKUserContentControllerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -677,24 +575,19 @@ abstract class TestWKUserContentControllerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript 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_wkwebview.WKUserContentControllerHostApi.addUserScript was null, expected non-null int.'); - final WKUserScriptData? arg_userScript = - (args[1] as WKUserScriptData?); + final WKUserScriptData? arg_userScript = (args[1] as WKUserScriptData?); assert(arg_userScript != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript was null, expected non-null WKUserScriptData.'); api.addUserScript(arg_identifier!, arg_userScript!); @@ -704,18 +597,14 @@ abstract class TestWKUserContentControllerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -732,31 +621,24 @@ abstract class TestWKUserContentControllerHostApi { /// /// See https://developer.apple.com/documentation/webkit/wkpreferences?language=objc. abstract class TestWKPreferencesHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); - void createFromWebViewConfiguration( - int identifier, int configurationIdentifier); + void createFromWebViewConfiguration(int identifier, int configurationIdentifier); void setJavaScriptEnabled(int identifier, bool enabled); - static void setup(TestWKPreferencesHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKPreferencesHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -764,26 +646,21 @@ abstract class TestWKPreferencesHostApi { final int? arg_configurationIdentifier = (args[1] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration was null, expected non-null int.'); - api.createFromWebViewConfiguration( - arg_identifier!, arg_configurationIdentifier!); + api.createFromWebViewConfiguration(arg_identifier!, arg_configurationIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -803,28 +680,22 @@ abstract class TestWKPreferencesHostApi { /// /// See https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?language=objc. abstract class TestWKScriptMessageHandlerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int identifier); - static void setup(TestWKScriptMessageHandlerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKScriptMessageHandlerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -841,28 +712,22 @@ abstract class TestWKScriptMessageHandlerHostApi { /// /// See https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc. abstract class TestWKNavigationDelegateHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int identifier); - static void setup(TestWKNavigationDelegateHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKNavigationDelegateHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -890,7 +755,7 @@ class _TestNSObjectHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -902,33 +767,26 @@ class _TestNSObjectHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/objectivec/nsobject. abstract class TestNSObjectHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestNSObjectHostApiCodec(); void dispose(int identifier); - void addObserver(int identifier, int observerIdentifier, String keyPath, - List options); + void addObserver(int identifier, int observerIdentifier, String keyPath, List options); void removeObserver(int identifier, int observerIdentifier, String keyPath); - static void setup(TestNSObjectHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestNSObjectHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -940,18 +798,14 @@ abstract class TestNSObjectHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -962,31 +816,24 @@ abstract class TestNSObjectHostApi { final String? arg_keyPath = (args[2] as String?); assert(arg_keyPath != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null, expected non-null String.'); - final List? arg_options = - (args[3] as List?) - ?.cast(); + final List? arg_options = (args[3] as List?)?.cast(); assert(arg_options != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null, expected non-null List.'); - api.addObserver(arg_identifier!, arg_observerIdentifier!, - arg_keyPath!, arg_options!); + api.addObserver(arg_identifier!, arg_observerIdentifier!, arg_keyPath!, arg_options!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -997,8 +844,7 @@ abstract class TestNSObjectHostApi { final String? arg_keyPath = (args[2] as String?); assert(arg_keyPath != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver was null, expected non-null String.'); - api.removeObserver( - arg_identifier!, arg_observerIdentifier!, arg_keyPath!); + api.removeObserver(arg_identifier!, arg_observerIdentifier!, arg_keyPath!); return []; }); } @@ -1010,60 +856,63 @@ class _TestWKWebViewHostApiCodec extends StandardMessageCodec { const _TestWKWebViewHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is NSErrorData) { + if (value is AuthenticationChallengeResponse) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookieData) { + } else if (value is NSErrorData) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookiePropertyKeyEnumData) { + } else if (value is NSHttpCookieData) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueChangeKeyEnumData) { + } else if (value is NSHttpCookiePropertyKeyEnumData) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueObservingOptionsEnumData) { + } else if (value is NSKeyValueChangeKeyEnumData) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is NSUrlRequestData) { + } else if (value is NSKeyValueObservingOptionsEnumData) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is ObjectOrIdentifier) { + } else if (value is NSUrlRequestData) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is WKAudiovisualMediaTypeEnumData) { + } else if (value is ObjectOrIdentifier) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is WKFrameInfoData) { + } else if (value is WKAudiovisualMediaTypeEnumData) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is WKMediaCaptureTypeData) { + } else if (value is WKFrameInfoData) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionData) { + } else if (value is WKMediaCaptureTypeData) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionPolicyEnumData) { + } else if (value is WKNavigationActionData) { buffer.putUint8(139); writeValue(buffer, value.encode()); - } else if (value is WKPermissionDecisionData) { + } else if (value is WKNavigationActionPolicyEnumData) { buffer.putUint8(140); writeValue(buffer, value.encode()); - } else if (value is WKScriptMessageData) { + } else if (value is WKPermissionDecisionData) { buffer.putUint8(141); writeValue(buffer, value.encode()); - } else if (value is WKSecurityOriginData) { + } else if (value is WKScriptMessageData) { buffer.putUint8(142); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptData) { + } else if (value is WKSecurityOriginData) { buffer.putUint8(143); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptInjectionTimeEnumData) { + } else if (value is WKUserScriptData) { buffer.putUint8(144); writeValue(buffer, value.encode()); - } else if (value is WKWebsiteDataTypeEnumData) { + } else if (value is WKUserScriptInjectionTimeEnumData) { buffer.putUint8(145); writeValue(buffer, value.encode()); + } else if (value is WKWebsiteDataTypeEnumData) { + buffer.putUint8(146); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -1072,41 +921,43 @@ class _TestWKWebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: + return AuthenticationChallengeResponse.decode(readValue(buffer)!); + case 129: return NSErrorData.decode(readValue(buffer)!); - case 129: + case 130: return NSHttpCookieData.decode(readValue(buffer)!); - case 130: + case 131: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); - case 131: + case 132: return NSKeyValueChangeKeyEnumData.decode(readValue(buffer)!); - case 132: + case 133: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); - case 133: + case 134: return NSUrlRequestData.decode(readValue(buffer)!); - case 134: + case 135: return ObjectOrIdentifier.decode(readValue(buffer)!); - case 135: + case 136: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); - case 136: + case 137: return WKFrameInfoData.decode(readValue(buffer)!); - case 137: + case 138: return WKMediaCaptureTypeData.decode(readValue(buffer)!); - case 138: + case 139: return WKNavigationActionData.decode(readValue(buffer)!); - case 139: + case 140: return WKNavigationActionPolicyEnumData.decode(readValue(buffer)!); - case 140: + case 141: return WKPermissionDecisionData.decode(readValue(buffer)!); - case 141: + case 142: return WKScriptMessageData.decode(readValue(buffer)!); - case 142: + case 143: return WKSecurityOriginData.decode(readValue(buffer)!); - case 143: + case 144: return WKUserScriptData.decode(readValue(buffer)!); - case 144: + case 145: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); - case 145: + case 146: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1118,8 +969,7 @@ class _TestWKWebViewHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkwebview?language=objc. abstract class TestWKWebViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestWKWebViewHostApiCodec(); void create(int identifier, int configurationIdentifier); @@ -1162,22 +1012,17 @@ abstract class TestWKWebViewHostApi { String? getCustomUserAgent(int identifier); - static void setup(TestWKWebViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKWebViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1192,18 +1037,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1216,43 +1057,34 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate 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_wkwebview.WKWebViewHostApi.setNavigationDelegate was null, expected non-null int.'); final int? arg_navigationDelegateIdentifier = (args[1] as int?); - api.setNavigationDelegate( - arg_identifier!, arg_navigationDelegateIdentifier); + api.setNavigationDelegate(arg_identifier!, arg_navigationDelegateIdentifier); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1264,18 +1096,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1287,18 +1115,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1313,18 +1137,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1340,18 +1160,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1369,18 +1185,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1395,18 +1207,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1418,18 +1226,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1441,18 +1245,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1464,18 +1264,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1487,18 +1283,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1510,18 +1302,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1533,18 +1321,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1552,26 +1336,21 @@ abstract class TestWKWebViewHostApi { final bool? arg_allow = (args[1] as bool?); assert(arg_allow != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures was null, expected non-null bool.'); - api.setAllowsBackForwardNavigationGestures( - arg_identifier!, arg_allow!); + api.setAllowsBackForwardNavigationGestures(arg_identifier!, arg_allow!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1584,18 +1363,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1603,26 +1378,21 @@ abstract class TestWKWebViewHostApi { final String? arg_javaScriptString = (args[1] as String?); assert(arg_javaScriptString != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript was null, expected non-null String.'); - final Object? output = await api.evaluateJavaScript( - arg_identifier!, arg_javaScriptString!); + final Object? output = await api.evaluateJavaScript(arg_identifier!, arg_javaScriptString!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1637,18 +1407,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1665,28 +1431,22 @@ abstract class TestWKWebViewHostApi { /// /// See https://developer.apple.com/documentation/webkit/wkuidelegate?language=objc. abstract class TestWKUIDelegateHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int identifier); - static void setup(TestWKUIDelegateHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKUIDelegateHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1717,9 +1477,9 @@ class _TestWKHttpCookieStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSHttpCookieData.decode(readValue(buffer)!); - case 129: + case 129: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1731,32 +1491,24 @@ class _TestWKHttpCookieStoreHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkhttpcookiestore?language=objc. abstract class TestWKHttpCookieStoreHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKHttpCookieStoreHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKHttpCookieStoreHostApiCodec(); - void createFromWebsiteDataStore( - int identifier, int websiteDataStoreIdentifier); + void createFromWebsiteDataStore(int identifier, int websiteDataStoreIdentifier); Future setCookie(int identifier, NSHttpCookieData cookie); - static void setup(TestWKHttpCookieStoreHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKHttpCookieStoreHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1764,26 +1516,21 @@ abstract class TestWKHttpCookieStoreHostApi { final int? arg_websiteDataStoreIdentifier = (args[1] as int?); assert(arg_websiteDataStoreIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore was null, expected non-null int.'); - api.createFromWebsiteDataStore( - arg_identifier!, arg_websiteDataStoreIdentifier!); + api.createFromWebsiteDataStore(arg_identifier!, arg_websiteDataStoreIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1807,8 +1554,7 @@ abstract class TestWKHttpCookieStoreHostApi { /// /// See https://developer.apple.com/documentation/foundation/nsurl?language=objc. abstract class TestNSUrlHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); String? getAbsoluteString(int identifier); @@ -1816,18 +1562,14 @@ abstract class TestNSUrlHostApi { static void setup(TestNSUrlHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1839,3 +1581,49 @@ abstract class TestNSUrlHostApi { } } } + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +abstract class TestNSUrlCredentialHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new native instance and add it to the `InstanceManager`. + void createWithUser(int identifier, String user, String password, NSUrlCredentialPersistence persistence); + + static void setup(TestNSUrlCredentialHostApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser 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_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null int.'); + final String? arg_user = (args[1] as String?); + assert(arg_user != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null String.'); + final String? arg_password = (args[2] as String?); + assert(arg_password != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null String.'); + final NSUrlCredentialPersistence? arg_persistence = args[3] == null ? null : NSUrlCredentialPersistence.values[args[3] as int]; + assert(arg_persistence != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null NSUrlCredentialPersistence.'); + api.createWithUser(arg_identifier!, arg_user!, arg_password!, arg_persistence!); + return []; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart index ea2e37e2cda..345c6fad677 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart @@ -17,6 +17,7 @@ import 'foundation_test.mocks.dart'; @GenerateMocks([ TestNSObjectHostApi, + TestNSUrlCredentialHostApi, TestNSUrlHostApi, ]) void main() { @@ -245,6 +246,102 @@ void main() { expect(instanceManager.getInstanceWithWeakReference(0), isA()); }); }); + + group('NSUrlCredential', () { + tearDown(() { + TestNSUrlCredentialHostApi.setup(null); + }); + + test('HostApi createWithUser', () { + final MockTestNSUrlCredentialHostApi mockApi = + MockTestNSUrlCredentialHostApi(); + TestNSUrlCredentialHostApi.setup(mockApi); + + final InstanceManager instanceManager = InstanceManager( + onWeakReferenceRemoved: (_) {}, + ); + + const String user = 'testString'; + const String password = 'testString2'; + + const NSUrlCredentialPersistence persistence = + NSUrlCredentialPersistence.permanent; + + final NSUrlCredential instance = NSUrlCredential.withUser( + user: user, + password: password, + persistence: persistence, + instanceManager: instanceManager, + ); + + verify(mockApi.createWithUser( + instanceManager.getIdentifier(instance), + user, + password, + persistence, + )); + }); + }); + + group('NSUrlProtectionSpace', () { + test('FlutterAPI create', () { + final InstanceManager instanceManager = InstanceManager( + onWeakReferenceRemoved: (_) {}, + ); + + final NSUrlProtectionSpaceFlutterApiImpl api = + NSUrlProtectionSpaceFlutterApiImpl( + instanceManager: instanceManager, + ); + + const int instanceIdentifier = 0; + + api.create( + instanceIdentifier, + 'testString', + 'testString', + 'testAuthenticationMethod', + ); + + expect( + instanceManager.getInstanceWithWeakReference(instanceIdentifier), + isA(), + ); + }); + }); + + group('NSUrlAuthenticationChallenge', () { + test('FlutterAPI create', () { + final InstanceManager instanceManager = InstanceManager( + onWeakReferenceRemoved: (_) {}, + ); + + final NSUrlAuthenticationChallengeFlutterApiImpl api = + NSUrlAuthenticationChallengeFlutterApiImpl( + instanceManager: instanceManager, + ); + + const int instanceIdentifier = 0; + + const int protectionSpaceIdentifier = 1; + instanceManager.addHostCreatedInstance( + NSUrlProtectionSpace.detached( + host: null, + realm: null, + authenticationMethod: null, + instanceManager: instanceManager, + ), + protectionSpaceIdentifier, + ); + + api.create(instanceIdentifier, protectionSpaceIdentifier); + + expect( + instanceManager.getInstanceWithWeakReference(instanceIdentifier), + isA(), + ); + }); + }); }); test('NSError', () { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart index 60cb608302b..94306ea553e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart @@ -76,6 +76,36 @@ class MockTestNSObjectHostApi extends _i1.Mock ); } +/// A class which mocks [TestNSUrlCredentialHostApi]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockTestNSUrlCredentialHostApi extends _i1.Mock + implements _i2.TestNSUrlCredentialHostApi { + MockTestNSUrlCredentialHostApi() { + _i1.throwOnMissingStub(this); + } + + @override + void createWithUser( + int? identifier, + String? user, + String? password, + _i3.NSUrlCredentialPersistence? persistence, + ) => + super.noSuchMethod( + Invocation.method( + #createWithUser, + [ + identifier, + user, + password, + persistence, + ], + ), + returnValueForMissingStub: null, + ); +} + /// A class which mocks [TestNSUrlHostApi]. /// /// See the documentation for Mockito's code generation for more information. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart index 98a70de7b32..2c95a52e1b9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart @@ -683,6 +683,63 @@ void main() { expect(argsCompleter.future, completion([webView])); }); + + test('didReceiveAuthenticationChallenge', () async { + WebKitFlutterApis.instance = WebKitFlutterApis( + instanceManager: instanceManager, + ); + + const int credentialIdentifier = 3; + final NSUrlCredential credential = NSUrlCredential.detached( + instanceManager: instanceManager, + ); + instanceManager.addHostCreatedInstance( + credential, + credentialIdentifier, + ); + + navigationDelegate = WKNavigationDelegate( + instanceManager: instanceManager, + didReceiveAuthenticationChallenge: ( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + ) { + completionHandler( + NSUrlSessionAuthChallengeDisposition.useCredential, + credential, + ); + }, + ); + + const int challengeIdentifier = 27; + instanceManager.addHostCreatedInstance( + NSUrlAuthenticationChallenge.detached( + protectionSpace: NSUrlProtectionSpace.detached( + host: null, + realm: null, + authenticationMethod: null, + ), + instanceManager: instanceManager, + ), + challengeIdentifier, + ); + + final AuthenticationChallengeResponse response = await WebKitFlutterApis + .instance.navigationDelegate + .didReceiveAuthenticationChallenge( + instanceManager.getIdentifier(navigationDelegate)!, + instanceManager.getIdentifier(webView)!, + challengeIdentifier, + ); + + expect(response.disposition, + NSUrlSessionAuthChallengeDisposition.useCredential); + expect(response.credentialIdentifier, credentialIdentifier); + }); }); group('WKWebView', () { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart index 4581c92b788..8f4a2f576a5 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart @@ -7,6 +7,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; +import 'package:webview_flutter_wkwebview/src/common/web_kit.g.dart'; import 'package:webview_flutter_wkwebview/src/foundation/foundation.dart'; import 'package:webview_flutter_wkwebview/src/web_kit/web_kit.dart'; import 'package:webview_flutter_wkwebview/src/webkit_proxy.dart'; @@ -214,6 +215,45 @@ void main() { expect(callbackRequest.url, 'https://www.google.com'); expect(callbackRequest.isMainFrame, isFalse); }); + + test('onHttpBasicAuthRequest emits host and realm', () { + final WebKitNavigationDelegate iosNavigationDelegate = + WebKitNavigationDelegate( + const WebKitNavigationDelegateCreationParams( + webKitProxy: WebKitProxy( + createNavigationDelegate: CapturingNavigationDelegate.new, + ), + ), + ); + + String? callbackHost; + String? callbackRealm; + + iosNavigationDelegate + .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + callbackHost = request.host; + callbackRealm = request.realm; + }); + + const String expectedHost = 'expectedHost'; + const String expectedRealm = 'expectedRealm'; + + CapturingNavigationDelegate + .lastCreatedDelegate.didReceiveAuthenticationChallenge!( + WKWebView.detached(), + NSUrlAuthenticationChallenge.detached( + protectionSpace: NSUrlProtectionSpace.detached( + host: expectedHost, + realm: expectedRealm, + authenticationMethod: urlAuthenticationMethodHTTPBasic, + ), + ), + (NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential) {}); + + expect(callbackHost, expectedHost); + expect(callbackRealm, expectedRealm); + }); }); } @@ -226,6 +266,7 @@ class CapturingNavigationDelegate extends WKNavigationDelegate { super.didFailProvisionalNavigation, super.decidePolicyForNavigationAction, super.webViewWebContentProcessDidTerminate, + super.didReceiveAuthenticationChallenge, }) : super.detached() { lastCreatedDelegate = this; } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart index 46badc06905..0bada4087ff 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart @@ -1366,6 +1366,7 @@ class CapturingNavigationDelegate extends WKNavigationDelegate { super.didFailProvisionalNavigation, super.decidePolicyForNavigationAction, super.webViewWebContentProcessDidTerminate, + super.didReceiveAuthenticationChallenge, }) : super.detached() { lastCreatedDelegate = this; } From 967879b412e337db90f0a6d63ec943366f431b5d Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 28 Aug 2023 15:27:04 +0200 Subject: [PATCH 02/30] Apply feedback --- .../webview_flutter_test.dart | 8 ++- .../webview_flutter/example/lib/main.dart | 15 ++-- .../webview_flutter/example/pubspec.yaml | 1 - .../example/test/main_test.dart | 2 +- .../lib/src/navigation_delegate.dart | 18 ++--- .../webview_flutter/lib/webview_flutter.dart | 2 +- .../test/navigation_delegate_test.dart | 9 ++- .../webview_flutter_android/CHANGELOG.md | 2 +- .../WebViewClientHostApiImpl.java | 2 +- .../webview_flutter_test.dart | 12 ++-- .../example/lib/main.dart | 14 ++-- .../lib/src/android_webview.dart | 18 +++-- .../lib/src/android_webview_api_impls.dart | 18 +++-- .../lib/src/android_webview_controller.dart | 6 +- .../android_navigation_delegate_test.dart | 3 +- .../CHANGELOG.md | 2 +- .../lib/src/platform_navigation_delegate.dart | 7 +- .../lib/src/types/http_auth_request.dart | 71 +++++++++++++++++++ .../src/types/http_basic_auth_request.dart | 26 ------- .../lib/src/types/types.dart | 3 +- .../lib/src/types/webview_credential.dart | 20 ++++++ .../platform_navigation_delegate_test.dart | 3 +- .../webview_flutter_wkwebview/CHANGELOG.md | 2 +- .../webview_flutter_test.dart | 10 +-- .../example/lib/main.dart | 14 ++-- .../lib/src/foundation/foundation.dart | 17 ++++- .../lib/src/webkit_webview_controller.dart | 14 ++-- .../test/webkit_navigation_delegate_test.dart | 5 +- 28 files changed, 214 insertions(+), 110 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart delete mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 41e335eab4c..528f3d9c3cc 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -17,6 +17,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter_android/webview_flutter_android.dart'; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; Future main() async { @@ -777,7 +778,7 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => + onHttpAuthRequest: (HttpAuthRequest request) => authRequested.complete(), ), ), @@ -798,8 +799,9 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => - request.onProceed('user', 'pass'), + onHttpAuthRequest: (HttpAuthRequest request) => request.onProceed( + const WebViewCredential(user: 'user', password: 'password'), + ), onPageFinished: (_) => pageFinished.complete(), ), ), diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 6c554cd18f0..35f9f1e6f1c 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -15,6 +15,7 @@ import 'package:webview_flutter/webview_flutter.dart'; // #docregion platform_imports // Import for Android features. import 'package:webview_flutter_android/webview_flutter_android.dart'; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; // Import for iOS features. import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; // #enddocregion platform_imports @@ -172,9 +173,9 @@ Page resource error: onUrlChange: (UrlChange change) { debugPrint('url change to ${change.url}'); }, - onHttpBasicAuthRequest: (HttpBasicAuthRequest request) { + onHttpAuthRequest: (HttpAuthRequest request) { debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }, ), @@ -231,7 +232,7 @@ Page resource error: ); } - Future openDialog(HttpBasicAuthRequest httpRequest) async { + Future openDialog(HttpAuthRequest httpRequest) async { final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = @@ -242,7 +243,7 @@ Page resource error: barrierDismissible: false, builder: (BuildContext context) { return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm}'), + title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), content: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, @@ -272,8 +273,10 @@ Page resource error: TextButton( onPressed: () { httpRequest.onProceed( - usernameTextController.text, - passwordTextController.text, + WebViewCredential( + user: usernameTextController.text, + password: passwordTextController.text, + ), ); Navigator.of(context).pop(); }, diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml index 7dd37c5609d..867029455aa 100644 --- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml @@ -27,7 +27,6 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter - webview_flutter_platform_interface: ^2.3.0 flutter: uses-material-design: true diff --git a/packages/webview_flutter/webview_flutter/example/test/main_test.dart b/packages/webview_flutter/webview_flutter/example/test/main_test.dart index baa7983e7ab..c4b43428ec9 100644 --- a/packages/webview_flutter/webview_flutter/example/test/main_test.dart +++ b/packages/webview_flutter/webview_flutter/example/test/main_test.dart @@ -118,7 +118,7 @@ class FakeNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async {} @override - Future setOnHttpBasicAuthRequest( + Future setOnHttpAuthRequest( HttpAuthRequestCallback handler, ) async {} } diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index 6c0c8ed301e..7aa255eb1e9 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -48,7 +48,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, - void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, + void Function(HttpAuthRequest request)? onHttpAuthRequest, }) : this.fromPlatformCreationParams( const PlatformNavigationDelegateCreationParams(), onNavigationRequest: onNavigationRequest, @@ -57,7 +57,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, - onHttpBasicAuthRequest: onHttpBasicAuthRequest, + onHttpAuthRequest: onHttpAuthRequest, ); /// Constructs a [NavigationDelegate] from creation params for a specific @@ -100,7 +100,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, - void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, + void Function(HttpAuthRequest request)? onHttpAuthRequest, }) : this.fromPlatform( PlatformNavigationDelegate(params), onNavigationRequest: onNavigationRequest, @@ -109,7 +109,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, - onHttpBasicAuthRequest: onHttpBasicAuthRequest, + onHttpAuthRequest: onHttpAuthRequest, ); /// Constructs a [NavigationDelegate] from a specific platform implementation. @@ -123,7 +123,7 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, - this.onHttpBasicAuthRequest, + this.onHttpAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -143,8 +143,8 @@ class NavigationDelegate { if (onUrlChange != null) { platform.setOnUrlChange(onUrlChange); } - if (onHttpBasicAuthRequest != null) { - platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest!); + if (onHttpAuthRequest != null) { + platform.setOnHttpAuthRequest(onHttpAuthRequest!); } } @@ -175,6 +175,6 @@ class NavigationDelegate { /// Invoked when a resource loading error occurred. final WebResourceErrorCallback? onWebResourceError; - /// Invoked when a resource required HTTP basic authentication. - final HttpAuthRequestCallback? onHttpBasicAuthRequest; + /// Invoked when a resource required HTTP authentication. + final HttpAuthRequestCallback? onHttpAuthRequest; } diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index 34701997a63..effd512bd92 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -6,7 +6,7 @@ library webview_flutter; export 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' show - HttpBasicAuthRequest, + HttpAuthRequest, JavaScriptConsoleMessage, JavaScriptLogLevel, JavaScriptMessage, diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart index e0aee949cea..c2bc6f230fa 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart @@ -88,17 +88,16 @@ void main() { verify(delegate.platform.setOnUrlChange(onUrlChange)); }); - test('onHttpBasicAuthRequest', () { + test('onHttpAuthRequest', () { WebViewPlatform.instance = TestWebViewPlatform(); - void onHttpBasicAuthRequest(HttpBasicAuthRequest request) {} + void onHttpAuthRequest(HttpAuthRequest request) {} final NavigationDelegate delegate = NavigationDelegate( - onHttpBasicAuthRequest: onHttpBasicAuthRequest, + onHttpAuthRequest: onHttpAuthRequest, ); - verify( - delegate.platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest)); + verify(delegate.platform.setOnHttpAuthRequest(onHttpAuthRequest)); }); }); } diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index b257e547a61..97da44ca7ed 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,6 +1,6 @@ ## 3.13.0 -* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. ## 3.12.0 diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 30f414380c9..1ace7bfe072 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -186,7 +186,7 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } - // Handles an HTTP Basic Authentication request. + // Handles an HTTP authentication request. // // This callback is invoked when the WebView encounters a website requiring HTTP authentication. // [host] and [realm] are provided for matching against stored credentials, if any. diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index a5e2a38e851..9ed263e8dc6 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1140,8 +1140,8 @@ Future main() async { PlatformNavigationDelegate( const PlatformNavigationDelegateCreationParams(), ); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => authRequested.complete()); + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => authRequested.complete()); await controller.setPlatformNavigationDelegate(navigationDelegate); // Clear cache so that the auth request is always received and we don't get @@ -1177,12 +1177,14 @@ Future main() async { const PlatformNavigationDelegateCreationParams(), ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => request.onProceed( + const WebViewCredential(user: 'user', password: 'password'), + ), ); await controller.setPlatformNavigationDelegate(navigationDelegate); - // Clear cache so that the auth request is always received and we don't get + // Clear cache so that the auth request is always received and we do not get // a cached response. await controller.clearCache(); 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 ba6991bf206..923aadb7d68 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -162,9 +162,9 @@ Page resource error: ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); }) - ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + ..setOnHttpAuthRequest((HttpAuthRequest request) { debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -227,7 +227,7 @@ Page resource error: ); } - Future openDialog(HttpBasicAuthRequest httpRequest) async { + Future openDialog(HttpAuthRequest httpRequest) async { final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = @@ -237,7 +237,7 @@ Page resource error: context: context, builder: (BuildContext context) { return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm}'), + title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), content: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -256,8 +256,10 @@ Page resource error: TextButton( onPressed: () { httpRequest.onProceed( - usernameTextController.text, - passwordTextController.text, + WebViewCredential( + user: usernameTextController.text, + password: passwordTextController.text, + ), ); Navigator.of(context).pop(); }, diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index f2ad37d698a..48cb4974f45 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -7,6 +7,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart' show BinaryMessenger; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'android_webview.g.dart'; import 'android_webview_api_impls.dart'; @@ -939,7 +940,7 @@ class WebViewClient extends JavaObject { final void Function(WebView webView, String url, bool isReload)? doUpdateVisitedHistory; - /// This callback is only called for requests that require HTTP basic authentication. + /// This callback is only called for requests that require HTTP authentication. final void Function( WebView webView, HttpAuthHandler handler, @@ -1508,7 +1509,7 @@ class CustomViewCallback extends JavaObject { } } -/// Represents a request for HTTP basic authentication. +/// Represents a request for HTTP authentication. /// /// Instances of this class are created by the [WebView] and passed to /// [WebViewClient.onReceivedHttpAuthRequest]. The host application must call @@ -1532,7 +1533,16 @@ class HttpAuthHandler extends JavaObject { /// Instructs the WebView to proceed with the authentication with the provided /// credentials. - Future proceed(String username, String password) { - return api.proceedFromInstance(this, username, password); + Future proceed(WebViewCredential credential) { + return api.proceedFromInstance(this, credential); + } + + /// Gets whether the credentials stored for the current host are suitable for + /// use. + /// + /// Credentials are not suitable if they have previously been rejected by the + /// server for the current request. + Future useHttpAuthUsernamePassword() { + return api.useHttpAuthUsernamePasswordFromInstance(this); } } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index dcf92be467f..404135418d7 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -5,6 +5,8 @@ import 'dart:ui'; import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' + show WebViewCredential; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -1449,13 +1451,21 @@ class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { /// Helper method to convert instance ids to objects. Future proceedFromInstance( HttpAuthHandler instance, - String username, - String password, + WebViewCredential credential, ) { return proceed( _instanceManager.getIdentifier(instance)!, - username, - password, + credential.user, + credential.password, + ); + } + + /// Helper method to convert instance ids to objects. + Future useHttpAuthUsernamePasswordFromInstance( + HttpAuthHandler instance, + ) { + return useHttpAuthUsernamePassword( + _instanceManager.getIdentifier(instance)!, ); } } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index 3988a5bf8e5..c662c2a6f83 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -1274,11 +1274,11 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { String host, String realm, ) { - final void Function(HttpBasicAuthRequest)? callback = + final void Function(HttpAuthRequest)? callback = weakThis.target?._onHttpAuthRequest; if (callback != null) { callback( - HttpBasicAuthRequest( + HttpAuthRequest( onProceed: httpAuthHandler.proceed, onCancel: httpAuthHandler.cancel, host: host, @@ -1432,7 +1432,7 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { } @override - Future setOnHttpBasicAuthRequest( + Future setOnHttpAuthRequest( HttpAuthRequestCallback onHttpAuthRequest, ) async { _onHttpAuthRequest = onHttpAuthRequest; diff --git a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart index 5efdc8e3363..3b407a8d65f 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart @@ -474,8 +474,7 @@ void main() { String? callbackHost; String? callbackRealm; - androidNavigationDelegate - .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + androidNavigationDelegate.setOnHttpAuthRequest((HttpAuthRequest request) { callbackHost = request.host; callbackRealm = request.realm; }); diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 37be10e472e..fee1d514031 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.7.0 -* Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. +* Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. ## 2.6.0 diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart index 66da0b97e68..38cf7c19a2d 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart @@ -32,7 +32,7 @@ typedef UrlChangeCallback = void Function(UrlChange change); /// Signature for callbacks that notify the host application of an /// authentication request. -typedef HttpAuthRequestCallback = void Function(HttpBasicAuthRequest request); +typedef HttpAuthRequestCallback = void Function(HttpAuthRequest request); /// An interface defining navigation events that occur on the native platform. /// @@ -138,10 +138,9 @@ abstract class PlatformNavigationDelegate extends PlatformInterface { } /// Invoked when the web view is requesting authentication. - Future setOnHttpBasicAuthRequest( - HttpAuthRequestCallback onHttpAuthRequest) { + Future setOnHttpAuthRequest(HttpAuthRequestCallback onHttpAuthRequest) { throw UnimplementedError( - 'setOnHttpBasicAuthRequest is not implemented on the current platform.', + 'setOnHttpAuthRequest is not implemented on the current platform.', ); } } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart new file mode 100644 index 00000000000..8da22d38403 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -0,0 +1,71 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:meta/meta.dart'; + +import '../../webview_flutter_platform_interface.dart'; + +/// Defines the parameters of a pending HTTP authentication request received by +/// the webview through a [HttpAuthRequestCallback]. +/// +/// Platform specific implementations can add additional fields by extending +/// this class and providing a factory method that takes the [HttpAuthRequest] +/// as a parameter. +/// +/// {@tool sample} +/// This example demonstrates how to extend the [HttpAuthRequest] to provide +/// additional platform specific parameters. +/// +/// When extending [HttpAuthRequest], additional parameters should always accept +/// `null` or have a default value to prevent breaking changes. +/// +/// ```dart +/// @immutable +/// class WKWebViewHttpAuthRequest extends HttpAuthRequest { +/// WKWebViewHttpAuthRequest._( +/// HttpAuthRequest authRequest, +/// this.extraData, +/// ) : super( +/// onProceed: authRequest.onProceed, +/// onCancel: authRequest.onCancel, +/// host: authRequest.host, +/// realm: authRequest.realm, +/// ); +/// +/// factory WKWebViewHttpAuthRequest.fromHttpAuthRequest( +/// HttpAuthRequest authRequest, { +/// String? extraData, +/// }) { +/// return WKWebViewHttpAuthRequest._( +/// authRequest, +/// extraData: extraData, +/// ); +/// } +/// +/// final String? extraData; +/// } +/// ``` +/// {@end-tool} +@immutable +class HttpAuthRequest { + /// Creates a [HttpAuthRequest]. + const HttpAuthRequest({ + required this.onProceed, + required this.onCancel, + required this.host, + this.realm, + }); + + /// The callback to authenticate. + final void Function(WebViewCredential credential) onProceed; + + /// The callback to cancel authentication. + final void Function() onCancel; + + /// The host requiring authentication. + final String host; + + /// The realm requiring authentication. + final String? realm; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart deleted file mode 100644 index 23fed00d5e8..00000000000 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/// Defines the parameters of a pending HTTP basic authentication request. -class HttpBasicAuthRequest { - /// Creates a [HttpBasicAuthRequest]. - const HttpBasicAuthRequest({ - required this.onProceed, - required this.onCancel, - required this.host, - required this.realm, - }); - - /// The callback to authenticate. - final void Function(String username, String password) onProceed; - - /// The callback to cancel authentication. - final void Function() onCancel; - - /// The host requiring authentication. - final String host; - - /// The realm requiring authentication. - final String realm; -} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart index 9846248ba92..d1a074f7925 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -export 'http_basic_auth_request.dart'; +export 'http_auth_request.dart'; export 'http_response_error.dart'; export 'javascript_console_message.dart'; export 'javascript_log_level.dart'; @@ -19,3 +19,4 @@ export 'platform_webview_widget_creation_params.dart'; export 'url_change.dart'; export 'web_resource_error.dart'; export 'webview_cookie.dart'; +export 'webview_credential.dart'; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart new file mode 100644 index 00000000000..fca4e7896d7 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart @@ -0,0 +1,20 @@ +import 'package:meta/meta.dart'; + +import '../types/http_auth_request.dart'; + +/// Defines the response parameters of a pending [HttpAuthRequest] received by +/// the webview. +@immutable +class WebViewCredential { + /// Creates a [WebViewCredential]. + const WebViewCredential({ + required this.user, + required this.password, + }); + + /// The user name. + final String user; + + /// The password. + final String password; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart index 946b76e46dd..6ae5b519537 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart @@ -151,8 +151,7 @@ void main() { const PlatformNavigationDelegateCreationParams()); expect( - () => callbackDelegate - .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) {}), + () => callbackDelegate.setOnHttpAuthRequest((HttpAuthRequest request) {}), throwsUnimplementedError, ); }); diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index f6917bad8f9..e158bdd4529 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,6 +1,6 @@ ## 3.10.0 -* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`.<<<<<<< HEAD +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. ## 3.9.2 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 0dd23fc53c0..89ecad8d0e1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1148,8 +1148,8 @@ Future main() async { PlatformNavigationDelegate( const PlatformNavigationDelegateCreationParams(), ); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => authRequested.complete()); + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => authRequested.complete()); await controller.setPlatformNavigationDelegate(navigationDelegate); // Clear cache so that the auth request is always received and we don't get @@ -1185,8 +1185,10 @@ Future main() async { const PlatformNavigationDelegateCreationParams(), ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => request.onProceed( + const WebViewCredential(user: 'user', password: 'password'), + ), ); await controller.setPlatformNavigationDelegate(navigationDelegate); 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 05b8c04041d..d3abecb9fba 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -163,9 +163,9 @@ Page resource error: ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); }) - ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + ..setOnHttpAuthRequest((HttpAuthRequest request) { debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -226,7 +226,7 @@ Page resource error: ); } - Future openDialog(HttpBasicAuthRequest httpRequest) async { + Future openDialog(HttpAuthRequest httpRequest) async { final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = @@ -237,7 +237,7 @@ Page resource error: barrierDismissible: false, builder: (BuildContext context) { return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm}'), + title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), content: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, @@ -267,8 +267,10 @@ Page resource error: TextButton( onPressed: () { httpRequest.onProceed( - usernameTextController.text, - passwordTextController.text, + WebViewCredential( + user: usernameTextController.text, + password: passwordTextController.text, + ), ); Navigator.of(context).pop(); }, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart index 131b6111d02..2647ed95b8b 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart @@ -477,9 +477,20 @@ class NSUrlProtectionSpace extends NSObject { } } -/// Use HTTP basic authentication for this protection space. -const String urlAuthenticationMethodHTTPBasic = - 'NSURLAuthenticationMethodHTTPBasic'; +/// The authentication method used by the receiver. +class NSUrlAuthenticationMethod { + /// Use the default authentication method for a protocol. + static const String default_ = 'NSURLAuthenticationMethodDefault'; + + /// Use HTML form authentication for this protection space. + static const String htmlForm = 'NSURLAuthenticationMethodHTMLForm'; + + /// Use HTTP basic authentication for this protection space. + static const String httpBasic = 'NSURLAuthenticationMethodHTTPBasic'; + + /// Use HTTP digest authentication for this protection space. + static const String httpDigest = 'NSURLAuthenticationMethodHTTPDigest'; +} /// A challenge from a server requiring authentication from the client. /// diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 897093a1004..95e2917a49f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -957,21 +957,21 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ) completionHandler, ) { if (challenge.protectionSpace.authenticationMethod == - urlAuthenticationMethodHTTPBasic) { - final void Function(HttpBasicAuthRequest)? callback = + NSUrlAuthenticationMethod.httpBasic) { + final void Function(HttpAuthRequest)? callback = weakThis.target?._onHttpAuthRequest; final String? host = challenge.protectionSpace.host; final String? realm = challenge.protectionSpace.realm; if (callback != null && host != null && realm != null) { callback( - HttpBasicAuthRequest( - onProceed: (String username, String password) { + HttpAuthRequest( + onProceed: (WebViewCredential credential) { return completionHandler( NSUrlSessionAuthChallengeDisposition.useCredential, NSUrlCredential.withUser( - user: username, - password: password, + user: credential.user, + password: credential.password, persistence: NSUrlCredentialPersistence.session, ), ); @@ -1045,7 +1045,7 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { } @override - Future setOnHttpBasicAuthRequest( + Future setOnHttpAuthRequest( HttpAuthRequestCallback onHttpAuthRequest, ) async { _onHttpAuthRequest = onHttpAuthRequest; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart index 8f4a2f576a5..63d432c6ac3 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart @@ -229,8 +229,7 @@ void main() { String? callbackHost; String? callbackRealm; - iosNavigationDelegate - .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + iosNavigationDelegate.setOnHttpAuthRequest((HttpAuthRequest request) { callbackHost = request.host; callbackRealm = request.realm; }); @@ -245,7 +244,7 @@ void main() { protectionSpace: NSUrlProtectionSpace.detached( host: expectedHost, realm: expectedRealm, - authenticationMethod: urlAuthenticationMethodHTTPBasic, + authenticationMethod: NSUrlAuthenticationMethod.httpBasic, ), ), (NSUrlSessionAuthChallengeDisposition disposition, From c8624c0960e7ec3e91dc5bf5607433e7b9c44e22 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 29 Aug 2023 11:10:38 +0200 Subject: [PATCH 03/30] Create HttpAuthHandlerTest.java --- .../webviewflutter/HttpAuthHandlerTest.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java new file mode 100644 index 00000000000..0ea582c34b3 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java @@ -0,0 +1,75 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.webviewflutter; + +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; + +import android.webkit.HttpAuthHandler; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; + +import io.flutter.plugin.common.BinaryMessenger; + +public class HttpAuthHandlerTest { + @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); + + @Mock HttpAuthHandler mockAuthHandler; + + @Mock BinaryMessenger mockBinaryMessenger; + + InstanceManager instanceManager; + + @Before + public void setUp() { + instanceManager = InstanceManager.create(identifier -> {}); + } + + @After + public void tearDown() { + instanceManager.stopFinalizationListener(); + } + + @Test + public void proceed() { + final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final long instanceIdentifier = 65L; + final String username = "username"; + final String password = "password"; + instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); + + hostApi.proceed(instanceIdentifier, username, password); + + verify(mockAuthHandler).proceed(eq(username), eq(password)); + } + + @Test + public void cancel() { + final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final long instanceIdentifier = 65L; + instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); + + hostApi.cancel(instanceIdentifier); + + verify(mockAuthHandler).cancel(); + } + + @Test + public void useHttpAuthUsernamePassword() { + final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final long instanceIdentifier = 65L; + instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); + + hostApi.useHttpAuthUsernamePassword(instanceIdentifier); + + verify(mockAuthHandler).useHttpAuthUsernamePassword(); + } +} From 4f3574d9f0444f9451e076679f818d379d44385f Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 29 Aug 2023 11:12:27 +0200 Subject: [PATCH 04/30] Format java files --- .../plugins/webviewflutter/HttpAuthHandlerTest.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java index 0ea582c34b3..a66f41bd292 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java @@ -8,7 +8,7 @@ import static org.mockito.Mockito.verify; import android.webkit.HttpAuthHandler; - +import io.flutter.plugin.common.BinaryMessenger; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -17,8 +17,6 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; -import io.flutter.plugin.common.BinaryMessenger; - public class HttpAuthHandlerTest { @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); @@ -40,7 +38,8 @@ public void tearDown() { @Test public void proceed() { - final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final HttpAuthHandlerHostApiImpl hostApi = + new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); final long instanceIdentifier = 65L; final String username = "username"; final String password = "password"; @@ -53,7 +52,8 @@ public void proceed() { @Test public void cancel() { - final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final HttpAuthHandlerHostApiImpl hostApi = + new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); final long instanceIdentifier = 65L; instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); @@ -64,7 +64,8 @@ public void cancel() { @Test public void useHttpAuthUsernamePassword() { - final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final HttpAuthHandlerHostApiImpl hostApi = + new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); final long instanceIdentifier = 65L; instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); From 1e7f78520fa50df6bd5a1adead7ac3727a1d8a41 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 29 Aug 2023 11:18:25 +0200 Subject: [PATCH 05/30] Regenerate build_runner files --- .../test/navigation_delegate_test.mocks.dart | 4 +- .../test/webview_controller_test.mocks.dart | 4 +- ...android_webview_controller_test.mocks.dart | 150 +----------------- ...oid_webview_cookie_manager_test.mocks.dart | 37 ----- .../test/android_webview_test.mocks.dart | 82 ---------- ...iew_android_cookie_manager_test.mocks.dart | 3 - .../webview_android_widget_test.mocks.dart | 60 ------- ...latform_webview_controller_test.mocks.dart | 4 +- 8 files changed, 8 insertions(+), 336 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart index ba473193a41..0d92999d619 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart @@ -251,11 +251,11 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValueForMissingStub: _i8.Future.value(), ) as _i8.Future); @override - _i8.Future setOnHttpBasicAuthRequest( + _i8.Future setOnHttpAuthRequest( _i3.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i8.Future.value(), diff --git a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart index 2b31596b508..490369694e5 100644 --- a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart @@ -467,11 +467,11 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future setOnHttpBasicAuthRequest( + _i5.Future setOnHttpAuthRequest( _i6.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i5.Future.value(), diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart index 12c50605da7..e09c9d77b88 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart @@ -255,7 +255,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidWebChromeClient), ), ) as _i2.WebChromeClient); - @override _i2.WebViewClient get androidWebViewClient => (super.noSuchMethod( Invocation.getter(#androidWebViewClient), @@ -268,7 +267,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidWebViewClient), ), ) as _i2.WebViewClient); - @override _i2.DownloadListener get androidDownloadListener => (super.noSuchMethod( Invocation.getter(#androidDownloadListener), @@ -281,7 +279,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidDownloadListener), ), ) as _i2.DownloadListener); - @override _i3.PlatformNavigationDelegateCreationParams get params => (super.noSuchMethod( @@ -296,7 +293,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformNavigationDelegateCreationParams); - @override _i9.Future setOnLoadRequest(_i8.LoadRequestCallback? onLoadRequest) => (super.noSuchMethod( @@ -307,7 +303,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnNavigationRequest( _i3.NavigationRequestCallback? onNavigationRequest) => @@ -319,7 +314,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnPageStarted(_i3.PageEventCallback? onPageStarted) => (super.noSuchMethod( @@ -330,7 +324,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnPageFinished(_i3.PageEventCallback? onPageFinished) => (super.noSuchMethod( @@ -341,7 +334,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnProgress(_i3.ProgressCallback? onProgress) => (super.noSuchMethod( @@ -352,7 +344,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnWebResourceError( _i3.WebResourceErrorCallback? onWebResourceError) => @@ -364,7 +355,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnUrlChange(_i3.UrlChangeCallback? onUrlChange) => (super.noSuchMethod( @@ -375,13 +365,12 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override - _i9.Future setOnHttpBasicAuthRequest( + _i9.Future setOnHttpAuthRequest( _i3.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i9.Future.value(), @@ -410,7 +399,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override _i3.PlatformWebViewControllerCreationParams get params => (super.noSuchMethod( Invocation.getter(#params), @@ -424,7 +412,6 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformWebViewControllerCreationParams); - @override _i9.Future loadFile(String? absoluteFilePath) => (super.noSuchMethod( Invocation.method( @@ -434,7 +421,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadFlutterAsset(String? key) => (super.noSuchMethod( Invocation.method( @@ -444,7 +430,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadHtmlString( String? html, { @@ -459,7 +444,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadRequest(_i3.LoadRequestParams? params) => (super.noSuchMethod( @@ -470,7 +454,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future currentUrl() => (super.noSuchMethod( Invocation.method( @@ -480,7 +463,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -490,7 +472,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -500,7 +481,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -510,7 +490,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -520,7 +499,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future reload() => (super.noSuchMethod( Invocation.method( @@ -530,7 +508,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearCache() => (super.noSuchMethod( Invocation.method( @@ -540,7 +517,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearLocalStorage() => (super.noSuchMethod( Invocation.method( @@ -550,7 +526,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setPlatformNavigationDelegate( _i3.PlatformNavigationDelegate? handler) => @@ -562,7 +537,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future runJavaScript(String? javaScript) => (super.noSuchMethod( Invocation.method( @@ -572,7 +546,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future runJavaScriptReturningResult(String? javaScript) => (super.noSuchMethod( @@ -595,7 +568,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i9.Future); - @override _i9.Future addJavaScriptChannel( _i3.JavaScriptChannelParams? javaScriptChannelParams) => @@ -607,7 +579,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future removeJavaScriptChannel(String? javaScriptChannelName) => (super.noSuchMethod( @@ -618,7 +589,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -628,7 +598,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollTo( int? x, @@ -645,7 +614,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollBy( int? x, @@ -662,7 +630,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -684,7 +651,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Offset>); - @override _i9.Future enableZoom(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -694,7 +660,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -704,7 +669,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setJavaScriptMode(_i3.JavaScriptMode? javaScriptMode) => (super.noSuchMethod( @@ -715,7 +679,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setUserAgent(String? userAgent) => (super.noSuchMethod( Invocation.method( @@ -725,7 +688,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -736,7 +698,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -746,7 +707,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnShowFileSelector( _i9.Future> Function(_i8.FileSelectorParams)? @@ -759,7 +719,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnPlatformPermissionRequest( void Function(_i3.PlatformWebViewPermissionRequest)? @@ -772,7 +731,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setGeolocationPermissionsPromptCallbacks({ _i8.OnGeolocationPermissionsShowPrompt? onShowPrompt, @@ -790,7 +748,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setCustomWidgetCallbacks({ required _i8.OnShowCustomWidgetCallback? onShowCustomWidget, @@ -808,7 +765,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnConsoleMessage( void Function(_i3.JavaScriptConsoleMessage)? onConsoleMessage) => @@ -820,7 +776,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getUserAgent() => (super.noSuchMethod( Invocation.method( @@ -849,7 +804,6 @@ class MockAndroidWebViewProxy extends _i1.Mock Invocation.getter(#createAndroidWebView), ), ) as _i2.WebView Function()); - @override _i2.WebChromeClient Function({ void Function( @@ -978,7 +932,6 @@ class MockAndroidWebViewProxy extends _i1.Mock _i2.FileChooserParams, )? onShowFileChooser, })); - @override _i2.WebViewClient Function({ void Function( @@ -1149,7 +1102,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, )? urlLoading, })); - @override _i2.FlutterAssetManager Function() get createFlutterAssetManager => (super.noSuchMethod( @@ -1163,7 +1115,6 @@ class MockAndroidWebViewProxy extends _i1.Mock Invocation.getter(#createFlutterAssetManager), ), ) as _i2.FlutterAssetManager Function()); - @override _i2.JavaScriptChannel Function( String, { @@ -1190,7 +1141,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, { required void Function(String) postMessage, })); - @override _i2.DownloadListener Function( {required void Function( @@ -1233,7 +1183,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, int, ) onDownloadStart})); - @override _i9.Future setWebContentsDebuggingEnabled(bool? enabled) => (super.noSuchMethod( @@ -1264,7 +1213,6 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#instanceManager), ), ) as _i5.InstanceManager); - @override _i6.PlatformViewsServiceProxy get platformViewsServiceProxy => (super.noSuchMethod( @@ -1278,14 +1226,12 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#platformViewsServiceProxy), ), ) as _i6.PlatformViewsServiceProxy); - @override bool get displayWithHybridComposition => (super.noSuchMethod( Invocation.getter(#displayWithHybridComposition), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override _i3.PlatformWebViewController get controller => (super.noSuchMethod( Invocation.getter(#controller), @@ -1298,14 +1244,12 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#controller), ), ) as _i3.PlatformWebViewController); - @override _i4.TextDirection get layoutDirection => (super.noSuchMethod( Invocation.getter(#layoutDirection), returnValue: _i4.TextDirection.rtl, returnValueForMissingStub: _i4.TextDirection.rtl, ) as _i4.TextDirection); - @override Set<_i11.Factory<_i12.OneSequenceGestureRecognizer>> get gestureRecognizers => (super.noSuchMethod( @@ -1327,21 +1271,18 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: false, returnValueForMissingStub: false, ) as bool); - @override int get viewId => (super.noSuchMethod( Invocation.getter(#viewId), returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override bool get awaitingCreation => (super.noSuchMethod( Invocation.getter(#awaitingCreation), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override _i7.PointTransformer get pointTransformer => (super.noSuchMethod( Invocation.getter(#pointTransformer), @@ -1354,7 +1295,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock Invocation.getter(#pointTransformer), ), ) as _i7.PointTransformer); - @override set pointTransformer(_i7.PointTransformer? transformer) => super.noSuchMethod( Invocation.setter( @@ -1363,14 +1303,12 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override bool get isCreated => (super.noSuchMethod( Invocation.getter(#isCreated), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override List<_i7.PlatformViewCreatedCallback> get createdCallbacks => (super.noSuchMethod( @@ -1378,7 +1316,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: <_i7.PlatformViewCreatedCallback>[], returnValueForMissingStub: <_i7.PlatformViewCreatedCallback>[], ) as List<_i7.PlatformViewCreatedCallback>); - @override _i9.Future setOffset(_i4.Offset? off) => (super.noSuchMethod( Invocation.method( @@ -1388,7 +1325,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future create({ _i4.Size? size, @@ -1406,7 +1342,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future<_i4.Size> setSize(_i4.Size? size) => (super.noSuchMethod( Invocation.method( @@ -1428,7 +1363,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Size>); - @override _i9.Future sendMotionEvent(_i7.AndroidMotionEvent? event) => (super.noSuchMethod( @@ -1439,7 +1373,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override void addOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1450,7 +1383,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void removeOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1461,7 +1393,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i9.Future setLayoutDirection(_i4.TextDirection? layoutDirection) => (super.noSuchMethod( @@ -1472,7 +1403,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispatchPointerEvent(_i12.PointerEvent? event) => (super.noSuchMethod( @@ -1483,7 +1413,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearFocus() => (super.noSuchMethod( Invocation.method( @@ -1493,7 +1422,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispose() => (super.noSuchMethod( Invocation.method( @@ -1519,7 +1447,6 @@ class MockFlutterAssetManager extends _i1.Mock returnValue: _i9.Future>.value([]), returnValueForMissingStub: _i9.Future>.value([]), ) as _i9.Future>); - @override _i9.Future getAssetFilePathByName(String? name) => (super.noSuchMethod( @@ -1542,14 +1469,12 @@ class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel { returnValue: '', returnValueForMissingStub: '', ) as String); - @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, returnValueForMissingStub: (String message) {}, ) as void Function(String)); - @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -1583,7 +1508,6 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: [], returnValueForMissingStub: [], ) as List); - @override _i9.Future grant(List? resources) => (super.noSuchMethod( Invocation.method( @@ -1593,7 +1517,6 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future deny() => (super.noSuchMethod( Invocation.method( @@ -1603,7 +1526,6 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.PermissionRequest copy() => (super.noSuchMethod( Invocation.method( @@ -1686,7 +1608,6 @@ class MockPlatformViewsServiceProxy extends _i1.Mock ), ), ) as _i7.ExpensiveAndroidViewController); - @override _i7.SurfaceAndroidViewController initSurfaceAndroidView({ required int? id, @@ -1753,21 +1674,18 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: false, returnValueForMissingStub: false, ) as bool); - @override int get viewId => (super.noSuchMethod( Invocation.getter(#viewId), returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override bool get awaitingCreation => (super.noSuchMethod( Invocation.getter(#awaitingCreation), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override _i7.PointTransformer get pointTransformer => (super.noSuchMethod( Invocation.getter(#pointTransformer), @@ -1780,7 +1698,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock Invocation.getter(#pointTransformer), ), ) as _i7.PointTransformer); - @override set pointTransformer(_i7.PointTransformer? transformer) => super.noSuchMethod( Invocation.setter( @@ -1789,14 +1706,12 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override bool get isCreated => (super.noSuchMethod( Invocation.getter(#isCreated), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override List<_i7.PlatformViewCreatedCallback> get createdCallbacks => (super.noSuchMethod( @@ -1804,7 +1719,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: <_i7.PlatformViewCreatedCallback>[], returnValueForMissingStub: <_i7.PlatformViewCreatedCallback>[], ) as List<_i7.PlatformViewCreatedCallback>); - @override _i9.Future setOffset(_i4.Offset? off) => (super.noSuchMethod( Invocation.method( @@ -1814,7 +1728,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future create({ _i4.Size? size, @@ -1832,7 +1745,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future<_i4.Size> setSize(_i4.Size? size) => (super.noSuchMethod( Invocation.method( @@ -1854,7 +1766,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Size>); - @override _i9.Future sendMotionEvent(_i7.AndroidMotionEvent? event) => (super.noSuchMethod( @@ -1865,7 +1776,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override void addOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1876,7 +1786,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void removeOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1887,7 +1796,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i9.Future setLayoutDirection(_i4.TextDirection? layoutDirection) => (super.noSuchMethod( @@ -1898,7 +1806,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispatchPointerEvent(_i12.PointerEvent? event) => (super.noSuchMethod( @@ -1909,7 +1816,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearFocus() => (super.noSuchMethod( Invocation.method( @@ -1919,7 +1825,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispose() => (super.noSuchMethod( Invocation.method( @@ -1945,7 +1850,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -1956,7 +1860,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -1993,7 +1896,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setJavaScriptCanOpenWindowsAutomatically(bool? flag) => (super.noSuchMethod( @@ -2004,7 +1906,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setSupportMultipleWindows(bool? support) => (super.noSuchMethod( @@ -2015,7 +1916,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setJavaScriptEnabled(bool? flag) => (super.noSuchMethod( Invocation.method( @@ -2025,7 +1925,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setUserAgentString(String? userAgentString) => (super.noSuchMethod( @@ -2036,7 +1935,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -2047,7 +1945,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setSupportZoom(bool? support) => (super.noSuchMethod( Invocation.method( @@ -2057,7 +1954,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setLoadWithOverviewMode(bool? overview) => (super.noSuchMethod( @@ -2068,7 +1964,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setUseWideViewPort(bool? use) => (super.noSuchMethod( Invocation.method( @@ -2078,7 +1973,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setDisplayZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2088,7 +1982,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setBuiltInZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2098,7 +1991,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setAllowFileAccess(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2108,7 +2000,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -2118,7 +2009,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getUserAgentString() => (super.noSuchMethod( Invocation.method( @@ -2128,7 +2018,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(''), returnValueForMissingStub: _i9.Future.value(''), ) as _i9.Future); - @override _i2.WebSettings copy() => (super.noSuchMethod( Invocation.method( @@ -2168,7 +2057,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); - @override _i9.Future loadData({ required String? data, @@ -2188,7 +2076,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadDataWithBaseUrl({ String? baseUrl, @@ -2212,7 +2099,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadUrl( String? url, @@ -2229,7 +2115,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future postUrl( String? url, @@ -2246,7 +2131,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -2256,7 +2140,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -2266,7 +2149,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -2276,7 +2158,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -2286,7 +2167,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -2296,7 +2176,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future reload() => (super.noSuchMethod( Invocation.method( @@ -2306,7 +2185,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -2316,7 +2194,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -2327,7 +2204,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -2337,7 +2213,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollTo( int? x, @@ -2354,7 +2229,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollBy( int? x, @@ -2371,7 +2245,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -2381,7 +2254,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(0), returnValueForMissingStub: _i9.Future.value(0), ) as _i9.Future); - @override _i9.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -2391,7 +2263,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(0), returnValueForMissingStub: _i9.Future.value(0), ) as _i9.Future); - @override _i9.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -2413,7 +2284,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i9.Future<_i4.Offset>); - @override _i9.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -2424,7 +2294,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -2436,7 +2305,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -2448,7 +2316,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -2459,7 +2326,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -2470,7 +2336,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -2480,7 +2345,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -2519,7 +2383,6 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( @@ -2556,7 +2419,6 @@ class MockWebStorage extends _i1.Mock implements _i2.WebStorage { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebStorage copy() => (super.noSuchMethod( Invocation.method( @@ -2590,7 +2452,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { returnValue: (int __p0) {}, returnValueForMissingStub: (int __p0) {}, ) as void Function(int)); - @override set onWeakReferenceRemoved(void Function(int)? _onWeakReferenceRemoved) => super.noSuchMethod( @@ -2600,7 +2461,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ); - @override int addDartCreatedInstance(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2610,7 +2470,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override int? removeWeakReference(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2619,7 +2478,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as int?); - @override T? remove(int? identifier) => (super.noSuchMethod( Invocation.method( @@ -2628,7 +2486,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as T?); - @override T? getInstanceWithWeakReference(int? identifier) => (super.noSuchMethod( @@ -2638,7 +2495,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as T?); - @override int? getIdentifier(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2647,7 +2503,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as int?); - @override void addHostCreatedInstance( _i5.Copyable? instance, @@ -2663,7 +2518,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ); - @override bool containsIdentifier(int? identifier) => (super.noSuchMethod( Invocation.method( 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 cc9fbfae2a3..5213793ee9e 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 @@ -93,7 +93,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeAllCookies() => (super.noSuchMethod( Invocation.method( @@ -102,7 +101,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future setAcceptThirdPartyCookies( _i2.WebView? webView, @@ -119,7 +117,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.CookieManager copy() => (super.noSuchMethod( Invocation.method( @@ -150,7 +147,6 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#webViewIdentifier), returnValue: 0, ) as int); - @override _i3.PlatformWebViewControllerCreationParams get params => (super.noSuchMethod( Invocation.getter(#params), @@ -159,7 +155,6 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformWebViewControllerCreationParams); - @override _i5.Future loadFile(String? absoluteFilePath) => (super.noSuchMethod( Invocation.method( @@ -169,7 +164,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadFlutterAsset(String? key) => (super.noSuchMethod( Invocation.method( @@ -179,7 +173,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadHtmlString( String? html, { @@ -194,7 +187,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadRequest(_i3.LoadRequestParams? params) => (super.noSuchMethod( @@ -205,7 +197,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future currentUrl() => (super.noSuchMethod( Invocation.method( @@ -214,7 +205,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -223,7 +213,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -232,7 +221,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -242,7 +230,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -252,7 +239,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -262,7 +248,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearCache() => (super.noSuchMethod( Invocation.method( @@ -272,7 +257,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearLocalStorage() => (super.noSuchMethod( Invocation.method( @@ -282,7 +266,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setPlatformNavigationDelegate( _i3.PlatformNavigationDelegate? handler) => @@ -294,7 +277,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future runJavaScript(String? javaScript) => (super.noSuchMethod( Invocation.method( @@ -304,7 +286,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future runJavaScriptReturningResult(String? javaScript) => (super.noSuchMethod( @@ -320,7 +301,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i5.Future); - @override _i5.Future addJavaScriptChannel( _i3.JavaScriptChannelParams? javaScriptChannelParams) => @@ -332,7 +312,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeJavaScriptChannel(String? javaScriptChannelName) => (super.noSuchMethod( @@ -343,7 +322,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -352,7 +330,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollTo( int? x, @@ -369,7 +346,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollBy( int? x, @@ -386,7 +362,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -401,7 +376,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i5.Future<_i4.Offset>); - @override _i5.Future enableZoom(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -411,7 +385,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -421,7 +394,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setJavaScriptMode(_i3.JavaScriptMode? javaScriptMode) => (super.noSuchMethod( @@ -432,7 +404,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setUserAgent(String? userAgent) => (super.noSuchMethod( Invocation.method( @@ -442,7 +413,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -453,7 +423,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -463,7 +432,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setOnShowFileSelector( _i5.Future> Function(_i6.FileSelectorParams)? @@ -476,7 +444,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setOnPlatformPermissionRequest( void Function(_i3.PlatformWebViewPermissionRequest)? @@ -489,7 +456,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setGeolocationPermissionsPromptCallbacks({ _i6.OnGeolocationPermissionsShowPrompt? onShowPrompt, @@ -507,7 +473,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setCustomWidgetCallbacks({ required _i6.OnShowCustomWidgetCallback? onShowCustomWidget, @@ -525,7 +490,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setOnConsoleMessage( void Function(_i3.JavaScriptConsoleMessage)? onConsoleMessage) => @@ -537,7 +501,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUserAgent() => (super.noSuchMethod( Invocation.method( diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart index 0928486956d..4a6130f13ad 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart @@ -128,7 +128,6 @@ class MockCookieManagerHostApi extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setCookie( int? arg_identifier, @@ -147,7 +146,6 @@ class MockCookieManagerHostApi extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeAllCookies(int? arg_identifier) => (super.noSuchMethod( Invocation.method( @@ -156,7 +154,6 @@ class MockCookieManagerHostApi extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future setAcceptThirdPartyCookies( int? arg_identifier, @@ -208,7 +205,6 @@ class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener { String, int, )); - @override _i2.DownloadListener copy() => (super.noSuchMethod( Invocation.method( @@ -238,13 +234,11 @@ class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel { Invocation.getter(#channelName), returnValue: '', ) as String); - @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, ) as void Function(String)); - @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -278,7 +272,6 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setCookie( int? identifier, @@ -296,7 +289,6 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i5.Future removeAllCookies(int? identifier) => (super.noSuchMethod( Invocation.method( @@ -305,7 +297,6 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override void setAcceptThirdPartyCookies( int? identifier, @@ -474,7 +465,6 @@ class MockTestWebChromeClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSynchronousReturnValueForOnShowFileChooser( int? instanceId, @@ -490,7 +480,6 @@ class MockTestWebChromeClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSynchronousReturnValueForOnConsoleMessage( int? instanceId, @@ -532,7 +521,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setDomStorageEnabled( int? instanceId, @@ -548,7 +536,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setJavaScriptCanOpenWindowsAutomatically( int? instanceId, @@ -564,7 +551,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSupportMultipleWindows( int? instanceId, @@ -580,7 +566,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setJavaScriptEnabled( int? instanceId, @@ -596,7 +581,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setUserAgentString( int? instanceId, @@ -612,7 +596,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setMediaPlaybackRequiresUserGesture( int? instanceId, @@ -628,7 +611,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSupportZoom( int? instanceId, @@ -644,7 +626,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setLoadWithOverviewMode( int? instanceId, @@ -660,7 +641,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setUseWideViewPort( int? instanceId, @@ -676,7 +656,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setDisplayZoomControls( int? instanceId, @@ -692,7 +671,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setBuiltInZoomControls( int? instanceId, @@ -708,7 +686,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setAllowFileAccess( int? instanceId, @@ -724,7 +701,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setTextZoom( int? instanceId, @@ -740,7 +716,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override String getUserAgentString(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -768,7 +743,6 @@ class MockTestWebStorageHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void deleteAllData(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -796,7 +770,6 @@ class MockTestWebViewClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSynchronousReturnValueForShouldOverrideUrlLoading( int? instanceId, @@ -831,7 +804,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void loadData( int? instanceId, @@ -851,7 +823,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void loadDataWithBaseUrl( int? instanceId, @@ -875,7 +846,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void loadUrl( int? instanceId, @@ -893,7 +863,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void postUrl( int? instanceId, @@ -911,13 +880,11 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override String? getUrl(int? instanceId) => (super.noSuchMethod(Invocation.method( #getUrl, [instanceId], )) as String?); - @override bool canGoBack(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -926,7 +893,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: false, ) as bool); - @override bool canGoForward(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -935,7 +901,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: false, ) as bool); - @override void goBack(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -944,7 +909,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void goForward(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -953,7 +917,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void reload(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -962,7 +925,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void clearCache( int? instanceId, @@ -978,7 +940,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i5.Future evaluateJavascript( int? instanceId, @@ -994,13 +955,11 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override String? getTitle(int? instanceId) => (super.noSuchMethod(Invocation.method( #getTitle, [instanceId], )) as String?); - @override void scrollTo( int? instanceId, @@ -1018,7 +977,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void scrollBy( int? instanceId, @@ -1036,7 +994,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override int getScrollX(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1045,7 +1002,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: 0, ) as int); - @override int getScrollY(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1054,7 +1010,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: 0, ) as int); - @override _i3.WebViewPoint getScrollPosition(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1069,7 +1024,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), ), ) as _i3.WebViewPoint); - @override void setWebContentsDebuggingEnabled(bool? enabled) => super.noSuchMethod( Invocation.method( @@ -1078,7 +1032,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setWebViewClient( int? instanceId, @@ -1094,7 +1047,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void addJavaScriptChannel( int? instanceId, @@ -1110,7 +1062,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void removeJavaScriptChannel( int? instanceId, @@ -1126,7 +1077,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setDownloadListener( int? instanceId, @@ -1142,7 +1092,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setWebChromeClient( int? instanceId, @@ -1158,7 +1107,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setBackgroundColor( int? instanceId, @@ -1193,7 +1141,6 @@ class MockTestAssetManagerHostApi extends _i1.Mock ), returnValue: [], ) as List); - @override String getAssetFilePathByName(String? name) => (super.noSuchMethod( Invocation.method( @@ -1228,7 +1175,6 @@ class MockTestPermissionRequestHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void deny(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -1257,7 +1203,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -1268,7 +1213,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -1301,7 +1245,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); - @override _i5.Future loadData({ required String? data, @@ -1321,7 +1264,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadDataWithBaseUrl({ String? baseUrl, @@ -1345,7 +1287,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadUrl( String? url, @@ -1362,7 +1303,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future postUrl( String? url, @@ -1379,7 +1319,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -1388,7 +1327,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -1397,7 +1335,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -1406,7 +1343,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -1416,7 +1352,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -1426,7 +1361,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -1436,7 +1370,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -1446,7 +1379,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -1456,7 +1388,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -1465,7 +1396,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollTo( int? x, @@ -1482,7 +1412,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollBy( int? x, @@ -1499,7 +1428,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -1508,7 +1436,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -1517,7 +1444,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -1532,7 +1458,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i5.Future<_i4.Offset>); - @override _i5.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -1543,7 +1468,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -1555,7 +1479,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -1567,7 +1490,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -1578,7 +1500,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -1589,7 +1510,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -1599,7 +1519,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -1635,7 +1554,6 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( 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 cb453ddb6b1..df06f625227 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 @@ -55,7 +55,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); - @override _i3.Future removeAllCookies() => (super.noSuchMethod( Invocation.method( @@ -64,7 +63,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ), returnValue: _i3.Future.value(false), ) as _i3.Future); - @override _i3.Future setAcceptThirdPartyCookies( _i2.WebView? webView, @@ -81,7 +79,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); - @override _i2.CookieManager copy() => (super.noSuchMethod( Invocation.method( diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart index f83d2eaee74..19e03b393bd 100644 --- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart @@ -138,7 +138,6 @@ class MockFlutterAssetManager extends _i1.Mock ), returnValue: _i5.Future>.value([]), ) as _i5.Future>); - @override _i5.Future getAssetFilePathByName(String? name) => (super.noSuchMethod( @@ -167,7 +166,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setJavaScriptCanOpenWindowsAutomatically(bool? flag) => (super.noSuchMethod( @@ -178,7 +176,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSupportMultipleWindows(bool? support) => (super.noSuchMethod( @@ -189,7 +186,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setJavaScriptEnabled(bool? flag) => (super.noSuchMethod( Invocation.method( @@ -199,7 +195,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setUserAgentString(String? userAgentString) => (super.noSuchMethod( @@ -210,7 +205,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -221,7 +215,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSupportZoom(bool? support) => (super.noSuchMethod( Invocation.method( @@ -231,7 +224,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setLoadWithOverviewMode(bool? overview) => (super.noSuchMethod( @@ -242,7 +234,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setUseWideViewPort(bool? use) => (super.noSuchMethod( Invocation.method( @@ -252,7 +243,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setDisplayZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -262,7 +252,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBuiltInZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -272,7 +261,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setAllowFileAccess(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -282,7 +270,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -292,7 +279,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUserAgentString() => (super.noSuchMethod( Invocation.method( @@ -301,7 +287,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { ), returnValue: _i5.Future.value(''), ) as _i5.Future); - @override _i2.WebSettings copy() => (super.noSuchMethod( Invocation.method( @@ -335,7 +320,6 @@ class MockWebStorage extends _i1.Mock implements _i2.WebStorage { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebStorage copy() => (super.noSuchMethod( Invocation.method( @@ -368,7 +352,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); - @override _i5.Future loadData({ required String? data, @@ -388,7 +371,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadDataWithBaseUrl({ String? baseUrl, @@ -412,7 +394,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadUrl( String? url, @@ -429,7 +410,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future postUrl( String? url, @@ -446,7 +426,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -455,7 +434,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -464,7 +442,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -473,7 +450,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -483,7 +459,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -493,7 +468,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -503,7 +477,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -513,7 +486,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -523,7 +495,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -532,7 +503,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollTo( int? x, @@ -549,7 +519,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollBy( int? x, @@ -566,7 +535,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -575,7 +543,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -584,7 +551,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future<_i3.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -599,7 +565,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i5.Future<_i3.Offset>); - @override _i5.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -610,7 +575,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -622,7 +586,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -634,7 +597,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -645,7 +607,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -656,7 +617,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBackgroundColor(_i3.Color? color) => (super.noSuchMethod( Invocation.method( @@ -666,7 +626,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -697,25 +656,21 @@ class MockWebResourceRequest extends _i1.Mock Invocation.getter(#url), returnValue: '', ) as String); - @override bool get isForMainFrame => (super.noSuchMethod( Invocation.getter(#isForMainFrame), returnValue: false, ) as bool); - @override bool get hasGesture => (super.noSuchMethod( Invocation.getter(#hasGesture), returnValue: false, ) as bool); - @override String get method => (super.noSuchMethod( Invocation.getter(#method), returnValue: '', ) as String); - @override Map get requestHeaders => (super.noSuchMethod( Invocation.getter(#requestHeaders), @@ -754,7 +709,6 @@ class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener { String, int, )); - @override _i2.DownloadListener copy() => (super.noSuchMethod( Invocation.method( @@ -789,19 +743,16 @@ class MockWebViewAndroidJavaScriptChannel extends _i1.Mock Invocation.getter(#javascriptChannelRegistry), ), ) as _i4.JavascriptChannelRegistry); - @override String get channelName => (super.noSuchMethod( Invocation.getter(#channelName), returnValue: '', ) as String); - @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, ) as void Function(String)); - @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -836,7 +787,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -847,7 +797,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -883,7 +832,6 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( @@ -914,7 +862,6 @@ class MockJavascriptChannelRegistry extends _i1.Mock Invocation.getter(#channels), returnValue: {}, ) as Map); - @override void onJavascriptChannelMessage( String? channel, @@ -930,7 +877,6 @@ class MockJavascriptChannelRegistry extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void updateJavascriptChannelsFromSet(Set<_i4.JavascriptChannel>? channels) => super.noSuchMethod( @@ -967,7 +913,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.FutureOr); - @override void onPageStarted(String? url) => super.noSuchMethod( Invocation.method( @@ -976,7 +921,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void onPageFinished(String? url) => super.noSuchMethod( Invocation.method( @@ -985,7 +929,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void onProgress(int? progress) => super.noSuchMethod( Invocation.method( @@ -994,7 +937,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void onWebResourceError(_i4.WebResourceError? error) => super.noSuchMethod( Invocation.method( @@ -1027,7 +969,6 @@ class MockWebViewProxy extends _i1.Mock implements _i7.WebViewProxy { ), ), ) as _i2.WebView); - @override _i2.WebViewClient createWebViewClient({ void Function( @@ -1087,7 +1028,6 @@ class MockWebViewProxy extends _i1.Mock implements _i7.WebViewProxy { ), ), ) as _i2.WebViewClient); - @override _i5.Future setWebContentsDebuggingEnabled(bool? enabled) => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart index 65c87843aee..88d5af24ed7 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart @@ -125,11 +125,11 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); @override - _i4.Future setOnHttpBasicAuthRequest( + _i4.Future setOnHttpAuthRequest( _i3.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i4.Future.value(), From 131bc5646d848df815ac421330f314da8a7cba5e Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 11 Sep 2023 14:38:32 +0200 Subject: [PATCH 06/30] Implement feedback --- .../webview_flutter_test.dart | 28 ++++++++++++++----- .../webview_flutter/example/lib/main.dart | 5 ++-- .../lib/src/navigation_delegate.dart | 7 ++--- .../webview_flutter/lib/webview_flutter.dart | 1 + .../webview_flutter_test.dart | 2 +- .../example/lib/main.dart | 4 +-- .../lib/src/android_webview.dart | 5 ++-- .../lib/src/android_webview_api_impls.dart | 9 +++--- .../lib/src/android_webview_controller.dart | 12 ++++++-- .../lib/src/types/http_auth_request.dart | 15 ++++------ .../webview_flutter_test.dart | 2 +- .../example/lib/main.dart | 4 +-- .../lib/src/webkit_webview_controller.dart | 17 +++++------ 13 files changed, 62 insertions(+), 49 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 528f3d9c3cc..bf312cc3d95 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -17,7 +17,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter_android/webview_flutter_android.dart'; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; Future main() async { @@ -34,12 +33,22 @@ Future main() async { } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; } else if (request.uri.path == '/http-basic-authentication') { - final bool isAuthenticating = request.headers['Authorization'] != null; - if (isAuthenticating) { - request.response.writeln('Authorized'); + final List? authHeader = + request.headers[HttpHeaders.authorizationHeader]; + if (authHeader != null) { + final String encodedCredential = authHeader.first.split(' ')[1]; + final String credential = + String.fromCharCodes(base64Decode(encodedCredential)); + if (credential == 'user:password') { + request.response.writeln('Authorized'); + } else { + request.response.headers.add( + HttpHeaders.wwwAuthenticateHeader, 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { request.response.headers - .add('WWW-Authenticate', 'Basic realm="Test realm"'); + .add(HttpHeaders.wwwAuthenticateHeader, 'Basic realm="Test realm"'); request.response.statusCode = HttpStatus.unauthorized; } } else { @@ -799,10 +808,15 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpAuthRequest: (HttpAuthRequest request) => request.onProceed( - const WebViewCredential(user: 'user', password: 'password'), + onHttpAuthRequest: (HttpAuthRequest request) => + request.onAuthenticate( + const WebViewCredential( + user: 'u2ser', + password: 'password', + ), ), onPageFinished: (_) => pageFinished.complete(), + onWebResourceError: (_) => fail('Authentication failed'), ), ), ); diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 35f9f1e6f1c..674710b17c8 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -15,7 +15,6 @@ import 'package:webview_flutter/webview_flutter.dart'; // #docregion platform_imports // Import for Android features. import 'package:webview_flutter_android/webview_flutter_android.dart'; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; // Import for iOS features. import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; // #enddocregion platform_imports @@ -265,14 +264,14 @@ Page resource error: // requests when a previous request is pending. TextButton( onPressed: () { - httpRequest.onCancel(); + httpRequest.onAuthenticate(null); Navigator.of(context).pop(); }, child: const Text('Cancel'), ), TextButton( onPressed: () { - httpRequest.onProceed( + httpRequest.onAuthenticate( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index 7aa255eb1e9..d1c5687c95a 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -123,7 +123,7 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, - this.onHttpAuthRequest, + HttpAuthRequestCallback? onHttpAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -144,7 +144,7 @@ class NavigationDelegate { platform.setOnUrlChange(onUrlChange); } if (onHttpAuthRequest != null) { - platform.setOnHttpAuthRequest(onHttpAuthRequest!); + platform.setOnHttpAuthRequest(onHttpAuthRequest); } } @@ -174,7 +174,4 @@ class NavigationDelegate { /// Invoked when a resource loading error occurred. final WebResourceErrorCallback? onWebResourceError; - - /// Invoked when a resource required HTTP authentication. - final HttpAuthRequestCallback? onHttpAuthRequest; } diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index effd512bd92..b92c2fd90f8 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -27,6 +27,7 @@ export 'package:webview_flutter_platform_interface/webview_flutter_platform_inte WebResourceErrorCallback, WebResourceErrorType, WebViewCookie, + WebViewCredential, WebViewPermissionResourceType, WebViewPlatform; diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 9ed263e8dc6..8ccf81f9464 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1178,7 +1178,7 @@ Future main() async { ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onProceed( + (HttpAuthRequest request) => request.onAuthenticate( const WebViewCredential(user: 'user', password: 'password'), ), ); 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 923aadb7d68..7ab6df64be4 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -163,8 +163,6 @@ Page resource error: debugPrint('url change to ${change.url}'); }) ..setOnHttpAuthRequest((HttpAuthRequest request) { - debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -255,7 +253,7 @@ Page resource error: actions: [ TextButton( onPressed: () { - httpRequest.onProceed( + httpRequest.onAuthenticate( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index 48cb4974f45..f18c66b02e3 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -7,7 +7,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart' show BinaryMessenger; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'android_webview.g.dart'; import 'android_webview_api_impls.dart'; @@ -1533,8 +1532,8 @@ class HttpAuthHandler extends JavaObject { /// Instructs the WebView to proceed with the authentication with the provided /// credentials. - Future proceed(WebViewCredential credential) { - return api.proceedFromInstance(this, credential); + Future proceed(String username, String password) { + return api.proceedFromInstance(this, username, password); } /// Gets whether the credentials stored for the current host are suitable for diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index 404135418d7..e0e4c9a3b7a 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -5,8 +5,6 @@ import 'dart:ui'; import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' - show WebViewCredential; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -1451,12 +1449,13 @@ class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { /// Helper method to convert instance ids to objects. Future proceedFromInstance( HttpAuthHandler instance, - WebViewCredential credential, + String username, + String password, ) { return proceed( _instanceManager.getIdentifier(instance)!, - credential.user, - credential.password, + username, + password, ); } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index c662c2a6f83..95833bc120f 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -1279,8 +1279,16 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { if (callback != null) { callback( HttpAuthRequest( - onProceed: httpAuthHandler.proceed, - onCancel: httpAuthHandler.cancel, + onAuthenticate: (WebViewCredential? credential) { + if (credential == null) { + httpAuthHandler.cancel(); + } else { + httpAuthHandler.proceed( + credential.user, + credential.password, + ); + } + }, host: host, realm: realm, ), diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart index 8da22d38403..0680b1e146a 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:meta/meta.dart'; - +import 'package:flutter/foundation.dart'; import '../../webview_flutter_platform_interface.dart'; /// Defines the parameters of a pending HTTP authentication request received by @@ -51,17 +50,15 @@ import '../../webview_flutter_platform_interface.dart'; class HttpAuthRequest { /// Creates a [HttpAuthRequest]. const HttpAuthRequest({ - required this.onProceed, - required this.onCancel, + required this.onAuthenticate, required this.host, this.realm, }); - /// The callback to authenticate. - final void Function(WebViewCredential credential) onProceed; - - /// The callback to cancel authentication. - final void Function() onCancel; + /// The callback to proceed with, or cancel an auth request. + /// + /// If `credential` is `null`, the request will be canceled. + final void Function(WebViewCredential? credential) onAuthenticate; /// The host requiring authentication. final String host; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 89ecad8d0e1..064d70d506f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1186,7 +1186,7 @@ Future main() async { ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onProceed( + (HttpAuthRequest request) => request.onAuthenticate( const WebViewCredential(user: 'user', password: 'password'), ), ); 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 d3abecb9fba..4f76dedd38c 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -259,14 +259,14 @@ Page resource error: // requests when a previous request is pending. TextButton( onPressed: () { - httpRequest.onCancel(); + httpRequest.onAuthenticate(null); Navigator.of(context).pop(); }, child: const Text('Cancel'), ), TextButton( onPressed: () { - httpRequest.onProceed( + httpRequest.onAuthenticate( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 95e2917a49f..2acf425a5ae 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -966,7 +966,15 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { if (callback != null && host != null && realm != null) { callback( HttpAuthRequest( - onProceed: (WebViewCredential credential) { + onAuthenticate: (WebViewCredential? credential) { + if (credential == null) { + return completionHandler( + NSUrlSessionAuthChallengeDisposition + .cancelAuthenticationChallenge, + null, + ); + } + return completionHandler( NSUrlSessionAuthChallengeDisposition.useCredential, NSUrlCredential.withUser( @@ -976,13 +984,6 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ), ); }, - onCancel: () { - completionHandler( - NSUrlSessionAuthChallengeDisposition - .cancelAuthenticationChallenge, - null, - ); - }, host: host, realm: realm, ), From bc01be44b33ec27b9fd6624b99ffdab3e6f4ae37 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 11 Sep 2023 16:12:42 +0200 Subject: [PATCH 07/30] Remove redundant key in `Info.plist` --- .../example/integration_test/webview_flutter_test.dart | 4 ++-- .../webview_flutter_wkwebview/example/ios/Runner/Info.plist | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index bf312cc3d95..b157dc263e3 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -800,7 +800,7 @@ Future main() async { await expectLater(authRequested.future, completes); }); - testWidgets('can reply to HTTP basic auth requests', + testWidgets('can authenticate to HTTP basic auth requests', (WidgetTester tester) async { final WebViewController controller = WebViewController(); final Completer pageFinished = Completer(); @@ -811,7 +811,7 @@ Future main() async { onHttpAuthRequest: (HttpAuthRequest request) => request.onAuthenticate( const WebViewCredential( - user: 'u2ser', + user: 'user', password: 'password', ), ), diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist index c4c0ff0335c..51f3642b2da 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist @@ -33,7 +33,6 @@ If you want to use the camera, you have to give permission. UIApplicationSupportsIndirectInputEvents - UIBackgroundModes UILaunchStoryboardName LaunchScreen From 67aa00e85dec9450082b535f8238521151b140c9 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 11 Sep 2023 17:00:54 +0200 Subject: [PATCH 08/30] Update example apps --- .../webview_flutter/example/lib/main.dart | 37 ++++++++++++++--- .../example/lib/main.dart | 38 ++++++++++++++--- .../example/ios/Runner/Info.plist | 23 +++++------ .../example/lib/main.dart | 41 +++++++++++++++---- 4 files changed, 109 insertions(+), 30 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 674710b17c8..c5c1544043b 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -173,8 +173,6 @@ Page resource error: debugPrint('url change to ${change.url}'); }, onHttpAuthRequest: (HttpAuthRequest request) { - debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }, ), @@ -364,7 +362,7 @@ class SampleMenu extends StatelessWidget { _onLogExample(); break; case MenuOptions.basicAuthentication: - _basicAuthExample(); + _promptForUrl(context); break; } }, @@ -584,9 +582,36 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - Future _basicAuthExample() { - return webViewController.loadRequest(Uri.parse( - 'https://www.httpwatch.com/httpgallery/authentication/#showExample10')); + Future _promptForUrl(BuildContext context) { + final TextEditingController urlTextController = TextEditingController(); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Input URL to visit'), + content: TextField( + decoration: const InputDecoration(labelText: 'URL'), + autofocus: true, + controller: urlTextController, + ), + actions: [ + TextButton( + onPressed: () { + if (urlTextController.text.isNotEmpty) { + final Uri? uri = Uri.tryParse(urlTextController.text); + if (uri != null && uri.scheme.isNotEmpty) { + webViewController.loadRequest(uri); + Navigator.pop(context); + } + } + }, + child: const Text('Visit'), + ), + ], + ); + }, + ); } } 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 7ab6df64be4..4a306160766 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -354,7 +354,7 @@ class SampleMenu extends StatelessWidget { _onLogExample(); break; case MenuOptions.basicAuthentication: - _basicAuthExample(); + _promptForUrl(context); break; } }, @@ -606,10 +606,38 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - Future _basicAuthExample() { - return webViewController.loadRequest(LoadRequestParams( - uri: Uri.parse( - 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + Future _promptForUrl(BuildContext context) { + final TextEditingController urlTextController = TextEditingController(); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Input URL to visit'), + content: TextField( + decoration: const InputDecoration(labelText: 'URL'), + autofocus: true, + controller: urlTextController, + ), + actions: [ + TextButton( + onPressed: () { + if (urlTextController.text.isNotEmpty) { + final Uri? uri = Uri.tryParse(urlTextController.text); + if (uri != null && uri.scheme.isNotEmpty) { + webViewController.loadRequest( + LoadRequestParams(uri: uri), + ); + Navigator.pop(context); + } + } + }, + child: const Text('Visit'), + ), + ], + ); + }, + ); } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist index 51f3642b2da..6aa6702a86e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist @@ -2,8 +2,6 @@ - CADisableMinimumFrameDurationOnPhone - CFBundleDevelopmentRegion en CFBundleExecutable @@ -24,16 +22,6 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS - NSAppTransportSecurity - - NSAllowsArbitraryLoadsInWebContent - - - NSCameraUsageDescription - If you want to use the camera, you have to give permission. - UIApplicationSupportsIndirectInputEvents - - UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -51,5 +39,16 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + NSCameraUsageDescription + If you want to use the camera, you have to give permission. + NSAppTransportSecurity + + NSAllowsArbitraryLoadsInWebContent + + 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 4f76dedd38c..f9d623d09ae 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -164,8 +164,6 @@ Page resource error: debugPrint('url change to ${change.url}'); }) ..setOnHttpAuthRequest((HttpAuthRequest request) { - debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -363,7 +361,7 @@ class SampleMenu extends StatelessWidget { _onLogExample(); break; case MenuOptions.basicAuthentication: - _basicAuthExample(); + _promptForUrl(context); break; } }, @@ -588,10 +586,39 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - Future _basicAuthExample() { - return webViewController.loadRequest(LoadRequestParams( - uri: Uri.parse( - 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + Future _promptForUrl(BuildContext context) { + final TextEditingController urlTextController = + TextEditingController(text: 'https://'); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Input URL to visit'), + content: TextField( + decoration: const InputDecoration(labelText: 'URL'), + autofocus: true, + controller: urlTextController, + ), + actions: [ + TextButton( + onPressed: () { + if (urlTextController.text.isNotEmpty) { + final Uri? uri = Uri.tryParse(urlTextController.text); + if (uri != null && uri.scheme.isNotEmpty) { + webViewController.loadRequest( + LoadRequestParams(uri: uri), + ); + Navigator.pop(context); + } + } + }, + child: const Text('Visit'), + ), + ], + ); + }, + ); } } From 32496d054f4b5060370bc7c11d555eca65983370 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Thu, 10 Aug 2023 13:38:03 +0200 Subject: [PATCH 09/30] Implement http basic auth --- .../webview_flutter/CHANGELOG.md | 4 + .../webview_flutter_test.dart | 58 +- .../ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../webview_flutter/example/lib/main.dart | 73 +- .../webview_flutter/example/pubspec.yaml | 5 + .../example/test/main_test.dart | 5 + .../lib/src/navigation_delegate.dart | 11 + .../webview_flutter/lib/webview_flutter.dart | 1 + .../webview_flutter/pubspec.yaml | 9 +- .../test/navigation_delegate_test.dart | 13 + .../test/navigation_delegate_test.mocks.dart | 11 + .../test/webview_controller_test.mocks.dart | 11 + .../webview_flutter_android/CHANGELOG.md | 4 + .../GeneratedAndroidWebView.java | 1350 ++++++-------- .../HttpAuthHandlerFlutterApiImpl.java | 51 + .../HttpAuthHandlerHostApiImpl.java | 57 + .../WebViewClientFlutterApiImpl.java | 21 + .../WebViewClientHostApiImpl.java | 22 +- .../webviewflutter/WebViewFlutterPlugin.java | 3 + .../webview_flutter_test.dart | 84 + .../example/lib/main.dart | 70 +- .../example/pubspec.yaml | 5 + .../lib/src/android_proxy.dart | 6 + .../lib/src/android_webview.dart | 40 + .../lib/src/android_webview.g.dart | 817 ++++----- .../lib/src/android_webview_api_impls.dart | 103 +- .../lib/src/android_webview_controller.dart | 29 +- .../pigeons/android_webview.dart | 40 + .../webview_flutter_android/pubspec.yaml | 9 +- .../android_navigation_delegate_test.dart | 67 +- .../test/android_webview_controller_test.dart | 6 + ...android_webview_controller_test.mocks.dart | 35 + .../test/test_android_webview.g.dart | 966 ++++------ .../CHANGELOG.md | 4 + .../lib/src/platform_navigation_delegate.dart | 12 + .../lib/src/platform_webview_controller.dart | 4 +- .../src/types/http_basic_auth_request.dart | 26 + .../lib/src/types/types.dart | 1 + .../pubspec.yaml | 4 +- .../platform_navigation_delegate_test.dart | 14 + ...latform_webview_controller_test.mocks.dart | 11 + .../webview_flutter_wkwebview/CHANGELOG.md | 5 + .../webview_flutter_test.dart | 84 + .../ios/Runner.xcodeproj/project.pbxproj | 17 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../example/ios/Runner/Info.plist | 24 +- .../FWFNavigationDelegateHostApiTests.m | 54 + ...WFURLAuthenticationChallengeHostApiTests.m | 47 + .../FWFURLCredentialHostApiTests.m | 35 + .../FWFURLProtectionSpaceHostApiTests.m | 41 + .../example/lib/main.dart | 73 + .../example/pubspec.yaml | 5 + .../ios/Classes/FLTWebViewFlutterPlugin.m | 6 + .../ios/Classes/FWFDataConverters.h | 22 + .../ios/Classes/FWFDataConverters.m | 33 + .../ios/Classes/FWFGeneratedWebKitApis.h | 577 +++--- .../ios/Classes/FWFGeneratedWebKitApis.m | 1615 +++++++---------- .../Classes/FWFNavigationDelegateHostApi.m | 65 + .../FWFURLAuthenticationChallengeHostApi.h | 33 + .../FWFURLAuthenticationChallengeHostApi.m | 52 + .../ios/Classes/FWFURLCredentialHostApi.h | 24 + .../ios/Classes/FWFURLCredentialHostApi.m | 58 + .../Classes/FWFURLProtectionSpaceHostApi.h | 35 + .../Classes/FWFURLProtectionSpaceHostApi.m | 36 + .../ios/Classes/webview-umbrella.h | 3 + .../lib/src/common/web_kit.g.dart | 936 +++++----- .../lib/src/foundation/foundation.dart | 120 ++ .../src/foundation/foundation_api_impls.dart | 145 ++ .../lib/src/web_kit/web_kit.dart | 13 + .../lib/src/web_kit/web_kit_api_impls.dart | 49 + .../lib/src/webkit_proxy.dart | 8 + .../lib/src/webkit_webview_controller.dart | 56 + .../pigeons/web_kit.dart | 121 ++ .../webview_flutter_wkwebview/pubspec.yaml | 9 +- .../test/src/common/test_web_kit.g.dart | 920 ++++------ .../test/src/foundation/foundation_test.dart | 97 + .../src/foundation/foundation_test.mocks.dart | 30 + .../test/src/web_kit/web_kit_test.dart | 57 + .../test/webkit_navigation_delegate_test.dart | 41 + .../test/webkit_webview_controller_test.dart | 1 + 81 files changed, 5496 insertions(+), 4119 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java create mode 100644 packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h create mode 100644 packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md index 9f8374332e9..81a3ae96260 100644 --- a/packages/webview_flutter/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 4.5.0 + +* Adds support for HTTP basic authentication. See `NavigationDelegate(onReceivedHttpAuthRequest)`. + ## 4.4.1 * Exposes `JavaScriptLogLevel` from platform interface. diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index cee1b8b0344..41e335eab4c 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -32,6 +32,15 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; + } else if (request.uri.path == '/http-basic-authentication') { + final bool isAuthenticating = request.headers['Authorization'] != null; + if (isAuthenticating) { + request.response.writeln('Authorized'); + } else { + request.response.headers + .add('WWW-Authenticate', 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -41,6 +50,7 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; + final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets('loadRequest', (WidgetTester tester) async { final Completer pageFinished = Completer(); @@ -49,12 +59,9 @@ Future main() async { unawaited(controller.setNavigationDelegate( NavigationDelegate(onPageFinished: (_) => pageFinished.complete()), )); - unawaited(controller.loadRequest(Uri.parse(primaryUrl))); - await tester.pumpWidget(WebViewWidget(controller: controller)); - + unawaited(controller.loadRequest(Uri.parse(primaryUrl))); await pageFinished.future; - final String? currentUrl = await controller.currentUrl(); expect(currentUrl, primaryUrl); }); @@ -761,6 +768,49 @@ Future main() async { await expectLater(urlChangeCompleter.future, completion(secondaryUrl)); }); + + testWidgets('can receive HTTP basic auth requests', + (WidgetTester tester) async { + final Completer authRequested = Completer(); + final WebViewController controller = WebViewController(); + + unawaited( + controller.setNavigationDelegate( + NavigationDelegate( + onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => + authRequested.complete(), + ), + ), + ); + + await tester.pumpWidget(WebViewWidget(controller: controller)); + + unawaited(controller.loadRequest(Uri.parse(basicAuthUrl))); + + await expectLater(authRequested.future, completes); + }); + + testWidgets('can reply to HTTP basic auth requests', + (WidgetTester tester) async { + final WebViewController controller = WebViewController(); + final Completer pageFinished = Completer(); + + unawaited( + controller.setNavigationDelegate( + NavigationDelegate( + onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => + request.onProceed('user', 'pass'), + onPageFinished: (_) => pageFinished.complete(), + ), + ), + ); + + await tester.pumpWidget(WebViewWidget(controller: controller)); + + unawaited(controller.loadRequest(Uri.parse(basicAuthUrl))); + + await expectLater(pageFinished.future, completes); + }); }); testWidgets('target _blank opens in same window', diff --git a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj index f4a6c737e42..8c5cae5f9d0 100644 --- a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -274,7 +274,7 @@ isa = PBXProject; attributes = { DefaultBuildSystemTypeForWorkspace = Original; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 68BDCAE823C3F7CB00D9C032 = { diff --git a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cb713d76763..cf07c46df2e 100644 --- a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ { if (WebViewPlatform.instance is WebKitWebViewPlatform) { params = WebKitWebViewControllerCreationParams( allowsInlineMediaPlayback: true, - mediaTypesRequiringUserAction: const {}, ); } else { params = const PlatformWebViewControllerCreationParams(); @@ -173,6 +172,11 @@ Page resource error: onUrlChange: (UrlChange change) { debugPrint('url change to ${change.url}'); }, + onHttpBasicAuthRequest: (HttpBasicAuthRequest request) { + debugPrint( + 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + openDialog(request); + }, ), ) ..addJavaScriptChannel( @@ -226,6 +230,60 @@ Page resource error: child: const Icon(Icons.favorite), ); } + + Future openDialog(HttpBasicAuthRequest httpRequest) async { + final TextEditingController usernameTextController = + TextEditingController(); + final TextEditingController passwordTextController = + TextEditingController(); + + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${httpRequest.host}: ${httpRequest.realm}'), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + decoration: const InputDecoration(labelText: 'Username'), + autofocus: true, + controller: usernameTextController, + ), + TextField( + decoration: const InputDecoration(labelText: 'Password'), + controller: passwordTextController, + ), + ], + ), + ), + actions: [ + // Explicitly cancel the request on iOS as the OS does not emit new + // requests when a previous request is pending. + TextButton( + onPressed: () { + httpRequest.onCancel(); + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () { + httpRequest.onProceed( + usernameTextController.text, + passwordTextController.text, + ); + Navigator.of(context).pop(); + }, + child: const Text('Authenticate'), + ), + ], + ); + }, + ); + } } enum MenuOptions { @@ -243,6 +301,7 @@ enum MenuOptions { transparentBackground, setCookie, logExample, + basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -302,6 +361,9 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; + case MenuOptions.basicAuthentication: + _basicAuthExample(); + break; } }, itemBuilder: (BuildContext context) => >[ @@ -362,6 +424,10 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.logExample, child: Text('Log example'), ), + const PopupMenuItem( + value: MenuOptions.basicAuthentication, + child: Text('Basic Authentication Example'), + ), ], ); } @@ -515,6 +581,11 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } + + Future _basicAuthExample() { + return webViewController.loadRequest(Uri.parse( + 'https://www.httpwatch.com/httpgallery/authentication/#showExample10')); + } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml index 3133daf588c..7dd37c5609d 100644 --- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml @@ -36,3 +36,8 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_android: {path: ../../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}, webview_flutter_wkwebview: {path: ../../../webview_flutter/webview_flutter_wkwebview}} diff --git a/packages/webview_flutter/webview_flutter/example/test/main_test.dart b/packages/webview_flutter/webview_flutter/example/test/main_test.dart index b1f36d364ab..baa7983e7ab 100644 --- a/packages/webview_flutter/webview_flutter/example/test/main_test.dart +++ b/packages/webview_flutter/webview_flutter/example/test/main_test.dart @@ -116,4 +116,9 @@ class FakeNavigationDelegate extends PlatformNavigationDelegate { @override Future setOnUrlChange(UrlChangeCallback onUrlChange) async {} + + @override + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback handler, + ) async {} } diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index 9ca6981339d..6c0c8ed301e 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -48,6 +48,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, + void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, }) : this.fromPlatformCreationParams( const PlatformNavigationDelegateCreationParams(), onNavigationRequest: onNavigationRequest, @@ -56,6 +57,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, + onHttpBasicAuthRequest: onHttpBasicAuthRequest, ); /// Constructs a [NavigationDelegate] from creation params for a specific @@ -98,6 +100,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, + void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, }) : this.fromPlatform( PlatformNavigationDelegate(params), onNavigationRequest: onNavigationRequest, @@ -106,6 +109,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, + onHttpBasicAuthRequest: onHttpBasicAuthRequest, ); /// Constructs a [NavigationDelegate] from a specific platform implementation. @@ -119,6 +123,7 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, + this.onHttpBasicAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -138,6 +143,9 @@ class NavigationDelegate { if (onUrlChange != null) { platform.setOnUrlChange(onUrlChange); } + if (onHttpBasicAuthRequest != null) { + platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest!); + } } /// Implementation of [PlatformNavigationDelegate] for the current platform. @@ -166,4 +174,7 @@ class NavigationDelegate { /// Invoked when a resource loading error occurred. final WebResourceErrorCallback? onWebResourceError; + + /// Invoked when a resource required HTTP basic authentication. + final HttpAuthRequestCallback? onHttpBasicAuthRequest; } diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index 4132a61cab7..34701997a63 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -6,6 +6,7 @@ library webview_flutter; export 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' show + HttpBasicAuthRequest, JavaScriptConsoleMessage, JavaScriptLogLevel, JavaScriptMessage, diff --git a/packages/webview_flutter/webview_flutter/pubspec.yaml b/packages/webview_flutter/webview_flutter/pubspec.yaml index 75b9efcc23a..de15f80ab22 100644 --- a/packages/webview_flutter/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 4.4.1 +version: 4.5.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -20,7 +20,7 @@ dependencies: flutter: sdk: flutter webview_flutter_android: ^3.12.0 - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 webview_flutter_wkwebview: ^3.9.0 dev_dependencies: @@ -34,3 +34,8 @@ topics: - html - webview - webview-flutter + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_android: {path: ../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}, webview_flutter_wkwebview: {path: ../../webview_flutter/webview_flutter_wkwebview}} diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart index ffd97718bd4..e0aee949cea 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart @@ -87,6 +87,19 @@ void main() { verify(delegate.platform.setOnUrlChange(onUrlChange)); }); + + test('onHttpBasicAuthRequest', () { + WebViewPlatform.instance = TestWebViewPlatform(); + + void onHttpBasicAuthRequest(HttpBasicAuthRequest request) {} + + final NavigationDelegate delegate = NavigationDelegate( + onHttpBasicAuthRequest: onHttpBasicAuthRequest, + ); + + verify( + delegate.platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest)); + }); }); } diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart index 0a3475f8fcf..ba473193a41 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart @@ -250,4 +250,15 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i8.Future.value(), returnValueForMissingStub: _i8.Future.value(), ) as _i8.Future); + @override + _i8.Future setOnHttpBasicAuthRequest( + _i3.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i8.Future.value(), + returnValueForMissingStub: _i8.Future.value(), + ) as _i8.Future); } diff --git a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart index 343a7ad5689..2b31596b508 100644 --- a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart @@ -466,4 +466,15 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override + _i5.Future setOnHttpBasicAuthRequest( + _i6.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i5.Future.value(), + returnValueForMissingStub: _i5.Future.value(), + ) as _i5.Future); } diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 12f7ba007d2..b257e547a61 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.13.0 + +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. + ## 3.12.0 * Adds support for `PlatformWebViewController.getUserAgent`. diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java index 8e8a12cbd30..e2b697076b8 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java @@ -18,6 +18,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -34,7 +35,8 @@ public static class FlutterError extends RuntimeException { /** The error details. Must be a datatype supported by the api codec. */ public final Object details; - public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) { + public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) + { super(message); this.code = code; this.details = details; @@ -53,7 +55,7 @@ protected static ArrayList wrapError(@NonNull Throwable exception) { errorList.add(exception.toString()); errorList.add(exception.getClass().getSimpleName()); errorList.add( - "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); } return errorList; } @@ -61,29 +63,26 @@ protected static ArrayList wrapError(@NonNull Throwable exception) { /** * Mode of how to select files for a file chooser. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. */ public enum FileChooserMode { /** - * Open single file and requires that the file exists before allowing the user to pick it. + * Open single file and requires that the file exists before allowing the + * user to pick it. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. */ OPEN(0), /** * Similar to [open] but allows multiple files to be selected. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. */ OPEN_MULTIPLE(1), /** * Allows picking a nonexistent file and saving it. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. */ SAVE(2); @@ -97,49 +96,44 @@ private FileChooserMode(final int index) { /** * Indicates the type of message logged to the console. * - *

See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel. */ public enum ConsoleMessageLevel { /** * Indicates a message is logged for debugging. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. */ DEBUG(0), /** * Indicates a message is provided as an error. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. */ ERROR(1), /** * Indicates a message is provided as a basic log message. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. */ LOG(2), /** * Indicates a message is provided as a tip. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. */ TIP(3), /** * Indicates a message is provided as a warning. * - *

See - * https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. + * See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. */ WARNING(4), /** * Indicates a message with an unknown level. * - *

This does not represent an actual value provided by the platform and only indicates a - * value was provided that isn't currently supported. + * This does not represent an actual value provided by the platform and only + * indicates a value was provided that isn't currently supported. */ UNKNOWN(5); @@ -382,10 +376,7 @@ ArrayList toList() { static @NonNull WebResourceErrorData fromList(@NonNull ArrayList list) { WebResourceErrorData pigeonResult = new WebResourceErrorData(); Object errorCode = list.get(0); - pigeonResult.setErrorCode( - (errorCode == null) - ? null - : ((errorCode instanceof Integer) ? (Integer) errorCode : (Long) errorCode)); + pigeonResult.setErrorCode((errorCode == null) ? null : ((errorCode instanceof Integer) ? (Integer) errorCode : (Long) errorCode)); Object description = list.get(1); pigeonResult.setDescription((String) description); return pigeonResult; @@ -468,9 +459,9 @@ ArrayList toList() { /** * Represents a JavaScript console message from WebCore. * - *

See https://developer.android.com/reference/android/webkit/ConsoleMessage + * See https://developer.android.com/reference/android/webkit/ConsoleMessage * - *

Generated class from Pigeon that represents data sent in messages. + * Generated class from Pigeon that represents data sent in messages. */ public static final class ConsoleMessage { private @NonNull Long lineNumber; @@ -581,10 +572,7 @@ ArrayList toList() { static @NonNull ConsoleMessage fromList(@NonNull ArrayList list) { ConsoleMessage pigeonResult = new ConsoleMessage(); Object lineNumber = list.get(0); - pigeonResult.setLineNumber( - (lineNumber == null) - ? null - : ((lineNumber instanceof Integer) ? (Integer) lineNumber : (Long) lineNumber)); + pigeonResult.setLineNumber((lineNumber == null) ? null : ((lineNumber instanceof Integer) ? (Integer) lineNumber : (Long) lineNumber)); Object message = list.get(1); pigeonResult.setMessage((String) message); Object level = list.get(2); @@ -604,13 +592,13 @@ public interface Result { /** * Host API for managing the native `InstanceManager`. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface InstanceManagerHostApi { /** * Clear the native `InstanceManager`. * - *

This is typically only used after a hot restart. + * This is typically only used after a hot restart. */ void clear(); @@ -618,18 +606,12 @@ public interface InstanceManagerHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `InstanceManagerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable InstanceManagerHostApi api) { + /**Sets up an instance of `InstanceManagerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable InstanceManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -637,7 +619,8 @@ static void setup( try { api.clear(); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -652,11 +635,11 @@ static void setup( /** * Handles methods calls to the native Java Object class. * - *

Also handles calls to remove the reference to an instance with `dispose`. + * Also handles calls to remove the reference to an instance with `dispose`. * - *

See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. + * See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface JavaObjectHostApi { @@ -666,16 +649,12 @@ public interface JavaObjectHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `JavaObjectHostApi` to handle messages through the `binaryMessenger`. - */ + /**Sets up an instance of `JavaObjectHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObjectHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -685,7 +664,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObject try { api.dispose((identifierArg == null) ? null : identifierArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -700,9 +680,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObject /** * Handles callbacks methods for the native Java Object class. * - *

See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. + * See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class JavaObjectFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -711,7 +691,7 @@ public JavaObjectFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -720,13 +700,10 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - public void dispose(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -735,11 +712,11 @@ public void dispose(@NonNull Long identifierArg, @NonNull Reply callback) /** * Host API for `CookieManager`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface CookieManagerHostApi { /** Handles attaching `CookieManager.instance` to a native instance. */ @@ -749,25 +726,18 @@ public interface CookieManagerHostApi { /** Handles Dart method `CookieManager.removeAllCookies`. */ void removeAllCookies(@NonNull Long identifier, @NonNull Result result); /** Handles Dart method `CookieManager.setAcceptThirdPartyCookies`. */ - void setAcceptThirdPartyCookies( - @NonNull Long identifier, @NonNull Long webViewIdentifier, @NonNull Boolean accept); + void setAcceptThirdPartyCookies(@NonNull Long identifier, @NonNull Long webViewIdentifier, @NonNull Boolean accept); /** The codec used by CookieManagerHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `CookieManagerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable CookieManagerHostApi api) { + /**Sets up an instance of `CookieManagerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable CookieManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -775,10 +745,10 @@ static void setup( ArrayList args = (ArrayList) message; Number instanceIdentifierArg = (Number) args.get(0); try { - api.attachInstance( - (instanceIdentifierArg == null) ? null : instanceIdentifierArg.longValue()); + api.attachInstance((instanceIdentifierArg == null) ? null : instanceIdentifierArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -791,9 +761,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -803,10 +771,10 @@ static void setup( String urlArg = (String) args.get(1); String valueArg = (String) args.get(2); try { - api.setCookie( - (identifierArg == null) ? null : identifierArg.longValue(), urlArg, valueArg); + api.setCookie((identifierArg == null) ? null : identifierArg.longValue(), urlArg, valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -819,9 +787,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -841,8 +807,7 @@ public void error(Throwable error) { } }; - api.removeAllCookies( - (identifierArg == null) ? null : identifierArg.longValue(), resultCallback); + api.removeAllCookies((identifierArg == null) ? null : identifierArg.longValue(), resultCallback); }); } else { channel.setMessageHandler(null); @@ -851,9 +816,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -863,12 +826,10 @@ public void error(Throwable error) { Number webViewIdentifierArg = (Number) args.get(1); Boolean acceptArg = (Boolean) args.get(2); try { - api.setAcceptThirdPartyCookies( - (identifierArg == null) ? null : identifierArg.longValue(), - (webViewIdentifierArg == null) ? null : webViewIdentifierArg.longValue(), - acceptArg); + api.setAcceptThirdPartyCookies((identifierArg == null) ? null : identifierArg.longValue(), (webViewIdentifierArg == null) ? null : webViewIdentifierArg.longValue(), acceptArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -912,32 +873,21 @@ public interface WebViewHostApi { void create(@NonNull Long instanceId); - void loadData( - @NonNull Long instanceId, - @NonNull String data, - @Nullable String mimeType, - @Nullable String encoding); + void loadData(@NonNull Long instanceId, @NonNull String data, @Nullable String mimeType, @Nullable String encoding); - void loadDataWithBaseUrl( - @NonNull Long instanceId, - @Nullable String baseUrl, - @NonNull String data, - @Nullable String mimeType, - @Nullable String encoding, - @Nullable String historyUrl); + void loadDataWithBaseUrl(@NonNull Long instanceId, @Nullable String baseUrl, @NonNull String data, @Nullable String mimeType, @Nullable String encoding, @Nullable String historyUrl); - void loadUrl( - @NonNull Long instanceId, @NonNull String url, @NonNull Map headers); + void loadUrl(@NonNull Long instanceId, @NonNull String url, @NonNull Map headers); void postUrl(@NonNull Long instanceId, @NonNull String url, @NonNull byte[] data); - @Nullable + @Nullable String getUrl(@NonNull Long instanceId); - @NonNull + @NonNull Boolean canGoBack(@NonNull Long instanceId); - @NonNull + @NonNull Boolean canGoForward(@NonNull Long instanceId); void goBack(@NonNull Long instanceId); @@ -948,23 +898,22 @@ void loadUrl( void clearCache(@NonNull Long instanceId, @NonNull Boolean includeDiskFiles); - void evaluateJavascript( - @NonNull Long instanceId, @NonNull String javascriptString, @NonNull Result result); + void evaluateJavascript(@NonNull Long instanceId, @NonNull String javascriptString, @NonNull Result result); - @Nullable + @Nullable String getTitle(@NonNull Long instanceId); void scrollTo(@NonNull Long instanceId, @NonNull Long x, @NonNull Long y); void scrollBy(@NonNull Long instanceId, @NonNull Long x, @NonNull Long y); - @NonNull + @NonNull Long getScrollX(@NonNull Long instanceId); - @NonNull + @NonNull Long getScrollY(@NonNull Long instanceId); - @NonNull + @NonNull WebViewPoint getScrollPosition(@NonNull Long instanceId); void setWebContentsDebuggingEnabled(@NonNull Boolean enabled); @@ -973,8 +922,7 @@ void evaluateJavascript( void addJavaScriptChannel(@NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId); - void removeJavaScriptChannel( - @NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId); + void removeJavaScriptChannel(@NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId); void setDownloadListener(@NonNull Long instanceId, @Nullable Long listenerInstanceId); @@ -986,14 +934,12 @@ void removeJavaScriptChannel( static @NonNull MessageCodec getCodec() { return WebViewHostApiCodec.INSTANCE; } - /** Sets up an instance of `WebViewHostApi` to handle messages through the `binaryMessenger`. */ + /**Sets up an instance of `WebViewHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1003,7 +949,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1016,9 +963,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1029,13 +974,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String mimeTypeArg = (String) args.get(2); String encodingArg = (String) args.get(3); try { - api.loadData( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - dataArg, - mimeTypeArg, - encodingArg); + api.loadData((instanceIdArg == null) ? null : instanceIdArg.longValue(), dataArg, mimeTypeArg, encodingArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1048,9 +990,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1063,15 +1003,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String encodingArg = (String) args.get(4); String historyUrlArg = (String) args.get(5); try { - api.loadDataWithBaseUrl( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - baseUrlArg, - dataArg, - mimeTypeArg, - encodingArg, - historyUrlArg); + api.loadDataWithBaseUrl((instanceIdArg == null) ? null : instanceIdArg.longValue(), baseUrlArg, dataArg, mimeTypeArg, encodingArg, historyUrlArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1084,9 +1019,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1096,12 +1029,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String urlArg = (String) args.get(1); Map headersArg = (Map) args.get(2); try { - api.loadUrl( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - urlArg, - headersArg); + api.loadUrl((instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, headersArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1114,9 +1045,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1126,10 +1055,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos String urlArg = (String) args.get(1); byte[] dataArg = (byte[]) args.get(2); try { - api.postUrl( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, dataArg); + api.postUrl((instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, dataArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1142,9 +1071,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1152,10 +1079,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - String output = - api.getUrl((instanceIdArg == null) ? null : instanceIdArg.longValue()); + String output = api.getUrl((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1168,9 +1095,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1178,10 +1103,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Boolean output = - api.canGoBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Boolean output = api.canGoBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1194,9 +1119,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1204,10 +1127,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Boolean output = - api.canGoForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Boolean output = api.canGoForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1220,9 +1143,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1232,7 +1153,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.goBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1245,9 +1167,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1257,7 +1177,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.goForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1270,9 +1191,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1282,7 +1201,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos try { api.reload((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1295,9 +1215,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1306,11 +1224,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos Number instanceIdArg = (Number) args.get(0); Boolean includeDiskFilesArg = (Boolean) args.get(1); try { - api.clearCache( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - includeDiskFilesArg); + api.clearCache((instanceIdArg == null) ? null : instanceIdArg.longValue(), includeDiskFilesArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1323,9 +1240,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHos { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1346,10 +1261,7 @@ public void error(Throwable error) { } }; - api.evaluateJavascript( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - javascriptStringArg, - resultCallback); + api.evaluateJavascript((instanceIdArg == null) ? null : instanceIdArg.longValue(), javascriptStringArg, resultCallback); }); } else { channel.setMessageHandler(null); @@ -1358,9 +1270,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1368,10 +1278,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - String output = - api.getTitle((instanceIdArg == null) ? null : instanceIdArg.longValue()); + String output = api.getTitle((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1384,9 +1294,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1396,12 +1304,10 @@ public void error(Throwable error) { Number xArg = (Number) args.get(1); Number yArg = (Number) args.get(2); try { - api.scrollTo( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (xArg == null) ? null : xArg.longValue(), - (yArg == null) ? null : yArg.longValue()); + api.scrollTo((instanceIdArg == null) ? null : instanceIdArg.longValue(), (xArg == null) ? null : xArg.longValue(), (yArg == null) ? null : yArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1414,9 +1320,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1426,12 +1330,10 @@ public void error(Throwable error) { Number xArg = (Number) args.get(1); Number yArg = (Number) args.get(2); try { - api.scrollBy( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (xArg == null) ? null : xArg.longValue(), - (yArg == null) ? null : yArg.longValue()); + api.scrollBy((instanceIdArg == null) ? null : instanceIdArg.longValue(), (xArg == null) ? null : xArg.longValue(), (yArg == null) ? null : yArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1444,9 +1346,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1454,10 +1354,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Long output = - api.getScrollX((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Long output = api.getScrollX((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1470,9 +1370,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1480,10 +1378,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - Long output = - api.getScrollY((instanceIdArg == null) ? null : instanceIdArg.longValue()); + Long output = api.getScrollY((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1496,9 +1394,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1506,11 +1402,10 @@ public void error(Throwable error) { ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - WebViewPoint output = - api.getScrollPosition( - (instanceIdArg == null) ? null : instanceIdArg.longValue()); + WebViewPoint output = api.getScrollPosition((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1523,9 +1418,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1535,7 +1428,8 @@ public void error(Throwable error) { try { api.setWebContentsDebuggingEnabled(enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1548,9 +1442,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1559,13 +1451,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number webViewClientInstanceIdArg = (Number) args.get(1); try { - api.setWebViewClient( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (webViewClientInstanceIdArg == null) - ? null - : webViewClientInstanceIdArg.longValue()); + api.setWebViewClient((instanceIdArg == null) ? null : instanceIdArg.longValue(), (webViewClientInstanceIdArg == null) ? null : webViewClientInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1578,9 +1467,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1589,13 +1476,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number javaScriptChannelInstanceIdArg = (Number) args.get(1); try { - api.addJavaScriptChannel( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (javaScriptChannelInstanceIdArg == null) - ? null - : javaScriptChannelInstanceIdArg.longValue()); + api.addJavaScriptChannel((instanceIdArg == null) ? null : instanceIdArg.longValue(), (javaScriptChannelInstanceIdArg == null) ? null : javaScriptChannelInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1608,9 +1492,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1619,13 +1501,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number javaScriptChannelInstanceIdArg = (Number) args.get(1); try { - api.removeJavaScriptChannel( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (javaScriptChannelInstanceIdArg == null) - ? null - : javaScriptChannelInstanceIdArg.longValue()); + api.removeJavaScriptChannel((instanceIdArg == null) ? null : instanceIdArg.longValue(), (javaScriptChannelInstanceIdArg == null) ? null : javaScriptChannelInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1638,9 +1517,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1649,11 +1526,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number listenerInstanceIdArg = (Number) args.get(1); try { - api.setDownloadListener( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (listenerInstanceIdArg == null) ? null : listenerInstanceIdArg.longValue()); + api.setDownloadListener((instanceIdArg == null) ? null : instanceIdArg.longValue(), (listenerInstanceIdArg == null) ? null : listenerInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1666,9 +1542,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1677,11 +1551,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number clientInstanceIdArg = (Number) args.get(1); try { - api.setWebChromeClient( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (clientInstanceIdArg == null) ? null : clientInstanceIdArg.longValue()); + api.setWebChromeClient((instanceIdArg == null) ? null : instanceIdArg.longValue(), (clientInstanceIdArg == null) ? null : clientInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1694,9 +1567,7 @@ public void error(Throwable error) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1705,11 +1576,10 @@ public void error(Throwable error) { Number instanceIdArg = (Number) args.get(0); Number colorArg = (Number) args.get(1); try { - api.setBackgroundColor( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (colorArg == null) ? null : colorArg.longValue()); + api.setBackgroundColor((instanceIdArg == null) ? null : instanceIdArg.longValue(), (colorArg == null) ? null : colorArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1724,12 +1594,13 @@ public void error(Throwable error) { /** * Flutter API for `WebView`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/webkit/WebView. + * See https://developer.android.com/reference/android/webkit/WebView. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class WebViewFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -1738,7 +1609,7 @@ public WebViewFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -1751,9 +1622,7 @@ public interface Reply { public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -1790,23 +1659,19 @@ public interface WebSettingsHostApi { void setTextZoom(@NonNull Long instanceId, @NonNull Long textZoom); - @NonNull + @NonNull String getUserAgentString(@NonNull Long instanceId); /** The codec used by WebSettingsHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebSettingsHostApi` to handle messages through the `binaryMessenger`. - */ + /**Sets up an instance of `WebSettingsHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSettingsHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1815,11 +1680,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Number webViewInstanceIdArg = (Number) args.get(1); try { - api.create( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (webViewInstanceIdArg == null) ? null : webViewInstanceIdArg.longValue()); + api.create((instanceIdArg == null) ? null : instanceIdArg.longValue(), (webViewInstanceIdArg == null) ? null : webViewInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1832,9 +1696,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1843,10 +1705,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean flagArg = (Boolean) args.get(1); try { - api.setDomStorageEnabled( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); + api.setDomStorageEnabled((instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1859,9 +1721,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1870,10 +1730,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean flagArg = (Boolean) args.get(1); try { - api.setJavaScriptCanOpenWindowsAutomatically( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); + api.setJavaScriptCanOpenWindowsAutomatically((instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1886,9 +1746,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1897,10 +1755,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean supportArg = (Boolean) args.get(1); try { - api.setSupportMultipleWindows( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); + api.setSupportMultipleWindows((instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1913,9 +1771,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1924,10 +1780,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean flagArg = (Boolean) args.get(1); try { - api.setJavaScriptEnabled( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); + api.setJavaScriptEnabled((instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1940,9 +1796,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1951,11 +1805,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); String userAgentStringArg = (String) args.get(1); try { - api.setUserAgentString( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - userAgentStringArg); + api.setUserAgentString((instanceIdArg == null) ? null : instanceIdArg.longValue(), userAgentStringArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1968,9 +1821,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -1979,10 +1830,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean requireArg = (Boolean) args.get(1); try { - api.setMediaPlaybackRequiresUserGesture( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), requireArg); + api.setMediaPlaybackRequiresUserGesture((instanceIdArg == null) ? null : instanceIdArg.longValue(), requireArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1995,9 +1846,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2006,10 +1855,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean supportArg = (Boolean) args.get(1); try { - api.setSupportZoom( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); + api.setSupportZoom((instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2022,9 +1871,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2033,10 +1880,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean overviewArg = (Boolean) args.get(1); try { - api.setLoadWithOverviewMode( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), overviewArg); + api.setLoadWithOverviewMode((instanceIdArg == null) ? null : instanceIdArg.longValue(), overviewArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2049,9 +1896,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2060,10 +1905,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean useArg = (Boolean) args.get(1); try { - api.setUseWideViewPort( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), useArg); + api.setUseWideViewPort((instanceIdArg == null) ? null : instanceIdArg.longValue(), useArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2076,9 +1921,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2087,10 +1930,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean enabledArg = (Boolean) args.get(1); try { - api.setDisplayZoomControls( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); + api.setDisplayZoomControls((instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2103,9 +1946,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2114,10 +1955,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean enabledArg = (Boolean) args.get(1); try { - api.setBuiltInZoomControls( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); + api.setBuiltInZoomControls((instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2130,9 +1971,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2141,10 +1980,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Boolean enabledArg = (Boolean) args.get(1); try { - api.setAllowFileAccess( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); + api.setAllowFileAccess((instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2157,9 +1996,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2168,11 +2005,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting Number instanceIdArg = (Number) args.get(0); Number textZoomArg = (Number) args.get(1); try { - api.setTextZoom( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - (textZoomArg == null) ? null : textZoomArg.longValue()); + api.setTextZoom((instanceIdArg == null) ? null : instanceIdArg.longValue(), (textZoomArg == null) ? null : textZoomArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2185,9 +2021,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2195,11 +2029,10 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSetting ArrayList args = (ArrayList) message; Number instanceIdArg = (Number) args.get(0); try { - String output = - api.getUserAgentString( - (instanceIdArg == null) ? null : instanceIdArg.longValue()); + String output = api.getUserAgentString((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2220,18 +2053,12 @@ public interface JavaScriptChannelHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `JavaScriptChannelHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable JavaScriptChannelHostApi api) { + /**Sets up an instance of `JavaScriptChannelHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaScriptChannelHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2240,10 +2067,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); String channelNameArg = (String) args.get(1); try { - api.create( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), channelNameArg); + api.create((instanceIdArg == null) ? null : instanceIdArg.longValue(), channelNameArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2263,7 +2090,7 @@ public JavaScriptChannelFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2272,14 +2099,10 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - - public void postMessage( - @NonNull Long instanceIdArg, @NonNull String messageArg, @NonNull Reply callback) { + public void postMessage(@NonNull Long instanceIdArg, @NonNull String messageArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, messageArg)), channelReply -> callback.reply(null)); @@ -2290,25 +2113,18 @@ public interface WebViewClientHostApi { void create(@NonNull Long instanceId); - void setSynchronousReturnValueForShouldOverrideUrlLoading( - @NonNull Long instanceId, @NonNull Boolean value); + void setSynchronousReturnValueForShouldOverrideUrlLoading(@NonNull Long instanceId, @NonNull Boolean value); /** The codec used by WebViewClientHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebViewClientHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable WebViewClientHostApi api) { + /**Sets up an instance of `WebViewClientHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewClientHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2318,7 +2134,8 @@ static void setup( try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2331,9 +2148,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2342,10 +2157,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); Boolean valueArg = (Boolean) args.get(1); try { - api.setSynchronousReturnValueForShouldOverrideUrlLoading( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); + api.setSynchronousReturnValueForShouldOverrideUrlLoading((instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2397,7 +2212,7 @@ public WebViewClientFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2406,121 +2221,68 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return WebViewClientFlutterApiCodec.INSTANCE; } - - public void onPageStarted( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Reply callback) { + public void onPageStarted(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg)), channelReply -> callback.reply(null)); } - - public void onPageFinished( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Reply callback) { + public void onPageFinished(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg)), channelReply -> callback.reply(null)); } - - public void onReceivedRequestError( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull WebResourceRequestData requestArg, - @NonNull WebResourceErrorData errorArg, - @NonNull Reply callback) { + public void onReceivedRequestError(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull WebResourceRequestData requestArg, @NonNull WebResourceErrorData errorArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, webViewInstanceIdArg, requestArg, errorArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, requestArg, errorArg)), channelReply -> callback.reply(null)); } - - public void onReceivedError( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long errorCodeArg, - @NonNull String descriptionArg, - @NonNull String failingUrlArg, - @NonNull Reply callback) { + public void onReceivedError(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long errorCodeArg, @NonNull String descriptionArg, @NonNull String failingUrlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError", getCodec()); channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - webViewInstanceIdArg, - errorCodeArg, - descriptionArg, - failingUrlArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, errorCodeArg, descriptionArg, failingUrlArg)), channelReply -> callback.reply(null)); } - - public void requestLoading( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull WebResourceRequestData requestArg, - @NonNull Reply callback) { + public void requestLoading(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull WebResourceRequestData requestArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, requestArg)), channelReply -> callback.reply(null)); } - - public void urlLoading( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Reply callback) { + public void urlLoading(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg)), channelReply -> callback.reply(null)); } - - public void doUpdateVisitedHistory( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull String urlArg, - @NonNull Boolean isReloadArg, - @NonNull Reply callback) { + public void doUpdateVisitedHistory(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, @NonNull Boolean isReloadArg, @NonNull Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory", getCodec()); + channel.send( + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg, isReloadArg)), + channelReply -> callback.reply(null)); + } + public void onReceivedHttpAuthRequest(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long httpAuthHandlerInstanceIdArg, @NonNull String hostArg, @NonNull String realmArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg, isReloadArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, httpAuthHandlerInstanceIdArg, hostArg, realmArg)), channelReply -> callback.reply(null)); } } @@ -2533,18 +2295,12 @@ public interface DownloadListenerHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `DownloadListenerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable DownloadListenerHostApi api) { + /**Sets up an instance of `DownloadListenerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable DownloadListenerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2554,7 +2310,8 @@ static void setup( try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2574,7 +2331,7 @@ public DownloadListenerFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2583,29 +2340,12 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - - public void onDownloadStart( - @NonNull Long instanceIdArg, - @NonNull String urlArg, - @NonNull String userAgentArg, - @NonNull String contentDispositionArg, - @NonNull String mimetypeArg, - @NonNull Long contentLengthArg, - @NonNull Reply callback) { + public void onDownloadStart(@NonNull Long instanceIdArg, @NonNull String urlArg, @NonNull String userAgentArg, @NonNull String contentDispositionArg, @NonNull String mimetypeArg, @NonNull Long contentLengthArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart", getCodec()); channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - urlArg, - userAgentArg, - contentDispositionArg, - mimetypeArg, - contentLengthArg)), + new ArrayList(Arrays.asList(instanceIdArg, urlArg, userAgentArg, contentDispositionArg, mimetypeArg, contentLengthArg)), channelReply -> callback.reply(null)); } } @@ -2614,28 +2354,20 @@ public interface WebChromeClientHostApi { void create(@NonNull Long instanceId); - void setSynchronousReturnValueForOnShowFileChooser( - @NonNull Long instanceId, @NonNull Boolean value); + void setSynchronousReturnValueForOnShowFileChooser(@NonNull Long instanceId, @NonNull Boolean value); - void setSynchronousReturnValueForOnConsoleMessage( - @NonNull Long instanceId, @NonNull Boolean value); + void setSynchronousReturnValueForOnConsoleMessage(@NonNull Long instanceId, @NonNull Boolean value); /** The codec used by WebChromeClientHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebChromeClientHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable WebChromeClientHostApi api) { + /**Sets up an instance of `WebChromeClientHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebChromeClientHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2645,7 +2377,8 @@ static void setup( try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2658,9 +2391,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2669,10 +2400,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); Boolean valueArg = (Boolean) args.get(1); try { - api.setSynchronousReturnValueForOnShowFileChooser( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); + api.setSynchronousReturnValueForOnShowFileChooser((instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2685,9 +2416,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2696,10 +2425,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); Boolean valueArg = (Boolean) args.get(1); try { - api.setSynchronousReturnValueForOnConsoleMessage( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); + api.setSynchronousReturnValueForOnConsoleMessage((instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2714,28 +2443,22 @@ static void setup( /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface FlutterAssetManagerHostApi { - @NonNull + @NonNull List list(@NonNull String path); - @NonNull + @NonNull String getAssetFilePathByName(@NonNull String name); /** The codec used by FlutterAssetManagerHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `FlutterAssetManagerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable FlutterAssetManagerHostApi api) { + /**Sets up an instance of `FlutterAssetManagerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable FlutterAssetManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2745,7 +2468,8 @@ static void setup( try { List output = api.list(pathArg); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2758,9 +2482,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2770,7 +2492,8 @@ static void setup( try { String output = api.getAssetFilePathByName(nameArg); wrapped.add(0, output); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2784,8 +2507,7 @@ static void setup( } private static class WebChromeClientFlutterApiCodec extends StandardMessageCodec { - public static final WebChromeClientFlutterApiCodec INSTANCE = - new WebChromeClientFlutterApiCodec(); + public static final WebChromeClientFlutterApiCodec INSTANCE = new WebChromeClientFlutterApiCodec(); private WebChromeClientFlutterApiCodec() {} @@ -2818,7 +2540,7 @@ public WebChromeClientFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -2827,35 +2549,20 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return WebChromeClientFlutterApiCodec.INSTANCE; } - - public void onProgressChanged( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long progressArg, - @NonNull Reply callback) { + public void onProgressChanged(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long progressArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, progressArg)), channelReply -> callback.reply(null)); } - - public void onShowFileChooser( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long paramsInstanceIdArg, - @NonNull Reply> callback) { + public void onShowFileChooser(@NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long paramsInstanceIdArg, @NonNull Reply> callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, webViewInstanceIdArg, paramsInstanceIdArg)), + new ArrayList(Arrays.asList(instanceIdArg, webViewInstanceIdArg, paramsInstanceIdArg)), channelReply -> { @SuppressWarnings("ConstantConditions") List output = (List) channelReply; @@ -2863,83 +2570,55 @@ public void onShowFileChooser( }); } /** Callback to Dart function `WebChromeClient.onPermissionRequest`. */ - public void onPermissionRequest( - @NonNull Long instanceIdArg, - @NonNull Long requestInstanceIdArg, - @NonNull Reply callback) { + public void onPermissionRequest(@NonNull Long instanceIdArg, @NonNull Long requestInstanceIdArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, requestInstanceIdArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onShowCustomView`. */ - public void onShowCustomView( - @NonNull Long instanceIdArg, - @NonNull Long viewIdentifierArg, - @NonNull Long callbackIdentifierArg, - @NonNull Reply callback) { + public void onShowCustomView(@NonNull Long instanceIdArg, @NonNull Long viewIdentifierArg, @NonNull Long callbackIdentifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView", getCodec()); channel.send( - new ArrayList( - Arrays.asList(instanceIdArg, viewIdentifierArg, callbackIdentifierArg)), + new ArrayList(Arrays.asList(instanceIdArg, viewIdentifierArg, callbackIdentifierArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onHideCustomView`. */ public void onHideCustomView(@NonNull Long instanceIdArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView", getCodec()); channel.send( new ArrayList(Collections.singletonList(instanceIdArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onGeolocationPermissionsShowPrompt`. */ - public void onGeolocationPermissionsShowPrompt( - @NonNull Long instanceIdArg, - @NonNull Long paramsInstanceIdArg, - @NonNull String originArg, - @NonNull Reply callback) { + public void onGeolocationPermissionsShowPrompt(@NonNull Long instanceIdArg, @NonNull Long paramsInstanceIdArg, @NonNull String originArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, paramsInstanceIdArg, originArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onGeolocationPermissionsHidePrompt`. */ - public void onGeolocationPermissionsHidePrompt( - @NonNull Long identifierArg, @NonNull Reply callback) { + public void onGeolocationPermissionsHidePrompt(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); } /** Callback to Dart function `WebChromeClient.onConsoleMessage`. */ - public void onConsoleMessage( - @NonNull Long instanceIdArg, - @NonNull ConsoleMessage messageArg, - @NonNull Reply callback) { + public void onConsoleMessage(@NonNull Long instanceIdArg, @NonNull ConsoleMessage messageArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, messageArg)), channelReply -> callback.reply(null)); @@ -2956,16 +2635,12 @@ public interface WebStorageHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `WebStorageHostApi` to handle messages through the `binaryMessenger`. - */ + /**Sets up an instance of `WebStorageHostApi` to handle messages through the `binaryMessenger`. */ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorageHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -2975,7 +2650,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage try { api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2988,9 +2664,7 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3000,7 +2674,8 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage try { api.deleteAllData((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3015,10 +2690,9 @@ static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorage /** * Handles callbacks methods for the native Java FileChooserParams class. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class FileChooserParamsFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3027,7 +2701,7 @@ public FileChooserParamsFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3036,40 +2710,25 @@ public interface Reply { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - - public void create( - @NonNull Long instanceIdArg, - @NonNull Boolean isCaptureEnabledArg, - @NonNull List acceptTypesArg, - @NonNull FileChooserMode modeArg, - @Nullable String filenameHintArg, - @NonNull Reply callback) { + public void create(@NonNull Long instanceIdArg, @NonNull Boolean isCaptureEnabledArg, @NonNull List acceptTypesArg, @NonNull FileChooserMode modeArg, @Nullable String filenameHintArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create", getCodec()); channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - isCaptureEnabledArg, - acceptTypesArg, - modeArg.index, - filenameHintArg)), + new ArrayList(Arrays.asList(instanceIdArg, isCaptureEnabledArg, acceptTypesArg, modeArg.index, filenameHintArg)), channelReply -> callback.reply(null)); } } /** * Host API for `PermissionRequest`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

See https://developer.android.com/reference/android/webkit/PermissionRequest. + * See https://developer.android.com/reference/android/webkit/PermissionRequest. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface PermissionRequestHostApi { /** Handles Dart method `PermissionRequest.grant`. */ @@ -3081,18 +2740,12 @@ public interface PermissionRequestHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `PermissionRequestHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable PermissionRequestHostApi api) { + /**Sets up an instance of `PermissionRequestHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable PermissionRequestHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3101,10 +2754,10 @@ static void setup( Number instanceIdArg = (Number) args.get(0); List resourcesArg = (List) args.get(1); try { - api.grant( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), resourcesArg); + api.grant((instanceIdArg == null) ? null : instanceIdArg.longValue(), resourcesArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3117,9 +2770,7 @@ static void setup( { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3129,7 +2780,8 @@ static void setup( try { api.deny((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3144,12 +2796,13 @@ static void setup( /** * Flutter API for `PermissionRequest`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/webkit/PermissionRequest. + * See https://developer.android.com/reference/android/webkit/PermissionRequest. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class PermissionRequestFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3158,7 +2811,7 @@ public PermissionRequestFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3168,15 +2821,10 @@ public interface Reply { return new StandardMessageCodec(); } /** Create a new Dart instance and add it to the `InstanceManager`. */ - public void create( - @NonNull Long instanceIdArg, - @NonNull List resourcesArg, - @NonNull Reply callback) { + public void create(@NonNull Long instanceIdArg, @NonNull List resourcesArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create", getCodec()); channel.send( new ArrayList(Arrays.asList(instanceIdArg, resourcesArg)), channelReply -> callback.reply(null)); @@ -3185,14 +2833,13 @@ public void create( /** * Host API for `CustomViewCallback`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface CustomViewCallbackHostApi { /** Handles Dart method `CustomViewCallback.onCustomViewHidden`. */ @@ -3202,18 +2849,12 @@ public interface CustomViewCallbackHostApi { static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `CustomViewCallbackHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable CustomViewCallbackHostApi api) { + /**Sets up an instance of `CustomViewCallbackHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable CustomViewCallbackHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3221,10 +2862,10 @@ static void setup( ArrayList args = (ArrayList) message; Number identifierArg = (Number) args.get(0); try { - api.onCustomViewHidden( - (identifierArg == null) ? null : identifierArg.longValue()); + api.onCustomViewHidden((identifierArg == null) ? null : identifierArg.longValue()); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3239,13 +2880,13 @@ static void setup( /** * Flutter API for `CustomViewCallback`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See - * https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. + * See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class CustomViewCallbackFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3254,7 +2895,7 @@ public CustomViewCallbackFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3267,9 +2908,7 @@ public interface Reply { public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -3278,12 +2917,13 @@ public void create(@NonNull Long identifierArg, @NonNull Reply callback) { /** * Flutter API for `View`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/view/View. + * See https://developer.android.com/reference/android/view/View. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class ViewFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3292,7 +2932,7 @@ public ViewFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3305,9 +2945,7 @@ public interface Reply { public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(identifierArg)), channelReply -> callback.reply(null)); @@ -3316,39 +2954,28 @@ public void create(@NonNull Long identifierArg, @NonNull Reply callback) { /** * Host API for `GeolocationPermissionsCallback`. * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. * - *

See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. + * See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. + * Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface GeolocationPermissionsCallbackHostApi { /** Handles Dart method `GeolocationPermissionsCallback.invoke`. */ - void invoke( - @NonNull Long instanceId, - @NonNull String origin, - @NonNull Boolean allow, - @NonNull Boolean retain); + void invoke(@NonNull Long instanceId, @NonNull String origin, @NonNull Boolean allow, @NonNull Boolean retain); /** The codec used by GeolocationPermissionsCallbackHostApi. */ static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - /** - * Sets up an instance of `GeolocationPermissionsCallbackHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, - @Nullable GeolocationPermissionsCallbackHostApi api) { + /**Sets up an instance of `GeolocationPermissionsCallbackHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable GeolocationPermissionsCallbackHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke", getCodec()); if (api != null) { channel.setMessageHandler( (message, reply) -> { @@ -3359,13 +2986,10 @@ static void setup( Boolean allowArg = (Boolean) args.get(2); Boolean retainArg = (Boolean) args.get(3); try { - api.invoke( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - originArg, - allowArg, - retainArg); + api.invoke((instanceIdArg == null) ? null : instanceIdArg.longValue(), originArg, allowArg, retainArg); wrapped.add(0, null); - } catch (Throwable exception) { + } + catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -3380,12 +3004,13 @@ static void setup( /** * Flutter API for `GeolocationPermissionsCallback`. * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. * - *

See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. + * See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. + * Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class GeolocationPermissionsCallbackFlutterApi { private final @NonNull BinaryMessenger binaryMessenger; @@ -3394,7 +3019,7 @@ public GeolocationPermissionsCallbackFlutterApi(@NonNull BinaryMessenger argBina this.binaryMessenger = argBinaryMessenger; } - /** Public interface for sending reply. */ + /** Public interface for sending reply. */ @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); @@ -3407,9 +3032,146 @@ public interface Reply { public void create(@NonNull Long instanceIdArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create", - getCodec()); + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create", getCodec()); + channel.send( + new ArrayList(Collections.singletonList(instanceIdArg)), + channelReply -> callback.reply(null)); + } + } + /** + * Host API for `HttpAuthHandler`. + * + * This class may handle instantiating and adding native object instances that + * are attached to a Dart instance or handle method calls on the associated + * native class or an instance of the class. + * + * See https://developer.android.com/reference/android/webkit/HttpAuthHandler. + * + * Generated interface from Pigeon that represents a handler of messages from Flutter. + */ + public interface HttpAuthHandlerHostApi { + /** Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. */ + @NonNull + Boolean useHttpAuthUsernamePassword(@NonNull Long instanceId); + /** Handles Dart method `HttpAuthHandler.cancel`. */ + void cancel(@NonNull Long instanceId); + /** Handles Dart method `HttpAuthHandler.proceed`. */ + void proceed(@NonNull Long instanceId, @NonNull String username, @NonNull String password); + + /** The codec used by HttpAuthHandlerHostApi. */ + static @NonNull MessageCodec getCodec() { + return new StandardMessageCodec(); + } + /**Sets up an instance of `HttpAuthHandlerHostApi` to handle messages through the `binaryMessenger`. */ + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable HttpAuthHandlerHostApi api) { + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword", getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + try { + Boolean output = api.useHttpAuthUsernamePassword((instanceIdArg == null) ? null : instanceIdArg.longValue()); + wrapped.add(0, output); + } + catch (Throwable exception) { + ArrayList wrappedError = wrapError(exception); + wrapped = wrappedError; + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel", getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + try { + api.cancel((instanceIdArg == null) ? null : instanceIdArg.longValue()); + wrapped.add(0, null); + } + catch (Throwable exception) { + ArrayList wrappedError = wrapError(exception); + wrapped = wrappedError; + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed", getCodec()); + if (api != null) { + channel.setMessageHandler( + (message, reply) -> { + ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String usernameArg = (String) args.get(1); + String passwordArg = (String) args.get(2); + try { + api.proceed((instanceIdArg == null) ? null : instanceIdArg.longValue(), usernameArg, passwordArg); + wrapped.add(0, null); + } + catch (Throwable exception) { + ArrayList wrappedError = wrapError(exception); + wrapped = wrappedError; + } + reply.reply(wrapped); + }); + } else { + channel.setMessageHandler(null); + } + } + } + } + /** + * Flutter API for `HttpAuthHandler`. + * + * This class may handle instantiating and adding Dart instances that are + * attached to a native instance or receiving callback methods from an + * overridden native class. + * + * See https://developer.android.com/reference/android/webkit/HttpAuthHandler. + * + * Generated class from Pigeon that represents Flutter messages that can be called from Java. + */ + public static class HttpAuthHandlerFlutterApi { + private final @NonNull BinaryMessenger binaryMessenger; + + public HttpAuthHandlerFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { + this.binaryMessenger = argBinaryMessenger; + } + + /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") + public interface Reply { + void reply(T reply); + } + /** The codec used by HttpAuthHandlerFlutterApi. */ + static @NonNull MessageCodec getCodec() { + return new StandardMessageCodec(); + } + /** Create a new Dart instance and add it to the `InstanceManager`. */ + public void create(@NonNull Long instanceIdArg, @NonNull Reply callback) { + BasicMessageChannel channel = + new BasicMessageChannel<>( + binaryMessenger, "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create", getCodec()); channel.send( new ArrayList(Collections.singletonList(instanceIdArg)), channelReply -> callback.reply(null)); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java new file mode 100644 index 00000000000..1d5a170ff3b --- /dev/null +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java @@ -0,0 +1,51 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.webviewflutter; + +import android.webkit.HttpAuthHandler; +import androidx.annotation.NonNull; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerFlutterApi; + +/** + * Flutter API implementation for {@link HttpAuthHandler}. + * + *

This class may handle adding native instances that are attached to a Dart instance or passing + * arguments of callbacks methods to a Dart instance. + */ +public class HttpAuthHandlerFlutterApiImpl { + // To ease adding additional methods, this value is added prematurely. + @SuppressWarnings({"unused", "FieldCanBeLocal"}) + private final BinaryMessenger binaryMessenger; + + private final InstanceManager instanceManager; + + private final HttpAuthHandlerFlutterApi api; + + /** + * Constructs a {@link HttpAuthHandlerFlutterApiImpl}. + * + * @param binaryMessenger used to communicate with Dart over asynchronous messages + * @param instanceManager maintains instances stored to communicate with attached Dart objects + */ + public HttpAuthHandlerFlutterApiImpl( + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { + this.binaryMessenger = binaryMessenger; + this.instanceManager = instanceManager; + api = new HttpAuthHandlerFlutterApi(binaryMessenger); + } + + /** + * Stores the `HttpAuthHandler` instance and notifies Dart to create and store a new + * `HttpAuthHandler` instance that is attached to this one. If `instance` has already been added, + * this method does nothing. + */ + public void create( + @NonNull HttpAuthHandler instance, @NonNull HttpAuthHandlerFlutterApi.Reply callback) { + if (!instanceManager.containsInstance(instance)) { + api.create(instanceManager.addHostCreatedInstance(instance), callback); + } + } +} diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java new file mode 100644 index 00000000000..591571d2a6c --- /dev/null +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java @@ -0,0 +1,57 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.webviewflutter; + +import android.webkit.HttpAuthHandler; +import androidx.annotation.NonNull; +import io.flutter.plugin.common.BinaryMessenger; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerHostApi; +import java.util.Objects; + +/** + * Host api implementation for {@link HttpAuthHandler}. + * + *

Handles creating {@link HttpAuthHandler}s that intercommunicate with a paired Dart object. + */ +public class HttpAuthHandlerHostApiImpl implements HttpAuthHandlerHostApi { + // To ease adding additional methods, this value is added prematurely. + @SuppressWarnings({"unused", "FieldCanBeLocal"}) + private final BinaryMessenger binaryMessenger; + + private final InstanceManager instanceManager; + + /** + * Constructs a {@link HttpAuthHandlerHostApiImpl}. + * + * @param binaryMessenger used to communicate with Dart over asynchronous messages + * @param instanceManager maintains instances stored to communicate with attached Dart objects + */ + public HttpAuthHandlerHostApiImpl( + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { + this.binaryMessenger = binaryMessenger; + this.instanceManager = instanceManager; + } + + @NonNull + @Override + public Boolean useHttpAuthUsernamePassword(@NonNull Long instanceId) { + return getHttpAuthHandlerInstance(instanceId).useHttpAuthUsernamePassword(); + } + + @Override + public void cancel(@NonNull Long instanceId) { + getHttpAuthHandlerInstance(instanceId).cancel(); + } + + @Override + public void proceed( + @NonNull Long instanceId, @NonNull String username, @NonNull String password) { + getHttpAuthHandlerInstance(instanceId).proceed(username, password); + } + + private HttpAuthHandler getHttpAuthHandlerInstance(@NonNull Long instanceId) { + return Objects.requireNonNull(instanceManager.getInstance(instanceId)); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java index 4dee9c0ad3f..7a5a057cf11 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java @@ -6,6 +6,7 @@ import android.annotation.SuppressLint; import android.os.Build; +import android.webkit.HttpAuthHandler; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -230,6 +231,26 @@ public void doUpdateVisitedHistory( getIdentifierForClient(webViewClient), webViewIdentifier, url, isReload, callback); } + /** Passes arguments from {@link WebViewClient#onReceivedHttpAuthRequest} to Dart. */ + public void onReceivedHttpAuthRequest( + @NonNull WebViewClient webViewClient, + @NonNull WebView webview, + @NonNull HttpAuthHandler httpAuthHandler, + @NonNull String host, + @NonNull String realm, + @NonNull Reply callback) { + new HttpAuthHandlerFlutterApiImpl(binaryMessenger, instanceManager) + .create(httpAuthHandler, reply -> {}); + + onReceivedHttpAuthRequest( + Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(webViewClient)), + Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(webview)), + Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(httpAuthHandler)), + host, + realm, + callback); + } + private long getIdentifierForClient(WebViewClient webViewClient) { final Long identifier = instanceManager.getIdentifierForStrongReference(webViewClient); if (identifier == null) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 35ae02a7625..30f414380c9 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -9,6 +9,7 @@ import android.graphics.Bitmap; import android.os.Build; import android.view.KeyEvent; +import android.webkit.HttpAuthHandler; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -38,7 +39,7 @@ public static class WebViewClientImpl extends WebViewClient { /** * Creates a {@link WebViewClient} that passes arguments of callbacks methods to Dart. * - * @param flutterApi handles sending messages to Dart + * @param flutterApi handles sending messages to Dart. */ public WebViewClientImpl(@NonNull WebViewClientFlutterApiImpl flutterApi) { this.flutterApi = flutterApi; @@ -95,6 +96,15 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } + @Override + public void onReceivedHttpAuthRequest( + @NonNull WebView view, + @NonNull HttpAuthHandler handler, + @NonNull String host, + @NonNull String realm) { + flutterApi.onReceivedHttpAuthRequest(this, view, handler, host, realm, reply -> {}); + } + @Override public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be @@ -176,6 +186,16 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } + // Handles an HTTP Basic Authentication request. + // + // This callback is invoked when the WebView encounters a website requiring HTTP authentication. + // [host] and [realm] are provided for matching against stored credentials, if any. + @Override + public void onReceivedHttpAuthRequest( + @NonNull WebView view, HttpAuthHandler handler, String host, String realm) { + flutterApi.onReceivedHttpAuthRequest(this, view, handler, host, realm, reply -> {}); + } + @Override public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java index e763c919e02..7f026119f47 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java @@ -19,6 +19,7 @@ import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.DownloadListenerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.FlutterAssetManagerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.GeolocationPermissionsCallbackHostApi; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.InstanceManagerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaObjectHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaScriptChannelHostApi; @@ -144,6 +145,8 @@ private void setUp( new GeolocationPermissionsCallbackHostApiImpl(binaryMessenger, instanceManager)); CustomViewCallbackHostApi.setup( binaryMessenger, new CustomViewCallbackHostApiImpl(binaryMessenger, instanceManager)); + HttpAuthHandlerHostApi.setup( + binaryMessenger, new HttpAuthHandlerHostApiImpl(binaryMessenger, instanceManager)); } @Override diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 19fd1a44758..a5e2a38e851 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -35,6 +35,15 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; + } else if (request.uri.path == '/http-basic-authentication') { + final bool isAuthenticating = request.headers['Authorization'] != null; + if (isAuthenticating) { + request.response.writeln('Authorized'); + } else { + request.response.headers + .add('WWW-Authenticate', 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -44,6 +53,7 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; + final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets('loadRequest', (WidgetTester tester) async { final Completer pageFinished = Completer(); @@ -1119,6 +1129,80 @@ Future main() async { }); }); + testWidgets('can receive HTTP basic auth requests', + (WidgetTester tester) async { + final Completer authRequested = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => authRequested.complete()); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + AndroidWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(authRequested.future, completes); + }); + + testWidgets('can reply to HTTP basic auth requests', + (WidgetTester tester) async { + final Completer pageFinished = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + ); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + AndroidWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(pageFinished.future, completes); + }); + testWidgets('target _blank opens in same window', (WidgetTester tester) async { final Completer pageLoaded = Completer(); 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 92a8fe2bd77..ba6991bf206 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -161,6 +161,11 @@ Page resource error: }) ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); + }) + ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + debugPrint( + 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + openDialog(request); }), ) ..addJavaScriptChannel(JavaScriptChannelParams( @@ -179,9 +184,11 @@ Page resource error: request.grant(); }, ) - ..loadRequest(LoadRequestParams( - uri: Uri.parse('https://flutter.dev'), - )); + ..loadRequest( + LoadRequestParams( + uri: Uri.parse('https://flutter.dev'), + ), + ); } @override @@ -219,6 +226,48 @@ Page resource error: child: const Icon(Icons.favorite), ); } + + Future openDialog(HttpBasicAuthRequest httpRequest) async { + final TextEditingController usernameTextController = + TextEditingController(); + final TextEditingController passwordTextController = + TextEditingController(); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${httpRequest.host}: ${httpRequest.realm}'), + content: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + decoration: const InputDecoration(labelText: 'Username'), + autofocus: true, + controller: usernameTextController, + ), + TextField( + decoration: const InputDecoration(labelText: 'Password'), + controller: passwordTextController, + ), + ], + ), + actions: [ + TextButton( + onPressed: () { + httpRequest.onProceed( + usernameTextController.text, + passwordTextController.text, + ); + Navigator.of(context).pop(); + }, + child: const Text('Authenticate'), + ), + ], + ); + }, + ); + } } enum MenuOptions { @@ -237,6 +286,7 @@ enum MenuOptions { setCookie, videoExample, logExample, + basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -303,6 +353,9 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; + case MenuOptions.basicAuthentication: + _basicAuthExample(); + break; } }, itemBuilder: (BuildContext context) => >[ @@ -367,6 +420,10 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.videoExample, child: Text('Video example'), ), + const PopupMenuItem( + value: MenuOptions.basicAuthentication, + child: Text('Basic Authentication Example'), + ), ], ); } @@ -546,9 +603,14 @@ class SampleMenu extends StatelessWidget { debugPrint( '== JS == ${consoleMessage.level.name}: ${consoleMessage.message}'); }); - return webViewController.loadHtmlString(kLogExamplePage); } + + Future _basicAuthExample() { + return webViewController.loadRequest(LoadRequestParams( + uri: Uri.parse( + 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index acba2006e84..12575464eb5 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -33,3 +33,8 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_android: {path: ../../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart index f3d00ebd88e..339ce9fed2b 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart @@ -78,6 +78,12 @@ class AndroidWebViewProxy { void Function(android_webview.WebView webView, String url)? urlLoading, void Function(android_webview.WebView webView, String url, bool isReload)? doUpdateVisitedHistory, + void Function( + android_webview.WebView webView, + android_webview.HttpAuthHandler handler, + String host, + String realm, + )? onReceivedHttpAuthRequest, }) createAndroidWebViewClient; /// Constructs a [android_webview.FlutterAssetManager]. diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index c0778ed0722..f2ad37d698a 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -769,6 +769,7 @@ class WebViewClient extends JavaObject { this.requestLoading, this.urlLoading, this.doUpdateVisitedHistory, + this.onReceivedHttpAuthRequest, @visibleForTesting super.binaryMessenger, @visibleForTesting super.instanceManager, }) : super.detached() { @@ -789,6 +790,7 @@ class WebViewClient extends JavaObject { this.requestLoading, this.urlLoading, this.doUpdateVisitedHistory, + this.onReceivedHttpAuthRequest, super.binaryMessenger, super.instanceManager, }) : super.detached(); @@ -937,6 +939,14 @@ class WebViewClient extends JavaObject { final void Function(WebView webView, String url, bool isReload)? doUpdateVisitedHistory; + /// This callback is only called for requests that require HTTP basic authentication. + final void Function( + WebView webView, + HttpAuthHandler handler, + String host, + String realm, + )? onReceivedHttpAuthRequest; + /// Sets the required synchronous return value for the Java method, /// `WebViewClient.shouldOverrideUrlLoading(...)`. /// @@ -965,6 +975,7 @@ class WebViewClient extends JavaObject { requestLoading: requestLoading, urlLoading: urlLoading, doUpdateVisitedHistory: doUpdateVisitedHistory, + onReceivedHttpAuthRequest: onReceivedHttpAuthRequest, binaryMessenger: _api.binaryMessenger, instanceManager: _api.instanceManager, ); @@ -1496,3 +1507,32 @@ class CustomViewCallback extends JavaObject { ); } } + +/// Represents a request for HTTP basic authentication. +/// +/// Instances of this class are created by the [WebView] and passed to +/// [WebViewClient.onReceivedHttpAuthRequest]. The host application must call +/// either [HttpAuthHandler.proceed] or [HttpAuthHandler.cancel] to set the +/// WebView's response to the request. +class HttpAuthHandler extends JavaObject { + /// Constructs a [HttpAuthHandler]. + HttpAuthHandler({ + super.binaryMessenger, + super.instanceManager, + }) : super.detached(); + + /// Pigeon Host Api implementation for [HttpAuthHandler]. + @visibleForTesting + static HttpAuthHandlerHostApiImpl api = HttpAuthHandlerHostApiImpl(); + + /// Instructs the WebView to cancel the authentication request. + Future cancel() { + return api.cancelFromInstance(this); + } + + /// Instructs the WebView to proceed with the authentication with the provided + /// credentials. + Future proceed(String username, String password) { + return api.proceedFromInstance(this, username, password); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart index 8435f7302fa..a94d855e1d2 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart @@ -20,12 +20,10 @@ enum FileChooserMode { /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN. open, - /// Similar to [open] but allows multiple files to be selected. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_OPEN_MULTIPLE. openMultiple, - /// Allows picking a nonexistent file and saving it. /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.FileChooserParams#MODE_SAVE. @@ -40,27 +38,22 @@ enum ConsoleMessageLevel { /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#DEBUG. debug, - /// Indicates a message is provided as an error. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#ERROR. error, - /// Indicates a message is provided as a basic log message. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#LOG. log, - /// Indicates a message is provided as a tip. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#TIP. tip, - /// Indicates a message is provided as a warning. /// /// See https://developer.android.com/reference/android/webkit/ConsoleMessage.MessageLevel#WARNING. warning, - /// Indicates a message with an unknown level. /// /// This does not represent an actual value provided by the platform and only @@ -109,8 +102,7 @@ class WebResourceRequestData { isRedirect: result[2] as bool?, hasGesture: result[3]! as bool, method: result[4]! as String, - requestHeaders: - (result[5] as Map?)!.cast(), + requestHeaders: (result[5] as Map?)!.cast(), ); } } @@ -222,10 +214,10 @@ class InstanceManagerHostApi { /// This is typically only used after a hot restart. Future clear() async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', - codec, + 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send(null) as List?; + final List? replyList = + await channel.send(null) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -260,8 +252,7 @@ class JavaObjectHostApi { Future dispose(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -290,19 +281,17 @@ abstract class JavaObjectFlutterApi { void dispose(int identifier); - static void setup(JavaObjectFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(JavaObjectFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectFlutterApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -333,8 +322,7 @@ class CookieManagerHostApi { /// Handles attaching `CookieManager.instance` to a native instance. Future attachInstance(int arg_instanceIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceIdentifier]) as List?; @@ -355,14 +343,12 @@ class CookieManagerHostApi { } /// Handles Dart method `CookieManager.setCookie`. - Future setCookie( - int arg_identifier, String arg_url, String arg_value) async { + Future setCookie(int arg_identifier, String arg_url, String arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_url, arg_value]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_url, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -382,8 +368,7 @@ class CookieManagerHostApi { /// Handles Dart method `CookieManager.removeAllCookies`. Future removeAllCookies(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -409,15 +394,12 @@ class CookieManagerHostApi { } /// Handles Dart method `CookieManager.setAcceptThirdPartyCookies`. - Future setAcceptThirdPartyCookies( - int arg_identifier, int arg_webViewIdentifier, bool arg_accept) async { + Future setAcceptThirdPartyCookies(int arg_identifier, int arg_webViewIdentifier, bool arg_accept) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_webViewIdentifier, arg_accept]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_webViewIdentifier, arg_accept]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -450,7 +432,7 @@ class _WebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WebViewPoint.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -470,8 +452,7 @@ class WebViewHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -491,15 +472,12 @@ class WebViewHostApi { } } - Future loadData(int arg_instanceId, String arg_data, - String? arg_mimeType, String? arg_encoding) async { + Future loadData(int arg_instanceId, String arg_data, String? arg_mimeType, String? arg_encoding) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send( - [arg_instanceId, arg_data, arg_mimeType, arg_encoding]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_data, arg_mimeType, arg_encoding]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -516,25 +494,12 @@ class WebViewHostApi { } } - Future loadDataWithBaseUrl( - int arg_instanceId, - String? arg_baseUrl, - String arg_data, - String? arg_mimeType, - String? arg_encoding, - String? arg_historyUrl) async { + Future loadDataWithBaseUrl(int arg_instanceId, String? arg_baseUrl, String arg_data, String? arg_mimeType, String? arg_encoding, String? arg_historyUrl) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send([ - arg_instanceId, - arg_baseUrl, - arg_data, - arg_mimeType, - arg_encoding, - arg_historyUrl - ]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_baseUrl, arg_data, arg_mimeType, arg_encoding, arg_historyUrl]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -551,15 +516,12 @@ class WebViewHostApi { } } - Future loadUrl(int arg_instanceId, String arg_url, - Map arg_headers) async { + Future loadUrl(int arg_instanceId, String arg_url, Map arg_headers) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_url, arg_headers]) - as List?; + await channel.send([arg_instanceId, arg_url, arg_headers]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -576,14 +538,12 @@ class WebViewHostApi { } } - Future postUrl( - int arg_instanceId, String arg_url, Uint8List arg_data) async { + Future postUrl(int arg_instanceId, String arg_url, Uint8List arg_data) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_url, arg_data]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_url, arg_data]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -602,8 +562,7 @@ class WebViewHostApi { Future getUrl(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -625,8 +584,7 @@ class WebViewHostApi { Future canGoBack(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -653,8 +611,7 @@ class WebViewHostApi { Future canGoForward(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -681,8 +638,7 @@ class WebViewHostApi { Future goBack(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -704,8 +660,7 @@ class WebViewHostApi { Future goForward(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -727,8 +682,7 @@ class WebViewHostApi { Future reload(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -750,12 +704,10 @@ class WebViewHostApi { Future clearCache(int arg_instanceId, bool arg_includeDiskFiles) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_includeDiskFiles]) - as List?; + await channel.send([arg_instanceId, arg_includeDiskFiles]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -772,15 +724,12 @@ class WebViewHostApi { } } - Future evaluateJavascript( - int arg_instanceId, String arg_javascriptString) async { + Future evaluateJavascript(int arg_instanceId, String arg_javascriptString) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_javascriptString]) - as List?; + await channel.send([arg_instanceId, arg_javascriptString]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -799,8 +748,7 @@ class WebViewHostApi { Future getTitle(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -822,11 +770,10 @@ class WebViewHostApi { Future scrollTo(int arg_instanceId, int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -845,11 +792,10 @@ class WebViewHostApi { Future scrollBy(int arg_instanceId, int arg_x, int arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -868,8 +814,7 @@ class WebViewHostApi { Future getScrollX(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -896,8 +841,7 @@ class WebViewHostApi { Future getScrollY(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -924,8 +868,7 @@ class WebViewHostApi { Future getScrollPosition(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -952,8 +895,7 @@ class WebViewHostApi { Future setWebContentsDebuggingEnabled(bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_enabled]) as List?; @@ -973,15 +915,12 @@ class WebViewHostApi { } } - Future setWebViewClient( - int arg_instanceId, int arg_webViewClientInstanceId) async { + Future setWebViewClient(int arg_instanceId, int arg_webViewClientInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_webViewClientInstanceId]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_webViewClientInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -998,15 +937,12 @@ class WebViewHostApi { } } - Future addJavaScriptChannel( - int arg_instanceId, int arg_javaScriptChannelInstanceId) async { + Future addJavaScriptChannel(int arg_instanceId, int arg_javaScriptChannelInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_javaScriptChannelInstanceId]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_javaScriptChannelInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1023,15 +959,12 @@ class WebViewHostApi { } } - Future removeJavaScriptChannel( - int arg_instanceId, int arg_javaScriptChannelInstanceId) async { + Future removeJavaScriptChannel(int arg_instanceId, int arg_javaScriptChannelInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_javaScriptChannelInstanceId]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_javaScriptChannelInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1048,15 +981,12 @@ class WebViewHostApi { } } - Future setDownloadListener( - int arg_instanceId, int? arg_listenerInstanceId) async { + Future setDownloadListener(int arg_instanceId, int? arg_listenerInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_listenerInstanceId]) - as List?; + await channel.send([arg_instanceId, arg_listenerInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1073,15 +1003,12 @@ class WebViewHostApi { } } - Future setWebChromeClient( - int arg_instanceId, int? arg_clientInstanceId) async { + Future setWebChromeClient(int arg_instanceId, int? arg_clientInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_clientInstanceId]) - as List?; + await channel.send([arg_instanceId, arg_clientInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1100,11 +1027,10 @@ class WebViewHostApi { Future setBackgroundColor(int arg_instanceId, int arg_color) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_color]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_color]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1135,19 +1061,17 @@ abstract class WebViewFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int identifier); - static void setup(WebViewFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WebViewFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1172,12 +1096,10 @@ class WebSettingsHostApi { Future create(int arg_instanceId, int arg_webViewInstanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_instanceId, arg_webViewInstanceId]) - as List?; + await channel.send([arg_instanceId, arg_webViewInstanceId]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1196,11 +1118,10 @@ class WebSettingsHostApi { Future setDomStorageEnabled(int arg_instanceId, bool arg_flag) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_flag]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_flag]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1217,14 +1138,12 @@ class WebSettingsHostApi { } } - Future setJavaScriptCanOpenWindowsAutomatically( - int arg_instanceId, bool arg_flag) async { + Future setJavaScriptCanOpenWindowsAutomatically(int arg_instanceId, bool arg_flag) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_flag]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_flag]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1241,14 +1160,12 @@ class WebSettingsHostApi { } } - Future setSupportMultipleWindows( - int arg_instanceId, bool arg_support) async { + Future setSupportMultipleWindows(int arg_instanceId, bool arg_support) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_support]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_support]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1267,11 +1184,10 @@ class WebSettingsHostApi { Future setJavaScriptEnabled(int arg_instanceId, bool arg_flag) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_flag]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_flag]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1288,14 +1204,12 @@ class WebSettingsHostApi { } } - Future setUserAgentString( - int arg_instanceId, String? arg_userAgentString) async { + Future setUserAgentString(int arg_instanceId, String? arg_userAgentString) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_userAgentString]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_userAgentString]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1312,14 +1226,12 @@ class WebSettingsHostApi { } } - Future setMediaPlaybackRequiresUserGesture( - int arg_instanceId, bool arg_require) async { + Future setMediaPlaybackRequiresUserGesture(int arg_instanceId, bool arg_require) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_require]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_require]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1338,11 +1250,10 @@ class WebSettingsHostApi { Future setSupportZoom(int arg_instanceId, bool arg_support) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_support]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_support]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1359,14 +1270,12 @@ class WebSettingsHostApi { } } - Future setLoadWithOverviewMode( - int arg_instanceId, bool arg_overview) async { + Future setLoadWithOverviewMode(int arg_instanceId, bool arg_overview) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_overview]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_overview]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1385,11 +1294,10 @@ class WebSettingsHostApi { Future setUseWideViewPort(int arg_instanceId, bool arg_use) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_use]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_use]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1406,14 +1314,12 @@ class WebSettingsHostApi { } } - Future setDisplayZoomControls( - int arg_instanceId, bool arg_enabled) async { + Future setDisplayZoomControls(int arg_instanceId, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1430,14 +1336,12 @@ class WebSettingsHostApi { } } - Future setBuiltInZoomControls( - int arg_instanceId, bool arg_enabled) async { + Future setBuiltInZoomControls(int arg_instanceId, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1456,11 +1360,10 @@ class WebSettingsHostApi { Future setAllowFileAccess(int arg_instanceId, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1479,11 +1382,10 @@ class WebSettingsHostApi { Future setTextZoom(int arg_instanceId, int arg_textZoom) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_textZoom]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_textZoom]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1502,8 +1404,7 @@ class WebSettingsHostApi { Future getUserAgentString(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -1541,11 +1442,10 @@ class JavaScriptChannelHostApi { Future create(int arg_instanceId, String arg_channelName) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_channelName]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_channelName]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1568,19 +1468,17 @@ abstract class JavaScriptChannelFlutterApi { void postMessage(int instanceId, String message); - static void setup(JavaScriptChannelFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(JavaScriptChannelFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelFlutterApi.postMessage was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1608,8 +1506,7 @@ class WebViewClientHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -1629,14 +1526,12 @@ class WebViewClientHostApi { } } - Future setSynchronousReturnValueForShouldOverrideUrlLoading( - int arg_instanceId, bool arg_value) async { + Future setSynchronousReturnValueForShouldOverrideUrlLoading(int arg_instanceId, bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_value]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1672,9 +1567,9 @@ class _WebViewClientFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WebResourceErrorData.decode(readValue(buffer)!); - case 129: + case 129: return WebResourceRequestData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1689,33 +1584,29 @@ abstract class WebViewClientFlutterApi { void onPageFinished(int instanceId, int webViewInstanceId, String url); - void onReceivedRequestError(int instanceId, int webViewInstanceId, - WebResourceRequestData request, WebResourceErrorData error); + void onReceivedRequestError(int instanceId, int webViewInstanceId, WebResourceRequestData request, WebResourceErrorData error); - void onReceivedError(int instanceId, int webViewInstanceId, int errorCode, - String description, String failingUrl); + void onReceivedError(int instanceId, int webViewInstanceId, int errorCode, String description, String failingUrl); - void requestLoading( - int instanceId, int webViewInstanceId, WebResourceRequestData request); + void requestLoading(int instanceId, int webViewInstanceId, WebResourceRequestData request); void urlLoading(int instanceId, int webViewInstanceId, String url); - void doUpdateVisitedHistory( - int instanceId, int webViewInstanceId, String url, bool isReload); + void doUpdateVisitedHistory(int instanceId, int webViewInstanceId, String url, bool isReload); - static void setup(WebViewClientFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + void onReceivedHttpAuthRequest(int instanceId, int webViewInstanceId, int httpAuthHandlerInstanceId, String host, String realm); + + static void setup(WebViewClientFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageStarted was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1733,15 +1624,14 @@ abstract class WebViewClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onPageFinished was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1759,15 +1649,14 @@ abstract class WebViewClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1775,31 +1664,27 @@ abstract class WebViewClientFlutterApi { final int? arg_webViewInstanceId = (args[1] as int?); assert(arg_webViewInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null int.'); - final WebResourceRequestData? arg_request = - (args[2] as WebResourceRequestData?); + final WebResourceRequestData? arg_request = (args[2] as WebResourceRequestData?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null WebResourceRequestData.'); - final WebResourceErrorData? arg_error = - (args[3] as WebResourceErrorData?); + final WebResourceErrorData? arg_error = (args[3] as WebResourceErrorData?); assert(arg_error != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null WebResourceErrorData.'); - api.onReceivedRequestError(arg_instanceId!, arg_webViewInstanceId!, - arg_request!, arg_error!); + api.onReceivedRequestError(arg_instanceId!, arg_webViewInstanceId!, arg_request!, arg_error!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1816,23 +1701,21 @@ abstract class WebViewClientFlutterApi { final String? arg_failingUrl = (args[4] as String?); assert(arg_failingUrl != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedError was null, expected non-null String.'); - api.onReceivedError(arg_instanceId!, arg_webViewInstanceId!, - arg_errorCode!, arg_description!, arg_failingUrl!); + api.onReceivedError(arg_instanceId!, arg_webViewInstanceId!, arg_errorCode!, arg_description!, arg_failingUrl!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1840,27 +1723,24 @@ abstract class WebViewClientFlutterApi { final int? arg_webViewInstanceId = (args[1] as int?); assert(arg_webViewInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null, expected non-null int.'); - final WebResourceRequestData? arg_request = - (args[2] as WebResourceRequestData?); + final WebResourceRequestData? arg_request = (args[2] as WebResourceRequestData?); assert(arg_request != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.requestLoading was null, expected non-null WebResourceRequestData.'); - api.requestLoading( - arg_instanceId!, arg_webViewInstanceId!, arg_request!); + api.requestLoading(arg_instanceId!, arg_webViewInstanceId!, arg_request!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.urlLoading was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1878,15 +1758,14 @@ abstract class WebViewClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1900,8 +1779,38 @@ abstract class WebViewClientFlutterApi { final bool? arg_isReload = (args[3] as bool?); assert(arg_isReload != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.doUpdateVisitedHistory was null, expected non-null bool.'); - api.doUpdateVisitedHistory( - arg_instanceId!, arg_webViewInstanceId!, arg_url!, arg_isReload!); + api.doUpdateVisitedHistory(arg_instanceId!, arg_webViewInstanceId!, arg_url!, arg_isReload!); + return; + }); + } + } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); + final int? arg_webViewInstanceId = (args[1] as int?); + assert(arg_webViewInstanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); + final int? arg_httpAuthHandlerInstanceId = (args[2] as int?); + assert(arg_httpAuthHandlerInstanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); + final String? arg_host = (args[3] as String?); + assert(arg_host != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.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.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null String.'); + api.onReceivedHttpAuthRequest(arg_instanceId!, arg_webViewInstanceId!, arg_httpAuthHandlerInstanceId!, arg_host!, arg_realm!); return; }); } @@ -1921,8 +1830,7 @@ class DownloadListenerHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -1946,22 +1854,19 @@ class DownloadListenerHostApi { abstract class DownloadListenerFlutterApi { static const MessageCodec codec = StandardMessageCodec(); - void onDownloadStart(int instanceId, String url, String userAgent, - String contentDisposition, String mimetype, int contentLength); + void onDownloadStart(int instanceId, String url, String userAgent, String contentDisposition, String mimetype, int contentLength); - static void setup(DownloadListenerFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(DownloadListenerFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart', - codec, + 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1981,8 +1886,7 @@ abstract class DownloadListenerFlutterApi { final int? arg_contentLength = (args[5] as int?); assert(arg_contentLength != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null int.'); - api.onDownloadStart(arg_instanceId!, arg_url!, arg_userAgent!, - arg_contentDisposition!, arg_mimetype!, arg_contentLength!); + api.onDownloadStart(arg_instanceId!, arg_url!, arg_userAgent!, arg_contentDisposition!, arg_mimetype!, arg_contentLength!); return; }); } @@ -2002,8 +1906,7 @@ class WebChromeClientHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2023,14 +1926,12 @@ class WebChromeClientHostApi { } } - Future setSynchronousReturnValueForOnShowFileChooser( - int arg_instanceId, bool arg_value) async { + Future setSynchronousReturnValueForOnShowFileChooser(int arg_instanceId, bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_value]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2047,14 +1948,12 @@ class WebChromeClientHostApi { } } - Future setSynchronousReturnValueForOnConsoleMessage( - int arg_instanceId, bool arg_value) async { + Future setSynchronousReturnValueForOnConsoleMessage(int arg_instanceId, bool arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_value]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2084,8 +1983,7 @@ class FlutterAssetManagerHostApi { Future> list(String arg_path) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_path]) as List?; @@ -2112,8 +2010,7 @@ class FlutterAssetManagerHostApi { Future getAssetFilePathByName(String arg_name) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_name]) as List?; @@ -2154,7 +2051,7 @@ class _WebChromeClientFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return ConsoleMessage.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2167,22 +2064,19 @@ abstract class WebChromeClientFlutterApi { void onProgressChanged(int instanceId, int webViewInstanceId, int progress); - Future> onShowFileChooser( - int instanceId, int webViewInstanceId, int paramsInstanceId); + Future> onShowFileChooser(int instanceId, int webViewInstanceId, int paramsInstanceId); /// Callback to Dart function `WebChromeClient.onPermissionRequest`. void onPermissionRequest(int instanceId, int requestInstanceId); /// Callback to Dart function `WebChromeClient.onShowCustomView`. - void onShowCustomView( - int instanceId, int viewIdentifier, int callbackIdentifier); + void onShowCustomView(int instanceId, int viewIdentifier, int callbackIdentifier); /// Callback to Dart function `WebChromeClient.onHideCustomView`. void onHideCustomView(int instanceId); /// Callback to Dart function `WebChromeClient.onGeolocationPermissionsShowPrompt`. - void onGeolocationPermissionsShowPrompt( - int instanceId, int paramsInstanceId, String origin); + void onGeolocationPermissionsShowPrompt(int instanceId, int paramsInstanceId, String origin); /// Callback to Dart function `WebChromeClient.onGeolocationPermissionsHidePrompt`. void onGeolocationPermissionsHidePrompt(int identifier); @@ -2190,19 +2084,17 @@ abstract class WebChromeClientFlutterApi { /// Callback to Dart function `WebChromeClient.onConsoleMessage`. void onConsoleMessage(int instanceId, ConsoleMessage message); - static void setup(WebChromeClientFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WebChromeClientFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2213,23 +2105,21 @@ abstract class WebChromeClientFlutterApi { final int? arg_progress = (args[2] as int?); assert(arg_progress != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onProgressChanged was null, expected non-null int.'); - api.onProgressChanged( - arg_instanceId!, arg_webViewInstanceId!, arg_progress!); + api.onProgressChanged(arg_instanceId!, arg_webViewInstanceId!, arg_progress!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2240,23 +2130,21 @@ abstract class WebChromeClientFlutterApi { final int? arg_paramsInstanceId = (args[2] as int?); assert(arg_paramsInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowFileChooser was null, expected non-null int.'); - final List output = await api.onShowFileChooser( - arg_instanceId!, arg_webViewInstanceId!, arg_paramsInstanceId!); + final List output = await api.onShowFileChooser(arg_instanceId!, arg_webViewInstanceId!, arg_paramsInstanceId!); return output; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onPermissionRequest was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2271,15 +2159,14 @@ abstract class WebChromeClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2290,23 +2177,21 @@ abstract class WebChromeClientFlutterApi { final int? arg_callbackIdentifier = (args[2] as int?); assert(arg_callbackIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onShowCustomView was null, expected non-null int.'); - api.onShowCustomView( - arg_instanceId!, arg_viewIdentifier!, arg_callbackIdentifier!); + api.onShowCustomView(arg_instanceId!, arg_viewIdentifier!, arg_callbackIdentifier!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onHideCustomView was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2318,15 +2203,14 @@ abstract class WebChromeClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2337,23 +2221,21 @@ abstract class WebChromeClientFlutterApi { final String? arg_origin = (args[2] as String?); assert(arg_origin != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsShowPrompt was null, expected non-null String.'); - api.onGeolocationPermissionsShowPrompt( - arg_instanceId!, arg_paramsInstanceId!, arg_origin!); + api.onGeolocationPermissionsShowPrompt(arg_instanceId!, arg_paramsInstanceId!, arg_origin!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onGeolocationPermissionsHidePrompt was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2365,15 +2247,14 @@ abstract class WebChromeClientFlutterApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientFlutterApi.onConsoleMessage was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2401,8 +2282,7 @@ class WebStorageHostApi { Future create(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2424,8 +2304,7 @@ class WebStorageHostApi { Future deleteAllData(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2452,22 +2331,19 @@ class WebStorageHostApi { abstract class FileChooserParamsFlutterApi { static const MessageCodec codec = StandardMessageCodec(); - void create(int instanceId, bool isCaptureEnabled, List acceptTypes, - FileChooserMode mode, String? filenameHint); + void create(int instanceId, bool isCaptureEnabled, List acceptTypes, FileChooserMode mode, String? filenameHint); - static void setup(FileChooserParamsFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(FileChooserParamsFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2475,17 +2351,14 @@ abstract class FileChooserParamsFlutterApi { final bool? arg_isCaptureEnabled = (args[1] as bool?); assert(arg_isCaptureEnabled != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null, expected non-null bool.'); - final List? arg_acceptTypes = - (args[2] as List?)?.cast(); + final List? arg_acceptTypes = (args[2] as List?)?.cast(); assert(arg_acceptTypes != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null, expected non-null List.'); - final FileChooserMode? arg_mode = - args[3] == null ? null : FileChooserMode.values[args[3]! as int]; + final FileChooserMode? arg_mode = args[3] == null ? null : FileChooserMode.values[args[3]! as int]; assert(arg_mode != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.FileChooserParamsFlutterApi.create was null, expected non-null FileChooserMode.'); final String? arg_filenameHint = (args[4] as String?); - api.create(arg_instanceId!, arg_isCaptureEnabled!, arg_acceptTypes!, - arg_mode!, arg_filenameHint); + api.create(arg_instanceId!, arg_isCaptureEnabled!, arg_acceptTypes!, arg_mode!, arg_filenameHint); return; }); } @@ -2513,11 +2386,10 @@ class PermissionRequestHostApi { /// Handles Dart method `PermissionRequest.grant`. Future grant(int arg_instanceId, List arg_resources) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_resources]) as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_resources]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2537,8 +2409,7 @@ class PermissionRequestHostApi { /// Handles Dart method `PermissionRequest.deny`. Future deny(int arg_instanceId) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_instanceId]) as List?; @@ -2572,25 +2443,22 @@ abstract class PermissionRequestFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId, List resources); - static void setup(PermissionRequestFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(PermissionRequestFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null, expected non-null int.'); - final List? arg_resources = - (args[1] as List?)?.cast(); + final List? arg_resources = (args[1] as List?)?.cast(); assert(arg_resources != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestFlutterApi.create was null, expected non-null List.'); api.create(arg_instanceId!, arg_resources!); @@ -2621,8 +2489,7 @@ class CustomViewCallbackHostApi { /// Handles Dart method `CustomViewCallback.onCustomViewHidden`. Future onCustomViewHidden(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2656,19 +2523,17 @@ abstract class CustomViewCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int identifier); - static void setup(CustomViewCallbackFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(CustomViewCallbackFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2697,15 +2562,14 @@ abstract class ViewFlutterApi { static void setup(ViewFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.ViewFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2736,15 +2600,12 @@ class GeolocationPermissionsCallbackHostApi { static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `GeolocationPermissionsCallback.invoke`. - Future invoke(int arg_instanceId, String arg_origin, bool arg_allow, - bool arg_retain) async { + Future invoke(int arg_instanceId, String arg_origin, bool arg_allow, bool arg_retain) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', - codec, + 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_origin, arg_allow, arg_retain]) - as List?; + final List? replyList = + await channel.send([arg_instanceId, arg_origin, arg_allow, arg_retain]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2775,19 +2636,17 @@ abstract class GeolocationPermissionsCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId); - static void setup(GeolocationPermissionsCallbackFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(GeolocationPermissionsCallbackFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -2799,3 +2658,131 @@ abstract class GeolocationPermissionsCallbackFlutterApi { } } } + +/// Host API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +class HttpAuthHandlerHostApi { + /// Constructor for [HttpAuthHandlerHostApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + HttpAuthHandlerHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; + final BinaryMessenger? _binaryMessenger; + + static const MessageCodec codec = StandardMessageCodec(); + + /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. + Future useHttpAuthUsernamePassword(int arg_instanceId) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_instanceId]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else if (replyList[0] == null) { + throw PlatformException( + code: 'null-error', + message: 'Host platform returned null value for non-null return value.', + ); + } else { + return (replyList[0] as bool?)!; + } + } + + /// Handles Dart method `HttpAuthHandler.cancel`. + Future cancel(int arg_instanceId) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_instanceId]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } + + /// Handles Dart method `HttpAuthHandler.proceed`. + Future proceed(int arg_instanceId, String arg_username, String arg_password) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_instanceId, arg_username, arg_password]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } +} + +/// Flutter API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +abstract class HttpAuthHandlerFlutterApi { + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int instanceId); + + static void setup(HttpAuthHandlerFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create was null, expected non-null int.'); + api.create(arg_instanceId!); + return; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index 4ecb06b0579..dcf92be467f 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -2,10 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'dart:typed_data'; import 'dart:ui'; -import 'package:flutter/services.dart' show BinaryMessenger; +import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -50,6 +49,7 @@ class AndroidWebViewFlutterApis { PermissionRequestFlutterApiImpl? permissionRequestFlutterApi, CustomViewCallbackFlutterApiImpl? customViewCallbackFlutterApi, ViewFlutterApiImpl? viewFlutterApi, + HttpAuthHandlerFlutterApiImpl? httpAuthHandlerFlutterApi, }) { this.javaObjectFlutterApi = javaObjectFlutterApi ?? JavaObjectFlutterApiImpl(); @@ -72,6 +72,8 @@ class AndroidWebViewFlutterApis { this.customViewCallbackFlutterApi = customViewCallbackFlutterApi ?? CustomViewCallbackFlutterApiImpl(); this.viewFlutterApi = viewFlutterApi ?? ViewFlutterApiImpl(); + this.httpAuthHandlerFlutterApi = + httpAuthHandlerFlutterApi ?? HttpAuthHandlerFlutterApiImpl(); } static bool _haveBeenSetUp = false; @@ -115,6 +117,9 @@ class AndroidWebViewFlutterApis { /// Flutter Api for [View]. late final ViewFlutterApiImpl viewFlutterApi; + /// Flutter Api for [HttpAuthHandler]. + late final HttpAuthHandlerFlutterApiImpl httpAuthHandlerFlutterApi; + /// Ensures all the Flutter APIs have been setup to receive calls from native code. void ensureSetUp() { if (!_haveBeenSetUp) { @@ -130,6 +135,7 @@ class AndroidWebViewFlutterApis { PermissionRequestFlutterApi.setup(permissionRequestFlutterApi); CustomViewCallbackFlutterApi.setup(customViewCallbackFlutterApi); ViewFlutterApi.setup(viewFlutterApi); + HttpAuthHandlerFlutterApi.setup(httpAuthHandlerFlutterApi); _haveBeenSetUp = true; } } @@ -803,16 +809,49 @@ class WebViewClientFlutterApiImpl extends WebViewClientFlutterApi { .getInstanceWithWeakReference(webViewInstanceId) as WebView?; assert( instance != null, - 'InstanceManager does not contain an WebViewClient with instanceId: $instanceId', + 'InstanceManager does not contain a WebViewClient with instanceId: $instanceId', ); assert( webViewInstance != null, - 'InstanceManager does not contain an WebView with instanceId: $webViewInstanceId', + 'InstanceManager does not contain a WebView with instanceId: $webViewInstanceId', ); if (instance!.doUpdateVisitedHistory != null) { instance.doUpdateVisitedHistory!(webViewInstance!, url, isReload); } } + + @override + void onReceivedHttpAuthRequest( + int instanceId, + int webViewInstanceId, + int httpAuthHandlerInstanceId, + String host, + String realm, + ) { + final WebViewClient? instance = instanceManager + .getInstanceWithWeakReference(instanceId) as WebViewClient?; + final WebView? webViewInstance = instanceManager + .getInstanceWithWeakReference(webViewInstanceId) as WebView?; + final HttpAuthHandler? httpAuthHandlerInstance = + instanceManager.getInstanceWithWeakReference(httpAuthHandlerInstanceId) + as HttpAuthHandler?; + assert( + instance != null, + 'InstanceManager does not contain a WebViewClient with instanceId: $instanceId', + ); + assert( + webViewInstance != null, + 'InstanceManager does not contain a WebView with instanceId: $webViewInstanceId', + ); + assert( + httpAuthHandlerInstance != null, + 'InstanceManager does not contain a HttpAuthHandler with instanceId: $httpAuthHandlerInstanceId', + ); + if (instance!.onReceivedHttpAuthRequest != null) { + return instance.onReceivedHttpAuthRequest!( + webViewInstance!, httpAuthHandlerInstance!, host, realm); + } + } } /// Host api implementation for [DownloadListener]. @@ -1390,3 +1429,59 @@ class CookieManagerHostApiImpl extends CookieManagerHostApi { ); } } + +/// Host api implementation for [HttpAuthHandler]. +class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { + /// Constructs a [HttpAuthHandlerHostApiImpl]. + HttpAuthHandlerHostApiImpl({ + super.binaryMessenger, + InstanceManager? instanceManager, + }) : _instanceManager = instanceManager ?? JavaObject.globalInstanceManager; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager _instanceManager; + + /// Helper method to convert instance ids to objects. + Future cancelFromInstance(HttpAuthHandler instance) { + return cancel(_instanceManager.getIdentifier(instance)!); + } + + /// Helper method to convert instance ids to objects. + Future proceedFromInstance( + HttpAuthHandler instance, + String username, + String password, + ) { + return proceed( + _instanceManager.getIdentifier(instance)!, + username, + password, + ); + } +} + +/// Flutter API implementation for [HttpAuthHandler]. +class HttpAuthHandlerFlutterApiImpl extends HttpAuthHandlerFlutterApi { + /// Constructs a [HttpAuthHandlerFlutterApiImpl]. + HttpAuthHandlerFlutterApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? JavaObject.globalInstanceManager; + + /// Receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager instanceManager; + + @override + void create(int instanceId) { + instanceManager.addHostCreatedInstance( + HttpAuthHandler(), + instanceId, + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index ccfe14391e8..3988a5bf8e5 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -77,7 +77,7 @@ class AndroidWebViewPermissionResourceType /// Implementation of the [PlatformWebViewController] with the Android WebView API. class AndroidWebViewController extends PlatformWebViewController { - /// Creates a new [AndroidWebViewCookieManager]. + /// Creates a new [AndroidWebViewController]. AndroidWebViewController(PlatformWebViewControllerCreationParams params) : super.implementation(params is AndroidWebViewControllerCreationParams ? params @@ -1268,6 +1268,25 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { callback(AndroidUrlChange(url: url, isReload: isReload)); } }, + onReceivedHttpAuthRequest: ( + android_webview.WebView webView, + android_webview.HttpAuthHandler httpAuthHandler, + String host, + String realm, + ) { + final void Function(HttpBasicAuthRequest)? callback = + weakThis.target?._onHttpAuthRequest; + if (callback != null) { + callback( + HttpBasicAuthRequest( + onProceed: httpAuthHandler.proceed, + onCancel: httpAuthHandler.cancel, + host: host, + realm: realm, + ), + ); + } + }, ); _downloadListener = (this.params as AndroidNavigationDelegateCreationParams) @@ -1324,6 +1343,7 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { NavigationRequestCallback? _onNavigationRequest; LoadRequestCallback? _onLoadRequest; UrlChangeCallback? _onUrlChange; + HttpAuthRequestCallback? _onHttpAuthRequest; void _handleNavigation( String url, { @@ -1410,4 +1430,11 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async { _onUrlChange = onUrlChange; } + + @override + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback onHttpAuthRequest, + ) async { + _onHttpAuthRequest = onHttpAuthRequest; + } } diff --git a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart index 6cce34382a1..34e8f21bde1 100644 --- a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart @@ -358,6 +358,14 @@ abstract class WebViewClientFlutterApi { String url, bool isReload, ); + + void onReceivedHttpAuthRequest( + int instanceId, + int webViewInstanceId, + int httpAuthHandlerInstanceId, + String host, + String realm, + ); } @HostApi(dartHostTestHandler: 'TestDownloadListenerHostApi') @@ -551,3 +559,35 @@ abstract class GeolocationPermissionsCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId); } + +/// Host API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +@HostApi(dartHostTestHandler: 'TestHttpAuthHandlerHostApi') +abstract class HttpAuthHandlerHostApi { + /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. + bool useHttpAuthUsernamePassword(int instanceId); + + /// Handles Dart method `HttpAuthHandler.cancel`. + void cancel(int instanceId); + + /// Handles Dart method `HttpAuthHandler.proceed`. + void proceed(int instanceId, String username, String password); +} + +/// Flutter API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +@FlutterApi() +abstract class HttpAuthHandlerFlutterApi { + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int instanceId); +} diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index 8087d795748..8b695cf660a 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: 3.12.0 +version: 3.13.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -20,7 +20,7 @@ flutter: dependencies: flutter: sdk: flutter - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 dev_dependencies: build_runner: ^2.1.4 @@ -33,3 +33,8 @@ topics: - html - webview - webview-flutter + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart index 269123e081d..5efdc8e3363 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart @@ -446,27 +446,53 @@ void main() { expect(callbackNavigationRequest.url, 'https://www.google.com'); expect(completer.isCompleted, true); }); - }); - test('onUrlChange', () { - final AndroidNavigationDelegate androidNavigationDelegate = - AndroidNavigationDelegate(_buildCreationParams()); - - late final AndroidUrlChange urlChange; - androidNavigationDelegate.setOnUrlChange( - (UrlChange change) { - urlChange = change as AndroidUrlChange; - }, - ); - - CapturingWebViewClient.lastCreatedDelegate.doUpdateVisitedHistory!( - android_webview.WebView.detached(), - 'https://www.google.com', - false, - ); - - expect(urlChange.url, 'https://www.google.com'); - expect(urlChange.isReload, isFalse); + test('onUrlChange', () { + final AndroidNavigationDelegate androidNavigationDelegate = + AndroidNavigationDelegate(_buildCreationParams()); + + late final AndroidUrlChange urlChange; + androidNavigationDelegate.setOnUrlChange( + (UrlChange change) { + urlChange = change as AndroidUrlChange; + }, + ); + + CapturingWebViewClient.lastCreatedDelegate.doUpdateVisitedHistory!( + android_webview.WebView.detached(), + 'https://www.google.com', + false, + ); + + expect(urlChange.url, 'https://www.google.com'); + expect(urlChange.isReload, isFalse); + }); + + test('onReceivedHttpAuthRequest emits host and realm', () { + final AndroidNavigationDelegate androidNavigationDelegate = + AndroidNavigationDelegate(_buildCreationParams()); + + String? callbackHost; + String? callbackRealm; + androidNavigationDelegate + .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + callbackHost = request.host; + callbackRealm = request.realm; + }); + + const String expectedHost = 'expectedHost'; + const String expectedRealm = 'expectedRealm'; + + CapturingWebViewClient.lastCreatedDelegate.onReceivedHttpAuthRequest!( + android_webview.WebView.detached(), + android_webview.HttpAuthHandler(), + expectedHost, + expectedRealm, + ); + + expect(callbackHost, expectedHost); + expect(callbackRealm, expectedRealm); + }); }); } @@ -489,6 +515,7 @@ class CapturingWebViewClient extends android_webview.WebViewClient { super.onPageFinished, super.onPageStarted, super.onReceivedError, + super.onReceivedHttpAuthRequest, super.onReceivedRequestError, super.requestLoading, super.urlLoading, diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart index 6a7bf30e614..ee1e27a2a69 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart @@ -132,6 +132,12 @@ void main() { String description, String failingUrl, )? onReceivedError, + void Function( + android_webview.WebView webView, + android_webview.HttpAuthHandler hander, + String host, + String realm, + )? onReceivedHttpAuthRequest, void Function( android_webview.WebView webView, android_webview.WebResourceRequest request, diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart index ebb01cf8f11..12c50605da7 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart @@ -377,6 +377,17 @@ class MockAndroidNavigationDelegate extends _i1.Mock ) as _i9.Future); @override + _i9.Future setOnHttpBasicAuthRequest( + _i3.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i9.Future.value(), + returnValueForMissingStub: _i9.Future.value(), + ) as _i9.Future); + @override _i9.Future setOnHttpError(_i3.HttpResponseErrorCallback? onHttpError) => (super.noSuchMethod( Invocation.method( @@ -989,6 +1000,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1024,6 +1041,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1062,6 +1085,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1100,6 +1129,12 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, + void Function( + _i2.WebView, + _i2.HttpAuthHandler, + String, + String, + )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, diff --git a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart index 9644887711d..353b1d92544 100644 --- a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart @@ -15,8 +15,7 @@ import 'package:webview_flutter_android/src/android_webview.g.dart'; /// Host API for managing the native `InstanceManager`. abstract class TestInstanceManagerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Clear the native `InstanceManager`. @@ -24,20 +23,15 @@ abstract class TestInstanceManagerHostApi { /// This is typically only used after a hot restart. void clear(); - static void setup(TestInstanceManagerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestInstanceManagerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', - codec, + 'dev.flutter.pigeon.webview_flutter_android.InstanceManagerHostApi.clear', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { // ignore message api.clear(); return []; @@ -53,28 +47,22 @@ abstract class TestInstanceManagerHostApi { /// /// See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. abstract class TestJavaObjectHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void dispose(int identifier); - static void setup(TestJavaObjectHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestJavaObjectHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaObjectHostApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -93,8 +81,7 @@ abstract class TestJavaObjectHostApi { /// are attached to a Dart instance or handle method calls on the associated /// native class or an instance of the class. abstract class TestCookieManagerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles attaching `CookieManager.instance` to a native instance. @@ -107,25 +94,19 @@ abstract class TestCookieManagerHostApi { Future removeAllCookies(int identifier); /// Handles Dart method `CookieManager.setAcceptThirdPartyCookies`. - void setAcceptThirdPartyCookies( - int identifier, int webViewIdentifier, bool accept); + void setAcceptThirdPartyCookies(int identifier, int webViewIdentifier, bool accept); - static void setup(TestCookieManagerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestCookieManagerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.attachInstance was null.'); final List args = (message as List?)!; final int? arg_instanceIdentifier = (args[0] as int?); assert(arg_instanceIdentifier != null, @@ -137,18 +118,14 @@ abstract class TestCookieManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setCookie was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -166,18 +143,14 @@ abstract class TestCookieManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.removeAllCookies was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -189,18 +162,14 @@ abstract class TestCookieManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -211,8 +180,7 @@ abstract class TestCookieManagerHostApi { final bool? arg_accept = (args[2] as bool?); assert(arg_accept != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.CookieManagerHostApi.setAcceptThirdPartyCookies was null, expected non-null bool.'); - api.setAcceptThirdPartyCookies( - arg_identifier!, arg_webViewIdentifier!, arg_accept!); + api.setAcceptThirdPartyCookies(arg_identifier!, arg_webViewIdentifier!, arg_accept!); return []; }); } @@ -235,7 +203,7 @@ class _TestWebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WebViewPoint.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -244,17 +212,14 @@ class _TestWebViewHostApiCodec extends StandardMessageCodec { } abstract class TestWebViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestWebViewHostApiCodec(); void create(int instanceId); - void loadData( - int instanceId, String data, String? mimeType, String? encoding); + void loadData(int instanceId, String data, String? mimeType, String? encoding); - void loadDataWithBaseUrl(int instanceId, String? baseUrl, String data, - String? mimeType, String? encoding, String? historyUrl); + void loadDataWithBaseUrl(int instanceId, String? baseUrl, String data, String? mimeType, String? encoding, String? historyUrl); void loadUrl(int instanceId, String url, Map headers); @@ -302,22 +267,17 @@ abstract class TestWebViewHostApi { void setBackgroundColor(int instanceId, int color); - static void setup(TestWebViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -329,18 +289,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadData was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -357,18 +313,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadDataWithBaseUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -380,26 +332,21 @@ abstract class TestWebViewHostApi { final String? arg_mimeType = (args[3] as String?); final String? arg_encoding = (args[4] as String?); final String? arg_historyUrl = (args[5] as String?); - api.loadDataWithBaseUrl(arg_instanceId!, arg_baseUrl, arg_data!, - arg_mimeType, arg_encoding, arg_historyUrl); + api.loadDataWithBaseUrl(arg_instanceId!, arg_baseUrl, arg_data!, arg_mimeType, arg_encoding, arg_historyUrl); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -407,8 +354,7 @@ abstract class TestWebViewHostApi { final String? arg_url = (args[1] as String?); assert(arg_url != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null, expected non-null String.'); - final Map? arg_headers = - (args[2] as Map?)?.cast(); + final Map? arg_headers = (args[2] as Map?)?.cast(); assert(arg_headers != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.loadUrl was null, expected non-null Map.'); api.loadUrl(arg_instanceId!, arg_url!, arg_headers!); @@ -418,18 +364,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.postUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -447,18 +389,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getUrl was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -470,18 +408,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoBack was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -493,18 +427,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.canGoForward was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -516,18 +446,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goBack was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -539,18 +465,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.goForward was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -562,18 +484,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.reload was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -585,18 +503,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.clearCache was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -611,18 +525,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -630,26 +540,21 @@ abstract class TestWebViewHostApi { final String? arg_javascriptString = (args[1] as String?); assert(arg_javascriptString != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.evaluateJavascript was null, expected non-null String.'); - final String? output = await api.evaluateJavascript( - arg_instanceId!, arg_javascriptString!); + final String? output = await api.evaluateJavascript(arg_instanceId!, arg_javascriptString!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getTitle was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -661,18 +566,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollTo was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -690,18 +591,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.scrollBy was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -719,18 +616,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollX was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -742,18 +635,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollY was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -765,18 +654,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.getScrollPosition was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -788,18 +673,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebContentsDebuggingEnabled was null.'); final List args = (message as List?)!; final bool? arg_enabled = (args[0] as bool?); assert(arg_enabled != null, @@ -811,18 +692,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebViewClient was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -837,18 +714,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -856,26 +729,21 @@ abstract class TestWebViewHostApi { final int? arg_javaScriptChannelInstanceId = (args[1] as int?); assert(arg_javaScriptChannelInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.addJavaScriptChannel was null, expected non-null int.'); - api.addJavaScriptChannel( - arg_instanceId!, arg_javaScriptChannelInstanceId!); + api.addJavaScriptChannel(arg_instanceId!, arg_javaScriptChannelInstanceId!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -883,26 +751,21 @@ abstract class TestWebViewHostApi { final int? arg_javaScriptChannelInstanceId = (args[1] as int?); assert(arg_javaScriptChannelInstanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.removeJavaScriptChannel was null, expected non-null int.'); - api.removeJavaScriptChannel( - arg_instanceId!, arg_javaScriptChannelInstanceId!); + api.removeJavaScriptChannel(arg_instanceId!, arg_javaScriptChannelInstanceId!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setDownloadListener was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -915,18 +778,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setWebChromeClient was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -939,18 +798,14 @@ abstract class TestWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewHostApi.setBackgroundColor was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -967,8 +822,7 @@ abstract class TestWebViewHostApi { } abstract class TestWebSettingsHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId, int webViewInstanceId); @@ -1001,22 +855,17 @@ abstract class TestWebSettingsHostApi { String getUserAgentString(int instanceId); - static void setup(TestWebSettingsHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebSettingsHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1031,18 +880,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDomStorageEnabled was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1057,18 +902,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1076,26 +917,21 @@ abstract class TestWebSettingsHostApi { final bool? arg_flag = (args[1] as bool?); assert(arg_flag != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null, expected non-null bool.'); - api.setJavaScriptCanOpenWindowsAutomatically( - arg_instanceId!, arg_flag!); + api.setJavaScriptCanOpenWindowsAutomatically(arg_instanceId!, arg_flag!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportMultipleWindows was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1110,18 +946,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setJavaScriptEnabled was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1136,18 +968,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUserAgentString was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1160,18 +988,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1179,26 +1003,21 @@ abstract class TestWebSettingsHostApi { final bool? arg_require = (args[1] as bool?); assert(arg_require != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null, expected non-null bool.'); - api.setMediaPlaybackRequiresUserGesture( - arg_instanceId!, arg_require!); + api.setMediaPlaybackRequiresUserGesture(arg_instanceId!, arg_require!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setSupportZoom was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1213,18 +1032,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setLoadWithOverviewMode was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1239,18 +1054,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setUseWideViewPort was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1265,18 +1076,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setDisplayZoomControls was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1291,18 +1098,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setBuiltInZoomControls was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1317,18 +1120,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setAllowFileAccess was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1343,18 +1142,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.setTextZoom was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1369,18 +1164,14 @@ abstract class TestWebSettingsHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebSettingsHostApi.getUserAgentString was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1394,28 +1185,22 @@ abstract class TestWebSettingsHostApi { } abstract class TestJavaScriptChannelHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId, String channelName); - static void setup(TestJavaScriptChannelHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestJavaScriptChannelHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.JavaScriptChannelHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1432,31 +1217,24 @@ abstract class TestJavaScriptChannelHostApi { } abstract class TestWebViewClientHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); - void setSynchronousReturnValueForShouldOverrideUrlLoading( - int instanceId, bool value); + void setSynchronousReturnValueForShouldOverrideUrlLoading(int instanceId, bool value); - static void setup(TestWebViewClientHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebViewClientHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1468,18 +1246,14 @@ abstract class TestWebViewClientHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1487,8 +1261,7 @@ abstract class TestWebViewClientHostApi { final bool? arg_value = (args[1] as bool?); assert(arg_value != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null, expected non-null bool.'); - api.setSynchronousReturnValueForShouldOverrideUrlLoading( - arg_instanceId!, arg_value!); + api.setSynchronousReturnValueForShouldOverrideUrlLoading(arg_instanceId!, arg_value!); return []; }); } @@ -1497,28 +1270,22 @@ abstract class TestWebViewClientHostApi { } abstract class TestDownloadListenerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); - static void setup(TestDownloadListenerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestDownloadListenerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.DownloadListenerHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1532,33 +1299,26 @@ abstract class TestDownloadListenerHostApi { } abstract class TestWebChromeClientHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); - void setSynchronousReturnValueForOnShowFileChooser( - int instanceId, bool value); + void setSynchronousReturnValueForOnShowFileChooser(int instanceId, bool value); void setSynchronousReturnValueForOnConsoleMessage(int instanceId, bool value); - static void setup(TestWebChromeClientHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebChromeClientHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1570,18 +1330,14 @@ abstract class TestWebChromeClientHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1589,26 +1345,21 @@ abstract class TestWebChromeClientHostApi { final bool? arg_value = (args[1] as bool?); assert(arg_value != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null, expected non-null bool.'); - api.setSynchronousReturnValueForOnShowFileChooser( - arg_instanceId!, arg_value!); + api.setSynchronousReturnValueForOnShowFileChooser(arg_instanceId!, arg_value!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1616,8 +1367,7 @@ abstract class TestWebChromeClientHostApi { final bool? arg_value = (args[1] as bool?); assert(arg_value != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.WebChromeClientHostApi.setSynchronousReturnValueForOnConsoleMessage was null, expected non-null bool.'); - api.setSynchronousReturnValueForOnConsoleMessage( - arg_instanceId!, arg_value!); + api.setSynchronousReturnValueForOnConsoleMessage(arg_instanceId!, arg_value!); return []; }); } @@ -1626,30 +1376,24 @@ abstract class TestWebChromeClientHostApi { } abstract class TestAssetManagerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); List list(String path); String getAssetFilePathByName(String name); - static void setup(TestAssetManagerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestAssetManagerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.list was null.'); final List args = (message as List?)!; final String? arg_path = (args[0] as String?); assert(arg_path != null, @@ -1661,18 +1405,14 @@ abstract class TestAssetManagerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', - codec, + 'dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.FlutterAssetManagerHostApi.getAssetFilePathByName was null.'); final List args = (message as List?)!; final String? arg_name = (args[0] as String?); assert(arg_name != null, @@ -1686,30 +1426,24 @@ abstract class TestAssetManagerHostApi { } abstract class TestWebStorageHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); void deleteAllData(int instanceId); - static void setup(TestWebStorageHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWebStorageHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.create was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1721,18 +1455,14 @@ abstract class TestWebStorageHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', - codec, + 'dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.WebStorageHostApi.deleteAllData was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1753,8 +1483,7 @@ abstract class TestWebStorageHostApi { /// /// See https://developer.android.com/reference/android/webkit/PermissionRequest. abstract class TestPermissionRequestHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `PermissionRequest.grant`. @@ -1763,28 +1492,22 @@ abstract class TestPermissionRequestHostApi { /// Handles Dart method `PermissionRequest.deny`. void deny(int instanceId); - static void setup(TestPermissionRequestHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestPermissionRequestHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null, expected non-null int.'); - final List? arg_resources = - (args[1] as List?)?.cast(); + final List? arg_resources = (args[1] as List?)?.cast(); assert(arg_resources != null, 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.grant was null, expected non-null List.'); api.grant(arg_instanceId!, arg_resources!); @@ -1794,18 +1517,14 @@ abstract class TestPermissionRequestHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', - codec, + 'dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.PermissionRequestHostApi.deny was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1826,29 +1545,23 @@ abstract class TestPermissionRequestHostApi { /// /// See https://developer.android.com/reference/android/webkit/WebChromeClient.CustomViewCallback. abstract class TestCustomViewCallbackHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `CustomViewCallback.onCustomViewHidden`. void onCustomViewHidden(int identifier); - static void setup(TestCustomViewCallbackHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestCustomViewCallbackHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', - codec, + 'dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.CustomViewCallbackHostApi.onCustomViewHidden was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1869,29 +1582,23 @@ abstract class TestCustomViewCallbackHostApi { /// /// See https://developer.android.com/reference/android/webkit/GeolocationPermissions.Callback. abstract class TestGeolocationPermissionsCallbackHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Handles Dart method `GeolocationPermissionsCallback.invoke`. void invoke(int instanceId, String origin, bool allow, bool retain); - static void setup(TestGeolocationPermissionsCallbackHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestGeolocationPermissionsCallbackHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', - codec, + 'dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_android.GeolocationPermissionsCallbackHostApi.invoke was null.'); final List args = (message as List?)!; final int? arg_instanceId = (args[0] as int?); assert(arg_instanceId != null, @@ -1912,3 +1619,90 @@ abstract class TestGeolocationPermissionsCallbackHostApi { } } } + +/// Host API for `HttpAuthHandler`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. +abstract class TestHttpAuthHandlerHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = StandardMessageCodec(); + + /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. + bool useHttpAuthUsernamePassword(int instanceId); + + /// Handles Dart method `HttpAuthHandler.cancel`. + void cancel(int instanceId); + + /// Handles Dart method `HttpAuthHandler.proceed`. + void proceed(int instanceId, String username, String password); + + static void setup(TestHttpAuthHandlerHostApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword was null, expected non-null int.'); + final bool output = api.useHttpAuthUsernamePassword(arg_instanceId!); + return [output]; + }); + } + } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel was null, expected non-null int.'); + api.cancel(arg_instanceId!); + return []; + }); + } + } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null.'); + final List args = (message as List?)!; + final int? arg_instanceId = (args[0] as int?); + assert(arg_instanceId != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null int.'); + final String? arg_username = (args[1] as String?); + assert(arg_username != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null String.'); + final String? arg_password = (args[2] as String?); + assert(arg_password != null, + 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null String.'); + api.proceed(arg_instanceId!, arg_username!, arg_password!); + return []; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 2748ea394cc..37be10e472e 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.7.0 + +* Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. + ## 2.6.0 * Adds support to register a callback to intercept messages that are written to diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart index dc3fefbb513..66da0b97e68 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart @@ -30,6 +30,10 @@ typedef WebResourceErrorCallback = void Function(WebResourceError error); /// url of the web view. typedef UrlChangeCallback = void Function(UrlChange change); +/// Signature for callbacks that notify the host application of an +/// authentication request. +typedef HttpAuthRequestCallback = void Function(HttpBasicAuthRequest request); + /// An interface defining navigation events that occur on the native platform. /// /// The [PlatformWebViewController] is notifying this delegate on events that @@ -132,4 +136,12 @@ abstract class PlatformNavigationDelegate extends PlatformInterface { 'setOnUrlChange is not implemented on the current platform.', ); } + + /// Invoked when the web view is requesting authentication. + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback onHttpAuthRequest) { + throw UnimplementedError( + 'setOnHttpBasicAuthRequest is not implemented on the current platform.', + ); + } } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart index 806d2a7a6b6..d81cdaf2351 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_webview_controller.dart @@ -17,7 +17,7 @@ import 'webview_platform.dart' show WebViewPlatform; /// changes. Extending this class (using `extends`) ensures that the subclass /// will get the default implementation, while platform implementations that /// `implements` this interface will be broken by newly added -/// [PlatformWebViewCookieManager] methods. +/// [PlatformWebViewController] methods. abstract class PlatformWebViewController extends PlatformInterface { /// Creates a new [PlatformWebViewController] factory PlatformWebViewController( @@ -267,7 +267,7 @@ abstract class PlatformWebViewController extends PlatformInterface { void Function(PlatformWebViewPermissionRequest request) onPermissionRequest, ) { throw UnimplementedError( - 'setOnPermissionRequest is not implemented on the current platform', + 'setOnPlatformPermissionRequest is not implemented on the current platform', ); } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart new file mode 100644 index 00000000000..23fed00d5e8 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart @@ -0,0 +1,26 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +/// Defines the parameters of a pending HTTP basic authentication request. +class HttpBasicAuthRequest { + /// Creates a [HttpBasicAuthRequest]. + const HttpBasicAuthRequest({ + required this.onProceed, + required this.onCancel, + required this.host, + required this.realm, + }); + + /// The callback to authenticate. + final void Function(String username, String password) onProceed; + + /// The callback to cancel authentication. + final void Function() onCancel; + + /// The host requiring authentication. + final String host; + + /// The realm requiring authentication. + final String realm; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart index c6cbe6967a6..9846248ba92 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +export 'http_basic_auth_request.dart'; export 'http_response_error.dart'; export 'javascript_console_message.dart'; export 'javascript_log_level.dart'; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml index 71e85f32ded..a0fe637d7f8 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml @@ -4,7 +4,7 @@ repository: https://github.com/flutter/packages/tree/main/packages/webview_flutt issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview_flutter%22 # NOTE: We strongly prefer non-breaking changes, even at the expense of a # less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes -version: 2.6.0 +version: 2.7.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -14,7 +14,7 @@ dependencies: flutter: sdk: flutter meta: ^1.7.0 - plugin_platform_interface: ^2.1.0 + plugin_platform_interface: ^2.1.6 dev_dependencies: build_runner: ^2.1.8 diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart index ac9f065e2be..946b76e46dd 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart @@ -142,6 +142,20 @@ void main() { throwsUnimplementedError, ); }); + + test( + 'Default implementation of setOnReceiveHttpAuthRequest should throw unimplemented error', + () { + final PlatformNavigationDelegate callbackDelegate = + ExtendsPlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams()); + + expect( + () => callbackDelegate + .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) {}), + throwsUnimplementedError, + ); + }); } class MockWebViewPlatformWithMixin extends MockWebViewPlatform diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart index 3ab612ee8c5..65c87843aee 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart @@ -124,4 +124,15 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + @override + _i4.Future setOnHttpBasicAuthRequest( + _i3.HttpAuthRequestCallback? onHttpAuthRequest) => + (super.noSuchMethod( + Invocation.method( + #setOnHttpBasicAuthRequest, + [onHttpAuthRequest], + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index 197c5d70784..f6917bad8f9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,3 +1,7 @@ +## 3.10.0 + +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`.<<<<<<< HEAD + ## 3.9.2 * Fixes error caused by calling `WKWebViewConfiguration.limitsNavigationsToAppBoundDomains` on @@ -18,6 +22,7 @@ ## 3.7.4 * Adds pub topics to package metadata. + * Updates minimum supported SDK version to Flutter 3.7/Dart 2.19. ## 3.7.3 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 64d7702f209..0dd23fc53c0 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -34,6 +34,15 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; + } else if (request.uri.path == '/http-basic-authentication') { + final bool isAuthenticating = request.headers['Authorization'] != null; + if (isAuthenticating) { + request.response.writeln('Authorized'); + } else { + request.response.headers + .add('WWW-Authenticate', 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -43,6 +52,7 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; + final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets( 'withWeakReferenceTo allows encapsulating class to be garbage collected', @@ -1127,6 +1137,80 @@ Future main() async { }); }); + testWidgets('can receive HTTP basic auth requests', + (WidgetTester tester) async { + final Completer authRequested = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => authRequested.complete()); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + WebKitWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(authRequested.future, completes); + }); + + testWidgets('can reply to HTTP basic auth requests', + (WidgetTester tester) async { + final Completer pageFinished = Completer(); + final PlatformWebViewController controller = PlatformWebViewController( + const PlatformWebViewControllerCreationParams(), + ); + + final PlatformNavigationDelegate navigationDelegate = + PlatformNavigationDelegate( + const PlatformNavigationDelegateCreationParams(), + ); + await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); + await navigationDelegate.setOnHttpBasicAuthRequest( + (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + ); + await controller.setPlatformNavigationDelegate(navigationDelegate); + + // Clear cache so that the auth request is always received and we don't get + // a cached response. + await controller.clearCache(); + + await tester.pumpWidget( + Builder( + builder: (BuildContext context) { + return PlatformWebViewWidget( + WebKitWebViewWidgetCreationParams(controller: controller), + ).build(context); + }, + ), + ); + + await controller.loadRequest( + LoadRequestParams(uri: Uri.parse(basicAuthUrl)), + ); + + await expectLater(pageFinished.future, completes); + }); + testWidgets('launches with gestureNavigationEnabled on iOS', (WidgetTester tester) async { final WebKitWebViewController controller = WebKitWebViewController( diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj index 32c0bf9872c..5b13ebad68f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/project.pbxproj @@ -11,6 +11,9 @@ 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 8F4FF949299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4FF948299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m */; }; 8F4FF94B29AC223F000A6586 /* FWFURLTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F4FF94A29AC223F000A6586 /* FWFURLTests.m */; }; + 8F562F902A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F562F8F2A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m */; }; + 8F562F922A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F562F912A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m */; }; + 8F562F942A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F562F932A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m */; }; 8F78EAAA2A02CB9100C2E520 /* FWFErrorTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F78EAA92A02CB9100C2E520 /* FWFErrorTests.m */; }; 8FA6A87928062CD000A4B183 /* FWFInstanceManagerTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FA6A87828062CD000A4B183 /* FWFInstanceManagerTests.m */; }; 8FB79B5328134C3100C101D3 /* FWFWebViewHostApiTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FB79B5228134C3100C101D3 /* FWFWebViewHostApiTests.m */; }; @@ -81,6 +84,9 @@ 7AFFD8EE1D35381100E5BB4D /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; 8F4FF948299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FWFWebViewFlutterWKWebViewExternalAPITests.m; sourceTree = ""; }; 8F4FF94A29AC223F000A6586 /* FWFURLTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLTests.m; sourceTree = ""; }; + 8F562F8F2A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLCredentialHostApiTests.m; sourceTree = ""; }; + 8F562F912A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLProtectionSpaceHostApiTests.m; sourceTree = ""; }; + 8F562F932A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFURLAuthenticationChallengeHostApiTests.m; sourceTree = ""; }; 8F78EAA92A02CB9100C2E520 /* FWFErrorTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFErrorTests.m; sourceTree = ""; }; 8FA6A87828062CD000A4B183 /* FWFInstanceManagerTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFInstanceManagerTests.m; sourceTree = ""; }; 8FB79B5228134C3100C101D3 /* FWFWebViewHostApiTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWFWebViewHostApiTests.m; sourceTree = ""; }; @@ -167,6 +173,9 @@ 8FB79B902820BAC700C101D3 /* FWFUIViewHostApiTests.m */, 8FB79B962821985200C101D3 /* FWFObjectHostApiTests.m */, 8F4FF94A29AC223F000A6586 /* FWFURLTests.m */, + 8F562F8F2A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m */, + 8F562F912A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m */, + 8F562F932A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m */, 8F78EAA92A02CB9100C2E520 /* FWFErrorTests.m */, ); path = RunnerTests; @@ -318,7 +327,7 @@ isa = PBXProject; attributes = { DefaultBuildSystemTypeForWorkspace = Original; - LastUpgradeCheck = 1300; + LastUpgradeCheck = 1430; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 68BDCAE823C3F7CB00D9C032 = { @@ -327,7 +336,6 @@ }; 97C146ED1CF9000F007C117D = { CreatedOnToolsVersion = 7.3.1; - DevelopmentTeam = 7624MWN53C; }; F7151F73266057800028CB91 = { CreatedOnToolsVersion = 12.5; @@ -474,12 +482,15 @@ 8FB79B852820A3A400C101D3 /* FWFUIDelegateHostApiTests.m in Sources */, 8FB79B972821985200C101D3 /* FWFObjectHostApiTests.m in Sources */, 8FB79B672820453400C101D3 /* FWFHTTPCookieStoreHostApiTests.m in Sources */, + 8F562F942A56C07B00C2BED6 /* FWFURLAuthenticationChallengeHostApiTests.m in Sources */, 8FB79B5328134C3100C101D3 /* FWFWebViewHostApiTests.m in Sources */, 8FB79B73282096B500C101D3 /* FWFScriptMessageHandlerHostApiTests.m in Sources */, 8FB79B7928209D1300C101D3 /* FWFUserContentControllerHostApiTests.m in Sources */, + 8F562F902A56C02D00C2BED6 /* FWFURLCredentialHostApiTests.m in Sources */, 8F4FF949299ADC2D000A6586 /* FWFWebViewFlutterWKWebViewExternalAPITests.m in Sources */, 8FB79B6B28204EE500C101D3 /* FWFWebsiteDataStoreHostApiTests.m in Sources */, 8FB79B8F2820BAB300C101D3 /* FWFScrollViewHostApiTests.m in Sources */, + 8F562F922A56C04F00C2BED6 /* FWFURLProtectionSpaceHostApiTests.m in Sources */, 8FB79B912820BAC700C101D3 /* FWFUIViewHostApiTests.m in Sources */, 8FB79B55281B24F600C101D3 /* FWFDataConvertersTests.m in Sources */, 8FB79B6D2820533B00C101D3 /* FWFWebViewConfigurationHostApiTests.m in Sources */, @@ -689,6 +700,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", @@ -715,6 +727,7 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CURRENT_PROJECT_VERSION = "$(FLUTTER_BUILD_NUMBER)"; + DEVELOPMENT_TEAM = 7624MWN53C; ENABLE_BITCODE = NO; FRAMEWORK_SEARCH_PATHS = ( "$(inherited)", diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cb713d76763..cf07c46df2e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ + CADisableMinimumFrameDurationOnPhone + CFBundleDevelopmentRegion en CFBundleExecutable @@ -22,6 +24,17 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS + NSAppTransportSecurity + + NSAllowsArbitraryLoadsInWebContent + + + NSCameraUsageDescription + If you want to use the camera, you have to give permission. + UIApplicationSupportsIndirectInputEvents + + UIBackgroundModes + UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -39,16 +52,5 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight - CADisableMinimumFrameDurationOnPhone - - UIApplicationSupportsIndirectInputEvents - - NSCameraUsageDescription - If you want to use the camera, you have to give permission. - NSAppTransportSecurity - - NSAllowsArbitraryLoadsInWebContent - - diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m index 570a1f73ad9..17c26669667 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m @@ -213,4 +213,58 @@ - (void)testWebViewWebContentProcessDidTerminate { webViewIdentifier:@1 completion:OCMOCK_ANY]); } + +- (void)testDidReceiveAuthenticationChallenge { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + + FWFNavigationDelegate *mockDelegate = [self mockNavigationDelegateWithManager:instanceManager + identifier:0]; + FWFNavigationDelegateFlutterApiImpl *mockFlutterAPI = + [self mockFlutterApiWithManager:instanceManager]; + + OCMStub([mockDelegate navigationDelegateAPI]).andReturn(mockFlutterAPI); + + WKWebView *mockWebView = OCMClassMock([WKWebView class]); + [instanceManager addDartCreatedInstance:mockWebView withIdentifier:1]; + + NSURLAuthenticationChallenge *mockChallenge = OCMClassMock([NSURLAuthenticationChallenge class]); + NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"host" + port:0 + protocol:nil + realm:@"realm" + authenticationMethod:nil]; + OCMStub([mockChallenge protectionSpace]).andReturn(protectionSpace); + [instanceManager addDartCreatedInstance:mockChallenge withIdentifier:2]; + + NSURLCredential *credential = [NSURLCredential credentialWithUser:@"user" + password:@"password" + persistence:NSURLCredentialPersistenceNone]; + [instanceManager addDartCreatedInstance:credential withIdentifier:5]; + + OCMStub([mockFlutterAPI + didReceiveAuthenticationChallengeForDelegateWithIdentifier:@0 + webViewIdentifier:@1 + challengeIdentifier:@(2) + completion: + ([OCMArg + invokeBlockWithArgs: + [FWFAuthenticationChallengeResponse + makeWithDisposition: + FWFNSUrlSessionAuthChallengeDispositionCancelAuthenticationChallenge + credentialIdentifier:@(5)], + [NSNull null], nil])]); + + NSURLSessionAuthChallengeDisposition __block callbackDisposition = -1; + NSURLCredential *__block callbackCredential; + [mockDelegate webView:mockWebView + didReceiveAuthenticationChallenge:mockChallenge + completionHandler:^(NSURLSessionAuthChallengeDisposition disposition, + NSURLCredential *credential) { + callbackDisposition = disposition; + callbackCredential = credential; + }]; + + XCTAssertEqual(callbackDisposition, NSURLSessionAuthChallengeCancelAuthenticationChallenge); + XCTAssertEqualObjects(callbackCredential, credential); +} @end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m new file mode 100644 index 00000000000..2de5eb67ddb --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m @@ -0,0 +1,47 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +@import Flutter; +@import XCTest; +@import webview_flutter_wkwebview; + +#import + +@interface FWFURLAuthenticationChallengeHostApiTests : XCTestCase + +@end + +@implementation FWFURLAuthenticationChallengeHostApiTests +- (void)testFlutterApiCreate { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + FWFURLAuthenticationChallengeFlutterApiImpl *flutterApi = + [[FWFURLAuthenticationChallengeFlutterApiImpl alloc] + initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger)) + instanceManager:instanceManager]; + + flutterApi.api = OCMClassMock([FWFNSUrlAuthenticationChallengeFlutterApi class]); + + NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"host" + port:0 + protocol:nil + realm:@"realm" + authenticationMethod:nil]; + + NSURLAuthenticationChallenge *mockChallenge = OCMClassMock([NSURLAuthenticationChallenge class]); + OCMStub([mockChallenge protectionSpace]).andReturn(protectionSpace); + + [flutterApi createWithInstance:mockChallenge + protectionSpace:protectionSpace + completion:^(FlutterError *error){ + + }]; + + long identifier = [instanceManager identifierWithStrongReferenceForInstance:mockChallenge]; + long protectionSpaceIdentifier = + [instanceManager identifierWithStrongReferenceForInstance:protectionSpace]; + OCMVerify([flutterApi.api createWithIdentifier:@(identifier) + protectionSpaceIdentifier:@(protectionSpaceIdentifier) + completion:OCMOCK_ANY]); +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m new file mode 100644 index 00000000000..70c9e29ee95 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m @@ -0,0 +1,35 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +@import Flutter; +@import XCTest; +@import webview_flutter_wkwebview; + +#import + +@interface FWFURLCredentialHostApiTests : XCTestCase +@end + +@implementation FWFURLCredentialHostApiTests +- (void)testHostApiCreate { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + + FWFURLCredentialHostApiImpl *hostApi = [[FWFURLCredentialHostApiImpl alloc] + initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger)) + instanceManager:instanceManager]; + + FlutterError *error; + [hostApi createWithUserWithIdentifier:@0 + user:@"user" + password:@"password" + persistence:FWFNSUrlCredentialPersistencePermanent + error:&error]; + XCTAssertNil(error); + + NSURLCredential *credential = (NSURLCredential *)[instanceManager instanceForIdentifier:0]; + XCTAssertEqualObjects(credential.user, @"user"); + XCTAssertEqualObjects(credential.password, @"password"); + XCTAssertEqual(credential.persistence, NSURLCredentialPersistencePermanent); +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m new file mode 100644 index 00000000000..08b2e4fe888 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m @@ -0,0 +1,41 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +@import Flutter; +@import XCTest; +@import webview_flutter_wkwebview; + +#import + +@interface FWFURLProtectionSpaceHostApiTests : XCTestCase +@end + +@implementation FWFURLProtectionSpaceHostApiTests +- (void)testFlutterApiCreate { + FWFInstanceManager *instanceManager = [[FWFInstanceManager alloc] init]; + FWFURLProtectionSpaceFlutterApiImpl *flutterApi = [[FWFURLProtectionSpaceFlutterApiImpl alloc] + initWithBinaryMessenger:OCMProtocolMock(@protocol(FlutterBinaryMessenger)) + instanceManager:instanceManager]; + + flutterApi.api = OCMClassMock([FWFNSUrlProtectionSpaceFlutterApi class]); + + NSURLProtectionSpace *protectionSpace = [[NSURLProtectionSpace alloc] initWithHost:@"host" + port:0 + protocol:nil + realm:@"realm" + authenticationMethod:nil]; + [flutterApi createWithInstance:protectionSpace + host:@"host" + realm:@"realm" + completion:^(FlutterError *error){ + + }]; + + long identifier = [instanceManager identifierWithStrongReferenceForInstance:protectionSpace]; + OCMVerify([flutterApi.api createWithIdentifier:@(identifier) + host:@"host" + realm:@"realm" + completion:OCMOCK_ANY]); +} +@end 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 4180650574d..05b8c04041d 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -162,6 +162,11 @@ Page resource error: }) ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); + }) + ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + debugPrint( + 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + openDialog(request); }), ) ..addJavaScriptChannel(JavaScriptChannelParams( @@ -220,6 +225,60 @@ Page resource error: child: const Icon(Icons.favorite), ); } + + Future openDialog(HttpBasicAuthRequest httpRequest) async { + final TextEditingController usernameTextController = + TextEditingController(); + final TextEditingController passwordTextController = + TextEditingController(); + + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + return AlertDialog( + title: Text('${httpRequest.host}: ${httpRequest.realm}'), + content: SingleChildScrollView( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + decoration: const InputDecoration(labelText: 'Username'), + autofocus: true, + controller: usernameTextController, + ), + TextField( + decoration: const InputDecoration(labelText: 'Password'), + controller: passwordTextController, + ), + ], + ), + ), + actions: [ + // Explicitly cancel the request on iOS as the OS does not emit new + // requests when a previous request is pending. + TextButton( + onPressed: () { + httpRequest.onCancel(); + Navigator.of(context).pop(); + }, + child: const Text('Cancel'), + ), + TextButton( + onPressed: () { + httpRequest.onProceed( + usernameTextController.text, + passwordTextController.text, + ); + Navigator.of(context).pop(); + }, + child: const Text('Authenticate'), + ), + ], + ); + }, + ); + } } enum MenuOptions { @@ -237,6 +296,7 @@ enum MenuOptions { transparentBackground, setCookie, logExample, + basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -300,6 +360,9 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; + case MenuOptions.basicAuthentication: + _basicAuthExample(); + break; } }, itemBuilder: (BuildContext context) => >[ @@ -360,6 +423,10 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.logExample, child: Text('Log example'), ), + const PopupMenuItem( + value: MenuOptions.basicAuthentication, + child: Text('Basic Authentication Example'), + ), ], ); } @@ -518,6 +585,12 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } + + Future _basicAuthExample() { + return webViewController.loadRequest(LoadRequestParams( + uri: Uri.parse( + 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml index 11f6bc6092f..ffde401a8e2 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml @@ -32,3 +32,8 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m index 2f919839aa5..5c672fff9a8 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m @@ -13,6 +13,7 @@ #import "FWFScrollViewHostApi.h" #import "FWFUIDelegateHostApi.h" #import "FWFUIViewHostApi.h" +#import "FWFURLCredentialHostApi.h" #import "FWFURLHostApi.h" #import "FWFUserContentControllerHostApi.h" #import "FWFWebViewConfigurationHostApi.h" @@ -105,6 +106,11 @@ + (void)registerWithRegistrar:(NSObject *)registrar { [[FWFURLHostApiImpl alloc] initWithBinaryMessenger:registrar.messenger instanceManager:instanceManager]); + FWFNSUrlCredentialHostApiSetup( + registrar.messenger, + [[FWFURLCredentialHostApiImpl alloc] initWithBinaryMessenger:registrar.messenger + instanceManager:instanceManager]); + FWFWebViewFactory *webviewFactory = [[FWFWebViewFactory alloc] initWithManager:instanceManager]; [registrar registerViewFactory:webviewFactory withId:@"plugins.flutter.io/webview"]; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h index 005cecb39b4..e9405f3bb90 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.h @@ -193,4 +193,26 @@ API_AVAILABLE(ios(15.0)) extern FWFWKMediaCaptureTypeData *FWFWKMediaCaptureTypeDataFromNativeWKMediaCaptureType( WKMediaCaptureType type); +/** + * Converts an FWFNSUrlSessionAuthChallengeDisposition to an NSURLSessionAuthChallengeDisposition. + * + * @param value The object containing information to create an NSURLSessionAuthChallengeDisposition. + * + * @return A NSURLSessionAuthChallengeDisposition or -1 if data could not be converted. + */ +extern NSURLSessionAuthChallengeDisposition +FWFNativeNSURLSessionAuthChallengeDispositionFromFWFNSUrlSessionAuthChallengeDisposition( + FWFNSUrlSessionAuthChallengeDisposition value); + +/** + * Converts an FWFNSUrlCredentialPersistence to an NSURLCredentialPersistence. + * + * @param value The object containing information to create an NSURLCredentialPersistence. + * + * @return A NSURLCredentialPersistence or -1 if data could not be converted. + */ +extern NSURLCredentialPersistence +FWFNativeNSURLCredentialPersistenceFromFWFNSUrlCredentialPersistence( + FWFNSUrlCredentialPersistence value); + NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m index 28c029888a3..d517b356029 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFDataConverters.m @@ -285,3 +285,36 @@ WKPermissionDecision FWFNativeWKPermissionDecisionFromData(FWFWKPermissionDecisi return nil; } + +NSURLSessionAuthChallengeDisposition +FWFNativeNSURLSessionAuthChallengeDispositionFromFWFNSUrlSessionAuthChallengeDisposition( + FWFNSUrlSessionAuthChallengeDisposition value) { + switch (value) { + case FWFNSUrlSessionAuthChallengeDispositionUseCredential: + return NSURLSessionAuthChallengeUseCredential; + case FWFNSUrlSessionAuthChallengeDispositionPerformDefaultHandling: + return NSURLSessionAuthChallengePerformDefaultHandling; + case FWFNSUrlSessionAuthChallengeDispositionCancelAuthenticationChallenge: + return NSURLSessionAuthChallengeCancelAuthenticationChallenge; + case FWFNSUrlSessionAuthChallengeDispositionRejectProtectionSpace: + return NSURLSessionAuthChallengeRejectProtectionSpace; + } + + return -1; +} + +NSURLCredentialPersistence FWFNativeNSURLCredentialPersistenceFromFWFNSUrlCredentialPersistence( + FWFNSUrlCredentialPersistence value) { + switch (value) { + case FWFNSUrlCredentialPersistenceNone: + return NSURLCredentialPersistenceNone; + case FWFNSUrlCredentialPersistenceSession: + return NSURLCredentialPersistenceForSession; + case FWFNSUrlCredentialPersistencePermanent: + return NSURLCredentialPersistencePermanent; + case FWFNSUrlCredentialPersistenceSynchronizable: + return NSURLCredentialPersistenceSynchronizable; + } + + return -1; +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h index 11c49d24b54..0ece7c35870 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.h @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), do not edit directly. // See also: https://pub.dev/packages/pigeon #import @@ -15,8 +15,7 @@ NS_ASSUME_NONNULL_BEGIN /// Mirror of NSKeyValueObservingOptions. /// -/// See -/// https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions?language=objc. +/// See https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions?language=objc. typedef NS_ENUM(NSUInteger, FWFNSKeyValueObservingOptionsEnum) { FWFNSKeyValueObservingOptionsEnumNewValue = 0, FWFNSKeyValueObservingOptionsEnumOldValue = 1, @@ -56,8 +55,7 @@ typedef NS_ENUM(NSUInteger, FWFWKUserScriptInjectionTimeEnum) { /// Mirror of WKAudiovisualMediaTypes. /// -/// See -/// [WKAudiovisualMediaTypes](https://developer.apple.com/documentation/webkit/wkaudiovisualmediatypes?language=objc). +/// See [WKAudiovisualMediaTypes](https://developer.apple.com/documentation/webkit/wkaudiovisualmediatypes?language=objc). typedef NS_ENUM(NSUInteger, FWFWKAudiovisualMediaTypeEnum) { FWFWKAudiovisualMediaTypeEnumNone = 0, FWFWKAudiovisualMediaTypeEnumAudio = 1, @@ -67,8 +65,7 @@ typedef NS_ENUM(NSUInteger, FWFWKAudiovisualMediaTypeEnum) { /// Mirror of WKWebsiteDataTypes. /// -/// See -/// https://developer.apple.com/documentation/webkit/wkwebsitedatarecord/data_store_record_types?language=objc. +/// See https://developer.apple.com/documentation/webkit/wkwebsitedatarecord/data_store_record_types?language=objc. typedef NS_ENUM(NSUInteger, FWFWKWebsiteDataTypeEnum) { FWFWKWebsiteDataTypeEnumCookies = 0, FWFWKWebsiteDataTypeEnumMemoryCache = 1, @@ -111,38 +108,31 @@ typedef NS_ENUM(NSUInteger, FWFNSHttpCookiePropertyKeyEnum) { /// An object that contains information about an action that causes navigation /// to occur. /// -/// Wraps -/// [WKNavigationType](https://developer.apple.com/documentation/webkit/wknavigationaction?language=objc). +/// Wraps [WKNavigationType](https://developer.apple.com/documentation/webkit/wknavigationaction?language=objc). typedef NS_ENUM(NSUInteger, FWFWKNavigationType) { /// A link activation. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypelinkactivated?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypelinkactivated?language=objc. FWFWKNavigationTypeLinkActivated = 0, /// A request to submit a form. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformsubmitted?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformsubmitted?language=objc. FWFWKNavigationTypeSubmitted = 1, /// A request for the frame’s next or previous item. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypebackforward?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypebackforward?language=objc. FWFWKNavigationTypeBackForward = 2, /// A request to reload the webpage. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypereload?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypereload?language=objc. FWFWKNavigationTypeReload = 3, /// A request to resubmit a form. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformresubmitted?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformresubmitted?language=objc. FWFWKNavigationTypeFormResubmitted = 4, /// A navigation request that originates for some other reason. /// - /// See - /// https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeother?language=objc. + /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeother?language=objc. FWFWKNavigationTypeOther = 5, /// An unknown navigation type. /// @@ -157,18 +147,15 @@ typedef NS_ENUM(NSUInteger, FWFWKNavigationType) { typedef NS_ENUM(NSUInteger, FWFWKPermissionDecision) { /// Deny permission for the requested resource. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiondeny?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiondeny?language=objc. FWFWKPermissionDecisionDeny = 0, /// Deny permission for the requested resource. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiongrant?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiongrant?language=objc. FWFWKPermissionDecisionGrant = 1, /// Prompt the user for permission for the requested resource. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisionprompt?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisionprompt?language=objc. FWFWKPermissionDecisionPrompt = 2, }; @@ -178,18 +165,15 @@ typedef NS_ENUM(NSUInteger, FWFWKPermissionDecision) { typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// A media device that can capture video. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecamera?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecamera?language=objc. FWFWKMediaCaptureTypeCamera = 0, /// A media device or devices that can capture audio and video. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecameraandmicrophone?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecameraandmicrophone?language=objc. FWFWKMediaCaptureTypeCameraAndMicrophone = 1, /// A media device that can capture audio. /// - /// See - /// https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypemicrophone?language=objc. + /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypemicrophone?language=objc. FWFWKMediaCaptureTypeMicrophone = 2, /// An unknown media device. /// @@ -198,6 +182,52 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { FWFWKMediaCaptureTypeUnknown = 3, }; +/// Responses to an authentication challenge. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition?language=objc. +typedef NS_ENUM(NSUInteger, FWFNSUrlSessionAuthChallengeDisposition) { + /// Use the specified credential, which may be nil. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeusecredential?language=objc. + FWFNSUrlSessionAuthChallengeDispositionUseCredential = 0, + /// Use the default handling for the challenge as though this delegate method + /// were not implemented. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeperformdefaulthandling?language=objc. + FWFNSUrlSessionAuthChallengeDispositionPerformDefaultHandling = 1, + /// Cancel the entire request. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengecancelauthenticationchallenge?language=objc. + FWFNSUrlSessionAuthChallengeDispositionCancelAuthenticationChallenge = 2, + /// Reject this challenge, and call the authentication delegate method again + /// with the next authentication protection space. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengerejectprotectionspace?language=objc. + FWFNSUrlSessionAuthChallengeDispositionRejectProtectionSpace = 3, +}; + +/// Specifies how long a credential will be kept. +typedef NS_ENUM(NSUInteger, FWFNSUrlCredentialPersistence) { + /// The credential should not be stored. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencenone?language=objc. + FWFNSUrlCredentialPersistenceNone = 0, + /// The credential should be stored only for this session. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistenceforsession?language=objc. + FWFNSUrlCredentialPersistenceSession = 1, + /// The credential should be stored in the keychain. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencepermanent?language=objc. + FWFNSUrlCredentialPersistencePermanent = 2, + /// The credential should be stored permanently in the keychain, and in + /// addition should be distributed to other devices based on the owning Apple + /// ID. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencesynchronizable?language=objc. + FWFNSUrlCredentialPersistenceSynchronizable = 3, +}; + @class FWFNSKeyValueObservingOptionsEnumData; @class FWFNSKeyValueChangeKeyEnumData; @class FWFWKUserScriptInjectionTimeEnumData; @@ -216,6 +246,7 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @class FWFWKSecurityOriginData; @class FWFNSHttpCookieData; @class FWFObjectOrIdentifier; +@class FWFAuthenticationChallengeResponse; @interface FWFNSKeyValueObservingOptionsEnumData : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. @@ -287,13 +318,13 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithUrl:(NSString *)url - httpMethod:(nullable NSString *)httpMethod - httpBody:(nullable FlutterStandardTypedData *)httpBody - allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields; -@property(nonatomic, copy) NSString *url; -@property(nonatomic, copy, nullable) NSString *httpMethod; -@property(nonatomic, strong, nullable) FlutterStandardTypedData *httpBody; -@property(nonatomic, strong) NSDictionary *allHttpHeaderFields; + httpMethod:(nullable NSString *)httpMethod + httpBody:(nullable FlutterStandardTypedData *)httpBody + allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields; +@property(nonatomic, copy) NSString * url; +@property(nonatomic, copy, nullable) NSString * httpMethod; +@property(nonatomic, strong, nullable) FlutterStandardTypedData * httpBody; +@property(nonatomic, strong) NSDictionary * allHttpHeaderFields; @end /// Mirror of WKUserScript. @@ -303,11 +334,11 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithSource:(NSString *)source - injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime - isMainFrameOnly:(NSNumber *)isMainFrameOnly; -@property(nonatomic, copy) NSString *source; -@property(nonatomic, strong, nullable) FWFWKUserScriptInjectionTimeEnumData *injectionTime; -@property(nonatomic, strong) NSNumber *isMainFrameOnly; + injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime + isMainFrameOnly:(NSNumber *)isMainFrameOnly; +@property(nonatomic, copy) NSString * source; +@property(nonatomic, strong, nullable) FWFWKUserScriptInjectionTimeEnumData * injectionTime; +@property(nonatomic, strong) NSNumber * isMainFrameOnly; @end /// Mirror of WKNavigationAction. @@ -317,10 +348,10 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithRequest:(FWFNSUrlRequestData *)request - targetFrame:(FWFWKFrameInfoData *)targetFrame - navigationType:(FWFWKNavigationType)navigationType; -@property(nonatomic, strong) FWFNSUrlRequestData *request; -@property(nonatomic, strong) FWFWKFrameInfoData *targetFrame; + targetFrame:(FWFWKFrameInfoData *)targetFrame + navigationType:(FWFWKNavigationType)navigationType; +@property(nonatomic, strong) FWFNSUrlRequestData * request; +@property(nonatomic, strong) FWFWKFrameInfoData * targetFrame; @property(nonatomic, assign) FWFWKNavigationType navigationType; @end @@ -331,7 +362,7 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithIsMainFrame:(NSNumber *)isMainFrame; -@property(nonatomic, strong) NSNumber *isMainFrame; +@property(nonatomic, strong) NSNumber * isMainFrame; @end /// Mirror of NSError. @@ -341,11 +372,11 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithCode:(NSNumber *)code - domain:(NSString *)domain - userInfo:(nullable NSDictionary *)userInfo; -@property(nonatomic, strong) NSNumber *code; -@property(nonatomic, copy) NSString *domain; -@property(nonatomic, strong, nullable) NSDictionary *userInfo; + domain:(NSString *)domain + userInfo:(nullable NSDictionary *)userInfo; +@property(nonatomic, strong) NSNumber * code; +@property(nonatomic, copy) NSString * domain; +@property(nonatomic, strong, nullable) NSDictionary * userInfo; @end /// Mirror of WKScriptMessage. @@ -354,9 +385,10 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @interface FWFWKScriptMessageData : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithName:(NSString *)name body:(id)body; -@property(nonatomic, copy) NSString *name; -@property(nonatomic, strong) id body; ++ (instancetype)makeWithName:(NSString *)name + body:(id )body; +@property(nonatomic, copy) NSString * name; +@property(nonatomic, strong) id body; @end /// Mirror of WKSecurityOrigin. @@ -365,10 +397,12 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @interface FWFWKSecurityOriginData : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithHost:(NSString *)host port:(NSNumber *)port protocol:(NSString *)protocol; -@property(nonatomic, copy) NSString *host; -@property(nonatomic, strong) NSNumber *port; -@property(nonatomic, copy) NSString *protocol; ++ (instancetype)makeWithHost:(NSString *)host + port:(NSNumber *)port + protocol:(NSString *)protocol; +@property(nonatomic, copy) NSString * host; +@property(nonatomic, strong) NSNumber * port; +@property(nonatomic, copy) NSString * protocol; @end /// Mirror of NSHttpCookieData. @@ -378,9 +412,9 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; + (instancetype)makeWithPropertyKeys:(NSArray *)propertyKeys - propertyValues:(NSArray *)propertyValues; -@property(nonatomic, strong) NSArray *propertyKeys; -@property(nonatomic, strong) NSArray *propertyValues; + propertyValues:(NSArray *)propertyValues; +@property(nonatomic, strong) NSArray * propertyKeys; +@property(nonatomic, strong) NSArray * propertyValues; @end /// An object that can represent either a value supported by @@ -389,11 +423,21 @@ typedef NS_ENUM(NSUInteger, FWFWKMediaCaptureType) { @interface FWFObjectOrIdentifier : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithValue:(id)value isIdentifier:(NSNumber *)isIdentifier; -@property(nonatomic, strong) id value; ++ (instancetype)makeWithValue:(id )value + isIdentifier:(NSNumber *)isIdentifier; +@property(nonatomic, strong) id value; /// Whether value is an int that is used to retrieve an instance stored in an /// `InstanceManager`. -@property(nonatomic, strong) NSNumber *isIdentifier; +@property(nonatomic, strong) NSNumber * isIdentifier; +@end + +@interface FWFAuthenticationChallengeResponse : NSObject +/// `init` unavailable to enforce nonnull fields, see the `make` class method. +- (instancetype)init NS_UNAVAILABLE; ++ (instancetype)makeWithDisposition:(FWFNSUrlSessionAuthChallengeDisposition)disposition + credentialIdentifier:(nullable NSNumber *)credentialIdentifier; +@property(nonatomic, assign) FWFNSUrlSessionAuthChallengeDisposition disposition; +@property(nonatomic, strong, nullable) NSNumber * credentialIdentifier; @end /// The codec used by FWFWKWebsiteDataStoreHostApi. @@ -403,21 +447,12 @@ NSObject *FWFWKWebsiteDataStoreHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkwebsitedatastore?language=objc. @protocol FWFWKWebsiteDataStoreHostApi -- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)createDefaultDataStoreWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeDataFromDataStoreWithIdentifier:(NSNumber *)identifier - ofTypes:(NSArray *)dataTypes - modifiedSince:(NSNumber *)modificationTimeInSecondsSinceEpoch - completion:(void (^)(NSNumber *_Nullable, - FlutterError *_Nullable))completion; -@end - -extern void FWFWKWebsiteDataStoreHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createDefaultDataStoreWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeDataFromDataStoreWithIdentifier:(NSNumber *)identifier ofTypes:(NSArray *)dataTypes modifiedSince:(NSNumber *)modificationTimeInSecondsSinceEpoch completion:(void (^)(NSNumber *_Nullable, FlutterError *_Nullable))completion; +@end + +extern void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFUIViewHostApi. NSObject *FWFUIViewHostApiGetCodec(void); @@ -426,16 +461,11 @@ NSObject *FWFUIViewHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/uikit/uiview?language=objc. @protocol FWFUIViewHostApi -- (void)setBackgroundColorForViewWithIdentifier:(NSNumber *)identifier - toValue:(nullable NSNumber *)value - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setOpaqueForViewWithIdentifier:(NSNumber *)identifier - isOpaque:(NSNumber *)opaque - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setBackgroundColorForViewWithIdentifier:(NSNumber *)identifier toValue:(nullable NSNumber *)value error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setOpaqueForViewWithIdentifier:(NSNumber *)identifier isOpaque:(NSNumber *)opaque error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFUIViewHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFUIViewHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFUIScrollViewHostApi. NSObject *FWFUIScrollViewHostApiGetCodec(void); @@ -444,25 +474,14 @@ NSObject *FWFUIScrollViewHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/uikit/uiscrollview?language=objc. @protocol FWFUIScrollViewHostApi -- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSArray *) - contentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)scrollByForScrollViewWithIdentifier:(NSNumber *)identifier - x:(NSNumber *)x - y:(NSNumber *)y - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setContentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier - toX:(NSNumber *)x - y:(NSNumber *)y - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void FWFUIScrollViewHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +- (nullable NSArray *)contentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)scrollByForScrollViewWithIdentifier:(NSNumber *)identifier x:(NSNumber *)x y:(NSNumber *)y error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setContentOffsetForScrollViewWithIdentifier:(NSNumber *)identifier toX:(NSNumber *)x y:(NSNumber *)y error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFUIScrollViewHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKWebViewConfigurationHostApi. NSObject *FWFWKWebViewConfigurationHostApiGetCodec(void); @@ -472,32 +491,13 @@ NSObject *FWFWKWebViewConfigurationHostApiGetCodec(void); /// See https://developer.apple.com/documentation/webkit/wkwebviewconfiguration?language=objc. @protocol FWFWKWebViewConfigurationHostApi - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; -- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:(NSNumber *)identifier - isAllowed:(NSNumber *)allow - error: - (FlutterError *_Nullable *_Nonnull) - error; -- (void)setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:(NSNumber *)identifier - isLimited:(NSNumber *)limit - error:(FlutterError *_Nullable - *_Nonnull)error; -- (void) - setMediaTypesRequiresUserActionForConfigurationWithIdentifier:(NSNumber *)identifier - forTypes: - (NSArray< - FWFWKAudiovisualMediaTypeEnumData - *> *)types - error: - (FlutterError *_Nullable *_Nonnull) - error; -@end - -extern void FWFWKWebViewConfigurationHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +- (void)createFromWebViewWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:(NSNumber *)identifier isAllowed:(NSNumber *)allow error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:(NSNumber *)identifier isLimited:(NSNumber *)limit error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setMediaTypesRequiresUserActionForConfigurationWithIdentifier:(NSNumber *)identifier forTypes:(NSArray *)types error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFWKWebViewConfigurationHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKWebViewConfigurationFlutterApi. NSObject *FWFWKWebViewConfigurationFlutterApiGetCodec(void); @@ -507,8 +507,7 @@ NSObject *FWFWKWebViewConfigurationFlutterApiGetCodec(void) /// See https://developer.apple.com/documentation/webkit/wkwebviewconfiguration?language=objc. @interface FWFWKWebViewConfigurationFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)createWithIdentifier:(NSNumber *)identifier - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)createWithIdentifier:(NSNumber *)identifier completion:(void (^)(FlutterError *_Nullable))completion; @end /// The codec used by FWFWKUserContentControllerHostApi. @@ -518,31 +517,15 @@ NSObject *FWFWKUserContentControllerHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkusercontentcontroller?language=objc. @protocol FWFWKUserContentControllerHostApi -- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)addScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier - handlerIdentifier:(NSNumber *)handlerIdentifier - ofName:(NSString *)name - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier - name:(NSString *)name - error:(FlutterError *_Nullable *_Nonnull) - error; -- (void)removeAllScriptMessageHandlersForControllerWithIdentifier:(NSNumber *)identifier - error: - (FlutterError *_Nullable *_Nonnull) - error; -- (void)addUserScriptForControllerWithIdentifier:(NSNumber *)identifier - userScript:(FWFWKUserScriptData *)userScript - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeAllUserScriptsForControllerWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void FWFWKUserContentControllerHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)addScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier handlerIdentifier:(NSNumber *)handlerIdentifier ofName:(NSString *)name error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeScriptMessageHandlerForControllerWithIdentifier:(NSNumber *)identifier name:(NSString *)name error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeAllScriptMessageHandlersForControllerWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)addUserScriptForControllerWithIdentifier:(NSNumber *)identifier userScript:(FWFWKUserScriptData *)userScript error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeAllUserScriptsForControllerWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFWKUserContentControllerHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKPreferencesHostApi. NSObject *FWFWKPreferencesHostApiGetCodec(void); @@ -551,16 +534,11 @@ NSObject *FWFWKPreferencesHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkpreferences?language=objc. @protocol FWFWKPreferencesHostApi -- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setJavaScriptEnabledForPreferencesWithIdentifier:(NSNumber *)identifier - isEnabled:(NSNumber *)enabled - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createFromWebViewConfigurationWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setJavaScriptEnabledForPreferencesWithIdentifier:(NSNumber *)identifier isEnabled:(NSNumber *)enabled error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKPreferencesHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKPreferencesHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKScriptMessageHandlerHostApi. NSObject *FWFWKScriptMessageHandlerHostApiGetCodec(void); @@ -572,9 +550,7 @@ NSObject *FWFWKScriptMessageHandlerHostApiGetCodec(void); - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKScriptMessageHandlerHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKScriptMessageHandlerHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKScriptMessageHandlerFlutterApi. NSObject *FWFWKScriptMessageHandlerFlutterApiGetCodec(void); @@ -584,11 +560,7 @@ NSObject *FWFWKScriptMessageHandlerFlutterApiGetCodec(void) /// See https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?language=objc. @interface FWFWKScriptMessageHandlerFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)identifier - userContentControllerIdentifier:(NSNumber *)userContentControllerIdentifier - message:(FWFWKScriptMessageData *)message - completion: - (void (^)(FlutterError *_Nullable))completion; +- (void)didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)identifier userContentControllerIdentifier:(NSNumber *)userContentControllerIdentifier message:(FWFWKScriptMessageData *)message completion:(void (^)(FlutterError *_Nullable))completion; @end /// The codec used by FWFWKNavigationDelegateHostApi. @@ -601,9 +573,7 @@ NSObject *FWFWKNavigationDelegateHostApiGetCodec(void); - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKNavigationDelegateHostApiSetup( - id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKNavigationDelegateHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKNavigationDelegateFlutterApi. NSObject *FWFWKNavigationDelegateFlutterApiGetCodec(void); @@ -613,38 +583,13 @@ NSObject *FWFWKNavigationDelegateFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc. @interface FWFWKNavigationDelegateFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - URL:(nullable NSString *)url - completion:(void (^)(FlutterError *_Nullable))completion; -- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - URL:(nullable NSString *)url - completion:(void (^)(FlutterError *_Nullable)) - completion; -- (void) - decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - navigationAction: - (FWFWKNavigationActionData *)navigationAction - completion: - (void (^)(FWFWKNavigationActionPolicyEnumData - *_Nullable, - FlutterError *_Nullable))completion; -- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FWFNSErrorData *)error - completion:(void (^)(FlutterError *_Nullable))completion; -- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - error:(FWFNSErrorData *)error - completion:(void (^)(FlutterError *_Nullable)) - completion; -- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - completion: - (void (^)(FlutterError *_Nullable)) - completion; +- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier URL:(nullable NSString *)url completion:(void (^)(FlutterError *_Nullable))completion; +- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier URL:(nullable NSString *)url completion:(void (^)(FlutterError *_Nullable))completion; +- (void)decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier navigationAction:(FWFWKNavigationActionData *)navigationAction completion:(void (^)(FWFWKNavigationActionPolicyEnumData *_Nullable, FlutterError *_Nullable))completion; +- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FWFNSErrorData *)error completion:(void (^)(FlutterError *_Nullable))completion; +- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier error:(FWFNSErrorData *)error completion:(void (^)(FlutterError *_Nullable))completion; +- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier completion:(void (^)(FlutterError *_Nullable))completion; +- (void)didReceiveAuthenticationChallengeForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier challengeIdentifier:(NSNumber *)challengeIdentifier completion:(void (^)(FWFAuthenticationChallengeResponse *_Nullable, FlutterError *_Nullable))completion; @end /// The codec used by FWFNSObjectHostApi. @@ -654,22 +599,12 @@ NSObject *FWFNSObjectHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/objectivec/nsobject. @protocol FWFNSObjectHostApi -- (void)disposeObjectWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)addObserverForObjectWithIdentifier:(NSNumber *)identifier - observerIdentifier:(NSNumber *)observerIdentifier - keyPath:(NSString *)keyPath - options: - (NSArray *)options - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)removeObserverForObjectWithIdentifier:(NSNumber *)identifier - observerIdentifier:(NSNumber *)observerIdentifier - keyPath:(NSString *)keyPath - error:(FlutterError *_Nullable *_Nonnull)error; -@end - -extern void FWFNSObjectHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +- (void)disposeObjectWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)addObserverForObjectWithIdentifier:(NSNumber *)identifier observerIdentifier:(NSNumber *)observerIdentifier keyPath:(NSString *)keyPath options:(NSArray *)options error:(FlutterError *_Nullable *_Nonnull)error; +- (void)removeObserverForObjectWithIdentifier:(NSNumber *)identifier observerIdentifier:(NSNumber *)observerIdentifier keyPath:(NSString *)keyPath error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFNSObjectHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFNSObjectFlutterApi. NSObject *FWFNSObjectFlutterApiGetCodec(void); @@ -679,14 +614,8 @@ NSObject *FWFNSObjectFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/objectivec/nsobject. @interface FWFNSObjectFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)observeValueForObjectWithIdentifier:(NSNumber *)identifier - keyPath:(NSString *)keyPath - objectIdentifier:(NSNumber *)objectIdentifier - changeKeys:(NSArray *)changeKeys - changeValues:(NSArray *)changeValues - completion:(void (^)(FlutterError *_Nullable))completion; -- (void)disposeObjectWithIdentifier:(NSNumber *)identifier - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)observeValueForObjectWithIdentifier:(NSNumber *)identifier keyPath:(NSString *)keyPath objectIdentifier:(NSNumber *)objectIdentifier changeKeys:(NSArray *)changeKeys changeValues:(NSArray *)changeValues completion:(void (^)(FlutterError *_Nullable))completion; +- (void)disposeObjectWithIdentifier:(NSNumber *)identifier completion:(void (^)(FlutterError *_Nullable))completion; @end /// The codec used by FWFWKWebViewHostApi. @@ -696,71 +625,32 @@ NSObject *FWFWKWebViewHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkwebview?language=objc. @protocol FWFWKWebViewHostApi -- (void)createWithIdentifier:(NSNumber *)identifier - configurationIdentifier:(NSNumber *)configurationIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setUIDelegateForWebViewWithIdentifier:(NSNumber *)identifier - delegateIdentifier:(nullable NSNumber *)uiDelegateIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setNavigationDelegateForWebViewWithIdentifier:(NSNumber *)identifier - delegateIdentifier: - (nullable NSNumber *)navigationDelegateIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable NSString *)URLForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; +- (void)createWithIdentifier:(NSNumber *)identifier configurationIdentifier:(NSNumber *)configurationIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setUIDelegateForWebViewWithIdentifier:(NSNumber *)identifier delegateIdentifier:(nullable NSNumber *)uiDelegateIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setNavigationDelegateForWebViewWithIdentifier:(NSNumber *)identifier delegateIdentifier:(nullable NSNumber *)navigationDelegateIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)URLForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSNumber *)estimatedProgressForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull) - error; -- (void)loadRequestForWebViewWithIdentifier:(NSNumber *)identifier - request:(FWFNSUrlRequestData *)request - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)loadHTMLForWebViewWithIdentifier:(NSNumber *)identifier - HTMLString:(NSString *)string - baseURL:(nullable NSString *)baseUrl - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)loadFileForWebViewWithIdentifier:(NSNumber *)identifier - fileURL:(NSString *)url - readAccessURL:(NSString *)readAccessUrl - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)loadAssetForWebViewWithIdentifier:(NSNumber *)identifier - assetKey:(NSString *)key - error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSNumber *)estimatedProgressForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadRequestForWebViewWithIdentifier:(NSNumber *)identifier request:(FWFNSUrlRequestData *)request error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadHTMLForWebViewWithIdentifier:(NSNumber *)identifier HTMLString:(NSString *)string baseURL:(nullable NSString *)baseUrl error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadFileForWebViewWithIdentifier:(NSNumber *)identifier fileURL:(NSString *)url readAccessURL:(NSString *)readAccessUrl error:(FlutterError *_Nullable *_Nonnull)error; +- (void)loadAssetForWebViewWithIdentifier:(NSNumber *)identifier assetKey:(NSString *)key error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSNumber *)canGoBackForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSNumber *)canGoBackForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; /// @return `nil` only when `error != nil`. -- (nullable NSNumber *)canGoForwardForWebViewWithIdentifier:(NSNumber *)identifier - error: - (FlutterError *_Nullable *_Nonnull)error; -- (void)goBackForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)goForwardForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)reloadWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable NSString *)titleForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setAllowsBackForwardForWebViewWithIdentifier:(NSNumber *)identifier - isAllowed:(NSNumber *)allow - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setCustomUserAgentForWebViewWithIdentifier:(NSNumber *)identifier - userAgent:(nullable NSString *)userAgent - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)evaluateJavaScriptForWebViewWithIdentifier:(NSNumber *)identifier - javaScriptString:(NSString *)javaScriptString - completion:(void (^)(id _Nullable, - FlutterError *_Nullable))completion; -- (void)setInspectableForWebViewWithIdentifier:(NSNumber *)identifier - inspectable:(NSNumber *)inspectable - error:(FlutterError *_Nullable *_Nonnull)error; -- (nullable NSString *)customUserAgentForWebViewWithIdentifier:(NSNumber *)identifier - error:(FlutterError *_Nullable *_Nonnull) - error; -@end - -extern void FWFWKWebViewHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +- (nullable NSNumber *)canGoForwardForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)goBackForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)goForwardForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)reloadWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)titleForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setAllowsBackForwardForWebViewWithIdentifier:(NSNumber *)identifier isAllowed:(NSNumber *)allow error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setCustomUserAgentForWebViewWithIdentifier:(NSNumber *)identifier userAgent:(nullable NSString *)userAgent error:(FlutterError *_Nullable *_Nonnull)error; +- (void)evaluateJavaScriptForWebViewWithIdentifier:(NSNumber *)identifier javaScriptString:(NSString *)javaScriptString completion:(void (^)(id _Nullable, FlutterError *_Nullable))completion; +- (void)setInspectableForWebViewWithIdentifier:(NSNumber *)identifier inspectable:(NSNumber *)inspectable error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)customUserAgentForWebViewWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFWKWebViewHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKUIDelegateHostApi. NSObject *FWFWKUIDelegateHostApiGetCodec(void); @@ -772,8 +662,7 @@ NSObject *FWFWKUIDelegateHostApiGetCodec(void); - (void)createWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFWKUIDelegateHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKUIDelegateHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFWKUIDelegateFlutterApi. NSObject *FWFWKUIDelegateFlutterApiGetCodec(void); @@ -783,21 +672,9 @@ NSObject *FWFWKUIDelegateFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/webkit/wkuidelegate?language=objc. @interface FWFWKUIDelegateFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - configurationIdentifier:(NSNumber *)configurationIdentifier - navigationAction:(FWFWKNavigationActionData *)navigationAction - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier configurationIdentifier:(NSNumber *)configurationIdentifier navigationAction:(FWFWKNavigationActionData *)navigationAction completion:(void (^)(FlutterError *_Nullable))completion; /// Callback to Dart function `WKUIDelegate.requestMediaCapturePermission`. -- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)identifier - webViewIdentifier:(NSNumber *)webViewIdentifier - origin:(FWFWKSecurityOriginData *)origin - frame:(FWFWKFrameInfoData *)frame - type:(FWFWKMediaCaptureTypeData *)type - completion: - (void (^)( - FWFWKPermissionDecisionData *_Nullable, - FlutterError *_Nullable))completion; +- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)identifier webViewIdentifier:(NSNumber *)webViewIdentifier origin:(FWFWKSecurityOriginData *)origin frame:(FWFWKFrameInfoData *)frame type:(FWFWKMediaCaptureTypeData *)type completion:(void (^)(FWFWKPermissionDecisionData *_Nullable, FlutterError *_Nullable))completion; @end /// The codec used by FWFWKHttpCookieStoreHostApi. @@ -807,16 +684,11 @@ NSObject *FWFWKHttpCookieStoreHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/webkit/wkhttpcookiestore?language=objc. @protocol FWFWKHttpCookieStoreHostApi -- (void)createFromWebsiteDataStoreWithIdentifier:(NSNumber *)identifier - dataStoreIdentifier:(NSNumber *)websiteDataStoreIdentifier - error:(FlutterError *_Nullable *_Nonnull)error; -- (void)setCookieForStoreWithIdentifier:(NSNumber *)identifier - cookie:(FWFNSHttpCookieData *)cookie - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)createFromWebsiteDataStoreWithIdentifier:(NSNumber *)identifier dataStoreIdentifier:(NSNumber *)websiteDataStoreIdentifier error:(FlutterError *_Nullable *_Nonnull)error; +- (void)setCookieForStoreWithIdentifier:(NSNumber *)identifier cookie:(FWFNSHttpCookieData *)cookie completion:(void (^)(FlutterError *_Nullable))completion; @end -extern void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFNSUrlHostApi. NSObject *FWFNSUrlHostApiGetCodec(void); @@ -829,13 +701,10 @@ NSObject *FWFNSUrlHostApiGetCodec(void); /// /// See https://developer.apple.com/documentation/foundation/nsurl?language=objc. @protocol FWFNSUrlHostApi -- (nullable NSString *)absoluteStringForNSURLWithIdentifier:(NSNumber *)identifier - error: - (FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)absoluteStringForNSURLWithIdentifier:(NSNumber *)identifier error:(FlutterError *_Nullable *_Nonnull)error; @end -extern void FWFNSUrlHostApiSetup(id binaryMessenger, - NSObject *_Nullable api); +extern void FWFNSUrlHostApiSetup(id binaryMessenger, NSObject *_Nullable api); /// The codec used by FWFNSUrlFlutterApi. NSObject *FWFNSUrlFlutterApiGetCodec(void); @@ -849,8 +718,56 @@ NSObject *FWFNSUrlFlutterApiGetCodec(void); /// See https://developer.apple.com/documentation/foundation/nsurl?language=objc. @interface FWFNSUrlFlutterApi : NSObject - (instancetype)initWithBinaryMessenger:(id)binaryMessenger; -- (void)createWithIdentifier:(NSNumber *)identifier - completion:(void (^)(FlutterError *_Nullable))completion; +- (void)createWithIdentifier:(NSNumber *)identifier completion:(void (^)(FlutterError *_Nullable))completion; +@end + +/// The codec used by FWFNSUrlCredentialHostApi. +NSObject *FWFNSUrlCredentialHostApiGetCodec(void); + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +@protocol FWFNSUrlCredentialHostApi +/// Create a new native instance and add it to the `InstanceManager`. +- (void)createWithUserWithIdentifier:(NSNumber *)identifier user:(NSString *)user password:(NSString *)password persistence:(FWFNSUrlCredentialPersistence)persistence error:(FlutterError *_Nullable *_Nonnull)error; +@end + +extern void FWFNSUrlCredentialHostApiSetup(id binaryMessenger, NSObject *_Nullable api); + +/// The codec used by FWFNSUrlProtectionSpaceFlutterApi. +NSObject *FWFNSUrlProtectionSpaceFlutterApiGetCodec(void); + +/// Flutter API for `NSUrlProtectionSpace`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +@interface FWFNSUrlProtectionSpaceFlutterApi : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger; +/// Create a new Dart instance and add it to the `InstanceManager`. +- (void)createWithIdentifier:(NSNumber *)identifier host:(nullable NSString *)host realm:(nullable NSString *)realm authenticationMethod:(nullable NSString *)authenticationMethod completion:(void (^)(FlutterError *_Nullable))completion; +@end + +/// The codec used by FWFNSUrlAuthenticationChallengeFlutterApi. +NSObject *FWFNSUrlAuthenticationChallengeFlutterApiGetCodec(void); + +/// Flutter API for `NSUrlAuthenticationChallenge`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +@interface FWFNSUrlAuthenticationChallengeFlutterApi : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger; +/// Create a new Dart instance and add it to the `InstanceManager`. +- (void)createWithIdentifier:(NSNumber *)identifier protectionSpaceIdentifier:(NSNumber *)protectionSpaceIdentifier completion:(void (^)(FlutterError *_Nullable))completion; @end NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m index cc58067418e..a3e443fb41e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFGeneratedWebKitApis.m @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), do not edit directly. // See also: https://pub.dev/packages/pigeon #import "FWFGeneratedWebKitApis.h" @@ -137,16 +137,20 @@ + (nullable FWFObjectOrIdentifier *)nullableFromList:(NSArray *)list; - (NSArray *)toList; @end +@interface FWFAuthenticationChallengeResponse () ++ (FWFAuthenticationChallengeResponse *)fromList:(NSArray *)list; ++ (nullable FWFAuthenticationChallengeResponse *)nullableFromList:(NSArray *)list; +- (NSArray *)toList; +@end + @implementation FWFNSKeyValueObservingOptionsEnumData + (instancetype)makeWithValue:(FWFNSKeyValueObservingOptionsEnum)value { - FWFNSKeyValueObservingOptionsEnumData *pigeonResult = - [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; + FWFNSKeyValueObservingOptionsEnumData* pigeonResult = [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFNSKeyValueObservingOptionsEnumData *)fromList:(NSArray *)list { - FWFNSKeyValueObservingOptionsEnumData *pigeonResult = - [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; + FWFNSKeyValueObservingOptionsEnumData *pigeonResult = [[FWFNSKeyValueObservingOptionsEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -162,7 +166,7 @@ - (NSArray *)toList { @implementation FWFNSKeyValueChangeKeyEnumData + (instancetype)makeWithValue:(FWFNSKeyValueChangeKeyEnum)value { - FWFNSKeyValueChangeKeyEnumData *pigeonResult = [[FWFNSKeyValueChangeKeyEnumData alloc] init]; + FWFNSKeyValueChangeKeyEnumData* pigeonResult = [[FWFNSKeyValueChangeKeyEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -183,14 +187,12 @@ - (NSArray *)toList { @implementation FWFWKUserScriptInjectionTimeEnumData + (instancetype)makeWithValue:(FWFWKUserScriptInjectionTimeEnum)value { - FWFWKUserScriptInjectionTimeEnumData *pigeonResult = - [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; + FWFWKUserScriptInjectionTimeEnumData* pigeonResult = [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFWKUserScriptInjectionTimeEnumData *)fromList:(NSArray *)list { - FWFWKUserScriptInjectionTimeEnumData *pigeonResult = - [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; + FWFWKUserScriptInjectionTimeEnumData *pigeonResult = [[FWFWKUserScriptInjectionTimeEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -206,14 +208,12 @@ - (NSArray *)toList { @implementation FWFWKAudiovisualMediaTypeEnumData + (instancetype)makeWithValue:(FWFWKAudiovisualMediaTypeEnum)value { - FWFWKAudiovisualMediaTypeEnumData *pigeonResult = - [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; + FWFWKAudiovisualMediaTypeEnumData* pigeonResult = [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFWKAudiovisualMediaTypeEnumData *)fromList:(NSArray *)list { - FWFWKAudiovisualMediaTypeEnumData *pigeonResult = - [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; + FWFWKAudiovisualMediaTypeEnumData *pigeonResult = [[FWFWKAudiovisualMediaTypeEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -229,7 +229,7 @@ - (NSArray *)toList { @implementation FWFWKWebsiteDataTypeEnumData + (instancetype)makeWithValue:(FWFWKWebsiteDataTypeEnum)value { - FWFWKWebsiteDataTypeEnumData *pigeonResult = [[FWFWKWebsiteDataTypeEnumData alloc] init]; + FWFWKWebsiteDataTypeEnumData* pigeonResult = [[FWFWKWebsiteDataTypeEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -250,14 +250,12 @@ - (NSArray *)toList { @implementation FWFWKNavigationActionPolicyEnumData + (instancetype)makeWithValue:(FWFWKNavigationActionPolicyEnum)value { - FWFWKNavigationActionPolicyEnumData *pigeonResult = - [[FWFWKNavigationActionPolicyEnumData alloc] init]; + FWFWKNavigationActionPolicyEnumData* pigeonResult = [[FWFWKNavigationActionPolicyEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFWKNavigationActionPolicyEnumData *)fromList:(NSArray *)list { - FWFWKNavigationActionPolicyEnumData *pigeonResult = - [[FWFWKNavigationActionPolicyEnumData alloc] init]; + FWFWKNavigationActionPolicyEnumData *pigeonResult = [[FWFWKNavigationActionPolicyEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -273,14 +271,12 @@ - (NSArray *)toList { @implementation FWFNSHttpCookiePropertyKeyEnumData + (instancetype)makeWithValue:(FWFNSHttpCookiePropertyKeyEnum)value { - FWFNSHttpCookiePropertyKeyEnumData *pigeonResult = - [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; + FWFNSHttpCookiePropertyKeyEnumData* pigeonResult = [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; pigeonResult.value = value; return pigeonResult; } + (FWFNSHttpCookiePropertyKeyEnumData *)fromList:(NSArray *)list { - FWFNSHttpCookiePropertyKeyEnumData *pigeonResult = - [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; + FWFNSHttpCookiePropertyKeyEnumData *pigeonResult = [[FWFNSHttpCookiePropertyKeyEnumData alloc] init]; pigeonResult.value = [GetNullableObjectAtIndex(list, 0) integerValue]; return pigeonResult; } @@ -296,7 +292,7 @@ - (NSArray *)toList { @implementation FWFWKPermissionDecisionData + (instancetype)makeWithValue:(FWFWKPermissionDecision)value { - FWFWKPermissionDecisionData *pigeonResult = [[FWFWKPermissionDecisionData alloc] init]; + FWFWKPermissionDecisionData* pigeonResult = [[FWFWKPermissionDecisionData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -317,7 +313,7 @@ - (NSArray *)toList { @implementation FWFWKMediaCaptureTypeData + (instancetype)makeWithValue:(FWFWKMediaCaptureType)value { - FWFWKMediaCaptureTypeData *pigeonResult = [[FWFWKMediaCaptureTypeData alloc] init]; + FWFWKMediaCaptureTypeData* pigeonResult = [[FWFWKMediaCaptureTypeData alloc] init]; pigeonResult.value = value; return pigeonResult; } @@ -338,10 +334,10 @@ - (NSArray *)toList { @implementation FWFNSUrlRequestData + (instancetype)makeWithUrl:(NSString *)url - httpMethod:(nullable NSString *)httpMethod - httpBody:(nullable FlutterStandardTypedData *)httpBody - allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields { - FWFNSUrlRequestData *pigeonResult = [[FWFNSUrlRequestData alloc] init]; + httpMethod:(nullable NSString *)httpMethod + httpBody:(nullable FlutterStandardTypedData *)httpBody + allHttpHeaderFields:(NSDictionary *)allHttpHeaderFields { + FWFNSUrlRequestData* pigeonResult = [[FWFNSUrlRequestData alloc] init]; pigeonResult.url = url; pigeonResult.httpMethod = httpMethod; pigeonResult.httpBody = httpBody; @@ -373,9 +369,9 @@ - (NSArray *)toList { @implementation FWFWKUserScriptData + (instancetype)makeWithSource:(NSString *)source - injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime - isMainFrameOnly:(NSNumber *)isMainFrameOnly { - FWFWKUserScriptData *pigeonResult = [[FWFWKUserScriptData alloc] init]; + injectionTime:(nullable FWFWKUserScriptInjectionTimeEnumData *)injectionTime + isMainFrameOnly:(NSNumber *)isMainFrameOnly { + FWFWKUserScriptData* pigeonResult = [[FWFWKUserScriptData alloc] init]; pigeonResult.source = source; pigeonResult.injectionTime = injectionTime; pigeonResult.isMainFrameOnly = isMainFrameOnly; @@ -385,8 +381,7 @@ + (FWFWKUserScriptData *)fromList:(NSArray *)list { FWFWKUserScriptData *pigeonResult = [[FWFWKUserScriptData alloc] init]; pigeonResult.source = GetNullableObjectAtIndex(list, 0); NSAssert(pigeonResult.source != nil, @""); - pigeonResult.injectionTime = - [FWFWKUserScriptInjectionTimeEnumData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; + pigeonResult.injectionTime = [FWFWKUserScriptInjectionTimeEnumData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; pigeonResult.isMainFrameOnly = GetNullableObjectAtIndex(list, 2); NSAssert(pigeonResult.isMainFrameOnly != nil, @""); return pigeonResult; @@ -405,9 +400,9 @@ - (NSArray *)toList { @implementation FWFWKNavigationActionData + (instancetype)makeWithRequest:(FWFNSUrlRequestData *)request - targetFrame:(FWFWKFrameInfoData *)targetFrame - navigationType:(FWFWKNavigationType)navigationType { - FWFWKNavigationActionData *pigeonResult = [[FWFWKNavigationActionData alloc] init]; + targetFrame:(FWFWKFrameInfoData *)targetFrame + navigationType:(FWFWKNavigationType)navigationType { + FWFWKNavigationActionData* pigeonResult = [[FWFWKNavigationActionData alloc] init]; pigeonResult.request = request; pigeonResult.targetFrame = targetFrame; pigeonResult.navigationType = navigationType; @@ -417,8 +412,7 @@ + (FWFWKNavigationActionData *)fromList:(NSArray *)list { FWFWKNavigationActionData *pigeonResult = [[FWFWKNavigationActionData alloc] init]; pigeonResult.request = [FWFNSUrlRequestData nullableFromList:(GetNullableObjectAtIndex(list, 0))]; NSAssert(pigeonResult.request != nil, @""); - pigeonResult.targetFrame = - [FWFWKFrameInfoData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; + pigeonResult.targetFrame = [FWFWKFrameInfoData nullableFromList:(GetNullableObjectAtIndex(list, 1))]; NSAssert(pigeonResult.targetFrame != nil, @""); pigeonResult.navigationType = [GetNullableObjectAtIndex(list, 2) integerValue]; return pigeonResult; @@ -437,7 +431,7 @@ - (NSArray *)toList { @implementation FWFWKFrameInfoData + (instancetype)makeWithIsMainFrame:(NSNumber *)isMainFrame { - FWFWKFrameInfoData *pigeonResult = [[FWFWKFrameInfoData alloc] init]; + FWFWKFrameInfoData* pigeonResult = [[FWFWKFrameInfoData alloc] init]; pigeonResult.isMainFrame = isMainFrame; return pigeonResult; } @@ -459,9 +453,9 @@ - (NSArray *)toList { @implementation FWFNSErrorData + (instancetype)makeWithCode:(NSNumber *)code - domain:(NSString *)domain - userInfo:(nullable NSDictionary *)userInfo { - FWFNSErrorData *pigeonResult = [[FWFNSErrorData alloc] init]; + domain:(NSString *)domain + userInfo:(nullable NSDictionary *)userInfo { + FWFNSErrorData* pigeonResult = [[FWFNSErrorData alloc] init]; pigeonResult.code = code; pigeonResult.domain = domain; pigeonResult.userInfo = userInfo; @@ -489,8 +483,9 @@ - (NSArray *)toList { @end @implementation FWFWKScriptMessageData -+ (instancetype)makeWithName:(NSString *)name body:(id)body { - FWFWKScriptMessageData *pigeonResult = [[FWFWKScriptMessageData alloc] init]; ++ (instancetype)makeWithName:(NSString *)name + body:(id )body { + FWFWKScriptMessageData* pigeonResult = [[FWFWKScriptMessageData alloc] init]; pigeonResult.name = name; pigeonResult.body = body; return pigeonResult; @@ -514,8 +509,10 @@ - (NSArray *)toList { @end @implementation FWFWKSecurityOriginData -+ (instancetype)makeWithHost:(NSString *)host port:(NSNumber *)port protocol:(NSString *)protocol { - FWFWKSecurityOriginData *pigeonResult = [[FWFWKSecurityOriginData alloc] init]; ++ (instancetype)makeWithHost:(NSString *)host + port:(NSNumber *)port + protocol:(NSString *)protocol { + FWFWKSecurityOriginData* pigeonResult = [[FWFWKSecurityOriginData alloc] init]; pigeonResult.host = host; pigeonResult.port = port; pigeonResult.protocol = protocol; @@ -545,8 +542,8 @@ - (NSArray *)toList { @implementation FWFNSHttpCookieData + (instancetype)makeWithPropertyKeys:(NSArray *)propertyKeys - propertyValues:(NSArray *)propertyValues { - FWFNSHttpCookieData *pigeonResult = [[FWFNSHttpCookieData alloc] init]; + propertyValues:(NSArray *)propertyValues { + FWFNSHttpCookieData* pigeonResult = [[FWFNSHttpCookieData alloc] init]; pigeonResult.propertyKeys = propertyKeys; pigeonResult.propertyValues = propertyValues; return pigeonResult; @@ -571,8 +568,9 @@ - (NSArray *)toList { @end @implementation FWFObjectOrIdentifier -+ (instancetype)makeWithValue:(id)value isIdentifier:(NSNumber *)isIdentifier { - FWFObjectOrIdentifier *pigeonResult = [[FWFObjectOrIdentifier alloc] init]; ++ (instancetype)makeWithValue:(id )value + isIdentifier:(NSNumber *)isIdentifier { + FWFObjectOrIdentifier* pigeonResult = [[FWFObjectOrIdentifier alloc] init]; pigeonResult.value = value; pigeonResult.isIdentifier = isIdentifier; return pigeonResult; @@ -595,12 +593,37 @@ - (NSArray *)toList { } @end +@implementation FWFAuthenticationChallengeResponse ++ (instancetype)makeWithDisposition:(FWFNSUrlSessionAuthChallengeDisposition)disposition + credentialIdentifier:(nullable NSNumber *)credentialIdentifier { + FWFAuthenticationChallengeResponse* pigeonResult = [[FWFAuthenticationChallengeResponse alloc] init]; + pigeonResult.disposition = disposition; + pigeonResult.credentialIdentifier = credentialIdentifier; + return pigeonResult; +} ++ (FWFAuthenticationChallengeResponse *)fromList:(NSArray *)list { + FWFAuthenticationChallengeResponse *pigeonResult = [[FWFAuthenticationChallengeResponse alloc] init]; + pigeonResult.disposition = [GetNullableObjectAtIndex(list, 0) integerValue]; + pigeonResult.credentialIdentifier = GetNullableObjectAtIndex(list, 1); + return pigeonResult; +} ++ (nullable FWFAuthenticationChallengeResponse *)nullableFromList:(NSArray *)list { + return (list) ? [FWFAuthenticationChallengeResponse fromList:list] : nil; +} +- (NSArray *)toList { + return @[ + @(self.disposition), + (self.credentialIdentifier ?: [NSNull null]), + ]; +} +@end + @interface FWFWKWebsiteDataStoreHostApiCodecReader : FlutterStandardReader @end @implementation FWFWKWebsiteDataStoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKWebsiteDataTypeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -636,36 +659,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKWebsiteDataStoreHostApiCodecReaderWriter *readerWriter = - [[FWFWKWebsiteDataStoreHostApiCodecReaderWriter alloc] init]; + FWFWKWebsiteDataStoreHostApiCodecReaderWriter *readerWriter = [[FWFWKWebsiteDataStoreHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi." - @"createFromWebViewConfiguration" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration" binaryMessenger:binaryMessenger - codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; + codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)], @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to @selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewConfigurationWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createFromWebViewConfigurationWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -673,16 +687,13 @@ void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenge } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi." - @"createDefaultDataStore" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore" binaryMessenger:binaryMessenger - codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; + codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createDefaultDataStoreWithIdentifier:error:)], - @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to " - @"@selector(createDefaultDataStoreWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createDefaultDataStoreWithIdentifier:error:)], @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to @selector(createDefaultDataStoreWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -695,30 +706,21 @@ void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenge } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi." - @"removeDataOfTypes" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes" binaryMessenger:binaryMessenger - codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; + codec:FWFWKWebsiteDataStoreHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector - (removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)], - @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to " - @"@selector(removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)", - api); + NSCAssert([api respondsToSelector:@selector(removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)], @"FWFWKWebsiteDataStoreHostApi api (%@) doesn't respond to @selector(removeDataFromDataStoreWithIdentifier:ofTypes:modifiedSince:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSArray *arg_dataTypes = GetNullableObjectAtIndex(args, 1); NSNumber *arg_modificationTimeInSecondsSinceEpoch = GetNullableObjectAtIndex(args, 2); - [api removeDataFromDataStoreWithIdentifier:arg_identifier - ofTypes:arg_dataTypes - modifiedSince:arg_modificationTimeInSecondsSinceEpoch - completion:^(NSNumber *_Nullable output, - FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api removeDataFromDataStoreWithIdentifier:arg_identifier ofTypes:arg_dataTypes modifiedSince:arg_modificationTimeInSecondsSinceEpoch completion:^(NSNumber *_Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; @@ -731,20 +733,15 @@ void FWFWKWebsiteDataStoreHostApiSetup(id binaryMessenge return sSharedObject; } -void FWFUIViewHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFUIViewHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor" binaryMessenger:binaryMessenger - codec:FWFUIViewHostApiGetCodec()]; + codec:FWFUIViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setBackgroundColorForViewWithIdentifier: - toValue:error:)], - @"FWFUIViewHostApi api (%@) doesn't respond to " - @"@selector(setBackgroundColorForViewWithIdentifier:toValue:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setBackgroundColorForViewWithIdentifier:toValue:error:)], @"FWFUIViewHostApi api (%@) doesn't respond to @selector(setBackgroundColorForViewWithIdentifier:toValue:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -758,15 +755,13 @@ void FWFUIViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque" binaryMessenger:binaryMessenger - codec:FWFUIViewHostApiGetCodec()]; + codec:FWFUIViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setOpaqueForViewWithIdentifier:isOpaque:error:)], - @"FWFUIViewHostApi api (%@) doesn't respond to " - @"@selector(setOpaqueForViewWithIdentifier:isOpaque:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setOpaqueForViewWithIdentifier:isOpaque:error:)], @"FWFUIViewHostApi api (%@) doesn't respond to @selector(setOpaqueForViewWithIdentifier:isOpaque:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -786,28 +781,21 @@ void FWFUIViewHostApiSetup(id binaryMessenger, return sSharedObject; } -void FWFUIScrollViewHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFUIScrollViewHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier: - webViewIdentifier:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_webViewIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewWithIdentifier:arg_identifier - webViewIdentifier:arg_webViewIdentifier - error:&error]; + [api createFromWebViewWithIdentifier:arg_identifier webViewIdentifier:arg_webViewIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -815,22 +803,18 @@ void FWFUIScrollViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(contentOffsetForScrollViewWithIdentifier:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(contentOffsetForScrollViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(contentOffsetForScrollViewWithIdentifier:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(contentOffsetForScrollViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FlutterError *error; - NSArray *output = [api contentOffsetForScrollViewWithIdentifier:arg_identifier - error:&error]; + NSArray *output = [api contentOffsetForScrollViewWithIdentifier:arg_identifier error:&error]; callback(wrapResult(output, error)); }]; } else { @@ -838,15 +822,13 @@ void FWFUIScrollViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(scrollByForScrollViewWithIdentifier:x:y:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(scrollByForScrollViewWithIdentifier:x:y:error:)", - api); + NSCAssert([api respondsToSelector:@selector(scrollByForScrollViewWithIdentifier:x:y:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(scrollByForScrollViewWithIdentifier:x:y:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -861,27 +843,20 @@ void FWFUIScrollViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset" binaryMessenger:binaryMessenger - codec:FWFUIScrollViewHostApiGetCodec()]; + codec:FWFUIScrollViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setContentOffsetForScrollViewWithIdentifier:toX:y:error:)], - @"FWFUIScrollViewHostApi api (%@) doesn't respond to " - @"@selector(setContentOffsetForScrollViewWithIdentifier:toX:y:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setContentOffsetForScrollViewWithIdentifier:toX:y:error:)], @"FWFUIScrollViewHostApi api (%@) doesn't respond to @selector(setContentOffsetForScrollViewWithIdentifier:toX:y:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_x = GetNullableObjectAtIndex(args, 1); NSNumber *arg_y = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api setContentOffsetForScrollViewWithIdentifier:arg_identifier - toX:arg_x - y:arg_y - error:&error]; + [api setContentOffsetForScrollViewWithIdentifier:arg_identifier toX:arg_x y:arg_y error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -894,7 +869,7 @@ @interface FWFWKWebViewConfigurationHostApiCodecReader : FlutterStandardReader @implementation FWFWKWebViewConfigurationHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKAudiovisualMediaTypeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -930,26 +905,21 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKWebViewConfigurationHostApiCodecReaderWriter *readerWriter = - [[FWFWKWebViewConfigurationHostApiCodecReaderWriter alloc] init]; + FWFWKWebViewConfigurationHostApiCodecReaderWriter *readerWriter = [[FWFWKWebViewConfigurationHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKWebViewConfigurationHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKWebViewConfigurationHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -962,25 +932,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.createFromWebView" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier: - webViewIdentifier:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(createFromWebViewWithIdentifier:webViewIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_webViewIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewWithIdentifier:arg_identifier - webViewIdentifier:arg_webViewIdentifier - error:&error]; + [api createFromWebViewWithIdentifier:arg_identifier webViewIdentifier:arg_webViewIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -988,26 +952,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector - (setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:isAllowed:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_allow = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:arg_identifier - isAllowed:arg_allow - error:&error]; + [api setAllowsInlineMediaPlaybackForConfigurationWithIdentifier:arg_identifier isAllowed:arg_allow error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1015,27 +972,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier: - isLimited:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:" - @"isLimited:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:isLimited:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:isLimited:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_limit = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:arg_identifier - isLimited:arg_limit - error:&error]; + [api setLimitsNavigationsToAppBoundDomainsForConfigurationWithIdentifier:arg_identifier isLimited:arg_limit error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1043,27 +992,19 @@ void FWFWKWebViewConfigurationHostApiSetup(id binaryMess } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback" binaryMessenger:binaryMessenger - codec:FWFWKWebViewConfigurationHostApiGetCodec()]; + codec:FWFWKWebViewConfigurationHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setMediaTypesRequiresUserActionForConfigurationWithIdentifier: - forTypes:error:)], - @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to " - @"@selector(setMediaTypesRequiresUserActionForConfigurationWithIdentifier:forTypes:" - @"error:)", - api); + NSCAssert([api respondsToSelector:@selector(setMediaTypesRequiresUserActionForConfigurationWithIdentifier:forTypes:error:)], @"FWFWKWebViewConfigurationHostApi api (%@) doesn't respond to @selector(setMediaTypesRequiresUserActionForConfigurationWithIdentifier:forTypes:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSArray *arg_types = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setMediaTypesRequiresUserActionForConfigurationWithIdentifier:arg_identifier - forTypes:arg_types - error:&error]; + [api setMediaTypesRequiresUserActionForConfigurationWithIdentifier:arg_identifier forTypes:arg_types error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1090,17 +1031,15 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)createWithIdentifier:(NSNumber *)arg_identifier - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create" - binaryMessenger:self.binaryMessenger - codec:FWFWKWebViewConfigurationFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; +- (void)createWithIdentifier:(NSNumber *)arg_identifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create" + binaryMessenger:self.binaryMessenger + codec:FWFWKWebViewConfigurationFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end @@ -1109,9 +1048,9 @@ @interface FWFWKUserContentControllerHostApiCodecReader : FlutterStandardReader @implementation FWFWKUserContentControllerHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKUserScriptData fromList:[self readValue]]; - case 129: + case 129: return [FWFWKUserScriptInjectionTimeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1150,36 +1089,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKUserContentControllerHostApiCodecReaderWriter *readerWriter = - [[FWFWKUserContentControllerHostApiCodecReaderWriter alloc] init]; + FWFWKUserContentControllerHostApiCodecReaderWriter *readerWriter = [[FWFWKUserContentControllerHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKUserContentControllerHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKUserContentControllerHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.createFromWebViewConfiguration" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewConfigurationWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createFromWebViewConfigurationWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1187,29 +1117,20 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.addScriptMessageHandler" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (addScriptMessageHandlerForControllerWithIdentifier: - handlerIdentifier:ofName:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(addScriptMessageHandlerForControllerWithIdentifier:handlerIdentifier:" - @"ofName:error:)", - api); + NSCAssert([api respondsToSelector:@selector(addScriptMessageHandlerForControllerWithIdentifier:handlerIdentifier:ofName:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(addScriptMessageHandlerForControllerWithIdentifier:handlerIdentifier:ofName:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_handlerIdentifier = GetNullableObjectAtIndex(args, 1); NSString *arg_name = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api addScriptMessageHandlerForControllerWithIdentifier:arg_identifier - handlerIdentifier:arg_handlerIdentifier - ofName:arg_name - error:&error]; + [api addScriptMessageHandlerForControllerWithIdentifier:arg_identifier handlerIdentifier:arg_handlerIdentifier ofName:arg_name error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1217,25 +1138,19 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.removeScriptMessageHandler" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (removeScriptMessageHandlerForControllerWithIdentifier:name:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(removeScriptMessageHandlerForControllerWithIdentifier:name:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeScriptMessageHandlerForControllerWithIdentifier:name:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(removeScriptMessageHandlerForControllerWithIdentifier:name:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_name = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api removeScriptMessageHandlerForControllerWithIdentifier:arg_identifier - name:arg_name - error:&error]; + [api removeScriptMessageHandlerForControllerWithIdentifier:arg_identifier name:arg_name error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1243,17 +1158,13 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.removeAllScriptMessageHandlers" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (removeAllScriptMessageHandlersForControllerWithIdentifier:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(removeAllScriptMessageHandlersForControllerWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeAllScriptMessageHandlersForControllerWithIdentifier:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(removeAllScriptMessageHandlersForControllerWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1266,25 +1177,19 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.addUserScript" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(addUserScriptForControllerWithIdentifier: - userScript:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(addUserScriptForControllerWithIdentifier:userScript:error:)", - api); + NSCAssert([api respondsToSelector:@selector(addUserScriptForControllerWithIdentifier:userScript:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(addUserScriptForControllerWithIdentifier:userScript:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FWFWKUserScriptData *arg_userScript = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api addUserScriptForControllerWithIdentifier:arg_identifier - userScript:arg_userScript - error:&error]; + [api addUserScriptForControllerWithIdentifier:arg_identifier userScript:arg_userScript error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1292,17 +1197,13 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKUserContentControllerHostApi.removeAllUserScripts" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts" binaryMessenger:binaryMessenger - codec:FWFWKUserContentControllerHostApiGetCodec()]; + codec:FWFWKUserContentControllerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (removeAllUserScriptsForControllerWithIdentifier:error:)], - @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to " - @"@selector(removeAllUserScriptsForControllerWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeAllUserScriptsForControllerWithIdentifier:error:)], @"FWFWKUserContentControllerHostApi api (%@) doesn't respond to @selector(removeAllUserScriptsForControllerWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1321,29 +1222,21 @@ void FWFWKUserContentControllerHostApiSetup(id binaryMes return sSharedObject; } -void FWFWKPreferencesHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKPreferencesHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi." - @"createFromWebViewConfiguration" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration" binaryMessenger:binaryMessenger - codec:FWFWKPreferencesHostApiGetCodec()]; + codec:FWFWKPreferencesHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKPreferencesHostApi api (%@) doesn't respond to " - @"@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)], @"FWFWKPreferencesHostApi api (%@) doesn't respond to @selector(createFromWebViewConfigurationWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebViewConfigurationWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createFromWebViewConfigurationWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1351,25 +1244,19 @@ void FWFWKPreferencesHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi." - @"setJavaScriptEnabled" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled" binaryMessenger:binaryMessenger - codec:FWFWKPreferencesHostApiGetCodec()]; + codec:FWFWKPreferencesHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)], - @"FWFWKPreferencesHostApi api (%@) doesn't respond to " - @"@selector(setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)], @"FWFWKPreferencesHostApi api (%@) doesn't respond to @selector(setJavaScriptEnabledForPreferencesWithIdentifier:isEnabled:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_enabled = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setJavaScriptEnabledForPreferencesWithIdentifier:arg_identifier - isEnabled:arg_enabled - error:&error]; + [api setJavaScriptEnabledForPreferencesWithIdentifier:arg_identifier isEnabled:arg_enabled error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1383,19 +1270,15 @@ void FWFWKPreferencesHostApiSetup(id binaryMessenger, return sSharedObject; } -void FWFWKScriptMessageHandlerHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKScriptMessageHandlerHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKScriptMessageHandlerHostApiGetCodec()]; + codec:FWFWKScriptMessageHandlerHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKScriptMessageHandlerHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKScriptMessageHandlerHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1413,7 +1296,7 @@ @interface FWFWKScriptMessageHandlerFlutterApiCodecReader : FlutterStandardReade @implementation FWFWKScriptMessageHandlerFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFWKScriptMessageData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1449,8 +1332,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter *readerWriter = - [[FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter alloc] init]; + FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter *readerWriter = [[FWFWKScriptMessageHandlerFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -1469,23 +1351,15 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void) - didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)arg_identifier - userContentControllerIdentifier:(NSNumber *)arg_userContentControllerIdentifier - message:(FWFWKScriptMessageData *)arg_message - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage" - binaryMessenger:self.binaryMessenger - codec:FWFWKScriptMessageHandlerFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_userContentControllerIdentifier ?: [NSNull null], - arg_message ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; +- (void)didReceiveScriptMessageForHandlerWithIdentifier:(NSNumber *)arg_identifier userContentControllerIdentifier:(NSNumber *)arg_userContentControllerIdentifier message:(FWFWKScriptMessageData *)arg_message completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage" + binaryMessenger:self.binaryMessenger + codec:FWFWKScriptMessageHandlerFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_userContentControllerIdentifier ?: [NSNull null], arg_message ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end @@ -1495,19 +1369,15 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina return sSharedObject; } -void FWFWKNavigationDelegateHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKNavigationDelegateHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKNavigationDelegateHostApiGetCodec()]; + codec:FWFWKNavigationDelegateHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKNavigationDelegateHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKNavigationDelegateHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1525,15 +1395,17 @@ @interface FWFWKNavigationDelegateFlutterApiCodecReader : FlutterStandardReader @implementation FWFWKNavigationDelegateFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: + return [FWFAuthenticationChallengeResponse fromList:[self readValue]]; + case 129: return [FWFNSErrorData fromList:[self readValue]]; - case 129: + case 130: return [FWFNSUrlRequestData fromList:[self readValue]]; - case 130: + case 131: return [FWFWKFrameInfoData fromList:[self readValue]]; - case 131: + case 132: return [FWFWKNavigationActionData fromList:[self readValue]]; - case 132: + case 133: return [FWFWKNavigationActionPolicyEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1545,21 +1417,24 @@ @interface FWFWKNavigationDelegateFlutterApiCodecWriter : FlutterStandardWriter @end @implementation FWFWKNavigationDelegateFlutterApiCodecWriter - (void)writeValue:(id)value { - if ([value isKindOfClass:[FWFNSErrorData class]]) { + if ([value isKindOfClass:[FWFAuthenticationChallengeResponse class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { + } else if ([value isKindOfClass:[FWFNSErrorData class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { + } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { + } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { [self writeByte:131]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { [self writeByte:132]; [self writeValue:[value toList]]; + } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { + [self writeByte:133]; + [self writeValue:[value toList]]; } else { [super writeValue:value]; } @@ -1581,8 +1456,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKNavigationDelegateFlutterApiCodecReaderWriter *readerWriter = - [[FWFWKNavigationDelegateFlutterApiCodecReaderWriter alloc] init]; + FWFWKNavigationDelegateFlutterApiCodecReaderWriter *readerWriter = [[FWFWKNavigationDelegateFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -1601,114 +1475,77 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - URL:(nullable NSString *)arg_url - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didFinishNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_url ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - URL:(nullable NSString *)arg_url - completion:(void (^)(FlutterError *_Nullable)) - completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didStartProvisionalNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_url ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - navigationAction:(FWFWKNavigationActionData *) - arg_navigationAction - completion: - (void (^)( - FWFWKNavigationActionPolicyEnumData - *_Nullable, - FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_navigationAction ?: [NSNull null] - ] - reply:^(id reply) { - FWFWKNavigationActionPolicyEnumData *output = reply; - completion(output, nil); - }]; -} -- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - error:(FWFNSErrorData *)arg_error - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didFailNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_error ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - error:(FWFNSErrorData *)arg_error - completion:(void (^)(FlutterError *_Nullable)) - completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.didFailProvisionalNavigation" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_error ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier: - (NSNumber *)arg_webViewIdentifier - completion: - (void (^)(FlutterError *_Nullable)) - completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview." - @"WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate" - binaryMessenger:self.binaryMessenger - codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; +- (void)didFinishNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier URL:(nullable NSString *)arg_url completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_url ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)didStartProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier URL:(nullable NSString *)arg_url completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_url ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)decidePolicyForNavigationActionForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier navigationAction:(FWFWKNavigationActionData *)arg_navigationAction completion:(void (^)(FWFWKNavigationActionPolicyEnumData *_Nullable, FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_navigationAction ?: [NSNull null]] reply:^(id reply) { + FWFWKNavigationActionPolicyEnumData *output = reply; + completion(output, nil); + }]; +} +- (void)didFailNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier error:(FWFNSErrorData *)arg_error completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_error ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)didFailProvisionalNavigationForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier error:(FWFNSErrorData *)arg_error completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_error ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)webViewWebContentProcessDidTerminateForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)didReceiveAuthenticationChallengeForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier challengeIdentifier:(NSNumber *)arg_challengeIdentifier completion:(void (^)(FWFAuthenticationChallengeResponse *_Nullable, FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge" + binaryMessenger:self.binaryMessenger + codec:FWFWKNavigationDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_challengeIdentifier ?: [NSNull null]] reply:^(id reply) { + FWFAuthenticationChallengeResponse *output = reply; + completion(output, nil); + }]; } @end @@ -1717,7 +1554,7 @@ @interface FWFNSObjectHostApiCodecReader : FlutterStandardReader @implementation FWFNSObjectHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSKeyValueObservingOptionsEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1753,25 +1590,21 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFNSObjectHostApiCodecReaderWriter *readerWriter = - [[FWFNSObjectHostApiCodecReaderWriter alloc] init]; + FWFNSObjectHostApiCodecReaderWriter *readerWriter = [[FWFNSObjectHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFNSObjectHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFNSObjectHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose" binaryMessenger:binaryMessenger - codec:FWFNSObjectHostApiGetCodec()]; + codec:FWFNSObjectHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(disposeObjectWithIdentifier:error:)], - @"FWFNSObjectHostApi api (%@) doesn't respond to " - @"@selector(disposeObjectWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(disposeObjectWithIdentifier:error:)], @"FWFNSObjectHostApi api (%@) doesn't respond to @selector(disposeObjectWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -1784,31 +1617,21 @@ void FWFNSObjectHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver" binaryMessenger:binaryMessenger - codec:FWFNSObjectHostApiGetCodec()]; + codec:FWFNSObjectHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (addObserverForObjectWithIdentifier: - observerIdentifier:keyPath:options:error:)], - @"FWFNSObjectHostApi api (%@) doesn't respond to " - @"@selector(addObserverForObjectWithIdentifier:observerIdentifier:keyPath:options:" - @"error:)", - api); + NSCAssert([api respondsToSelector:@selector(addObserverForObjectWithIdentifier:observerIdentifier:keyPath:options:error:)], @"FWFNSObjectHostApi api (%@) doesn't respond to @selector(addObserverForObjectWithIdentifier:observerIdentifier:keyPath:options:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_observerIdentifier = GetNullableObjectAtIndex(args, 1); NSString *arg_keyPath = GetNullableObjectAtIndex(args, 2); - NSArray *arg_options = - GetNullableObjectAtIndex(args, 3); + NSArray *arg_options = GetNullableObjectAtIndex(args, 3); FlutterError *error; - [api addObserverForObjectWithIdentifier:arg_identifier - observerIdentifier:arg_observerIdentifier - keyPath:arg_keyPath - options:arg_options - error:&error]; + [api addObserverForObjectWithIdentifier:arg_identifier observerIdentifier:arg_observerIdentifier keyPath:arg_keyPath options:arg_options error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1816,28 +1639,20 @@ void FWFNSObjectHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver" binaryMessenger:binaryMessenger - codec:FWFNSObjectHostApiGetCodec()]; + codec:FWFNSObjectHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(removeObserverForObjectWithIdentifier: - observerIdentifier:keyPath:error:)], - @"FWFNSObjectHostApi api (%@) doesn't respond to " - @"@selector(removeObserverForObjectWithIdentifier:observerIdentifier:keyPath:error:)", - api); + NSCAssert([api respondsToSelector:@selector(removeObserverForObjectWithIdentifier:observerIdentifier:keyPath:error:)], @"FWFNSObjectHostApi api (%@) doesn't respond to @selector(removeObserverForObjectWithIdentifier:observerIdentifier:keyPath:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_observerIdentifier = GetNullableObjectAtIndex(args, 1); NSString *arg_keyPath = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api removeObserverForObjectWithIdentifier:arg_identifier - observerIdentifier:arg_observerIdentifier - keyPath:arg_keyPath - error:&error]; + [api removeObserverForObjectWithIdentifier:arg_identifier observerIdentifier:arg_observerIdentifier keyPath:arg_keyPath error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -1850,9 +1665,9 @@ @interface FWFNSObjectFlutterApiCodecReader : FlutterStandardReader @implementation FWFNSObjectFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSKeyValueChangeKeyEnumData fromList:[self readValue]]; - case 129: + case 129: return [FWFObjectOrIdentifier fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1891,8 +1706,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFNSObjectFlutterApiCodecReaderWriter *readerWriter = - [[FWFNSObjectFlutterApiCodecReaderWriter alloc] init]; + FWFNSObjectFlutterApiCodecReaderWriter *readerWriter = [[FWFNSObjectFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -1911,38 +1725,25 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)observeValueForObjectWithIdentifier:(NSNumber *)arg_identifier - keyPath:(NSString *)arg_keyPath - objectIdentifier:(NSNumber *)arg_objectIdentifier - changeKeys: - (NSArray *)arg_changeKeys - changeValues:(NSArray *)arg_changeValues - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue" - binaryMessenger:self.binaryMessenger - codec:FWFNSObjectFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_keyPath ?: [NSNull null], - arg_objectIdentifier ?: [NSNull null], arg_changeKeys ?: [NSNull null], - arg_changeValues ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)disposeObjectWithIdentifier:(NSNumber *)arg_identifier - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose" - binaryMessenger:self.binaryMessenger - codec:FWFNSObjectFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; +- (void)observeValueForObjectWithIdentifier:(NSNumber *)arg_identifier keyPath:(NSString *)arg_keyPath objectIdentifier:(NSNumber *)arg_objectIdentifier changeKeys:(NSArray *)arg_changeKeys changeValues:(NSArray *)arg_changeValues completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue" + binaryMessenger:self.binaryMessenger + codec:FWFNSObjectFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_keyPath ?: [NSNull null], arg_objectIdentifier ?: [NSNull null], arg_changeKeys ?: [NSNull null], arg_changeValues ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)disposeObjectWithIdentifier:(NSNumber *)arg_identifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose" + binaryMessenger:self.binaryMessenger + codec:FWFNSObjectFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end @@ -1951,41 +1752,43 @@ @interface FWFWKWebViewHostApiCodecReader : FlutterStandardReader @implementation FWFWKWebViewHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: + return [FWFAuthenticationChallengeResponse fromList:[self readValue]]; + case 129: return [FWFNSErrorData fromList:[self readValue]]; - case 129: + case 130: return [FWFNSHttpCookieData fromList:[self readValue]]; - case 130: + case 131: return [FWFNSHttpCookiePropertyKeyEnumData fromList:[self readValue]]; - case 131: + case 132: return [FWFNSKeyValueChangeKeyEnumData fromList:[self readValue]]; - case 132: + case 133: return [FWFNSKeyValueObservingOptionsEnumData fromList:[self readValue]]; - case 133: + case 134: return [FWFNSUrlRequestData fromList:[self readValue]]; - case 134: + case 135: return [FWFObjectOrIdentifier fromList:[self readValue]]; - case 135: + case 136: return [FWFWKAudiovisualMediaTypeEnumData fromList:[self readValue]]; - case 136: + case 137: return [FWFWKFrameInfoData fromList:[self readValue]]; - case 137: + case 138: return [FWFWKMediaCaptureTypeData fromList:[self readValue]]; - case 138: + case 139: return [FWFWKNavigationActionData fromList:[self readValue]]; - case 139: + case 140: return [FWFWKNavigationActionPolicyEnumData fromList:[self readValue]]; - case 140: + case 141: return [FWFWKPermissionDecisionData fromList:[self readValue]]; - case 141: + case 142: return [FWFWKScriptMessageData fromList:[self readValue]]; - case 142: + case 143: return [FWFWKSecurityOriginData fromList:[self readValue]]; - case 143: + case 144: return [FWFWKUserScriptData fromList:[self readValue]]; - case 144: + case 145: return [FWFWKUserScriptInjectionTimeEnumData fromList:[self readValue]]; - case 145: + case 146: return [FWFWKWebsiteDataTypeEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -1997,60 +1800,63 @@ @interface FWFWKWebViewHostApiCodecWriter : FlutterStandardWriter @end @implementation FWFWKWebViewHostApiCodecWriter - (void)writeValue:(id)value { - if ([value isKindOfClass:[FWFNSErrorData class]]) { + if ([value isKindOfClass:[FWFAuthenticationChallengeResponse class]]) { [self writeByte:128]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSHttpCookieData class]]) { + } else if ([value isKindOfClass:[FWFNSErrorData class]]) { [self writeByte:129]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSHttpCookiePropertyKeyEnumData class]]) { + } else if ([value isKindOfClass:[FWFNSHttpCookieData class]]) { [self writeByte:130]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSKeyValueChangeKeyEnumData class]]) { + } else if ([value isKindOfClass:[FWFNSHttpCookiePropertyKeyEnumData class]]) { [self writeByte:131]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSKeyValueObservingOptionsEnumData class]]) { + } else if ([value isKindOfClass:[FWFNSKeyValueChangeKeyEnumData class]]) { [self writeByte:132]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { + } else if ([value isKindOfClass:[FWFNSKeyValueObservingOptionsEnumData class]]) { [self writeByte:133]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFObjectOrIdentifier class]]) { + } else if ([value isKindOfClass:[FWFNSUrlRequestData class]]) { [self writeByte:134]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKAudiovisualMediaTypeEnumData class]]) { + } else if ([value isKindOfClass:[FWFObjectOrIdentifier class]]) { [self writeByte:135]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { + } else if ([value isKindOfClass:[FWFWKAudiovisualMediaTypeEnumData class]]) { [self writeByte:136]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKMediaCaptureTypeData class]]) { + } else if ([value isKindOfClass:[FWFWKFrameInfoData class]]) { [self writeByte:137]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { + } else if ([value isKindOfClass:[FWFWKMediaCaptureTypeData class]]) { [self writeByte:138]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKNavigationActionData class]]) { [self writeByte:139]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKPermissionDecisionData class]]) { + } else if ([value isKindOfClass:[FWFWKNavigationActionPolicyEnumData class]]) { [self writeByte:140]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKScriptMessageData class]]) { + } else if ([value isKindOfClass:[FWFWKPermissionDecisionData class]]) { [self writeByte:141]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKSecurityOriginData class]]) { + } else if ([value isKindOfClass:[FWFWKScriptMessageData class]]) { [self writeByte:142]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKUserScriptData class]]) { + } else if ([value isKindOfClass:[FWFWKSecurityOriginData class]]) { [self writeByte:143]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKUserScriptInjectionTimeEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKUserScriptData class]]) { [self writeByte:144]; [self writeValue:[value toList]]; - } else if ([value isKindOfClass:[FWFWKWebsiteDataTypeEnumData class]]) { + } else if ([value isKindOfClass:[FWFWKUserScriptInjectionTimeEnumData class]]) { [self writeByte:145]; [self writeValue:[value toList]]; + } else if ([value isKindOfClass:[FWFWKWebsiteDataTypeEnumData class]]) { + [self writeByte:146]; + [self writeValue:[value toList]]; } else { [super writeValue:value]; } @@ -2072,34 +1878,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKWebViewHostApiCodecReaderWriter *readerWriter = - [[FWFWKWebViewHostApiCodecReaderWriter alloc] init]; + FWFWKWebViewHostApiCodecReaderWriter *readerWriter = [[FWFWKWebViewHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKWebViewHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKWebViewHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier: - configurationIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:configurationIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:configurationIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(createWithIdentifier:configurationIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_configurationIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createWithIdentifier:arg_identifier - configurationIdentifier:arg_configurationIdentifier - error:&error]; + [api createWithIdentifier:arg_identifier configurationIdentifier:arg_configurationIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2107,25 +1906,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setUIDelegateForWebViewWithIdentifier: - delegateIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setUIDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setUIDelegateForWebViewWithIdentifier:delegateIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setUIDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_uiDelegateIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setUIDelegateForWebViewWithIdentifier:arg_identifier - delegateIdentifier:arg_uiDelegateIdentifier - error:&error]; + [api setUIDelegateForWebViewWithIdentifier:arg_identifier delegateIdentifier:arg_uiDelegateIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2133,26 +1926,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi." - @"setNavigationDelegate" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector(setNavigationDelegateForWebViewWithIdentifier: - delegateIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setNavigationDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setNavigationDelegateForWebViewWithIdentifier:delegateIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setNavigationDelegateForWebViewWithIdentifier:delegateIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_navigationDelegateIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setNavigationDelegateForWebViewWithIdentifier:arg_identifier - delegateIdentifier:arg_navigationDelegateIdentifier - error:&error]; + [api setNavigationDelegateForWebViewWithIdentifier:arg_identifier delegateIdentifier:arg_navigationDelegateIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2160,15 +1946,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(URLForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(URLForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(URLForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(URLForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2181,23 +1965,18 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(estimatedProgressForWebViewWithIdentifier: - error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(estimatedProgressForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(estimatedProgressForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(estimatedProgressForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FlutterError *error; - NSNumber *output = [api estimatedProgressForWebViewWithIdentifier:arg_identifier - error:&error]; + NSNumber *output = [api estimatedProgressForWebViewWithIdentifier:arg_identifier error:&error]; callback(wrapResult(output, error)); }]; } else { @@ -2205,16 +1984,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadRequestForWebViewWithIdentifier: - request:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadRequestForWebViewWithIdentifier:request:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadRequestForWebViewWithIdentifier:request:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadRequestForWebViewWithIdentifier:request:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2228,27 +2004,20 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadHTMLForWebViewWithIdentifier: - HTMLString:baseURL:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadHTMLForWebViewWithIdentifier:HTMLString:baseURL:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadHTMLForWebViewWithIdentifier:HTMLString:baseURL:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadHTMLForWebViewWithIdentifier:HTMLString:baseURL:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_string = GetNullableObjectAtIndex(args, 1); NSString *arg_baseUrl = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api loadHTMLForWebViewWithIdentifier:arg_identifier - HTMLString:arg_string - baseURL:arg_baseUrl - error:&error]; + [api loadHTMLForWebViewWithIdentifier:arg_identifier HTMLString:arg_string baseURL:arg_baseUrl error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2256,26 +2025,20 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadFileForWebViewWithIdentifier:fileURL:readAccessURL:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_url = GetNullableObjectAtIndex(args, 1); NSString *arg_readAccessUrl = GetNullableObjectAtIndex(args, 2); FlutterError *error; - [api loadFileForWebViewWithIdentifier:arg_identifier - fileURL:arg_url - readAccessURL:arg_readAccessUrl - error:&error]; + [api loadFileForWebViewWithIdentifier:arg_identifier fileURL:arg_url readAccessURL:arg_readAccessUrl error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2283,17 +2046,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(loadAssetForWebViewWithIdentifier: - assetKey:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(loadAssetForWebViewWithIdentifier:assetKey:error:)", - api); + NSCAssert([api respondsToSelector:@selector(loadAssetForWebViewWithIdentifier:assetKey:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(loadAssetForWebViewWithIdentifier:assetKey:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2307,15 +2066,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(canGoBackForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(canGoBackForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(canGoBackForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(canGoBackForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2328,16 +2085,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(canGoForwardForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(canGoForwardForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(canGoForwardForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(canGoForwardForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2350,15 +2104,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(goBackForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(goBackForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(goBackForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(goBackForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2371,15 +2123,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(goForwardForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(goForwardForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(goForwardForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(goForwardForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2392,15 +2142,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(reloadWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(reloadWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(reloadWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(reloadWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2413,15 +2161,13 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(titleForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(titleForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(titleForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(titleForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2434,25 +2180,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi." - @"setAllowsBackForwardNavigationGestures" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setAllowsBackForwardForWebViewWithIdentifier:isAllowed:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_allow = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setAllowsBackForwardForWebViewWithIdentifier:arg_identifier - isAllowed:arg_allow - error:&error]; + [api setAllowsBackForwardForWebViewWithIdentifier:arg_identifier isAllowed:arg_allow error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2460,25 +2200,19 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector - (setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setCustomUserAgentForWebViewWithIdentifier:userAgent:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_userAgent = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setCustomUserAgentForWebViewWithIdentifier:arg_identifier - userAgent:arg_userAgent - error:&error]; + [api setCustomUserAgentForWebViewWithIdentifier:arg_identifier userAgent:arg_userAgent error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2486,53 +2220,39 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert( - [api respondsToSelector:@selector - (evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)", - api); + NSCAssert([api respondsToSelector:@selector(evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(evaluateJavaScriptForWebViewWithIdentifier:javaScriptString:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSString *arg_javaScriptString = GetNullableObjectAtIndex(args, 1); - [api evaluateJavaScriptForWebViewWithIdentifier:arg_identifier - javaScriptString:arg_javaScriptString - completion:^(id _Nullable output, - FlutterError *_Nullable error) { - callback(wrapResult(output, error)); - }]; + [api evaluateJavaScriptForWebViewWithIdentifier:arg_identifier javaScriptString:arg_javaScriptString completion:^(id _Nullable output, FlutterError *_Nullable error) { + callback(wrapResult(output, error)); + }]; }]; } else { [channel setMessageHandler:nil]; } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setInspectableForWebViewWithIdentifier: - inspectable:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(setInspectableForWebViewWithIdentifier:inspectable:error:)", - api); + NSCAssert([api respondsToSelector:@selector(setInspectableForWebViewWithIdentifier:inspectable:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(setInspectableForWebViewWithIdentifier:inspectable:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_inspectable = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api setInspectableForWebViewWithIdentifier:arg_identifier - inspectable:arg_inspectable - error:&error]; + [api setInspectableForWebViewWithIdentifier:arg_identifier inspectable:arg_inspectable error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2540,22 +2260,18 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent" binaryMessenger:binaryMessenger - codec:FWFWKWebViewHostApiGetCodec()]; + codec:FWFWKWebViewHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(customUserAgentForWebViewWithIdentifier:error:)], - @"FWFWKWebViewHostApi api (%@) doesn't respond to " - @"@selector(customUserAgentForWebViewWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(customUserAgentForWebViewWithIdentifier:error:)], @"FWFWKWebViewHostApi api (%@) doesn't respond to @selector(customUserAgentForWebViewWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FlutterError *error; - NSString *output = [api customUserAgentForWebViewWithIdentifier:arg_identifier - error:&error]; + NSString *output = [api customUserAgentForWebViewWithIdentifier:arg_identifier error:&error]; callback(wrapResult(output, error)); }]; } else { @@ -2569,18 +2285,15 @@ void FWFWKWebViewHostApiSetup(id binaryMessenger, return sSharedObject; } -void FWFWKUIDelegateHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKUIDelegateHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create" binaryMessenger:binaryMessenger - codec:FWFWKUIDelegateHostApiGetCodec()]; + codec:FWFWKUIDelegateHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], - @"FWFWKUIDelegateHostApi api (%@) doesn't respond to " - @"@selector(createWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createWithIdentifier:error:)], @"FWFWKUIDelegateHostApi api (%@) doesn't respond to @selector(createWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2598,17 +2311,17 @@ @interface FWFWKUIDelegateFlutterApiCodecReader : FlutterStandardReader @implementation FWFWKUIDelegateFlutterApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSUrlRequestData fromList:[self readValue]]; - case 129: + case 129: return [FWFWKFrameInfoData fromList:[self readValue]]; - case 130: + case 130: return [FWFWKMediaCaptureTypeData fromList:[self readValue]]; - case 131: + case 131: return [FWFWKNavigationActionData fromList:[self readValue]]; - case 132: + case 132: return [FWFWKPermissionDecisionData fromList:[self readValue]]; - case 133: + case 133: return [FWFWKSecurityOriginData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -2659,8 +2372,7 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKUIDelegateFlutterApiCodecReaderWriter *readerWriter = - [[FWFWKUIDelegateFlutterApiCodecReaderWriter alloc] init]; + FWFWKUIDelegateFlutterApiCodecReaderWriter *readerWriter = [[FWFWKUIDelegateFlutterApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; @@ -2679,46 +2391,26 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - configurationIdentifier:(NSNumber *)arg_configurationIdentifier - navigationAction:(FWFWKNavigationActionData *)arg_navigationAction - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView" - binaryMessenger:self.binaryMessenger - codec:FWFWKUIDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_configurationIdentifier ?: [NSNull null], arg_navigationAction ?: [NSNull null] - ] - reply:^(id reply) { - completion(nil); - }]; -} -- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)arg_identifier - webViewIdentifier:(NSNumber *)arg_webViewIdentifier - origin:(FWFWKSecurityOriginData *)arg_origin - frame:(FWFWKFrameInfoData *)arg_frame - type:(FWFWKMediaCaptureTypeData *)arg_type - completion: - (void (^)( - FWFWKPermissionDecisionData *_Nullable, - FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel - messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi." - @"requestMediaCapturePermission" - binaryMessenger:self.binaryMessenger - codec:FWFWKUIDelegateFlutterApiGetCodec()]; - [channel sendMessage:@[ - arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], - arg_origin ?: [NSNull null], arg_frame ?: [NSNull null], arg_type ?: [NSNull null] - ] - reply:^(id reply) { - FWFWKPermissionDecisionData *output = reply; - completion(output, nil); - }]; +- (void)onCreateWebViewForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier configurationIdentifier:(NSNumber *)arg_configurationIdentifier navigationAction:(FWFWKNavigationActionData *)arg_navigationAction completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView" + binaryMessenger:self.binaryMessenger + codec:FWFWKUIDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_configurationIdentifier ?: [NSNull null], arg_navigationAction ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +- (void)requestMediaCapturePermissionForDelegateWithIdentifier:(NSNumber *)arg_identifier webViewIdentifier:(NSNumber *)arg_webViewIdentifier origin:(FWFWKSecurityOriginData *)arg_origin frame:(FWFWKFrameInfoData *)arg_frame type:(FWFWKMediaCaptureTypeData *)arg_type completion:(void (^)(FWFWKPermissionDecisionData *_Nullable, FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission" + binaryMessenger:self.binaryMessenger + codec:FWFWKUIDelegateFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_webViewIdentifier ?: [NSNull null], arg_origin ?: [NSNull null], arg_frame ?: [NSNull null], arg_type ?: [NSNull null]] reply:^(id reply) { + FWFWKPermissionDecisionData *output = reply; + completion(output, nil); + }]; } @end @@ -2727,9 +2419,9 @@ @interface FWFWKHttpCookieStoreHostApiCodecReader : FlutterStandardReader @implementation FWFWKHttpCookieStoreHostApiCodecReader - (nullable id)readValueOfType:(UInt8)type { switch (type) { - case 128: + case 128: return [FWFNSHttpCookieData fromList:[self readValue]]; - case 129: + case 129: return [FWFNSHttpCookiePropertyKeyEnumData fromList:[self readValue]]; default: return [super readValueOfType:type]; @@ -2768,35 +2460,27 @@ - (FlutterStandardReader *)readerWithData:(NSData *)data { static FlutterStandardMessageCodec *sSharedObject = nil; static dispatch_once_t sPred = 0; dispatch_once(&sPred, ^{ - FWFWKHttpCookieStoreHostApiCodecReaderWriter *readerWriter = - [[FWFWKHttpCookieStoreHostApiCodecReaderWriter alloc] init]; + FWFWKHttpCookieStoreHostApiCodecReaderWriter *readerWriter = [[FWFWKHttpCookieStoreHostApiCodecReaderWriter alloc] init]; sSharedObject = [FlutterStandardMessageCodec codecWithReaderWriter:readerWriter]; }); return sSharedObject; } -void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi." - @"createFromWebsiteDataStore" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore" binaryMessenger:binaryMessenger - codec:FWFWKHttpCookieStoreHostApiGetCodec()]; + codec:FWFWKHttpCookieStoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(createFromWebsiteDataStoreWithIdentifier: - dataStoreIdentifier:error:)], - @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to " - @"@selector(createFromWebsiteDataStoreWithIdentifier:dataStoreIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(createFromWebsiteDataStoreWithIdentifier:dataStoreIdentifier:error:)], @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to @selector(createFromWebsiteDataStoreWithIdentifier:dataStoreIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); NSNumber *arg_websiteDataStoreIdentifier = GetNullableObjectAtIndex(args, 1); FlutterError *error; - [api createFromWebsiteDataStoreWithIdentifier:arg_identifier - dataStoreIdentifier:arg_websiteDataStoreIdentifier - error:&error]; + [api createFromWebsiteDataStoreWithIdentifier:arg_identifier dataStoreIdentifier:arg_websiteDataStoreIdentifier error:&error]; callback(wrapResult(nil, error)); }]; } else { @@ -2804,26 +2488,20 @@ void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger } } { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie" binaryMessenger:binaryMessenger - codec:FWFWKHttpCookieStoreHostApiGetCodec()]; + codec:FWFWKHttpCookieStoreHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(setCookieForStoreWithIdentifier: - cookie:completion:)], - @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to " - @"@selector(setCookieForStoreWithIdentifier:cookie:completion:)", - api); + NSCAssert([api respondsToSelector:@selector(setCookieForStoreWithIdentifier:cookie:completion:)], @"FWFWKHttpCookieStoreHostApi api (%@) doesn't respond to @selector(setCookieForStoreWithIdentifier:cookie:completion:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); FWFNSHttpCookieData *arg_cookie = GetNullableObjectAtIndex(args, 1); - [api setCookieForStoreWithIdentifier:arg_identifier - cookie:arg_cookie - completion:^(FlutterError *_Nullable error) { - callback(wrapResult(nil, error)); - }]; + [api setCookieForStoreWithIdentifier:arg_identifier cookie:arg_cookie completion:^(FlutterError *_Nullable error) { + callback(wrapResult(nil, error)); + }]; }]; } else { [channel setMessageHandler:nil]; @@ -2836,19 +2514,15 @@ void FWFWKHttpCookieStoreHostApiSetup(id binaryMessenger return sSharedObject; } -void FWFNSUrlHostApiSetup(id binaryMessenger, - NSObject *api) { +void FWFNSUrlHostApiSetup(id binaryMessenger, NSObject *api) { { - FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] - initWithName: - @"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString" + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString" binaryMessenger:binaryMessenger - codec:FWFNSUrlHostApiGetCodec()]; + codec:FWFNSUrlHostApiGetCodec()]; if (api) { - NSCAssert([api respondsToSelector:@selector(absoluteStringForNSURLWithIdentifier:error:)], - @"FWFNSUrlHostApi api (%@) doesn't respond to " - @"@selector(absoluteStringForNSURLWithIdentifier:error:)", - api); + NSCAssert([api respondsToSelector:@selector(absoluteStringForNSURLWithIdentifier:error:)], @"FWFNSUrlHostApi api (%@) doesn't respond to @selector(absoluteStringForNSURLWithIdentifier:error:)", api); [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { NSArray *args = message; NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); @@ -2880,15 +2554,108 @@ - (instancetype)initWithBinaryMessenger:(NSObject *)bina } return self; } -- (void)createWithIdentifier:(NSNumber *)arg_identifier - completion:(void (^)(FlutterError *_Nullable))completion { - FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel +- (void)createWithIdentifier:(NSNumber *)arg_identifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create" - binaryMessenger:self.binaryMessenger - codec:FWFNSUrlFlutterApiGetCodec()]; - [channel sendMessage:@[ arg_identifier ?: [NSNull null] ] - reply:^(id reply) { - completion(nil); - }]; + binaryMessenger:self.binaryMessenger + codec:FWFNSUrlFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; } @end + +NSObject *FWFNSUrlCredentialHostApiGetCodec(void) { + static FlutterStandardMessageCodec *sSharedObject = nil; + sSharedObject = [FlutterStandardMessageCodec sharedInstance]; + return sSharedObject; +} + +void FWFNSUrlCredentialHostApiSetup(id binaryMessenger, NSObject *api) { + /// Create a new native instance and add it to the `InstanceManager`. + { + FlutterBasicMessageChannel *channel = + [[FlutterBasicMessageChannel alloc] + initWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser" + binaryMessenger:binaryMessenger + codec:FWFNSUrlCredentialHostApiGetCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(createWithUserWithIdentifier:user:password:persistence:error:)], @"FWFNSUrlCredentialHostApi api (%@) doesn't respond to @selector(createWithUserWithIdentifier:user:password:persistence:error:)", api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + NSNumber *arg_identifier = GetNullableObjectAtIndex(args, 0); + NSString *arg_user = GetNullableObjectAtIndex(args, 1); + NSString *arg_password = GetNullableObjectAtIndex(args, 2); + FWFNSUrlCredentialPersistence arg_persistence = [GetNullableObjectAtIndex(args, 3) integerValue]; + FlutterError *error; + [api createWithUserWithIdentifier:arg_identifier user:arg_user password:arg_password persistence:arg_persistence error:&error]; + callback(wrapResult(nil, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } +} +NSObject *FWFNSUrlProtectionSpaceFlutterApiGetCodec(void) { + static FlutterStandardMessageCodec *sSharedObject = nil; + sSharedObject = [FlutterStandardMessageCodec sharedInstance]; + return sSharedObject; +} + +@interface FWFNSUrlProtectionSpaceFlutterApi () +@property(nonatomic, strong) NSObject *binaryMessenger; +@end + +@implementation FWFNSUrlProtectionSpaceFlutterApi + +- (instancetype)initWithBinaryMessenger:(NSObject *)binaryMessenger { + self = [super init]; + if (self) { + _binaryMessenger = binaryMessenger; + } + return self; +} +- (void)createWithIdentifier:(NSNumber *)arg_identifier host:(nullable NSString *)arg_host realm:(nullable NSString *)arg_realm authenticationMethod:(nullable NSString *)arg_authenticationMethod completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlProtectionSpaceFlutterApi.create" + binaryMessenger:self.binaryMessenger + codec:FWFNSUrlProtectionSpaceFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_host ?: [NSNull null], arg_realm ?: [NSNull null], arg_authenticationMethod ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +@end + +NSObject *FWFNSUrlAuthenticationChallengeFlutterApiGetCodec(void) { + static FlutterStandardMessageCodec *sSharedObject = nil; + sSharedObject = [FlutterStandardMessageCodec sharedInstance]; + return sSharedObject; +} + +@interface FWFNSUrlAuthenticationChallengeFlutterApi () +@property(nonatomic, strong) NSObject *binaryMessenger; +@end + +@implementation FWFNSUrlAuthenticationChallengeFlutterApi + +- (instancetype)initWithBinaryMessenger:(NSObject *)binaryMessenger { + self = [super init]; + if (self) { + _binaryMessenger = binaryMessenger; + } + return self; +} +- (void)createWithIdentifier:(NSNumber *)arg_identifier protectionSpaceIdentifier:(NSNumber *)arg_protectionSpaceIdentifier completion:(void (^)(FlutterError *_Nullable))completion { + FlutterBasicMessageChannel *channel = + [FlutterBasicMessageChannel + messageChannelWithName:@"dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create" + binaryMessenger:self.binaryMessenger + codec:FWFNSUrlAuthenticationChallengeFlutterApiGetCodec()]; + [channel sendMessage:@[arg_identifier ?: [NSNull null], arg_protectionSpaceIdentifier ?: [NSNull null]] reply:^(id reply) { + completion(nil); + }]; +} +@end + diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m index f8b5925f221..4b95e979e01 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m @@ -4,9 +4,13 @@ #import "FWFNavigationDelegateHostApi.h" #import "FWFDataConverters.h" +#import "FWFURLAuthenticationChallengeHostApi.h" #import "FWFWebViewConfigurationHostApi.h" @interface FWFNavigationDelegateFlutterApiImpl () +// BinaryMessenger must be weak to prevent a circular reference with the host API it +// references. +@property(nonatomic, weak) id binaryMessenger; // InstanceManager must be weak to prevent a circular reference with the object it stores. @property(nonatomic, weak) FWFInstanceManager *instanceManager; @end @@ -16,6 +20,7 @@ - (instancetype)initWithBinaryMessenger:(id)binaryMessen instanceManager:(FWFInstanceManager *)instanceManager { self = [self initWithBinaryMessenger:binaryMessenger]; if (self) { + _binaryMessenger = binaryMessenger; _instanceManager = instanceManager; } return self; @@ -105,6 +110,36 @@ - (void)webViewWebContentProcessDidTerminateForDelegate:(FWFNavigationDelegate * webViewIdentifier:webViewIdentifier completion:completion]; } + +- (void) + didReceiveAuthenticationChallengeForDelegate:(FWFNavigationDelegate *)instance + webView:(WKWebView *)webView + challenge:(NSURLAuthenticationChallenge *)challenge + completion: + (void (^)(FWFAuthenticationChallengeResponse *_Nullable, + FlutterError *_Nullable))completion { + NSNumber *webViewIdentifier = + @([self.instanceManager identifierWithStrongReferenceForInstance:webView]); + + FWFURLAuthenticationChallengeFlutterApiImpl *challengeApi = + [[FWFURLAuthenticationChallengeFlutterApiImpl alloc] + initWithBinaryMessenger:self.binaryMessenger + instanceManager:self.instanceManager]; + [challengeApi createWithInstance:challenge + protectionSpace:challenge.protectionSpace + completion:^(FlutterError *error) { + NSAssert(!error, @"%@", error); + }]; + + [self didReceiveAuthenticationChallengeForDelegateWithIdentifier: + @([self identifierForDelegate:instance]) + webViewIdentifier:webViewIdentifier + challengeIdentifier: + @([self.instanceManager + identifierWithStrongReferenceForInstance: + challenge]) + completion:completion]; +} @end @implementation FWFNavigationDelegate @@ -182,6 +217,36 @@ - (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView { NSAssert(!error, @"%@", error); }]; } + +- (void)webView:(WKWebView *)webView + didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge + completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, + NSURLCredential *_Nullable))completionHandler { + [self.navigationDelegateAPI + didReceiveAuthenticationChallengeForDelegate:self + webView:webView + challenge:challenge + completion:^(FWFAuthenticationChallengeResponse *response, + FlutterError *error) { + NSAssert(!error, @"%@", error); + if (!error) { + NSURLSessionAuthChallengeDisposition disposition = + FWFNativeNSURLSessionAuthChallengeDispositionFromFWFNSUrlSessionAuthChallengeDisposition( + response.disposition); + + NSURLCredential *credential = + response.credentialIdentifier + ? (NSURLCredential *)[self.navigationDelegateAPI + .instanceManager + instanceForIdentifier: + response.credentialIdentifier + .longValue] + : nil; + + completionHandler(disposition, credential); + } + }]; +} @end @interface FWFNavigationDelegateHostApiImpl () diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h new file mode 100644 index 00000000000..6100b703c29 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.h @@ -0,0 +1,33 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "FWFGeneratedWebKitApis.h" +#import "FWFInstanceManager.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Flutter API implementation for `NSURLAuthenticationChallenge`. + * + * This class may handle instantiating and adding Dart instances that are attached to a native + * instance or sending callback methods from an overridden native class. + */ +@interface FWFURLAuthenticationChallengeFlutterApiImpl : NSObject +/** + * The Flutter API used to send messages back to Dart. + */ +@property FWFNSUrlAuthenticationChallengeFlutterApi *api; +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager; +/** + * Sends a message to Dart to create a new Dart instance and add it to the `InstanceManager`. + */ +- (void)createWithInstance:(NSURLAuthenticationChallenge *)instance + protectionSpace:(NSURLProtectionSpace *)protectionSpace + completion:(void (^)(FlutterError *_Nullable))completion; +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m new file mode 100644 index 00000000000..b1d5356e91a --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLAuthenticationChallengeHostApi.m @@ -0,0 +1,52 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "FWFURLAuthenticationChallengeHostApi.h" +#import "FWFURLProtectionSpaceHostApi.h" + +@interface FWFURLAuthenticationChallengeFlutterApiImpl () +// BinaryMessenger must be weak to prevent a circular reference with the host API it +// references. +@property(nonatomic, weak) id binaryMessenger; +// InstanceManager must be weak to prevent a circular reference with the object it stores. +@property(nonatomic, weak) FWFInstanceManager *instanceManager; +@end + +@implementation FWFURLAuthenticationChallengeFlutterApiImpl +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager { + self = [self init]; + if (self) { + _binaryMessenger = binaryMessenger; + _instanceManager = instanceManager; + _api = + [[FWFNSUrlAuthenticationChallengeFlutterApi alloc] initWithBinaryMessenger:binaryMessenger]; + } + return self; +} + +- (void)createWithInstance:(NSURLAuthenticationChallenge *)instance + protectionSpace:(NSURLProtectionSpace *)protectionSpace + completion:(void (^)(FlutterError *_Nullable))completion { + if ([self.instanceManager containsInstance:instance]) { + return; + } + + FWFURLProtectionSpaceFlutterApiImpl *protectionSpaceApi = + [[FWFURLProtectionSpaceFlutterApiImpl alloc] initWithBinaryMessenger:self.binaryMessenger + instanceManager:self.instanceManager]; + [protectionSpaceApi createWithInstance:protectionSpace + host:protectionSpace.host + realm:protectionSpace.realm + authenticationMethod:protectionSpace.authenticationMethod + completion:^(FlutterError *error) { + NSAssert(!error, @"%@", error); + }]; + + [self.api createWithIdentifier:@([self.instanceManager addHostCreatedInstance:instance]) + protectionSpaceIdentifier:@([self.instanceManager + identifierWithStrongReferenceForInstance:protectionSpace]) + completion:completion]; +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h new file mode 100644 index 00000000000..fe9b3d0d8d5 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.h @@ -0,0 +1,24 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "FWFDataConverters.h" +#import "FWFGeneratedWebKitApis.h" +#import "FWFInstanceManager.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Host API implementation for `NSURLCredential`. + * + * This class may handle instantiating and adding native object instances that are attached to a + * Dart instance or method calls on the associated native class or an instance of the class. + */ +@interface FWFURLCredentialHostApiImpl : NSObject +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager; +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m new file mode 100644 index 00000000000..1a1492d518b --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLCredentialHostApi.m @@ -0,0 +1,58 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "FWFURLCredentialHostApi.h" + +@interface FWFURLCredentialHostApiImpl () +// BinaryMessenger must be weak to prevent a circular reference with the host API it +// references. +@property(nonatomic, weak) id binaryMessenger; +// InstanceManager must be weak to prevent a circular reference with the object it stores. +@property(nonatomic, weak) FWFInstanceManager *instanceManager; +@end + +@implementation FWFURLCredentialHostApiImpl +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager { + self = [self init]; + if (self) { + _binaryMessenger = binaryMessenger; + _instanceManager = instanceManager; + } + return self; +} + +- (void)createWithUserWithIdentifier:(nonnull NSNumber *)identifier + user:(nonnull NSString *)user + password:(nonnull NSString *)password + persistence:(FWFNSUrlCredentialPersistence)persistence + error:(FlutterError *_Nullable __autoreleasing *_Nonnull)error { + [self.instanceManager + addDartCreatedInstance: + [NSURLCredential + credentialWithUser:user + password:password + persistence: + FWFNativeNSURLCredentialPersistenceFromFWFNSUrlCredentialPersistence( + persistence)] + withIdentifier:identifier.longValue]; +} + +- (nullable NSURL *)credentialForIdentifier:(NSNumber *)identifier + error: + (FlutterError *_Nullable __autoreleasing *_Nonnull)error { + NSURL *instance = (NSURL *)[self.instanceManager instanceForIdentifier:identifier.longValue]; + + if (!instance) { + NSString *message = + [NSString stringWithFormat:@"InstanceManager does not contain an NSURL with identifier: %@", + identifier]; + *error = [FlutterError errorWithCode:NSInternalInconsistencyException + message:message + details:nil]; + } + + return instance; +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h new file mode 100644 index 00000000000..5e57ab5404a --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.h @@ -0,0 +1,35 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import +#import +#import "FWFGeneratedWebKitApis.h" +#import "FWFInstanceManager.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + * Flutter API implementation for `NSURLProtectionSpace`. + * + * This class may handle instantiating and adding Dart instances that are attached to a native + * instance or sending callback methods from an overridden native class. + */ +@interface FWFURLProtectionSpaceFlutterApiImpl : NSObject +/** + * The Flutter API used to send messages back to Dart. + */ +@property FWFNSUrlProtectionSpaceFlutterApi *api; +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager; +/** + * Sends a message to Dart to create a new Dart instance and add it to the `InstanceManager`. + */ +- (void)createWithInstance:(NSURLProtectionSpace *)instance + host:(nullable NSString *)host + realm:(nullable NSString *)realm + authenticationMethod:(nullable NSString *)authenticationMethod + completion:(void (^)(FlutterError *_Nullable))completion; +@end + +NS_ASSUME_NONNULL_END diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m new file mode 100644 index 00000000000..c00519907f0 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFURLProtectionSpaceHostApi.m @@ -0,0 +1,36 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#import "FWFURLProtectionSpaceHostApi.h" + +@interface FWFURLProtectionSpaceFlutterApiImpl () +// InstanceManager must be weak to prevent a circular reference with the object it stores. +@property(nonatomic, weak) FWFInstanceManager *instanceManager; +@end + +@implementation FWFURLProtectionSpaceFlutterApiImpl +- (instancetype)initWithBinaryMessenger:(id)binaryMessenger + instanceManager:(FWFInstanceManager *)instanceManager { + self = [self init]; + if (self) { + _instanceManager = instanceManager; + _api = [[FWFNSUrlProtectionSpaceFlutterApi alloc] initWithBinaryMessenger:binaryMessenger]; + } + return self; +} + +- (void)createWithInstance:(NSURLProtectionSpace *)instance + host:(nullable NSString *)host + realm:(nullable NSString *)realm + authenticationMethod:(nullable NSString *)authenticationMethod + completion:(void (^)(FlutterError *_Nullable))completion { + if (![self.instanceManager containsInstance:instance]) { + [self.api createWithIdentifier:@([self.instanceManager addHostCreatedInstance:instance]) + host:host + realm:realm + authenticationMethod:authenticationMethod + completion:completion]; + } +} +@end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h index 283682957c2..6d97c07e374 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/webview-umbrella.h @@ -16,7 +16,10 @@ #import "FWFScrollViewHostApi.h" #import "FWFUIDelegateHostApi.h" #import "FWFUIViewHostApi.h" +#import "FWFURLAuthenticationChallengeHostApi.h" +#import "FWFURLCredentialHostApi.h" #import "FWFURLHostApi.h" +#import "FWFURLProtectionSpaceHostApi.h" #import "FWFUserContentControllerHostApi.h" #import "FWFWebViewConfigurationHostApi.h" #import "FWFWebViewFlutterWKWebViewExternalAPI.h" 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 b0eaadeb739..e1491b34e99 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. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), 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, unused_shown_name, unnecessary_import @@ -112,32 +112,26 @@ enum WKNavigationType { /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypelinkactivated?language=objc. linkActivated, - /// A request to submit a form. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformsubmitted?language=objc. submitted, - /// A request for the frame’s next or previous item. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypebackforward?language=objc. backForward, - /// A request to reload the webpage. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypereload?language=objc. reload, - /// A request to resubmit a form. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeformresubmitted?language=objc. formResubmitted, - /// A navigation request that originates for some other reason. /// /// See https://developer.apple.com/documentation/webkit/wknavigationtype/wknavigationtypeother?language=objc. other, - /// An unknown navigation type. /// /// This does not represent an actual value provided by the platform and only @@ -153,12 +147,10 @@ enum WKPermissionDecision { /// /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiondeny?language=objc. deny, - /// Deny permission for the requested resource. /// /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisiongrant?language=objc. grant, - /// Prompt the user for permission for the requested resource. /// /// See https://developer.apple.com/documentation/webkit/wkpermissiondecision/wkpermissiondecisionprompt?language=objc. @@ -173,17 +165,14 @@ enum WKMediaCaptureType { /// /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecamera?language=objc. camera, - /// A media device or devices that can capture audio and video. /// /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypecameraandmicrophone?language=objc. cameraAndMicrophone, - /// A media device that can capture audio. /// /// See https://developer.apple.com/documentation/webkit/wkmediacapturetype/wkmediacapturetypemicrophone?language=objc. microphone, - /// An unknown media device. /// /// This does not represent an actual value provided by the platform and only @@ -191,6 +180,52 @@ enum WKMediaCaptureType { unknown, } +/// Responses to an authentication challenge. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition?language=objc. +enum NSUrlSessionAuthChallengeDisposition { + /// Use the specified credential, which may be nil. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeusecredential?language=objc. + useCredential, + /// Use the default handling for the challenge as though this delegate method + /// were not implemented. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeperformdefaulthandling?language=objc. + performDefaultHandling, + /// Cancel the entire request. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengecancelauthenticationchallenge?language=objc. + cancelAuthenticationChallenge, + /// Reject this challenge, and call the authentication delegate method again + /// with the next authentication protection space. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengerejectprotectionspace?language=objc. + rejectProtectionSpace, +} + +/// Specifies how long a credential will be kept. +enum NSUrlCredentialPersistence { + /// The credential should not be stored. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencenone?language=objc. + none, + /// The credential should be stored only for this session. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistenceforsession?language=objc. + session, + /// The credential should be stored in the keychain. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencepermanent?language=objc. + permanent, + /// The credential should be stored permanently in the keychain, and in + /// addition should be distributed to other devices based on the owning Apple + /// ID. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencesynchronizable?language=objc. + synchronizable, +} + class NSKeyValueObservingOptionsEnumData { NSKeyValueObservingOptionsEnumData({ required this.value, @@ -414,8 +449,7 @@ class NSUrlRequestData { url: result[0]! as String, httpMethod: result[1] as String?, httpBody: result[2] as Uint8List?, - allHttpHeaderFields: - (result[3] as Map?)!.cast(), + allHttpHeaderFields: (result[3] as Map?)!.cast(), ); } } @@ -449,8 +483,7 @@ class WKUserScriptData { return WKUserScriptData( source: result[0]! as String, injectionTime: result[1] != null - ? WKUserScriptInjectionTimeEnumData.decode( - result[1]! as List) + ? WKUserScriptInjectionTimeEnumData.decode(result[1]! as List) : null, isMainFrameOnly: result[2]! as bool, ); @@ -635,8 +668,7 @@ class NSHttpCookieData { static NSHttpCookieData decode(Object result) { result as List; return NSHttpCookieData( - propertyKeys: (result[0] as List?)! - .cast(), + propertyKeys: (result[0] as List?)!.cast(), propertyValues: (result[1] as List?)!.cast(), ); } @@ -673,6 +705,32 @@ class ObjectOrIdentifier { } } +class AuthenticationChallengeResponse { + AuthenticationChallengeResponse({ + required this.disposition, + this.credentialIdentifier, + }); + + NSUrlSessionAuthChallengeDisposition disposition; + + int? credentialIdentifier; + + Object encode() { + return [ + disposition.index, + credentialIdentifier, + ]; + } + + static AuthenticationChallengeResponse decode(Object result) { + result as List; + return AuthenticationChallengeResponse( + disposition: NSUrlSessionAuthChallengeDisposition.values[result[0]! as int], + credentialIdentifier: result[1] as int?, + ); + } +} + class _WKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { const _WKWebsiteDataStoreHostApiCodec(); @override @@ -688,7 +746,7 @@ class _WKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -709,15 +767,12 @@ class WKWebsiteDataStoreHostApi { static const MessageCodec codec = _WKWebsiteDataStoreHostApiCodec(); - Future createFromWebViewConfiguration( - int arg_identifier, int arg_configurationIdentifier) async { + Future createFromWebViewConfiguration(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -736,8 +791,7 @@ class WKWebsiteDataStoreHostApi { Future createDefaultDataStore(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -757,19 +811,12 @@ class WKWebsiteDataStoreHostApi { } } - Future removeDataOfTypes( - int arg_identifier, - List arg_dataTypes, - double arg_modificationTimeInSecondsSinceEpoch) async { + Future removeDataOfTypes(int arg_identifier, List arg_dataTypes, double arg_modificationTimeInSecondsSinceEpoch) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send([ - arg_identifier, - arg_dataTypes, - arg_modificationTimeInSecondsSinceEpoch - ]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_dataTypes, arg_modificationTimeInSecondsSinceEpoch]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -807,11 +854,10 @@ class UIViewHostApi { Future setBackgroundColor(int arg_identifier, int? arg_value) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_value]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_value]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -830,11 +876,10 @@ class UIViewHostApi { Future setOpaque(int arg_identifier, bool arg_opaque) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_opaque]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_opaque]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -865,15 +910,12 @@ class UIScrollViewHostApi { static const MessageCodec codec = StandardMessageCodec(); - Future createFromWebView( - int arg_identifier, int arg_webViewIdentifier) async { + Future createFromWebView(int arg_identifier, int arg_webViewIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_webViewIdentifier]) - as List?; + await channel.send([arg_identifier, arg_webViewIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -892,8 +934,7 @@ class UIScrollViewHostApi { Future> getContentOffset(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -920,11 +961,10 @@ class UIScrollViewHostApi { Future scrollBy(int arg_identifier, double arg_x, double arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -941,14 +981,12 @@ class UIScrollViewHostApi { } } - Future setContentOffset( - int arg_identifier, double arg_x, double arg_y) async { + Future setContentOffset(int arg_identifier, double arg_x, double arg_y) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_x, arg_y]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_x, arg_y]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -981,7 +1019,7 @@ class _WKWebViewConfigurationHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1000,13 +1038,11 @@ class WKWebViewConfigurationHostApi { : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = - _WKWebViewConfigurationHostApiCodec(); + static const MessageCodec codec = _WKWebViewConfigurationHostApiCodec(); Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1026,15 +1062,12 @@ class WKWebViewConfigurationHostApi { } } - Future createFromWebView( - int arg_identifier, int arg_webViewIdentifier) async { + Future createFromWebView(int arg_identifier, int arg_webViewIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_webViewIdentifier]) - as List?; + await channel.send([arg_identifier, arg_webViewIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1051,14 +1084,12 @@ class WKWebViewConfigurationHostApi { } } - Future setAllowsInlineMediaPlayback( - int arg_identifier, bool arg_allow) async { + Future setAllowsInlineMediaPlayback(int arg_identifier, bool arg_allow) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_allow]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_allow]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1075,14 +1106,12 @@ class WKWebViewConfigurationHostApi { } } - Future setLimitsNavigationsToAppBoundDomains( - int arg_identifier, bool arg_limit) async { + Future setLimitsNavigationsToAppBoundDomains(int arg_identifier, bool arg_limit) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_limit]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_limit]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1099,14 +1128,12 @@ class WKWebViewConfigurationHostApi { } } - Future setMediaTypesRequiringUserActionForPlayback(int arg_identifier, - List arg_types) async { + Future setMediaTypesRequiringUserActionForPlayback(int arg_identifier, List arg_types) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_types]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_types]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1132,19 +1159,17 @@ abstract class WKWebViewConfigurationFlutterApi { void create(int identifier); - static void setup(WKWebViewConfigurationFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WKWebViewConfigurationFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1175,9 +1200,9 @@ class _WKUserContentControllerHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKUserScriptData.decode(readValue(buffer)!); - case 129: + case 129: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1196,18 +1221,14 @@ class WKUserContentControllerHostApi { : _binaryMessenger = binaryMessenger; final BinaryMessenger? _binaryMessenger; - static const MessageCodec codec = - _WKUserContentControllerHostApiCodec(); + static const MessageCodec codec = _WKUserContentControllerHostApiCodec(); - Future createFromWebViewConfiguration( - int arg_identifier, int arg_configurationIdentifier) async { + Future createFromWebViewConfiguration(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1224,15 +1245,12 @@ class WKUserContentControllerHostApi { } } - Future addScriptMessageHandler( - int arg_identifier, int arg_handlerIdentifier, String arg_name) async { + Future addScriptMessageHandler(int arg_identifier, int arg_handlerIdentifier, String arg_name) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_handlerIdentifier, arg_name]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_handlerIdentifier, arg_name]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1249,14 +1267,12 @@ class WKUserContentControllerHostApi { } } - Future removeScriptMessageHandler( - int arg_identifier, String arg_name) async { + Future removeScriptMessageHandler(int arg_identifier, String arg_name) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_name]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_name]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1275,8 +1291,7 @@ class WKUserContentControllerHostApi { Future removeAllScriptMessageHandlers(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1296,14 +1311,12 @@ class WKUserContentControllerHostApi { } } - Future addUserScript( - int arg_identifier, WKUserScriptData arg_userScript) async { + Future addUserScript(int arg_identifier, WKUserScriptData arg_userScript) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_userScript]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_userScript]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1322,8 +1335,7 @@ class WKUserContentControllerHostApi { Future removeAllUserScripts(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1357,15 +1369,12 @@ class WKPreferencesHostApi { static const MessageCodec codec = StandardMessageCodec(); - Future createFromWebViewConfiguration( - int arg_identifier, int arg_configurationIdentifier) async { + Future createFromWebViewConfiguration(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1382,14 +1391,12 @@ class WKPreferencesHostApi { } } - Future setJavaScriptEnabled( - int arg_identifier, bool arg_enabled) async { + Future setJavaScriptEnabled(int arg_identifier, bool arg_enabled) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_enabled]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_enabled]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1422,8 +1429,7 @@ class WKScriptMessageHandlerHostApi { Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1459,7 +1465,7 @@ class _WKScriptMessageHandlerFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKScriptMessageData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1471,25 +1477,21 @@ class _WKScriptMessageHandlerFlutterApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?language=objc. abstract class WKScriptMessageHandlerFlutterApi { - static const MessageCodec codec = - _WKScriptMessageHandlerFlutterApiCodec(); + static const MessageCodec codec = _WKScriptMessageHandlerFlutterApiCodec(); - void didReceiveScriptMessage(int identifier, - int userContentControllerIdentifier, WKScriptMessageData message); + void didReceiveScriptMessage(int identifier, int userContentControllerIdentifier, WKScriptMessageData message); - static void setup(WKScriptMessageHandlerFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(WKScriptMessageHandlerFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1497,12 +1499,10 @@ abstract class WKScriptMessageHandlerFlutterApi { final int? arg_userContentControllerIdentifier = (args[1] as int?); assert(arg_userContentControllerIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null, expected non-null int.'); - final WKScriptMessageData? arg_message = - (args[2] as WKScriptMessageData?); + final WKScriptMessageData? arg_message = (args[2] as WKScriptMessageData?); assert(arg_message != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerFlutterApi.didReceiveScriptMessage was null, expected non-null WKScriptMessageData.'); - api.didReceiveScriptMessage(arg_identifier!, - arg_userContentControllerIdentifier!, arg_message!); + api.didReceiveScriptMessage(arg_identifier!, arg_userContentControllerIdentifier!, arg_message!); return; }); } @@ -1525,8 +1525,7 @@ class WKNavigationDelegateHostApi { Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1551,21 +1550,24 @@ class _WKNavigationDelegateFlutterApiCodec extends StandardMessageCodec { const _WKNavigationDelegateFlutterApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is NSErrorData) { + if (value is AuthenticationChallengeResponse) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is NSUrlRequestData) { + } else if (value is NSErrorData) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is WKFrameInfoData) { + } else if (value is NSUrlRequestData) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionData) { + } else if (value is WKFrameInfoData) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionPolicyEnumData) { + } else if (value is WKNavigationActionData) { buffer.putUint8(132); writeValue(buffer, value.encode()); + } else if (value is WKNavigationActionPolicyEnumData) { + buffer.putUint8(133); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -1574,15 +1576,17 @@ class _WKNavigationDelegateFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: + return AuthenticationChallengeResponse.decode(readValue(buffer)!); + case 129: return NSErrorData.decode(readValue(buffer)!); - case 129: + case 130: return NSUrlRequestData.decode(readValue(buffer)!); - case 130: + case 131: return WKFrameInfoData.decode(readValue(buffer)!); - case 131: + case 132: return WKNavigationActionData.decode(readValue(buffer)!); - case 132: + case 133: return WKNavigationActionPolicyEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1594,41 +1598,33 @@ class _WKNavigationDelegateFlutterApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc. abstract class WKNavigationDelegateFlutterApi { - static const MessageCodec codec = - _WKNavigationDelegateFlutterApiCodec(); + static const MessageCodec codec = _WKNavigationDelegateFlutterApiCodec(); void didFinishNavigation(int identifier, int webViewIdentifier, String? url); - void didStartProvisionalNavigation( - int identifier, int webViewIdentifier, String? url); + void didStartProvisionalNavigation(int identifier, int webViewIdentifier, String? url); - Future decidePolicyForNavigationAction( - int identifier, - int webViewIdentifier, - WKNavigationActionData navigationAction); + Future decidePolicyForNavigationAction(int identifier, int webViewIdentifier, WKNavigationActionData navigationAction); - void didFailNavigation( - int identifier, int webViewIdentifier, NSErrorData error); + void didFailNavigation(int identifier, int webViewIdentifier, NSErrorData error); - void didFailProvisionalNavigation( - int identifier, int webViewIdentifier, NSErrorData error); + void didFailProvisionalNavigation(int identifier, int webViewIdentifier, NSErrorData error); - void webViewWebContentProcessDidTerminate( - int identifier, int webViewIdentifier); + void webViewWebContentProcessDidTerminate(int identifier, int webViewIdentifier); - static void setup(WKNavigationDelegateFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + Future didReceiveAuthenticationChallenge(int identifier, int webViewIdentifier, int challengeIdentifier); + + static void setup(WKNavigationDelegateFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1637,23 +1633,21 @@ abstract class WKNavigationDelegateFlutterApi { assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFinishNavigation was null, expected non-null int.'); final String? arg_url = (args[2] as String?); - api.didFinishNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_url); + api.didFinishNavigation(arg_identifier!, arg_webViewIdentifier!, arg_url); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1662,23 +1656,21 @@ abstract class WKNavigationDelegateFlutterApi { assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didStartProvisionalNavigation was null, expected non-null int.'); final String? arg_url = (args[2] as String?); - api.didStartProvisionalNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_url); + api.didStartProvisionalNavigation(arg_identifier!, arg_webViewIdentifier!, arg_url); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1686,28 +1678,24 @@ abstract class WKNavigationDelegateFlutterApi { final int? arg_webViewIdentifier = (args[1] as int?); assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null, expected non-null int.'); - final WKNavigationActionData? arg_navigationAction = - (args[2] as WKNavigationActionData?); + final WKNavigationActionData? arg_navigationAction = (args[2] as WKNavigationActionData?); assert(arg_navigationAction != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.decidePolicyForNavigationAction was null, expected non-null WKNavigationActionData.'); - final WKNavigationActionPolicyEnumData output = - await api.decidePolicyForNavigationAction(arg_identifier!, - arg_webViewIdentifier!, arg_navigationAction!); + final WKNavigationActionPolicyEnumData output = await api.decidePolicyForNavigationAction(arg_identifier!, arg_webViewIdentifier!, arg_navigationAction!); return output; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1718,23 +1706,21 @@ abstract class WKNavigationDelegateFlutterApi { final NSErrorData? arg_error = (args[2] as NSErrorData?); assert(arg_error != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailNavigation was null, expected non-null NSErrorData.'); - api.didFailNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_error!); + api.didFailNavigation(arg_identifier!, arg_webViewIdentifier!, arg_error!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1745,23 +1731,21 @@ abstract class WKNavigationDelegateFlutterApi { final NSErrorData? arg_error = (args[2] as NSErrorData?); assert(arg_error != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didFailProvisionalNavigation was null, expected non-null NSErrorData.'); - api.didFailProvisionalNavigation( - arg_identifier!, arg_webViewIdentifier!, arg_error!); + api.didFailProvisionalNavigation(arg_identifier!, arg_webViewIdentifier!, arg_error!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1769,12 +1753,36 @@ abstract class WKNavigationDelegateFlutterApi { final int? arg_webViewIdentifier = (args[1] as int?); assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.webViewWebContentProcessDidTerminate was null, expected non-null int.'); - api.webViewWebContentProcessDidTerminate( - arg_identifier!, arg_webViewIdentifier!); + api.webViewWebContentProcessDidTerminate(arg_identifier!, arg_webViewIdentifier!); return; }); } } + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge 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_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge was null, expected non-null int.'); + final int? arg_webViewIdentifier = (args[1] as int?); + assert(arg_webViewIdentifier != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge was null, expected non-null int.'); + final int? arg_challengeIdentifier = (args[2] as int?); + assert(arg_challengeIdentifier != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateFlutterApi.didReceiveAuthenticationChallenge was null, expected non-null int.'); + final AuthenticationChallengeResponse output = await api.didReceiveAuthenticationChallenge(arg_identifier!, arg_webViewIdentifier!, arg_challengeIdentifier!); + return output; + }); + } + } } } @@ -1793,7 +1801,7 @@ class _NSObjectHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1816,8 +1824,7 @@ class NSObjectHostApi { Future dispose(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -1837,21 +1844,12 @@ class NSObjectHostApi { } } - Future addObserver( - int arg_identifier, - int arg_observerIdentifier, - String arg_keyPath, - List arg_options) async { + Future addObserver(int arg_identifier, int arg_observerIdentifier, String arg_keyPath, List arg_options) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send([ - arg_identifier, - arg_observerIdentifier, - arg_keyPath, - arg_options - ]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_observerIdentifier, arg_keyPath, arg_options]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1868,15 +1866,12 @@ class NSObjectHostApi { } } - Future removeObserver(int arg_identifier, int arg_observerIdentifier, - String arg_keyPath) async { + Future removeObserver(int arg_identifier, int arg_observerIdentifier, String arg_keyPath) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel.send( - [arg_identifier, arg_observerIdentifier, arg_keyPath]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_observerIdentifier, arg_keyPath]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -1912,9 +1907,9 @@ class _NSObjectFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSKeyValueChangeKeyEnumData.decode(readValue(buffer)!); - case 129: + case 129: return ObjectOrIdentifier.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1928,28 +1923,21 @@ class _NSObjectFlutterApiCodec extends StandardMessageCodec { abstract class NSObjectFlutterApi { static const MessageCodec codec = _NSObjectFlutterApiCodec(); - void observeValue( - int identifier, - String keyPath, - int objectIdentifier, - List changeKeys, - List changeValues); + void observeValue(int identifier, String keyPath, int objectIdentifier, List changeKeys, List changeValues); void dispose(int identifier); - static void setup(NSObjectFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(NSObjectFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1960,31 +1948,27 @@ abstract class NSObjectFlutterApi { final int? arg_objectIdentifier = (args[2] as int?); assert(arg_objectIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null, expected non-null int.'); - final List? arg_changeKeys = - (args[3] as List?)?.cast(); + final List? arg_changeKeys = (args[3] as List?)?.cast(); assert(arg_changeKeys != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null, expected non-null List.'); - final List? arg_changeValues = - (args[4] as List?)?.cast(); + final List? arg_changeValues = (args[4] as List?)?.cast(); assert(arg_changeValues != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.observeValue was null, expected non-null List.'); - api.observeValue(arg_identifier!, arg_keyPath!, arg_objectIdentifier!, - arg_changeKeys!, arg_changeValues!); + api.observeValue(arg_identifier!, arg_keyPath!, arg_objectIdentifier!, arg_changeKeys!, arg_changeValues!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectFlutterApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2001,60 +1985,63 @@ class _WKWebViewHostApiCodec extends StandardMessageCodec { const _WKWebViewHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is NSErrorData) { + if (value is AuthenticationChallengeResponse) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookieData) { + } else if (value is NSErrorData) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookiePropertyKeyEnumData) { + } else if (value is NSHttpCookieData) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueChangeKeyEnumData) { + } else if (value is NSHttpCookiePropertyKeyEnumData) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueObservingOptionsEnumData) { + } else if (value is NSKeyValueChangeKeyEnumData) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is NSUrlRequestData) { + } else if (value is NSKeyValueObservingOptionsEnumData) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is ObjectOrIdentifier) { + } else if (value is NSUrlRequestData) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is WKAudiovisualMediaTypeEnumData) { + } else if (value is ObjectOrIdentifier) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is WKFrameInfoData) { + } else if (value is WKAudiovisualMediaTypeEnumData) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is WKMediaCaptureTypeData) { + } else if (value is WKFrameInfoData) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionData) { + } else if (value is WKMediaCaptureTypeData) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionPolicyEnumData) { + } else if (value is WKNavigationActionData) { buffer.putUint8(139); writeValue(buffer, value.encode()); - } else if (value is WKPermissionDecisionData) { + } else if (value is WKNavigationActionPolicyEnumData) { buffer.putUint8(140); writeValue(buffer, value.encode()); - } else if (value is WKScriptMessageData) { + } else if (value is WKPermissionDecisionData) { buffer.putUint8(141); writeValue(buffer, value.encode()); - } else if (value is WKSecurityOriginData) { + } else if (value is WKScriptMessageData) { buffer.putUint8(142); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptData) { + } else if (value is WKSecurityOriginData) { buffer.putUint8(143); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptInjectionTimeEnumData) { + } else if (value is WKUserScriptData) { buffer.putUint8(144); writeValue(buffer, value.encode()); - } else if (value is WKWebsiteDataTypeEnumData) { + } else if (value is WKUserScriptInjectionTimeEnumData) { buffer.putUint8(145); writeValue(buffer, value.encode()); + } else if (value is WKWebsiteDataTypeEnumData) { + buffer.putUint8(146); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -2063,41 +2050,43 @@ class _WKWebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: + return AuthenticationChallengeResponse.decode(readValue(buffer)!); + case 129: return NSErrorData.decode(readValue(buffer)!); - case 129: + case 130: return NSHttpCookieData.decode(readValue(buffer)!); - case 130: + case 131: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); - case 131: + case 132: return NSKeyValueChangeKeyEnumData.decode(readValue(buffer)!); - case 132: + case 133: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); - case 133: + case 134: return NSUrlRequestData.decode(readValue(buffer)!); - case 134: + case 135: return ObjectOrIdentifier.decode(readValue(buffer)!); - case 135: + case 136: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); - case 136: + case 137: return WKFrameInfoData.decode(readValue(buffer)!); - case 137: + case 138: return WKMediaCaptureTypeData.decode(readValue(buffer)!); - case 138: + case 139: return WKNavigationActionData.decode(readValue(buffer)!); - case 139: + case 140: return WKNavigationActionPolicyEnumData.decode(readValue(buffer)!); - case 140: + case 141: return WKPermissionDecisionData.decode(readValue(buffer)!); - case 141: + case 142: return WKScriptMessageData.decode(readValue(buffer)!); - case 142: + case 143: return WKSecurityOriginData.decode(readValue(buffer)!); - case 143: + case 144: return WKUserScriptData.decode(readValue(buffer)!); - case 144: + case 145: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); - case 145: + case 146: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2118,15 +2107,12 @@ class WKWebViewHostApi { static const MessageCodec codec = _WKWebViewHostApiCodec(); - Future create( - int arg_identifier, int arg_configurationIdentifier) async { + Future create(int arg_identifier, int arg_configurationIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_configurationIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_configurationIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2143,15 +2129,12 @@ class WKWebViewHostApi { } } - Future setUIDelegate( - int arg_identifier, int? arg_uiDelegateIdentifier) async { + Future setUIDelegate(int arg_identifier, int? arg_uiDelegateIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_uiDelegateIdentifier]) - as List?; + await channel.send([arg_identifier, arg_uiDelegateIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2168,15 +2151,12 @@ class WKWebViewHostApi { } } - Future setNavigationDelegate( - int arg_identifier, int? arg_navigationDelegateIdentifier) async { + Future setNavigationDelegate(int arg_identifier, int? arg_navigationDelegateIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_navigationDelegateIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_navigationDelegateIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2195,8 +2175,7 @@ class WKWebViewHostApi { Future getUrl(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2218,8 +2197,7 @@ class WKWebViewHostApi { Future getEstimatedProgress(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2244,14 +2222,12 @@ class WKWebViewHostApi { } } - Future loadRequest( - int arg_identifier, NSUrlRequestData arg_request) async { + Future loadRequest(int arg_identifier, NSUrlRequestData arg_request) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_request]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_request]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2268,15 +2244,12 @@ class WKWebViewHostApi { } } - Future loadHtmlString( - int arg_identifier, String arg_string, String? arg_baseUrl) async { + Future loadHtmlString(int arg_identifier, String arg_string, String? arg_baseUrl) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_string, arg_baseUrl]) - as List?; + await channel.send([arg_identifier, arg_string, arg_baseUrl]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2293,15 +2266,12 @@ class WKWebViewHostApi { } } - Future loadFileUrl( - int arg_identifier, String arg_url, String arg_readAccessUrl) async { + Future loadFileUrl(int arg_identifier, String arg_url, String arg_readAccessUrl) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_url, arg_readAccessUrl]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_url, arg_readAccessUrl]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2320,11 +2290,10 @@ class WKWebViewHostApi { Future loadFlutterAsset(int arg_identifier, String arg_key) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_key]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_key]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2343,8 +2312,7 @@ class WKWebViewHostApi { Future canGoBack(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2371,8 +2339,7 @@ class WKWebViewHostApi { Future canGoForward(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2399,8 +2366,7 @@ class WKWebViewHostApi { Future goBack(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2422,8 +2388,7 @@ class WKWebViewHostApi { Future goForward(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2445,8 +2410,7 @@ class WKWebViewHostApi { Future reload(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2468,8 +2432,7 @@ class WKWebViewHostApi { Future getTitle(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2489,14 +2452,12 @@ class WKWebViewHostApi { } } - Future setAllowsBackForwardNavigationGestures( - int arg_identifier, bool arg_allow) async { + Future setAllowsBackForwardNavigationGestures(int arg_identifier, bool arg_allow) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_allow]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_allow]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2513,14 +2474,12 @@ class WKWebViewHostApi { } } - Future setCustomUserAgent( - int arg_identifier, String? arg_userAgent) async { + Future setCustomUserAgent(int arg_identifier, String? arg_userAgent) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_userAgent]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_userAgent]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2537,15 +2496,12 @@ class WKWebViewHostApi { } } - Future evaluateJavaScript( - int arg_identifier, String arg_javaScriptString) async { + Future evaluateJavaScript(int arg_identifier, String arg_javaScriptString) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', codec, binaryMessenger: _binaryMessenger); final List? replyList = - await channel.send([arg_identifier, arg_javaScriptString]) - as List?; + await channel.send([arg_identifier, arg_javaScriptString]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2564,11 +2520,10 @@ class WKWebViewHostApi { Future setInspectable(int arg_identifier, bool arg_inspectable) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_inspectable]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_inspectable]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2587,8 +2542,7 @@ class WKWebViewHostApi { Future getCustomUserAgent(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2624,8 +2578,7 @@ class WKUIDelegateHostApi { Future create(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2676,17 +2629,17 @@ class _WKUIDelegateFlutterApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSUrlRequestData.decode(readValue(buffer)!); - case 129: + case 129: return WKFrameInfoData.decode(readValue(buffer)!); - case 130: + case 130: return WKMediaCaptureTypeData.decode(readValue(buffer)!); - case 131: + case 131: return WKNavigationActionData.decode(readValue(buffer)!); - case 132: + case 132: return WKPermissionDecisionData.decode(readValue(buffer)!); - case 133: + case 133: return WKSecurityOriginData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2700,30 +2653,22 @@ class _WKUIDelegateFlutterApiCodec extends StandardMessageCodec { abstract class WKUIDelegateFlutterApi { static const MessageCodec codec = _WKUIDelegateFlutterApiCodec(); - void onCreateWebView(int identifier, int webViewIdentifier, - int configurationIdentifier, WKNavigationActionData navigationAction); + void onCreateWebView(int identifier, int webViewIdentifier, int configurationIdentifier, WKNavigationActionData navigationAction); /// Callback to Dart function `WKUIDelegate.requestMediaCapturePermission`. - Future requestMediaCapturePermission( - int identifier, - int webViewIdentifier, - WKSecurityOriginData origin, - WKFrameInfoData frame, - WKMediaCaptureTypeData type); - - static void setup(WKUIDelegateFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { + Future requestMediaCapturePermission(int identifier, int webViewIdentifier, WKSecurityOriginData origin, WKFrameInfoData frame, WKMediaCaptureTypeData type); + + static void setup(WKUIDelegateFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2734,27 +2679,24 @@ abstract class WKUIDelegateFlutterApi { final int? arg_configurationIdentifier = (args[2] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null, expected non-null int.'); - final WKNavigationActionData? arg_navigationAction = - (args[3] as WKNavigationActionData?); + final WKNavigationActionData? arg_navigationAction = (args[3] as WKNavigationActionData?); assert(arg_navigationAction != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.onCreateWebView was null, expected non-null WKNavigationActionData.'); - api.onCreateWebView(arg_identifier!, arg_webViewIdentifier!, - arg_configurationIdentifier!, arg_navigationAction!); + api.onCreateWebView(arg_identifier!, arg_webViewIdentifier!, arg_configurationIdentifier!, arg_navigationAction!); return; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2762,20 +2704,16 @@ abstract class WKUIDelegateFlutterApi { final int? arg_webViewIdentifier = (args[1] as int?); assert(arg_webViewIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null int.'); - final WKSecurityOriginData? arg_origin = - (args[2] as WKSecurityOriginData?); + final WKSecurityOriginData? arg_origin = (args[2] as WKSecurityOriginData?); assert(arg_origin != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null WKSecurityOriginData.'); final WKFrameInfoData? arg_frame = (args[3] as WKFrameInfoData?); assert(arg_frame != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null WKFrameInfoData.'); - final WKMediaCaptureTypeData? arg_type = - (args[4] as WKMediaCaptureTypeData?); + final WKMediaCaptureTypeData? arg_type = (args[4] as WKMediaCaptureTypeData?); assert(arg_type != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateFlutterApi.requestMediaCapturePermission was null, expected non-null WKMediaCaptureTypeData.'); - final WKPermissionDecisionData output = - await api.requestMediaCapturePermission(arg_identifier!, - arg_webViewIdentifier!, arg_origin!, arg_frame!, arg_type!); + final WKPermissionDecisionData output = await api.requestMediaCapturePermission(arg_identifier!, arg_webViewIdentifier!, arg_origin!, arg_frame!, arg_type!); return output; }); } @@ -2801,9 +2739,9 @@ class _WKHttpCookieStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSHttpCookieData.decode(readValue(buffer)!); - case 129: + case 129: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -2824,15 +2762,12 @@ class WKHttpCookieStoreHostApi { static const MessageCodec codec = _WKHttpCookieStoreHostApiCodec(); - Future createFromWebsiteDataStore( - int arg_identifier, int arg_websiteDataStoreIdentifier) async { + Future createFromWebsiteDataStore(int arg_identifier, int arg_websiteDataStoreIdentifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_websiteDataStoreIdentifier]) - as List?; + final List? replyList = + await channel.send([arg_identifier, arg_websiteDataStoreIdentifier]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2849,14 +2784,12 @@ class WKHttpCookieStoreHostApi { } } - Future setCookie( - int arg_identifier, NSHttpCookieData arg_cookie) async { + Future setCookie(int arg_identifier, NSHttpCookieData arg_cookie) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', codec, binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_identifier, arg_cookie]) as List?; + final List? replyList = + await channel.send([arg_identifier, arg_cookie]) as List?; if (replyList == null) { throw PlatformException( code: 'channel-error', @@ -2893,8 +2826,7 @@ class NSUrlHostApi { Future getAbsoluteString(int arg_identifier) async { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', codec, binaryMessenger: _binaryMessenger); final List? replyList = await channel.send([arg_identifier]) as List?; @@ -2930,15 +2862,14 @@ abstract class NSUrlFlutterApi { static void setup(NSUrlFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { channel.setMessageHandler(null); } else { channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlFlutterApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -2950,3 +2881,122 @@ abstract class NSUrlFlutterApi { } } } + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +class NSUrlCredentialHostApi { + /// Constructor for [NSUrlCredentialHostApi]. The [binaryMessenger] named argument is + /// available for dependency injection. If it is left null, the default + /// BinaryMessenger will be used which routes to the host platform. + NSUrlCredentialHostApi({BinaryMessenger? binaryMessenger}) + : _binaryMessenger = binaryMessenger; + final BinaryMessenger? _binaryMessenger; + + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new native instance and add it to the `InstanceManager`. + Future createWithUser(int arg_identifier, String arg_user, String arg_password, NSUrlCredentialPersistence arg_persistence) async { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser', codec, + binaryMessenger: _binaryMessenger); + final List? replyList = + await channel.send([arg_identifier, arg_user, arg_password, arg_persistence.index]) as List?; + if (replyList == null) { + throw PlatformException( + code: 'channel-error', + message: 'Unable to establish connection on channel.', + ); + } else if (replyList.length > 1) { + throw PlatformException( + code: replyList[0]! as String, + message: replyList[1] as String?, + details: replyList[2], + ); + } else { + return; + } + } +} + +/// Flutter API for `NSUrlProtectionSpace`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +abstract class NSUrlProtectionSpaceFlutterApi { + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int identifier, String? host, String? realm, String? authenticationMethod); + + static void setup(NSUrlProtectionSpaceFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlProtectionSpaceFlutterApi.create', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlProtectionSpaceFlutterApi.create 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_wkwebview.NSUrlProtectionSpaceFlutterApi.create was null, expected non-null int.'); + final String? arg_host = (args[1] as String?); + final String? arg_realm = (args[2] as String?); + final String? arg_authenticationMethod = (args[3] as String?); + api.create(arg_identifier!, arg_host, arg_realm, arg_authenticationMethod); + return; + }); + } + } + } +} + +/// Flutter API for `NSUrlAuthenticationChallenge`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +abstract class NSUrlAuthenticationChallengeFlutterApi { + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new Dart instance and add it to the `InstanceManager`. + void create(int identifier, int protectionSpaceIdentifier); + + static void setup(NSUrlAuthenticationChallengeFlutterApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + channel.setMessageHandler(null); + } else { + channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create 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_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create was null, expected non-null int.'); + final int? arg_protectionSpaceIdentifier = (args[1] as int?); + assert(arg_protectionSpaceIdentifier != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlAuthenticationChallengeFlutterApi.create was null, expected non-null int.'); + api.create(arg_identifier!, arg_protectionSpaceIdentifier!); + return; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart index 3fe1a57c1b2..131b6111d02 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart @@ -9,6 +9,9 @@ import '../common/instance_manager.dart'; import '../common/weak_reference_utils.dart'; import 'foundation_api_impls.dart'; +export 'foundation_api_impls.dart' + show NSUrlSessionAuthChallengeDisposition, NSUrlCredentialPersistence; + /// The values that can be returned in a change map. /// /// Wraps [NSKeyValueObservingOptions](https://developer.apple.com/documentation/foundation/nskeyvalueobservingoptions?language=objc). @@ -387,3 +390,120 @@ class NSObject with Copyable { ); } } + +/// An authentication credential consisting of information specific to the type +/// of credential and the type of persistent storage to use, if any. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +class NSUrlCredential extends NSObject { + /// Creates a URL credential instance for internet password authentication + /// with a given user name and password, using a given persistence setting. + NSUrlCredential.withUser({ + required String user, + required String password, + required NSUrlCredentialPersistence persistence, + @visibleForTesting super.binaryMessenger, + @visibleForTesting super.instanceManager, + }) : _urlCredentialApi = NSUrlCredentialHostApiImpl( + binaryMessenger: binaryMessenger, instanceManager: instanceManager), + super.detached() { + // Ensures Flutter Apis are setup. + FoundationFlutterApis.instance.ensureSetUp(); + _urlCredentialApi.createWithUserFromInstances( + this, + user, + password, + persistence, + ); + } + + /// Instantiates a [NSUrlCredential] without creating and attaching to an + /// instance of the associated native class. + /// + /// This should only be used outside of tests by subclasses created by this + /// library or to create a copy for an [InstanceManager]. + @protected + NSUrlCredential.detached({super.binaryMessenger, super.instanceManager}) + : _urlCredentialApi = NSUrlCredentialHostApiImpl( + binaryMessenger: binaryMessenger, instanceManager: instanceManager), + super.detached(); + + final NSUrlCredentialHostApiImpl _urlCredentialApi; + + @override + NSObject copy() { + return NSUrlCredential.detached( + binaryMessenger: _urlCredentialApi.binaryMessenger, + instanceManager: _urlCredentialApi.instanceManager, + ); + } +} + +/// A server or an area on a server, commonly referred to as a realm, that +/// requires authentication. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +class NSUrlProtectionSpace extends NSObject { + /// Instantiates a [NSUrlProtectionSpace] without creating and attaching to an + /// instance of the associated native class. + /// + /// This should only be used outside of tests by subclasses created by this + /// library or to create a copy for an [InstanceManager]. + @protected + NSUrlProtectionSpace.detached({ + required this.host, + required this.realm, + required this.authenticationMethod, + super.binaryMessenger, + super.instanceManager, + }) : super.detached(); + + /// The receiver’s host. + final String? host; + + /// The receiver’s authentication realm. + final String? realm; + + /// The authentication method used by the receiver. + final String? authenticationMethod; + + @override + NSUrlProtectionSpace copy() { + return NSUrlProtectionSpace.detached( + host: host, + realm: realm, + authenticationMethod: authenticationMethod, + ); + } +} + +/// Use HTTP basic authentication for this protection space. +const String urlAuthenticationMethodHTTPBasic = + 'NSURLAuthenticationMethodHTTPBasic'; + +/// A challenge from a server requiring authentication from the client. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +class NSUrlAuthenticationChallenge extends NSObject { + /// Instantiates a [NSUrlAuthenticationChallenge] without creating and + /// attaching to an instance of the associated native class. + /// + /// This should only be used outside of tests by subclasses created by this + /// library or to create a copy for an [InstanceManager]. + @protected + NSUrlAuthenticationChallenge.detached({ + required this.protectionSpace, + super.binaryMessenger, + super.instanceManager, + }) : super.detached(); + + /// The receiver’s protection space. + late final NSUrlProtectionSpace protectionSpace; + + @override + NSUrlAuthenticationChallenge copy() { + return NSUrlAuthenticationChallenge.detached( + protectionSpace: protectionSpace, + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart index 4f73c082558..7bd1259e2f7 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation_api_impls.dart @@ -9,6 +9,9 @@ import '../common/instance_manager.dart'; import '../common/web_kit.g.dart'; import 'foundation.dart'; +export '../common/web_kit.g.dart' + show NSUrlSessionAuthChallengeDisposition, NSUrlCredentialPersistence; + Iterable _toNSKeyValueObservingOptionsEnumData( Iterable options, @@ -56,6 +59,14 @@ class FoundationFlutterApis { url = NSUrlFlutterApiImpl( binaryMessenger: binaryMessenger, instanceManager: instanceManager, + ), + urlProtectionSpace = NSUrlProtectionSpaceFlutterApiImpl( + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, + ), + urlAuthenticationChallenge = NSUrlAuthenticationChallengeFlutterApiImpl( + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, ); static FoundationFlutterApis _instance = FoundationFlutterApis(); @@ -82,6 +93,14 @@ class FoundationFlutterApis { @visibleForTesting final NSUrlFlutterApiImpl url; + /// Flutter Api for [NSUrlProtectionSpace]. + @visibleForTesting + final NSUrlProtectionSpaceFlutterApiImpl urlProtectionSpace; + + /// Flutter Api for [NSUrlAuthenticationChallenge]. + @visibleForTesting + final NSUrlAuthenticationChallengeFlutterApiImpl urlAuthenticationChallenge; + /// Ensures all the Flutter APIs have been set up to receive calls from native code. void ensureSetUp() { if (!_hasBeenSetUp) { @@ -90,6 +109,14 @@ class FoundationFlutterApis { binaryMessenger: _binaryMessenger, ); NSUrlFlutterApi.setup(url, binaryMessenger: _binaryMessenger); + NSUrlProtectionSpaceFlutterApi.setup( + urlProtectionSpace, + binaryMessenger: _binaryMessenger, + ); + NSUrlAuthenticationChallengeFlutterApi.setup( + urlAuthenticationChallenge, + binaryMessenger: _binaryMessenger, + ); _hasBeenSetUp = true; } } @@ -249,3 +276,121 @@ class NSUrlFlutterApiImpl implements NSUrlFlutterApi { ); } } + +/// Host api implementation for [NSUrlCredential]. +class NSUrlCredentialHostApiImpl extends NSUrlCredentialHostApi { + /// Constructs an [NSUrlCredentialHostApiImpl]. + NSUrlCredentialHostApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? NSObject.globalInstanceManager, + super(binaryMessenger: binaryMessenger); + + /// Sends binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with Objective-C objects. + final InstanceManager instanceManager; + + /// Calls [createWithUser] with the ids of the provided object instances. + Future createWithUserFromInstances( + NSUrlCredential instance, + String user, + String password, + NSUrlCredentialPersistence persistence, + ) { + return createWithUser( + instanceManager.addDartCreatedInstance(instance), + user, + password, + persistence, + ); + } +} + +/// Flutter API implementation for [NSUrlProtectionSpace]. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +@protected +class NSUrlProtectionSpaceFlutterApiImpl + implements NSUrlProtectionSpaceFlutterApi { + /// Constructs a [NSUrlProtectionSpaceFlutterApiImpl]. + NSUrlProtectionSpaceFlutterApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? NSObject.globalInstanceManager; + + /// Receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager instanceManager; + + @override + void create( + int identifier, + String? host, + String? realm, + String? authenticationMethod, + ) { + instanceManager.addHostCreatedInstance( + NSUrlProtectionSpace.detached( + host: host, + realm: realm, + authenticationMethod: authenticationMethod, + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, + ), + identifier, + ); + } +} + +/// Flutter API implementation for [NSUrlAuthenticationChallenge]. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +@protected +class NSUrlAuthenticationChallengeFlutterApiImpl + implements NSUrlAuthenticationChallengeFlutterApi { + /// Constructs a [NSUrlAuthenticationChallengeFlutterApiImpl]. + NSUrlAuthenticationChallengeFlutterApiImpl({ + this.binaryMessenger, + InstanceManager? instanceManager, + }) : instanceManager = instanceManager ?? NSObject.globalInstanceManager; + + /// Receives binary data across the Flutter platform barrier. + /// + /// If it is null, the default BinaryMessenger will be used which routes to + /// the host platform. + final BinaryMessenger? binaryMessenger; + + /// Maintains instances stored to communicate with native language objects. + final InstanceManager instanceManager; + + @override + void create( + int identifier, + int protectionSpaceIdentifier, + ) { + instanceManager.addHostCreatedInstance( + NSUrlAuthenticationChallenge.detached( + protectionSpace: instanceManager.getInstanceWithWeakReference( + protectionSpaceIdentifier, + )!, + binaryMessenger: binaryMessenger, + instanceManager: instanceManager, + ), + identifier, + ); + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart index db9f41c2851..b5bfcd9d346 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit.dart @@ -830,6 +830,7 @@ class WKNavigationDelegate extends NSObject { this.didFailNavigation, this.didFailProvisionalNavigation, this.webViewWebContentProcessDidTerminate, + this.didReceiveAuthenticationChallenge, super.observeValue, super.binaryMessenger, super.instanceManager, @@ -855,6 +856,7 @@ class WKNavigationDelegate extends NSObject { this.didFailNavigation, this.didFailProvisionalNavigation, this.webViewWebContentProcessDidTerminate, + this.didReceiveAuthenticationChallenge, super.observeValue, super.binaryMessenger, super.instanceManager, @@ -901,6 +903,16 @@ class WKNavigationDelegate extends NSObject { /// {@macro webview_flutter_wkwebview.foundation.callbacks} final void Function(WKWebView webView)? webViewWebContentProcessDidTerminate; + /// Called when the delegate needs a response to an authentication challenge. + final void Function( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + )? didReceiveAuthenticationChallenge; + @override WKNavigationDelegate copy() { return WKNavigationDelegate.detached( @@ -911,6 +923,7 @@ class WKNavigationDelegate extends NSObject { didFailProvisionalNavigation: didFailProvisionalNavigation, webViewWebContentProcessDidTerminate: webViewWebContentProcessDidTerminate, + didReceiveAuthenticationChallenge: didReceiveAuthenticationChallenge, observeValue: observeValue, binaryMessenger: _navigationDelegateApi.binaryMessenger, instanceManager: _navigationDelegateApi.instanceManager, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart index ee545d45b71..bb86f2b5bcc 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/web_kit/web_kit_api_impls.dart @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:async'; + import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; @@ -904,6 +906,53 @@ class WKNavigationDelegateFlutterApiImpl as WKWebView, ); } + + @override + Future didReceiveAuthenticationChallenge( + int identifier, + int webViewIdentifier, + int challengeIdentifier, + ) async { + final void Function( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ), + )? function = _getDelegate(identifier).didReceiveAuthenticationChallenge; + + if (function == null) { + return AuthenticationChallengeResponse( + disposition: NSUrlSessionAuthChallengeDisposition.rejectProtectionSpace, + ); + } + + final Completer responseCompleter = + Completer(); + + function.call( + instanceManager.getInstanceWithWeakReference(webViewIdentifier)! + as WKWebView, + instanceManager.getInstanceWithWeakReference(challengeIdentifier)! + as NSUrlAuthenticationChallenge, + ( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) { + responseCompleter.complete( + AuthenticationChallengeResponse( + disposition: disposition, + credentialIdentifier: credential != null + ? instanceManager.getIdentifier(credential) + : null, + ), + ); + }, + ); + + return responseCompleter.future; + } } /// Host api implementation for [WKWebView]. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart index 68ce9132021..4b0c4ccd993 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_proxy.dart @@ -71,6 +71,14 @@ class WebKitProxy { void Function(WKWebView webView, NSError error)? didFailProvisionalNavigation, void Function(WKWebView webView)? webViewWebContentProcessDidTerminate, + void Function( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + )? didReceiveAuthenticationChallenge, }) createNavigationDelegate; /// Constructs a [WKUIDelegate]. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index d15b2825182..897093a1004 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -948,6 +948,54 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ); } }, + didReceiveAuthenticationChallenge: ( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + ) { + if (challenge.protectionSpace.authenticationMethod == + urlAuthenticationMethodHTTPBasic) { + final void Function(HttpBasicAuthRequest)? callback = + weakThis.target?._onHttpAuthRequest; + final String? host = challenge.protectionSpace.host; + final String? realm = challenge.protectionSpace.realm; + + if (callback != null && host != null && realm != null) { + callback( + HttpBasicAuthRequest( + onProceed: (String username, String password) { + return completionHandler( + NSUrlSessionAuthChallengeDisposition.useCredential, + NSUrlCredential.withUser( + user: username, + password: password, + persistence: NSUrlCredentialPersistence.session, + ), + ); + }, + onCancel: () { + completionHandler( + NSUrlSessionAuthChallengeDisposition + .cancelAuthenticationChallenge, + null, + ); + }, + host: host, + realm: realm, + ), + ); + return; + } + } + + completionHandler( + NSUrlSessionAuthChallengeDisposition.performDefaultHandling, + null, + ); + }, ); } @@ -960,6 +1008,7 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { WebResourceErrorCallback? _onWebResourceError; NavigationRequestCallback? _onNavigationRequest; UrlChangeCallback? _onUrlChange; + HttpAuthRequestCallback? _onHttpAuthRequest; @override Future setOnPageFinished(PageEventCallback onPageFinished) async { @@ -994,6 +1043,13 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async { _onUrlChange = onUrlChange; } + + @override + Future setOnHttpBasicAuthRequest( + HttpAuthRequestCallback onHttpAuthRequest, + ) async { + _onHttpAuthRequest = onHttpAuthRequest; + } } /// WebKit implementation of [PlatformWebViewPermissionRequest]. 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 8e9e16ff425..c4894692f57 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/pigeons/web_kit.dart @@ -258,6 +258,58 @@ class WKMediaCaptureTypeData { late WKMediaCaptureType value; } +/// Responses to an authentication challenge. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition?language=objc. +enum NSUrlSessionAuthChallengeDisposition { + /// Use the specified credential, which may be nil. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeusecredential?language=objc. + useCredential, + + /// Use the default handling for the challenge as though this delegate method + /// were not implemented. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengeperformdefaulthandling?language=objc. + performDefaultHandling, + + /// Cancel the entire request. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengecancelauthenticationchallenge?language=objc. + cancelAuthenticationChallenge, + + /// Reject this challenge, and call the authentication delegate method again + /// with the next authentication protection space. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlsessionauthchallengedisposition/nsurlsessionauthchallengerejectprotectionspace?language=objc. + rejectProtectionSpace, +} + +/// Specifies how long a credential will be kept. +enum NSUrlCredentialPersistence { + /// The credential should not be stored. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencenone?language=objc. + none, + + /// The credential should be stored only for this session. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistenceforsession?language=objc. + session, + + /// The credential should be stored in the keychain. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencepermanent?language=objc. + permanent, + + /// The credential should be stored permanently in the keychain, and in + /// addition should be distributed to other devices based on the owning Apple + /// ID. + /// + /// See https://developer.apple.com/documentation/foundation/nsurlcredentialpersistence/nsurlcredentialpersistencesynchronizable?language=objc. + synchronizable, +} + /// Mirror of NSURLRequest. /// /// See https://developer.apple.com/documentation/foundation/nsurlrequest?language=objc. @@ -343,6 +395,11 @@ class ObjectOrIdentifier { late bool isIdentifier; } +class AuthenticationChallengeResponse { + late NSUrlSessionAuthChallengeDisposition disposition; + late int? credentialIdentifier; +} + /// Mirror of WKWebsiteDataStore. /// /// See https://developer.apple.com/documentation/webkit/wkwebsitedatastore?language=objc. @@ -582,6 +639,16 @@ abstract class WKNavigationDelegateFlutterApi { int identifier, int webViewIdentifier, ); + + @async + @ObjCSelector( + 'didReceiveAuthenticationChallengeForDelegateWithIdentifier:webViewIdentifier:challengeIdentifier:', + ) + AuthenticationChallengeResponse didReceiveAuthenticationChallenge( + int identifier, + int webViewIdentifier, + int challengeIdentifier, + ); } /// Mirror of NSObject. @@ -781,3 +848,57 @@ abstract class NSUrlFlutterApi { @ObjCSelector('createWithIdentifier:') void create(int identifier); } + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +@HostApi(dartHostTestHandler: 'TestNSUrlCredentialHostApi') +abstract class NSUrlCredentialHostApi { + /// Create a new native instance and add it to the `InstanceManager`. + @ObjCSelector( + 'createWithUserWithIdentifier:user:password:persistence:', + ) + void createWithUser( + int identifier, + String user, + String password, + NSUrlCredentialPersistence persistence, + ); +} + +/// Flutter API for `NSUrlProtectionSpace`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlprotectionspace?language=objc. +@FlutterApi() +abstract class NSUrlProtectionSpaceFlutterApi { + /// Create a new Dart instance and add it to the `InstanceManager`. + @ObjCSelector('createWithIdentifier:host:realm:authenticationMethod:') + void create( + int identifier, + String? host, + String? realm, + String? authenticationMethod, + ); +} + +/// Flutter API for `NSUrlAuthenticationChallenge`. +/// +/// This class may handle instantiating and adding Dart instances that are +/// attached to a native instance or receiving callback methods from an +/// overridden native class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlauthenticationchallenge?language=objc. +@FlutterApi() +abstract class NSUrlAuthenticationChallengeFlutterApi { + /// Create a new Dart instance and add it to the `InstanceManager`. + @ObjCSelector('createWithIdentifier:protectionSpaceIdentifier:') + void create(int identifier, int protectionSpaceIdentifier); +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index 2d469bd8382..69540b39eb1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_wkwebview description: A Flutter plugin that provides a WebView widget based on Apple's WKWebView control. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_wkwebview issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 3.9.2 +version: 3.10.0 environment: sdk: ">=2.19.0 <4.0.0" @@ -20,7 +20,7 @@ dependencies: flutter: sdk: flutter path: ^1.8.0 - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 dev_dependencies: build_runner: ^2.1.5 @@ -33,3 +33,8 @@ topics: - html - webview - webview-flutter + +# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. +# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins +dependency_overrides: + {webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart index 03e5b6cbca5..4d1138275c2 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/common/test_web_kit.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v10.1.4), do not edit directly. +// Autogenerated from Pigeon (v10.1.6), 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, unnecessary_import // ignore_for_file: avoid_relative_lib_imports @@ -28,7 +28,7 @@ class _TestWKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -40,37 +40,26 @@ class _TestWKWebsiteDataStoreHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkwebsitedatastore?language=objc. abstract class TestWKWebsiteDataStoreHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKWebsiteDataStoreHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKWebsiteDataStoreHostApiCodec(); - void createFromWebViewConfiguration( - int identifier, int configurationIdentifier); + void createFromWebViewConfiguration(int identifier, int configurationIdentifier); void createDefaultDataStore(int identifier); - Future removeDataOfTypes( - int identifier, - List dataTypes, - double modificationTimeInSecondsSinceEpoch); + Future removeDataOfTypes(int identifier, List dataTypes, double modificationTimeInSecondsSinceEpoch); - static void setup(TestWKWebsiteDataStoreHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKWebsiteDataStoreHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -78,26 +67,21 @@ abstract class TestWKWebsiteDataStoreHostApi { final int? arg_configurationIdentifier = (args[1] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createFromWebViewConfiguration was null, expected non-null int.'); - api.createFromWebViewConfiguration( - arg_identifier!, arg_configurationIdentifier!); + api.createFromWebViewConfiguration(arg_identifier!, arg_configurationIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.createDefaultDataStore was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -109,32 +93,25 @@ abstract class TestWKWebsiteDataStoreHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes 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_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null, expected non-null int.'); - final List? arg_dataTypes = - (args[1] as List?)?.cast(); + final List? arg_dataTypes = (args[1] as List?)?.cast(); assert(arg_dataTypes != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null, expected non-null List.'); - final double? arg_modificationTimeInSecondsSinceEpoch = - (args[2] as double?); + final double? arg_modificationTimeInSecondsSinceEpoch = (args[2] as double?); assert(arg_modificationTimeInSecondsSinceEpoch != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebsiteDataStoreHostApi.removeDataOfTypes was null, expected non-null double.'); - final bool output = await api.removeDataOfTypes(arg_identifier!, - arg_dataTypes!, arg_modificationTimeInSecondsSinceEpoch!); + final bool output = await api.removeDataOfTypes(arg_identifier!, arg_dataTypes!, arg_modificationTimeInSecondsSinceEpoch!); return [output]; }); } @@ -146,30 +123,24 @@ abstract class TestWKWebsiteDataStoreHostApi { /// /// See https://developer.apple.com/documentation/uikit/uiview?language=objc. abstract class TestUIViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void setBackgroundColor(int identifier, int? value); void setOpaque(int identifier, bool opaque); - static void setup(TestUIViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestUIViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setBackgroundColor was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -182,18 +153,14 @@ abstract class TestUIViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIViewHostApi.setOpaque was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -213,8 +180,7 @@ abstract class TestUIViewHostApi { /// /// See https://developer.apple.com/documentation/uikit/uiscrollview?language=objc. abstract class TestUIScrollViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void createFromWebView(int identifier, int webViewIdentifier); @@ -225,22 +191,17 @@ abstract class TestUIScrollViewHostApi { void setContentOffset(int identifier, double x, double y); - static void setup(TestUIScrollViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestUIScrollViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.createFromWebView was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -255,18 +216,14 @@ abstract class TestUIScrollViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.getContentOffset was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -278,18 +235,14 @@ abstract class TestUIScrollViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.scrollBy was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -307,18 +260,14 @@ abstract class TestUIScrollViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.UIScrollViewHostApi.setContentOffset was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -352,7 +301,7 @@ class _TestWKWebViewConfigurationHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -364,10 +313,8 @@ class _TestWKWebViewConfigurationHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkwebviewconfiguration?language=objc. abstract class TestWKWebViewConfigurationHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKWebViewConfigurationHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKWebViewConfigurationHostApiCodec(); void create(int identifier); @@ -377,25 +324,19 @@ abstract class TestWKWebViewConfigurationHostApi { void setLimitsNavigationsToAppBoundDomains(int identifier, bool limit); - void setMediaTypesRequiringUserActionForPlayback( - int identifier, List types); + void setMediaTypesRequiringUserActionForPlayback(int identifier, List types); - static void setup(TestWKWebViewConfigurationHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKWebViewConfigurationHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -407,18 +348,14 @@ abstract class TestWKWebViewConfigurationHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.createFromWebView was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -433,18 +370,14 @@ abstract class TestWKWebViewConfigurationHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setAllowsInlineMediaPlayback was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -459,18 +392,14 @@ abstract class TestWKWebViewConfigurationHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -478,37 +407,29 @@ abstract class TestWKWebViewConfigurationHostApi { final bool? arg_limit = (args[1] as bool?); assert(arg_limit != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setLimitsNavigationsToAppBoundDomains was null, expected non-null bool.'); - api.setLimitsNavigationsToAppBoundDomains( - arg_identifier!, arg_limit!); + api.setLimitsNavigationsToAppBoundDomains(arg_identifier!, arg_limit!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback 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_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback was null, expected non-null int.'); - final List? arg_types = - (args[1] as List?) - ?.cast(); + final List? arg_types = (args[1] as List?)?.cast(); assert(arg_types != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewConfigurationHostApi.setMediaTypesRequiringUserActionForPlayback was null, expected non-null List.'); - api.setMediaTypesRequiringUserActionForPlayback( - arg_identifier!, arg_types!); + api.setMediaTypesRequiringUserActionForPlayback(arg_identifier!, arg_types!); return []; }); } @@ -534,9 +455,9 @@ class _TestWKUserContentControllerHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return WKUserScriptData.decode(readValue(buffer)!); - case 129: + case 129: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -548,16 +469,12 @@ class _TestWKUserContentControllerHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkusercontentcontroller?language=objc. abstract class TestWKUserContentControllerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKUserContentControllerHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKUserContentControllerHostApiCodec(); - void createFromWebViewConfiguration( - int identifier, int configurationIdentifier); + void createFromWebViewConfiguration(int identifier, int configurationIdentifier); - void addScriptMessageHandler( - int identifier, int handlerIdentifier, String name); + void addScriptMessageHandler(int identifier, int handlerIdentifier, String name); void removeScriptMessageHandler(int identifier, String name); @@ -567,22 +484,17 @@ abstract class TestWKUserContentControllerHostApi { void removeAllUserScripts(int identifier); - static void setup(TestWKUserContentControllerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKUserContentControllerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -590,26 +502,21 @@ abstract class TestWKUserContentControllerHostApi { final int? arg_configurationIdentifier = (args[1] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.createFromWebViewConfiguration was null, expected non-null int.'); - api.createFromWebViewConfiguration( - arg_identifier!, arg_configurationIdentifier!); + api.createFromWebViewConfiguration(arg_identifier!, arg_configurationIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -620,26 +527,21 @@ abstract class TestWKUserContentControllerHostApi { final String? arg_name = (args[2] as String?); assert(arg_name != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addScriptMessageHandler was null, expected non-null String.'); - api.addScriptMessageHandler( - arg_identifier!, arg_handlerIdentifier!, arg_name!); + api.addScriptMessageHandler(arg_identifier!, arg_handlerIdentifier!, arg_name!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeScriptMessageHandler was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -654,18 +556,14 @@ abstract class TestWKUserContentControllerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllScriptMessageHandlers was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -677,24 +575,19 @@ abstract class TestWKUserContentControllerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript 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_wkwebview.WKUserContentControllerHostApi.addUserScript was null, expected non-null int.'); - final WKUserScriptData? arg_userScript = - (args[1] as WKUserScriptData?); + final WKUserScriptData? arg_userScript = (args[1] as WKUserScriptData?); assert(arg_userScript != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.addUserScript was null, expected non-null WKUserScriptData.'); api.addUserScript(arg_identifier!, arg_userScript!); @@ -704,18 +597,14 @@ abstract class TestWKUserContentControllerHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUserContentControllerHostApi.removeAllUserScripts was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -732,31 +621,24 @@ abstract class TestWKUserContentControllerHostApi { /// /// See https://developer.apple.com/documentation/webkit/wkpreferences?language=objc. abstract class TestWKPreferencesHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); - void createFromWebViewConfiguration( - int identifier, int configurationIdentifier); + void createFromWebViewConfiguration(int identifier, int configurationIdentifier); void setJavaScriptEnabled(int identifier, bool enabled); - static void setup(TestWKPreferencesHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKPreferencesHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -764,26 +646,21 @@ abstract class TestWKPreferencesHostApi { final int? arg_configurationIdentifier = (args[1] as int?); assert(arg_configurationIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.createFromWebViewConfiguration was null, expected non-null int.'); - api.createFromWebViewConfiguration( - arg_identifier!, arg_configurationIdentifier!); + api.createFromWebViewConfiguration(arg_identifier!, arg_configurationIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKPreferencesHostApi.setJavaScriptEnabled was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -803,28 +680,22 @@ abstract class TestWKPreferencesHostApi { /// /// See https://developer.apple.com/documentation/webkit/wkscriptmessagehandler?language=objc. abstract class TestWKScriptMessageHandlerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int identifier); - static void setup(TestWKScriptMessageHandlerHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKScriptMessageHandlerHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKScriptMessageHandlerHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -841,28 +712,22 @@ abstract class TestWKScriptMessageHandlerHostApi { /// /// See https://developer.apple.com/documentation/webkit/wknavigationdelegate?language=objc. abstract class TestWKNavigationDelegateHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int identifier); - static void setup(TestWKNavigationDelegateHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKNavigationDelegateHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKNavigationDelegateHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -890,7 +755,7 @@ class _TestNSObjectHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -902,33 +767,26 @@ class _TestNSObjectHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/objectivec/nsobject. abstract class TestNSObjectHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestNSObjectHostApiCodec(); void dispose(int identifier); - void addObserver(int identifier, int observerIdentifier, String keyPath, - List options); + void addObserver(int identifier, int observerIdentifier, String keyPath, List options); void removeObserver(int identifier, int observerIdentifier, String keyPath); - static void setup(TestNSObjectHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestNSObjectHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.dispose was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -940,18 +798,14 @@ abstract class TestNSObjectHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -962,31 +816,24 @@ abstract class TestNSObjectHostApi { final String? arg_keyPath = (args[2] as String?); assert(arg_keyPath != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null, expected non-null String.'); - final List? arg_options = - (args[3] as List?) - ?.cast(); + final List? arg_options = (args[3] as List?)?.cast(); assert(arg_options != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.addObserver was null, expected non-null List.'); - api.addObserver(arg_identifier!, arg_observerIdentifier!, - arg_keyPath!, arg_options!); + api.addObserver(arg_identifier!, arg_observerIdentifier!, arg_keyPath!, arg_options!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -997,8 +844,7 @@ abstract class TestNSObjectHostApi { final String? arg_keyPath = (args[2] as String?); assert(arg_keyPath != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSObjectHostApi.removeObserver was null, expected non-null String.'); - api.removeObserver( - arg_identifier!, arg_observerIdentifier!, arg_keyPath!); + api.removeObserver(arg_identifier!, arg_observerIdentifier!, arg_keyPath!); return []; }); } @@ -1010,60 +856,63 @@ class _TestWKWebViewHostApiCodec extends StandardMessageCodec { const _TestWKWebViewHostApiCodec(); @override void writeValue(WriteBuffer buffer, Object? value) { - if (value is NSErrorData) { + if (value is AuthenticationChallengeResponse) { buffer.putUint8(128); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookieData) { + } else if (value is NSErrorData) { buffer.putUint8(129); writeValue(buffer, value.encode()); - } else if (value is NSHttpCookiePropertyKeyEnumData) { + } else if (value is NSHttpCookieData) { buffer.putUint8(130); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueChangeKeyEnumData) { + } else if (value is NSHttpCookiePropertyKeyEnumData) { buffer.putUint8(131); writeValue(buffer, value.encode()); - } else if (value is NSKeyValueObservingOptionsEnumData) { + } else if (value is NSKeyValueChangeKeyEnumData) { buffer.putUint8(132); writeValue(buffer, value.encode()); - } else if (value is NSUrlRequestData) { + } else if (value is NSKeyValueObservingOptionsEnumData) { buffer.putUint8(133); writeValue(buffer, value.encode()); - } else if (value is ObjectOrIdentifier) { + } else if (value is NSUrlRequestData) { buffer.putUint8(134); writeValue(buffer, value.encode()); - } else if (value is WKAudiovisualMediaTypeEnumData) { + } else if (value is ObjectOrIdentifier) { buffer.putUint8(135); writeValue(buffer, value.encode()); - } else if (value is WKFrameInfoData) { + } else if (value is WKAudiovisualMediaTypeEnumData) { buffer.putUint8(136); writeValue(buffer, value.encode()); - } else if (value is WKMediaCaptureTypeData) { + } else if (value is WKFrameInfoData) { buffer.putUint8(137); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionData) { + } else if (value is WKMediaCaptureTypeData) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is WKNavigationActionPolicyEnumData) { + } else if (value is WKNavigationActionData) { buffer.putUint8(139); writeValue(buffer, value.encode()); - } else if (value is WKPermissionDecisionData) { + } else if (value is WKNavigationActionPolicyEnumData) { buffer.putUint8(140); writeValue(buffer, value.encode()); - } else if (value is WKScriptMessageData) { + } else if (value is WKPermissionDecisionData) { buffer.putUint8(141); writeValue(buffer, value.encode()); - } else if (value is WKSecurityOriginData) { + } else if (value is WKScriptMessageData) { buffer.putUint8(142); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptData) { + } else if (value is WKSecurityOriginData) { buffer.putUint8(143); writeValue(buffer, value.encode()); - } else if (value is WKUserScriptInjectionTimeEnumData) { + } else if (value is WKUserScriptData) { buffer.putUint8(144); writeValue(buffer, value.encode()); - } else if (value is WKWebsiteDataTypeEnumData) { + } else if (value is WKUserScriptInjectionTimeEnumData) { buffer.putUint8(145); writeValue(buffer, value.encode()); + } else if (value is WKWebsiteDataTypeEnumData) { + buffer.putUint8(146); + writeValue(buffer, value.encode()); } else { super.writeValue(buffer, value); } @@ -1072,41 +921,43 @@ class _TestWKWebViewHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: + return AuthenticationChallengeResponse.decode(readValue(buffer)!); + case 129: return NSErrorData.decode(readValue(buffer)!); - case 129: + case 130: return NSHttpCookieData.decode(readValue(buffer)!); - case 130: + case 131: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); - case 131: + case 132: return NSKeyValueChangeKeyEnumData.decode(readValue(buffer)!); - case 132: + case 133: return NSKeyValueObservingOptionsEnumData.decode(readValue(buffer)!); - case 133: + case 134: return NSUrlRequestData.decode(readValue(buffer)!); - case 134: + case 135: return ObjectOrIdentifier.decode(readValue(buffer)!); - case 135: + case 136: return WKAudiovisualMediaTypeEnumData.decode(readValue(buffer)!); - case 136: + case 137: return WKFrameInfoData.decode(readValue(buffer)!); - case 137: + case 138: return WKMediaCaptureTypeData.decode(readValue(buffer)!); - case 138: + case 139: return WKNavigationActionData.decode(readValue(buffer)!); - case 139: + case 140: return WKNavigationActionPolicyEnumData.decode(readValue(buffer)!); - case 140: + case 141: return WKPermissionDecisionData.decode(readValue(buffer)!); - case 141: + case 142: return WKScriptMessageData.decode(readValue(buffer)!); - case 142: + case 143: return WKSecurityOriginData.decode(readValue(buffer)!); - case 143: + case 144: return WKUserScriptData.decode(readValue(buffer)!); - case 144: + case 145: return WKUserScriptInjectionTimeEnumData.decode(readValue(buffer)!); - case 145: + case 146: return WKWebsiteDataTypeEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1118,8 +969,7 @@ class _TestWKWebViewHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkwebview?language=objc. abstract class TestWKWebViewHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestWKWebViewHostApiCodec(); void create(int identifier, int configurationIdentifier); @@ -1162,22 +1012,17 @@ abstract class TestWKWebViewHostApi { String? getCustomUserAgent(int identifier); - static void setup(TestWKWebViewHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKWebViewHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1192,18 +1037,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setUIDelegate was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1216,43 +1057,34 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setNavigationDelegate 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_wkwebview.WKWebViewHostApi.setNavigationDelegate was null, expected non-null int.'); final int? arg_navigationDelegateIdentifier = (args[1] as int?); - api.setNavigationDelegate( - arg_identifier!, arg_navigationDelegateIdentifier); + api.setNavigationDelegate(arg_identifier!, arg_navigationDelegateIdentifier); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getUrl was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1264,18 +1096,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getEstimatedProgress was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1287,18 +1115,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadRequest was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1313,18 +1137,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadHtmlString was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1340,18 +1160,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFileUrl was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1369,18 +1185,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.loadFlutterAsset was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1395,18 +1207,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoBack was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1418,18 +1226,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.canGoForward was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1441,18 +1245,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goBack was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1464,18 +1264,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.goForward was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1487,18 +1283,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.reload was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1510,18 +1302,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getTitle was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1533,18 +1321,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1552,26 +1336,21 @@ abstract class TestWKWebViewHostApi { final bool? arg_allow = (args[1] as bool?); assert(arg_allow != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setAllowsBackForwardNavigationGestures was null, expected non-null bool.'); - api.setAllowsBackForwardNavigationGestures( - arg_identifier!, arg_allow!); + api.setAllowsBackForwardNavigationGestures(arg_identifier!, arg_allow!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setCustomUserAgent was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1584,18 +1363,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1603,26 +1378,21 @@ abstract class TestWKWebViewHostApi { final String? arg_javaScriptString = (args[1] as String?); assert(arg_javaScriptString != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.evaluateJavaScript was null, expected non-null String.'); - final Object? output = await api.evaluateJavaScript( - arg_identifier!, arg_javaScriptString!); + final Object? output = await api.evaluateJavaScript(arg_identifier!, arg_javaScriptString!); return [output]; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.setInspectable was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1637,18 +1407,14 @@ abstract class TestWKWebViewHostApi { } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKWebViewHostApi.getCustomUserAgent was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1665,28 +1431,22 @@ abstract class TestWKWebViewHostApi { /// /// See https://developer.apple.com/documentation/webkit/wkuidelegate?language=objc. abstract class TestWKUIDelegateHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int identifier); - static void setup(TestWKUIDelegateHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKUIDelegateHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKUIDelegateHostApi.create was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1717,9 +1477,9 @@ class _TestWKHttpCookieStoreHostApiCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 128: + case 128: return NSHttpCookieData.decode(readValue(buffer)!); - case 129: + case 129: return NSHttpCookiePropertyKeyEnumData.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -1731,32 +1491,24 @@ class _TestWKHttpCookieStoreHostApiCodec extends StandardMessageCodec { /// /// See https://developer.apple.com/documentation/webkit/wkhttpcookiestore?language=objc. abstract class TestWKHttpCookieStoreHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = - _TestWKHttpCookieStoreHostApiCodec(); + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = _TestWKHttpCookieStoreHostApiCodec(); - void createFromWebsiteDataStore( - int identifier, int websiteDataStoreIdentifier); + void createFromWebsiteDataStore(int identifier, int websiteDataStoreIdentifier); Future setCookie(int identifier, NSHttpCookieData cookie); - static void setup(TestWKHttpCookieStoreHostApi? api, - {BinaryMessenger? binaryMessenger}) { + static void setup(TestWKHttpCookieStoreHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1764,26 +1516,21 @@ abstract class TestWKHttpCookieStoreHostApi { final int? arg_websiteDataStoreIdentifier = (args[1] as int?); assert(arg_websiteDataStoreIdentifier != null, 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.createFromWebsiteDataStore was null, expected non-null int.'); - api.createFromWebsiteDataStore( - arg_identifier!, arg_websiteDataStoreIdentifier!); + api.createFromWebsiteDataStore(arg_identifier!, arg_websiteDataStoreIdentifier!); return []; }); } } { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.WKHttpCookieStoreHostApi.setCookie was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1807,8 +1554,7 @@ abstract class TestWKHttpCookieStoreHostApi { /// /// See https://developer.apple.com/documentation/foundation/nsurl?language=objc. abstract class TestNSUrlHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); String? getAbsoluteString(int identifier); @@ -1816,18 +1562,14 @@ abstract class TestNSUrlHostApi { static void setup(TestNSUrlHostApi? api, {BinaryMessenger? binaryMessenger}) { { final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', - codec, + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString', codec, binaryMessenger: binaryMessenger); if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString was null.'); + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlHostApi.getAbsoluteString was null.'); final List args = (message as List?)!; final int? arg_identifier = (args[0] as int?); assert(arg_identifier != null, @@ -1839,3 +1581,49 @@ abstract class TestNSUrlHostApi { } } } + +/// Host API for `NSUrlCredential`. +/// +/// This class may handle instantiating and adding native object instances that +/// are attached to a Dart instance or handle method calls on the associated +/// native class or an instance of the class. +/// +/// See https://developer.apple.com/documentation/foundation/nsurlcredential?language=objc. +abstract class TestNSUrlCredentialHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => TestDefaultBinaryMessengerBinding.instance; + static const MessageCodec codec = StandardMessageCodec(); + + /// Create a new native instance and add it to the `InstanceManager`. + void createWithUser(int identifier, String user, String password, NSUrlCredentialPersistence persistence); + + static void setup(TestNSUrlCredentialHostApi? api, {BinaryMessenger? binaryMessenger}) { + { + final BasicMessageChannel channel = BasicMessageChannel( + 'dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser', codec, + binaryMessenger: binaryMessenger); + if (api == null) { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, null); + } else { + _testBinaryMessengerBinding!.defaultBinaryMessenger.setMockDecodedMessageHandler(channel, (Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser 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_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null int.'); + final String? arg_user = (args[1] as String?); + assert(arg_user != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null String.'); + final String? arg_password = (args[2] as String?); + assert(arg_password != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null String.'); + final NSUrlCredentialPersistence? arg_persistence = args[3] == null ? null : NSUrlCredentialPersistence.values[args[3] as int]; + assert(arg_persistence != null, + 'Argument for dev.flutter.pigeon.webview_flutter_wkwebview.NSUrlCredentialHostApi.createWithUser was null, expected non-null NSUrlCredentialPersistence.'); + api.createWithUser(arg_identifier!, arg_user!, arg_password!, arg_persistence!); + return []; + }); + } + } + } +} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart index ea2e37e2cda..345c6fad677 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.dart @@ -17,6 +17,7 @@ import 'foundation_test.mocks.dart'; @GenerateMocks([ TestNSObjectHostApi, + TestNSUrlCredentialHostApi, TestNSUrlHostApi, ]) void main() { @@ -245,6 +246,102 @@ void main() { expect(instanceManager.getInstanceWithWeakReference(0), isA()); }); }); + + group('NSUrlCredential', () { + tearDown(() { + TestNSUrlCredentialHostApi.setup(null); + }); + + test('HostApi createWithUser', () { + final MockTestNSUrlCredentialHostApi mockApi = + MockTestNSUrlCredentialHostApi(); + TestNSUrlCredentialHostApi.setup(mockApi); + + final InstanceManager instanceManager = InstanceManager( + onWeakReferenceRemoved: (_) {}, + ); + + const String user = 'testString'; + const String password = 'testString2'; + + const NSUrlCredentialPersistence persistence = + NSUrlCredentialPersistence.permanent; + + final NSUrlCredential instance = NSUrlCredential.withUser( + user: user, + password: password, + persistence: persistence, + instanceManager: instanceManager, + ); + + verify(mockApi.createWithUser( + instanceManager.getIdentifier(instance), + user, + password, + persistence, + )); + }); + }); + + group('NSUrlProtectionSpace', () { + test('FlutterAPI create', () { + final InstanceManager instanceManager = InstanceManager( + onWeakReferenceRemoved: (_) {}, + ); + + final NSUrlProtectionSpaceFlutterApiImpl api = + NSUrlProtectionSpaceFlutterApiImpl( + instanceManager: instanceManager, + ); + + const int instanceIdentifier = 0; + + api.create( + instanceIdentifier, + 'testString', + 'testString', + 'testAuthenticationMethod', + ); + + expect( + instanceManager.getInstanceWithWeakReference(instanceIdentifier), + isA(), + ); + }); + }); + + group('NSUrlAuthenticationChallenge', () { + test('FlutterAPI create', () { + final InstanceManager instanceManager = InstanceManager( + onWeakReferenceRemoved: (_) {}, + ); + + final NSUrlAuthenticationChallengeFlutterApiImpl api = + NSUrlAuthenticationChallengeFlutterApiImpl( + instanceManager: instanceManager, + ); + + const int instanceIdentifier = 0; + + const int protectionSpaceIdentifier = 1; + instanceManager.addHostCreatedInstance( + NSUrlProtectionSpace.detached( + host: null, + realm: null, + authenticationMethod: null, + instanceManager: instanceManager, + ), + protectionSpaceIdentifier, + ); + + api.create(instanceIdentifier, protectionSpaceIdentifier); + + expect( + instanceManager.getInstanceWithWeakReference(instanceIdentifier), + isA(), + ); + }); + }); }); test('NSError', () { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart index 60cb608302b..94306ea553e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/foundation/foundation_test.mocks.dart @@ -76,6 +76,36 @@ class MockTestNSObjectHostApi extends _i1.Mock ); } +/// A class which mocks [TestNSUrlCredentialHostApi]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockTestNSUrlCredentialHostApi extends _i1.Mock + implements _i2.TestNSUrlCredentialHostApi { + MockTestNSUrlCredentialHostApi() { + _i1.throwOnMissingStub(this); + } + + @override + void createWithUser( + int? identifier, + String? user, + String? password, + _i3.NSUrlCredentialPersistence? persistence, + ) => + super.noSuchMethod( + Invocation.method( + #createWithUser, + [ + identifier, + user, + password, + persistence, + ], + ), + returnValueForMissingStub: null, + ); +} + /// A class which mocks [TestNSUrlHostApi]. /// /// See the documentation for Mockito's code generation for more information. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart index 98a70de7b32..2c95a52e1b9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/src/web_kit/web_kit_test.dart @@ -683,6 +683,63 @@ void main() { expect(argsCompleter.future, completion([webView])); }); + + test('didReceiveAuthenticationChallenge', () async { + WebKitFlutterApis.instance = WebKitFlutterApis( + instanceManager: instanceManager, + ); + + const int credentialIdentifier = 3; + final NSUrlCredential credential = NSUrlCredential.detached( + instanceManager: instanceManager, + ); + instanceManager.addHostCreatedInstance( + credential, + credentialIdentifier, + ); + + navigationDelegate = WKNavigationDelegate( + instanceManager: instanceManager, + didReceiveAuthenticationChallenge: ( + WKWebView webView, + NSUrlAuthenticationChallenge challenge, + void Function( + NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential, + ) completionHandler, + ) { + completionHandler( + NSUrlSessionAuthChallengeDisposition.useCredential, + credential, + ); + }, + ); + + const int challengeIdentifier = 27; + instanceManager.addHostCreatedInstance( + NSUrlAuthenticationChallenge.detached( + protectionSpace: NSUrlProtectionSpace.detached( + host: null, + realm: null, + authenticationMethod: null, + ), + instanceManager: instanceManager, + ), + challengeIdentifier, + ); + + final AuthenticationChallengeResponse response = await WebKitFlutterApis + .instance.navigationDelegate + .didReceiveAuthenticationChallenge( + instanceManager.getIdentifier(navigationDelegate)!, + instanceManager.getIdentifier(webView)!, + challengeIdentifier, + ); + + expect(response.disposition, + NSUrlSessionAuthChallengeDisposition.useCredential); + expect(response.credentialIdentifier, credentialIdentifier); + }); }); group('WKWebView', () { diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart index 4581c92b788..8f4a2f576a5 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart @@ -7,6 +7,7 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; +import 'package:webview_flutter_wkwebview/src/common/web_kit.g.dart'; import 'package:webview_flutter_wkwebview/src/foundation/foundation.dart'; import 'package:webview_flutter_wkwebview/src/web_kit/web_kit.dart'; import 'package:webview_flutter_wkwebview/src/webkit_proxy.dart'; @@ -214,6 +215,45 @@ void main() { expect(callbackRequest.url, 'https://www.google.com'); expect(callbackRequest.isMainFrame, isFalse); }); + + test('onHttpBasicAuthRequest emits host and realm', () { + final WebKitNavigationDelegate iosNavigationDelegate = + WebKitNavigationDelegate( + const WebKitNavigationDelegateCreationParams( + webKitProxy: WebKitProxy( + createNavigationDelegate: CapturingNavigationDelegate.new, + ), + ), + ); + + String? callbackHost; + String? callbackRealm; + + iosNavigationDelegate + .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + callbackHost = request.host; + callbackRealm = request.realm; + }); + + const String expectedHost = 'expectedHost'; + const String expectedRealm = 'expectedRealm'; + + CapturingNavigationDelegate + .lastCreatedDelegate.didReceiveAuthenticationChallenge!( + WKWebView.detached(), + NSUrlAuthenticationChallenge.detached( + protectionSpace: NSUrlProtectionSpace.detached( + host: expectedHost, + realm: expectedRealm, + authenticationMethod: urlAuthenticationMethodHTTPBasic, + ), + ), + (NSUrlSessionAuthChallengeDisposition disposition, + NSUrlCredential? credential) {}); + + expect(callbackHost, expectedHost); + expect(callbackRealm, expectedRealm); + }); }); } @@ -226,6 +266,7 @@ class CapturingNavigationDelegate extends WKNavigationDelegate { super.didFailProvisionalNavigation, super.decidePolicyForNavigationAction, super.webViewWebContentProcessDidTerminate, + super.didReceiveAuthenticationChallenge, }) : super.detached() { lastCreatedDelegate = this; } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart index 46badc06905..0bada4087ff 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_webview_controller_test.dart @@ -1366,6 +1366,7 @@ class CapturingNavigationDelegate extends WKNavigationDelegate { super.didFailProvisionalNavigation, super.decidePolicyForNavigationAction, super.webViewWebContentProcessDidTerminate, + super.didReceiveAuthenticationChallenge, }) : super.detached() { lastCreatedDelegate = this; } From aeb87088944ed01d3b8b298500ad290fd161cea3 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 28 Aug 2023 15:27:04 +0200 Subject: [PATCH 10/30] Apply feedback --- .../webview_flutter_test.dart | 8 ++- .../webview_flutter/example/lib/main.dart | 15 ++-- .../webview_flutter/example/pubspec.yaml | 1 - .../example/test/main_test.dart | 2 +- .../lib/src/navigation_delegate.dart | 18 ++--- .../webview_flutter/lib/webview_flutter.dart | 2 +- .../test/navigation_delegate_test.dart | 9 ++- .../webview_flutter_android/CHANGELOG.md | 2 +- .../WebViewClientHostApiImpl.java | 2 +- .../webview_flutter_test.dart | 12 ++-- .../example/lib/main.dart | 14 ++-- .../lib/src/android_webview.dart | 18 +++-- .../lib/src/android_webview_api_impls.dart | 18 +++-- .../lib/src/android_webview_controller.dart | 6 +- .../android_navigation_delegate_test.dart | 3 +- .../CHANGELOG.md | 2 +- .../lib/src/platform_navigation_delegate.dart | 7 +- .../lib/src/types/http_auth_request.dart | 71 +++++++++++++++++++ .../src/types/http_basic_auth_request.dart | 26 ------- .../lib/src/types/types.dart | 3 +- .../lib/src/types/webview_credential.dart | 20 ++++++ .../platform_navigation_delegate_test.dart | 3 +- .../webview_flutter_wkwebview/CHANGELOG.md | 2 +- .../webview_flutter_test.dart | 10 +-- .../example/lib/main.dart | 14 ++-- .../lib/src/foundation/foundation.dart | 17 ++++- .../lib/src/webkit_webview_controller.dart | 14 ++-- .../test/webkit_navigation_delegate_test.dart | 5 +- 28 files changed, 214 insertions(+), 110 deletions(-) create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart delete mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart create mode 100644 packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 41e335eab4c..528f3d9c3cc 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -17,6 +17,7 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter_android/webview_flutter_android.dart'; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; Future main() async { @@ -777,7 +778,7 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => + onHttpAuthRequest: (HttpAuthRequest request) => authRequested.complete(), ), ), @@ -798,8 +799,9 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpBasicAuthRequest: (HttpBasicAuthRequest request) => - request.onProceed('user', 'pass'), + onHttpAuthRequest: (HttpAuthRequest request) => request.onProceed( + const WebViewCredential(user: 'user', password: 'password'), + ), onPageFinished: (_) => pageFinished.complete(), ), ), diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 6c554cd18f0..35f9f1e6f1c 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -15,6 +15,7 @@ import 'package:webview_flutter/webview_flutter.dart'; // #docregion platform_imports // Import for Android features. import 'package:webview_flutter_android/webview_flutter_android.dart'; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; // Import for iOS features. import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; // #enddocregion platform_imports @@ -172,9 +173,9 @@ Page resource error: onUrlChange: (UrlChange change) { debugPrint('url change to ${change.url}'); }, - onHttpBasicAuthRequest: (HttpBasicAuthRequest request) { + onHttpAuthRequest: (HttpAuthRequest request) { debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }, ), @@ -231,7 +232,7 @@ Page resource error: ); } - Future openDialog(HttpBasicAuthRequest httpRequest) async { + Future openDialog(HttpAuthRequest httpRequest) async { final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = @@ -242,7 +243,7 @@ Page resource error: barrierDismissible: false, builder: (BuildContext context) { return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm}'), + title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), content: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, @@ -272,8 +273,10 @@ Page resource error: TextButton( onPressed: () { httpRequest.onProceed( - usernameTextController.text, - passwordTextController.text, + WebViewCredential( + user: usernameTextController.text, + password: passwordTextController.text, + ), ); Navigator.of(context).pop(); }, diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml index 7dd37c5609d..867029455aa 100644 --- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml @@ -27,7 +27,6 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter - webview_flutter_platform_interface: ^2.3.0 flutter: uses-material-design: true diff --git a/packages/webview_flutter/webview_flutter/example/test/main_test.dart b/packages/webview_flutter/webview_flutter/example/test/main_test.dart index baa7983e7ab..c4b43428ec9 100644 --- a/packages/webview_flutter/webview_flutter/example/test/main_test.dart +++ b/packages/webview_flutter/webview_flutter/example/test/main_test.dart @@ -118,7 +118,7 @@ class FakeNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async {} @override - Future setOnHttpBasicAuthRequest( + Future setOnHttpAuthRequest( HttpAuthRequestCallback handler, ) async {} } diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index 6c0c8ed301e..7aa255eb1e9 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -48,7 +48,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, - void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, + void Function(HttpAuthRequest request)? onHttpAuthRequest, }) : this.fromPlatformCreationParams( const PlatformNavigationDelegateCreationParams(), onNavigationRequest: onNavigationRequest, @@ -57,7 +57,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, - onHttpBasicAuthRequest: onHttpBasicAuthRequest, + onHttpAuthRequest: onHttpAuthRequest, ); /// Constructs a [NavigationDelegate] from creation params for a specific @@ -100,7 +100,7 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, - void Function(HttpBasicAuthRequest request)? onHttpBasicAuthRequest, + void Function(HttpAuthRequest request)? onHttpAuthRequest, }) : this.fromPlatform( PlatformNavigationDelegate(params), onNavigationRequest: onNavigationRequest, @@ -109,7 +109,7 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, - onHttpBasicAuthRequest: onHttpBasicAuthRequest, + onHttpAuthRequest: onHttpAuthRequest, ); /// Constructs a [NavigationDelegate] from a specific platform implementation. @@ -123,7 +123,7 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, - this.onHttpBasicAuthRequest, + this.onHttpAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -143,8 +143,8 @@ class NavigationDelegate { if (onUrlChange != null) { platform.setOnUrlChange(onUrlChange); } - if (onHttpBasicAuthRequest != null) { - platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest!); + if (onHttpAuthRequest != null) { + platform.setOnHttpAuthRequest(onHttpAuthRequest!); } } @@ -175,6 +175,6 @@ class NavigationDelegate { /// Invoked when a resource loading error occurred. final WebResourceErrorCallback? onWebResourceError; - /// Invoked when a resource required HTTP basic authentication. - final HttpAuthRequestCallback? onHttpBasicAuthRequest; + /// Invoked when a resource required HTTP authentication. + final HttpAuthRequestCallback? onHttpAuthRequest; } diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index 34701997a63..effd512bd92 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -6,7 +6,7 @@ library webview_flutter; export 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' show - HttpBasicAuthRequest, + HttpAuthRequest, JavaScriptConsoleMessage, JavaScriptLogLevel, JavaScriptMessage, diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart index e0aee949cea..c2bc6f230fa 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart @@ -88,17 +88,16 @@ void main() { verify(delegate.platform.setOnUrlChange(onUrlChange)); }); - test('onHttpBasicAuthRequest', () { + test('onHttpAuthRequest', () { WebViewPlatform.instance = TestWebViewPlatform(); - void onHttpBasicAuthRequest(HttpBasicAuthRequest request) {} + void onHttpAuthRequest(HttpAuthRequest request) {} final NavigationDelegate delegate = NavigationDelegate( - onHttpBasicAuthRequest: onHttpBasicAuthRequest, + onHttpAuthRequest: onHttpAuthRequest, ); - verify( - delegate.platform.setOnHttpBasicAuthRequest(onHttpBasicAuthRequest)); + verify(delegate.platform.setOnHttpAuthRequest(onHttpAuthRequest)); }); }); } diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index b257e547a61..97da44ca7ed 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,6 +1,6 @@ ## 3.13.0 -* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. ## 3.12.0 diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 30f414380c9..1ace7bfe072 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -186,7 +186,7 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } - // Handles an HTTP Basic Authentication request. + // Handles an HTTP authentication request. // // This callback is invoked when the WebView encounters a website requiring HTTP authentication. // [host] and [realm] are provided for matching against stored credentials, if any. diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index a5e2a38e851..9ed263e8dc6 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1140,8 +1140,8 @@ Future main() async { PlatformNavigationDelegate( const PlatformNavigationDelegateCreationParams(), ); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => authRequested.complete()); + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => authRequested.complete()); await controller.setPlatformNavigationDelegate(navigationDelegate); // Clear cache so that the auth request is always received and we don't get @@ -1177,12 +1177,14 @@ Future main() async { const PlatformNavigationDelegateCreationParams(), ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => request.onProceed( + const WebViewCredential(user: 'user', password: 'password'), + ), ); await controller.setPlatformNavigationDelegate(navigationDelegate); - // Clear cache so that the auth request is always received and we don't get + // Clear cache so that the auth request is always received and we do not get // a cached response. await controller.clearCache(); 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 ba6991bf206..923aadb7d68 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -162,9 +162,9 @@ Page resource error: ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); }) - ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + ..setOnHttpAuthRequest((HttpAuthRequest request) { debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -227,7 +227,7 @@ Page resource error: ); } - Future openDialog(HttpBasicAuthRequest httpRequest) async { + Future openDialog(HttpAuthRequest httpRequest) async { final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = @@ -237,7 +237,7 @@ Page resource error: context: context, builder: (BuildContext context) { return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm}'), + title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), content: Column( mainAxisSize: MainAxisSize.min, children: [ @@ -256,8 +256,10 @@ Page resource error: TextButton( onPressed: () { httpRequest.onProceed( - usernameTextController.text, - passwordTextController.text, + WebViewCredential( + user: usernameTextController.text, + password: passwordTextController.text, + ), ); Navigator.of(context).pop(); }, diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index f2ad37d698a..48cb4974f45 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -7,6 +7,7 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart' show BinaryMessenger; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'android_webview.g.dart'; import 'android_webview_api_impls.dart'; @@ -939,7 +940,7 @@ class WebViewClient extends JavaObject { final void Function(WebView webView, String url, bool isReload)? doUpdateVisitedHistory; - /// This callback is only called for requests that require HTTP basic authentication. + /// This callback is only called for requests that require HTTP authentication. final void Function( WebView webView, HttpAuthHandler handler, @@ -1508,7 +1509,7 @@ class CustomViewCallback extends JavaObject { } } -/// Represents a request for HTTP basic authentication. +/// Represents a request for HTTP authentication. /// /// Instances of this class are created by the [WebView] and passed to /// [WebViewClient.onReceivedHttpAuthRequest]. The host application must call @@ -1532,7 +1533,16 @@ class HttpAuthHandler extends JavaObject { /// Instructs the WebView to proceed with the authentication with the provided /// credentials. - Future proceed(String username, String password) { - return api.proceedFromInstance(this, username, password); + Future proceed(WebViewCredential credential) { + return api.proceedFromInstance(this, credential); + } + + /// Gets whether the credentials stored for the current host are suitable for + /// use. + /// + /// Credentials are not suitable if they have previously been rejected by the + /// server for the current request. + Future useHttpAuthUsernamePassword() { + return api.useHttpAuthUsernamePasswordFromInstance(this); } } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index dcf92be467f..404135418d7 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -5,6 +5,8 @@ import 'dart:ui'; import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; +import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' + show WebViewCredential; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -1449,13 +1451,21 @@ class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { /// Helper method to convert instance ids to objects. Future proceedFromInstance( HttpAuthHandler instance, - String username, - String password, + WebViewCredential credential, ) { return proceed( _instanceManager.getIdentifier(instance)!, - username, - password, + credential.user, + credential.password, + ); + } + + /// Helper method to convert instance ids to objects. + Future useHttpAuthUsernamePasswordFromInstance( + HttpAuthHandler instance, + ) { + return useHttpAuthUsernamePassword( + _instanceManager.getIdentifier(instance)!, ); } } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index 3988a5bf8e5..c662c2a6f83 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -1274,11 +1274,11 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { String host, String realm, ) { - final void Function(HttpBasicAuthRequest)? callback = + final void Function(HttpAuthRequest)? callback = weakThis.target?._onHttpAuthRequest; if (callback != null) { callback( - HttpBasicAuthRequest( + HttpAuthRequest( onProceed: httpAuthHandler.proceed, onCancel: httpAuthHandler.cancel, host: host, @@ -1432,7 +1432,7 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { } @override - Future setOnHttpBasicAuthRequest( + Future setOnHttpAuthRequest( HttpAuthRequestCallback onHttpAuthRequest, ) async { _onHttpAuthRequest = onHttpAuthRequest; diff --git a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart index 5efdc8e3363..3b407a8d65f 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart @@ -474,8 +474,7 @@ void main() { String? callbackHost; String? callbackRealm; - androidNavigationDelegate - .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + androidNavigationDelegate.setOnHttpAuthRequest((HttpAuthRequest request) { callbackHost = request.host; callbackRealm = request.realm; }); diff --git a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md index 37be10e472e..fee1d514031 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_platform_interface/CHANGELOG.md @@ -1,6 +1,6 @@ ## 2.7.0 -* Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`. +* Adds support for handling HTTP basic authentication requests. See `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. ## 2.6.0 diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart index 66da0b97e68..38cf7c19a2d 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/platform_navigation_delegate.dart @@ -32,7 +32,7 @@ typedef UrlChangeCallback = void Function(UrlChange change); /// Signature for callbacks that notify the host application of an /// authentication request. -typedef HttpAuthRequestCallback = void Function(HttpBasicAuthRequest request); +typedef HttpAuthRequestCallback = void Function(HttpAuthRequest request); /// An interface defining navigation events that occur on the native platform. /// @@ -138,10 +138,9 @@ abstract class PlatformNavigationDelegate extends PlatformInterface { } /// Invoked when the web view is requesting authentication. - Future setOnHttpBasicAuthRequest( - HttpAuthRequestCallback onHttpAuthRequest) { + Future setOnHttpAuthRequest(HttpAuthRequestCallback onHttpAuthRequest) { throw UnimplementedError( - 'setOnHttpBasicAuthRequest is not implemented on the current platform.', + 'setOnHttpAuthRequest is not implemented on the current platform.', ); } } diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart new file mode 100644 index 00000000000..8da22d38403 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -0,0 +1,71 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import 'package:meta/meta.dart'; + +import '../../webview_flutter_platform_interface.dart'; + +/// Defines the parameters of a pending HTTP authentication request received by +/// the webview through a [HttpAuthRequestCallback]. +/// +/// Platform specific implementations can add additional fields by extending +/// this class and providing a factory method that takes the [HttpAuthRequest] +/// as a parameter. +/// +/// {@tool sample} +/// This example demonstrates how to extend the [HttpAuthRequest] to provide +/// additional platform specific parameters. +/// +/// When extending [HttpAuthRequest], additional parameters should always accept +/// `null` or have a default value to prevent breaking changes. +/// +/// ```dart +/// @immutable +/// class WKWebViewHttpAuthRequest extends HttpAuthRequest { +/// WKWebViewHttpAuthRequest._( +/// HttpAuthRequest authRequest, +/// this.extraData, +/// ) : super( +/// onProceed: authRequest.onProceed, +/// onCancel: authRequest.onCancel, +/// host: authRequest.host, +/// realm: authRequest.realm, +/// ); +/// +/// factory WKWebViewHttpAuthRequest.fromHttpAuthRequest( +/// HttpAuthRequest authRequest, { +/// String? extraData, +/// }) { +/// return WKWebViewHttpAuthRequest._( +/// authRequest, +/// extraData: extraData, +/// ); +/// } +/// +/// final String? extraData; +/// } +/// ``` +/// {@end-tool} +@immutable +class HttpAuthRequest { + /// Creates a [HttpAuthRequest]. + const HttpAuthRequest({ + required this.onProceed, + required this.onCancel, + required this.host, + this.realm, + }); + + /// The callback to authenticate. + final void Function(WebViewCredential credential) onProceed; + + /// The callback to cancel authentication. + final void Function() onCancel; + + /// The host requiring authentication. + final String host; + + /// The realm requiring authentication. + final String? realm; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart deleted file mode 100644 index 23fed00d5e8..00000000000 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_basic_auth_request.dart +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -/// Defines the parameters of a pending HTTP basic authentication request. -class HttpBasicAuthRequest { - /// Creates a [HttpBasicAuthRequest]. - const HttpBasicAuthRequest({ - required this.onProceed, - required this.onCancel, - required this.host, - required this.realm, - }); - - /// The callback to authenticate. - final void Function(String username, String password) onProceed; - - /// The callback to cancel authentication. - final void Function() onCancel; - - /// The host requiring authentication. - final String host; - - /// The realm requiring authentication. - final String realm; -} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart index 9846248ba92..d1a074f7925 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/types.dart @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -export 'http_basic_auth_request.dart'; +export 'http_auth_request.dart'; export 'http_response_error.dart'; export 'javascript_console_message.dart'; export 'javascript_log_level.dart'; @@ -19,3 +19,4 @@ export 'platform_webview_widget_creation_params.dart'; export 'url_change.dart'; export 'web_resource_error.dart'; export 'webview_cookie.dart'; +export 'webview_credential.dart'; diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart new file mode 100644 index 00000000000..fca4e7896d7 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/webview_credential.dart @@ -0,0 +1,20 @@ +import 'package:meta/meta.dart'; + +import '../types/http_auth_request.dart'; + +/// Defines the response parameters of a pending [HttpAuthRequest] received by +/// the webview. +@immutable +class WebViewCredential { + /// Creates a [WebViewCredential]. + const WebViewCredential({ + required this.user, + required this.password, + }); + + /// The user name. + final String user; + + /// The password. + final String password; +} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart index 946b76e46dd..6ae5b519537 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_navigation_delegate_test.dart @@ -151,8 +151,7 @@ void main() { const PlatformNavigationDelegateCreationParams()); expect( - () => callbackDelegate - .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) {}), + () => callbackDelegate.setOnHttpAuthRequest((HttpAuthRequest request) {}), throwsUnimplementedError, ); }); diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index f6917bad8f9..e158bdd4529 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,6 +1,6 @@ ## 3.10.0 -* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpBasicAuthRequest`.<<<<<<< HEAD +* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. ## 3.9.2 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 0dd23fc53c0..89ecad8d0e1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1148,8 +1148,8 @@ Future main() async { PlatformNavigationDelegate( const PlatformNavigationDelegateCreationParams(), ); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => authRequested.complete()); + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => authRequested.complete()); await controller.setPlatformNavigationDelegate(navigationDelegate); // Clear cache so that the auth request is always received and we don't get @@ -1185,8 +1185,10 @@ Future main() async { const PlatformNavigationDelegateCreationParams(), ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); - await navigationDelegate.setOnHttpBasicAuthRequest( - (HttpBasicAuthRequest request) => request.onProceed('user', 'pass'), + await navigationDelegate.setOnHttpAuthRequest( + (HttpAuthRequest request) => request.onProceed( + const WebViewCredential(user: 'user', password: 'password'), + ), ); await controller.setPlatformNavigationDelegate(navigationDelegate); 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 05b8c04041d..d3abecb9fba 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -163,9 +163,9 @@ Page resource error: ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); }) - ..setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + ..setOnHttpAuthRequest((HttpAuthRequest request) { debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm}'); + 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -226,7 +226,7 @@ Page resource error: ); } - Future openDialog(HttpBasicAuthRequest httpRequest) async { + Future openDialog(HttpAuthRequest httpRequest) async { final TextEditingController usernameTextController = TextEditingController(); final TextEditingController passwordTextController = @@ -237,7 +237,7 @@ Page resource error: barrierDismissible: false, builder: (BuildContext context) { return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm}'), + title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), content: SingleChildScrollView( child: Column( mainAxisSize: MainAxisSize.min, @@ -267,8 +267,10 @@ Page resource error: TextButton( onPressed: () { httpRequest.onProceed( - usernameTextController.text, - passwordTextController.text, + WebViewCredential( + user: usernameTextController.text, + password: passwordTextController.text, + ), ); Navigator.of(context).pop(); }, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart index 131b6111d02..2647ed95b8b 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/foundation/foundation.dart @@ -477,9 +477,20 @@ class NSUrlProtectionSpace extends NSObject { } } -/// Use HTTP basic authentication for this protection space. -const String urlAuthenticationMethodHTTPBasic = - 'NSURLAuthenticationMethodHTTPBasic'; +/// The authentication method used by the receiver. +class NSUrlAuthenticationMethod { + /// Use the default authentication method for a protocol. + static const String default_ = 'NSURLAuthenticationMethodDefault'; + + /// Use HTML form authentication for this protection space. + static const String htmlForm = 'NSURLAuthenticationMethodHTMLForm'; + + /// Use HTTP basic authentication for this protection space. + static const String httpBasic = 'NSURLAuthenticationMethodHTTPBasic'; + + /// Use HTTP digest authentication for this protection space. + static const String httpDigest = 'NSURLAuthenticationMethodHTTPDigest'; +} /// A challenge from a server requiring authentication from the client. /// diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 897093a1004..95e2917a49f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -957,21 +957,21 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ) completionHandler, ) { if (challenge.protectionSpace.authenticationMethod == - urlAuthenticationMethodHTTPBasic) { - final void Function(HttpBasicAuthRequest)? callback = + NSUrlAuthenticationMethod.httpBasic) { + final void Function(HttpAuthRequest)? callback = weakThis.target?._onHttpAuthRequest; final String? host = challenge.protectionSpace.host; final String? realm = challenge.protectionSpace.realm; if (callback != null && host != null && realm != null) { callback( - HttpBasicAuthRequest( - onProceed: (String username, String password) { + HttpAuthRequest( + onProceed: (WebViewCredential credential) { return completionHandler( NSUrlSessionAuthChallengeDisposition.useCredential, NSUrlCredential.withUser( - user: username, - password: password, + user: credential.user, + password: credential.password, persistence: NSUrlCredentialPersistence.session, ), ); @@ -1045,7 +1045,7 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { } @override - Future setOnHttpBasicAuthRequest( + Future setOnHttpAuthRequest( HttpAuthRequestCallback onHttpAuthRequest, ) async { _onHttpAuthRequest = onHttpAuthRequest; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart index 8f4a2f576a5..63d432c6ac3 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/test/webkit_navigation_delegate_test.dart @@ -229,8 +229,7 @@ void main() { String? callbackHost; String? callbackRealm; - iosNavigationDelegate - .setOnHttpBasicAuthRequest((HttpBasicAuthRequest request) { + iosNavigationDelegate.setOnHttpAuthRequest((HttpAuthRequest request) { callbackHost = request.host; callbackRealm = request.realm; }); @@ -245,7 +244,7 @@ void main() { protectionSpace: NSUrlProtectionSpace.detached( host: expectedHost, realm: expectedRealm, - authenticationMethod: urlAuthenticationMethodHTTPBasic, + authenticationMethod: NSUrlAuthenticationMethod.httpBasic, ), ), (NSUrlSessionAuthChallengeDisposition disposition, From fffc4c7a952609107fead70fa6d7e5e397569742 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 29 Aug 2023 11:10:38 +0200 Subject: [PATCH 11/30] Create HttpAuthHandlerTest.java --- .../webviewflutter/HttpAuthHandlerTest.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java new file mode 100644 index 00000000000..0ea582c34b3 --- /dev/null +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java @@ -0,0 +1,75 @@ +// Copyright 2013 The Flutter Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package io.flutter.plugins.webviewflutter; + +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.verify; + +import android.webkit.HttpAuthHandler; + +import org.junit.After; +import org.junit.Before; +import org.junit.Rule; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.junit.MockitoJUnit; +import org.mockito.junit.MockitoRule; + +import io.flutter.plugin.common.BinaryMessenger; + +public class HttpAuthHandlerTest { + @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); + + @Mock HttpAuthHandler mockAuthHandler; + + @Mock BinaryMessenger mockBinaryMessenger; + + InstanceManager instanceManager; + + @Before + public void setUp() { + instanceManager = InstanceManager.create(identifier -> {}); + } + + @After + public void tearDown() { + instanceManager.stopFinalizationListener(); + } + + @Test + public void proceed() { + final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final long instanceIdentifier = 65L; + final String username = "username"; + final String password = "password"; + instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); + + hostApi.proceed(instanceIdentifier, username, password); + + verify(mockAuthHandler).proceed(eq(username), eq(password)); + } + + @Test + public void cancel() { + final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final long instanceIdentifier = 65L; + instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); + + hostApi.cancel(instanceIdentifier); + + verify(mockAuthHandler).cancel(); + } + + @Test + public void useHttpAuthUsernamePassword() { + final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final long instanceIdentifier = 65L; + instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); + + hostApi.useHttpAuthUsernamePassword(instanceIdentifier); + + verify(mockAuthHandler).useHttpAuthUsernamePassword(); + } +} From b455040622e75d0e05ef135167a9cd9504783437 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 29 Aug 2023 11:12:27 +0200 Subject: [PATCH 12/30] Format java files --- .../plugins/webviewflutter/HttpAuthHandlerTest.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java index 0ea582c34b3..a66f41bd292 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java @@ -8,7 +8,7 @@ import static org.mockito.Mockito.verify; import android.webkit.HttpAuthHandler; - +import io.flutter.plugin.common.BinaryMessenger; import org.junit.After; import org.junit.Before; import org.junit.Rule; @@ -17,8 +17,6 @@ import org.mockito.junit.MockitoJUnit; import org.mockito.junit.MockitoRule; -import io.flutter.plugin.common.BinaryMessenger; - public class HttpAuthHandlerTest { @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); @@ -40,7 +38,8 @@ public void tearDown() { @Test public void proceed() { - final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final HttpAuthHandlerHostApiImpl hostApi = + new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); final long instanceIdentifier = 65L; final String username = "username"; final String password = "password"; @@ -53,7 +52,8 @@ public void proceed() { @Test public void cancel() { - final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final HttpAuthHandlerHostApiImpl hostApi = + new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); final long instanceIdentifier = 65L; instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); @@ -64,7 +64,8 @@ public void cancel() { @Test public void useHttpAuthUsernamePassword() { - final HttpAuthHandlerHostApiImpl hostApi = new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); + final HttpAuthHandlerHostApiImpl hostApi = + new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); final long instanceIdentifier = 65L; instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); From 2aa9bfed1f051e169307ae769e7fe406b0e77642 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 29 Aug 2023 11:18:25 +0200 Subject: [PATCH 13/30] Regenerate build_runner files --- .../test/navigation_delegate_test.mocks.dart | 4 +- .../test/webview_controller_test.mocks.dart | 4 +- ...android_webview_controller_test.mocks.dart | 150 +----------------- ...oid_webview_cookie_manager_test.mocks.dart | 37 ----- .../test/android_webview_test.mocks.dart | 82 ---------- ...iew_android_cookie_manager_test.mocks.dart | 3 - .../webview_android_widget_test.mocks.dart | 60 ------- ...latform_webview_controller_test.mocks.dart | 4 +- 8 files changed, 8 insertions(+), 336 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart index ba473193a41..0d92999d619 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart @@ -251,11 +251,11 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValueForMissingStub: _i8.Future.value(), ) as _i8.Future); @override - _i8.Future setOnHttpBasicAuthRequest( + _i8.Future setOnHttpAuthRequest( _i3.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i8.Future.value(), diff --git a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart index 2b31596b508..490369694e5 100644 --- a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart @@ -467,11 +467,11 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); @override - _i5.Future setOnHttpBasicAuthRequest( + _i5.Future setOnHttpAuthRequest( _i6.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i5.Future.value(), diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart index 12c50605da7..e09c9d77b88 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart @@ -255,7 +255,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidWebChromeClient), ), ) as _i2.WebChromeClient); - @override _i2.WebViewClient get androidWebViewClient => (super.noSuchMethod( Invocation.getter(#androidWebViewClient), @@ -268,7 +267,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidWebViewClient), ), ) as _i2.WebViewClient); - @override _i2.DownloadListener get androidDownloadListener => (super.noSuchMethod( Invocation.getter(#androidDownloadListener), @@ -281,7 +279,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidDownloadListener), ), ) as _i2.DownloadListener); - @override _i3.PlatformNavigationDelegateCreationParams get params => (super.noSuchMethod( @@ -296,7 +293,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformNavigationDelegateCreationParams); - @override _i9.Future setOnLoadRequest(_i8.LoadRequestCallback? onLoadRequest) => (super.noSuchMethod( @@ -307,7 +303,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnNavigationRequest( _i3.NavigationRequestCallback? onNavigationRequest) => @@ -319,7 +314,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnPageStarted(_i3.PageEventCallback? onPageStarted) => (super.noSuchMethod( @@ -330,7 +324,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnPageFinished(_i3.PageEventCallback? onPageFinished) => (super.noSuchMethod( @@ -341,7 +334,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnProgress(_i3.ProgressCallback? onProgress) => (super.noSuchMethod( @@ -352,7 +344,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnWebResourceError( _i3.WebResourceErrorCallback? onWebResourceError) => @@ -364,7 +355,6 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnUrlChange(_i3.UrlChangeCallback? onUrlChange) => (super.noSuchMethod( @@ -375,13 +365,12 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override - _i9.Future setOnHttpBasicAuthRequest( + _i9.Future setOnHttpAuthRequest( _i3.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i9.Future.value(), @@ -410,7 +399,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override _i3.PlatformWebViewControllerCreationParams get params => (super.noSuchMethod( Invocation.getter(#params), @@ -424,7 +412,6 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformWebViewControllerCreationParams); - @override _i9.Future loadFile(String? absoluteFilePath) => (super.noSuchMethod( Invocation.method( @@ -434,7 +421,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadFlutterAsset(String? key) => (super.noSuchMethod( Invocation.method( @@ -444,7 +430,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadHtmlString( String? html, { @@ -459,7 +444,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadRequest(_i3.LoadRequestParams? params) => (super.noSuchMethod( @@ -470,7 +454,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future currentUrl() => (super.noSuchMethod( Invocation.method( @@ -480,7 +463,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -490,7 +472,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -500,7 +481,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -510,7 +490,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -520,7 +499,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future reload() => (super.noSuchMethod( Invocation.method( @@ -530,7 +508,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearCache() => (super.noSuchMethod( Invocation.method( @@ -540,7 +517,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearLocalStorage() => (super.noSuchMethod( Invocation.method( @@ -550,7 +526,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setPlatformNavigationDelegate( _i3.PlatformNavigationDelegate? handler) => @@ -562,7 +537,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future runJavaScript(String? javaScript) => (super.noSuchMethod( Invocation.method( @@ -572,7 +546,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future runJavaScriptReturningResult(String? javaScript) => (super.noSuchMethod( @@ -595,7 +568,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i9.Future); - @override _i9.Future addJavaScriptChannel( _i3.JavaScriptChannelParams? javaScriptChannelParams) => @@ -607,7 +579,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future removeJavaScriptChannel(String? javaScriptChannelName) => (super.noSuchMethod( @@ -618,7 +589,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -628,7 +598,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollTo( int? x, @@ -645,7 +614,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollBy( int? x, @@ -662,7 +630,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -684,7 +651,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Offset>); - @override _i9.Future enableZoom(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -694,7 +660,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -704,7 +669,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setJavaScriptMode(_i3.JavaScriptMode? javaScriptMode) => (super.noSuchMethod( @@ -715,7 +679,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setUserAgent(String? userAgent) => (super.noSuchMethod( Invocation.method( @@ -725,7 +688,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -736,7 +698,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -746,7 +707,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnShowFileSelector( _i9.Future> Function(_i8.FileSelectorParams)? @@ -759,7 +719,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnPlatformPermissionRequest( void Function(_i3.PlatformWebViewPermissionRequest)? @@ -772,7 +731,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setGeolocationPermissionsPromptCallbacks({ _i8.OnGeolocationPermissionsShowPrompt? onShowPrompt, @@ -790,7 +748,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setCustomWidgetCallbacks({ required _i8.OnShowCustomWidgetCallback? onShowCustomWidget, @@ -808,7 +765,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setOnConsoleMessage( void Function(_i3.JavaScriptConsoleMessage)? onConsoleMessage) => @@ -820,7 +776,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getUserAgent() => (super.noSuchMethod( Invocation.method( @@ -849,7 +804,6 @@ class MockAndroidWebViewProxy extends _i1.Mock Invocation.getter(#createAndroidWebView), ), ) as _i2.WebView Function()); - @override _i2.WebChromeClient Function({ void Function( @@ -978,7 +932,6 @@ class MockAndroidWebViewProxy extends _i1.Mock _i2.FileChooserParams, )? onShowFileChooser, })); - @override _i2.WebViewClient Function({ void Function( @@ -1149,7 +1102,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, )? urlLoading, })); - @override _i2.FlutterAssetManager Function() get createFlutterAssetManager => (super.noSuchMethod( @@ -1163,7 +1115,6 @@ class MockAndroidWebViewProxy extends _i1.Mock Invocation.getter(#createFlutterAssetManager), ), ) as _i2.FlutterAssetManager Function()); - @override _i2.JavaScriptChannel Function( String, { @@ -1190,7 +1141,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, { required void Function(String) postMessage, })); - @override _i2.DownloadListener Function( {required void Function( @@ -1233,7 +1183,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, int, ) onDownloadStart})); - @override _i9.Future setWebContentsDebuggingEnabled(bool? enabled) => (super.noSuchMethod( @@ -1264,7 +1213,6 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#instanceManager), ), ) as _i5.InstanceManager); - @override _i6.PlatformViewsServiceProxy get platformViewsServiceProxy => (super.noSuchMethod( @@ -1278,14 +1226,12 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#platformViewsServiceProxy), ), ) as _i6.PlatformViewsServiceProxy); - @override bool get displayWithHybridComposition => (super.noSuchMethod( Invocation.getter(#displayWithHybridComposition), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override _i3.PlatformWebViewController get controller => (super.noSuchMethod( Invocation.getter(#controller), @@ -1298,14 +1244,12 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#controller), ), ) as _i3.PlatformWebViewController); - @override _i4.TextDirection get layoutDirection => (super.noSuchMethod( Invocation.getter(#layoutDirection), returnValue: _i4.TextDirection.rtl, returnValueForMissingStub: _i4.TextDirection.rtl, ) as _i4.TextDirection); - @override Set<_i11.Factory<_i12.OneSequenceGestureRecognizer>> get gestureRecognizers => (super.noSuchMethod( @@ -1327,21 +1271,18 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: false, returnValueForMissingStub: false, ) as bool); - @override int get viewId => (super.noSuchMethod( Invocation.getter(#viewId), returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override bool get awaitingCreation => (super.noSuchMethod( Invocation.getter(#awaitingCreation), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override _i7.PointTransformer get pointTransformer => (super.noSuchMethod( Invocation.getter(#pointTransformer), @@ -1354,7 +1295,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock Invocation.getter(#pointTransformer), ), ) as _i7.PointTransformer); - @override set pointTransformer(_i7.PointTransformer? transformer) => super.noSuchMethod( Invocation.setter( @@ -1363,14 +1303,12 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override bool get isCreated => (super.noSuchMethod( Invocation.getter(#isCreated), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override List<_i7.PlatformViewCreatedCallback> get createdCallbacks => (super.noSuchMethod( @@ -1378,7 +1316,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: <_i7.PlatformViewCreatedCallback>[], returnValueForMissingStub: <_i7.PlatformViewCreatedCallback>[], ) as List<_i7.PlatformViewCreatedCallback>); - @override _i9.Future setOffset(_i4.Offset? off) => (super.noSuchMethod( Invocation.method( @@ -1388,7 +1325,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future create({ _i4.Size? size, @@ -1406,7 +1342,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future<_i4.Size> setSize(_i4.Size? size) => (super.noSuchMethod( Invocation.method( @@ -1428,7 +1363,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Size>); - @override _i9.Future sendMotionEvent(_i7.AndroidMotionEvent? event) => (super.noSuchMethod( @@ -1439,7 +1373,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override void addOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1450,7 +1383,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void removeOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1461,7 +1393,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i9.Future setLayoutDirection(_i4.TextDirection? layoutDirection) => (super.noSuchMethod( @@ -1472,7 +1403,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispatchPointerEvent(_i12.PointerEvent? event) => (super.noSuchMethod( @@ -1483,7 +1413,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearFocus() => (super.noSuchMethod( Invocation.method( @@ -1493,7 +1422,6 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispose() => (super.noSuchMethod( Invocation.method( @@ -1519,7 +1447,6 @@ class MockFlutterAssetManager extends _i1.Mock returnValue: _i9.Future>.value([]), returnValueForMissingStub: _i9.Future>.value([]), ) as _i9.Future>); - @override _i9.Future getAssetFilePathByName(String? name) => (super.noSuchMethod( @@ -1542,14 +1469,12 @@ class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel { returnValue: '', returnValueForMissingStub: '', ) as String); - @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, returnValueForMissingStub: (String message) {}, ) as void Function(String)); - @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -1583,7 +1508,6 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: [], returnValueForMissingStub: [], ) as List); - @override _i9.Future grant(List? resources) => (super.noSuchMethod( Invocation.method( @@ -1593,7 +1517,6 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future deny() => (super.noSuchMethod( Invocation.method( @@ -1603,7 +1526,6 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.PermissionRequest copy() => (super.noSuchMethod( Invocation.method( @@ -1686,7 +1608,6 @@ class MockPlatformViewsServiceProxy extends _i1.Mock ), ), ) as _i7.ExpensiveAndroidViewController); - @override _i7.SurfaceAndroidViewController initSurfaceAndroidView({ required int? id, @@ -1753,21 +1674,18 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: false, returnValueForMissingStub: false, ) as bool); - @override int get viewId => (super.noSuchMethod( Invocation.getter(#viewId), returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override bool get awaitingCreation => (super.noSuchMethod( Invocation.getter(#awaitingCreation), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override _i7.PointTransformer get pointTransformer => (super.noSuchMethod( Invocation.getter(#pointTransformer), @@ -1780,7 +1698,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock Invocation.getter(#pointTransformer), ), ) as _i7.PointTransformer); - @override set pointTransformer(_i7.PointTransformer? transformer) => super.noSuchMethod( Invocation.setter( @@ -1789,14 +1706,12 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override bool get isCreated => (super.noSuchMethod( Invocation.getter(#isCreated), returnValue: false, returnValueForMissingStub: false, ) as bool); - @override List<_i7.PlatformViewCreatedCallback> get createdCallbacks => (super.noSuchMethod( @@ -1804,7 +1719,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: <_i7.PlatformViewCreatedCallback>[], returnValueForMissingStub: <_i7.PlatformViewCreatedCallback>[], ) as List<_i7.PlatformViewCreatedCallback>); - @override _i9.Future setOffset(_i4.Offset? off) => (super.noSuchMethod( Invocation.method( @@ -1814,7 +1728,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future create({ _i4.Size? size, @@ -1832,7 +1745,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future<_i4.Size> setSize(_i4.Size? size) => (super.noSuchMethod( Invocation.method( @@ -1854,7 +1766,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Size>); - @override _i9.Future sendMotionEvent(_i7.AndroidMotionEvent? event) => (super.noSuchMethod( @@ -1865,7 +1776,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override void addOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1876,7 +1786,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void removeOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1887,7 +1796,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i9.Future setLayoutDirection(_i4.TextDirection? layoutDirection) => (super.noSuchMethod( @@ -1898,7 +1806,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispatchPointerEvent(_i12.PointerEvent? event) => (super.noSuchMethod( @@ -1909,7 +1816,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearFocus() => (super.noSuchMethod( Invocation.method( @@ -1919,7 +1825,6 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future dispose() => (super.noSuchMethod( Invocation.method( @@ -1945,7 +1850,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -1956,7 +1860,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -1993,7 +1896,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setJavaScriptCanOpenWindowsAutomatically(bool? flag) => (super.noSuchMethod( @@ -2004,7 +1906,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setSupportMultipleWindows(bool? support) => (super.noSuchMethod( @@ -2015,7 +1916,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setJavaScriptEnabled(bool? flag) => (super.noSuchMethod( Invocation.method( @@ -2025,7 +1925,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setUserAgentString(String? userAgentString) => (super.noSuchMethod( @@ -2036,7 +1935,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -2047,7 +1945,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setSupportZoom(bool? support) => (super.noSuchMethod( Invocation.method( @@ -2057,7 +1954,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setLoadWithOverviewMode(bool? overview) => (super.noSuchMethod( @@ -2068,7 +1964,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setUseWideViewPort(bool? use) => (super.noSuchMethod( Invocation.method( @@ -2078,7 +1973,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setDisplayZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2088,7 +1982,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setBuiltInZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2098,7 +1991,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setAllowFileAccess(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2108,7 +2000,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -2118,7 +2009,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getUserAgentString() => (super.noSuchMethod( Invocation.method( @@ -2128,7 +2018,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(''), returnValueForMissingStub: _i9.Future.value(''), ) as _i9.Future); - @override _i2.WebSettings copy() => (super.noSuchMethod( Invocation.method( @@ -2168,7 +2057,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); - @override _i9.Future loadData({ required String? data, @@ -2188,7 +2076,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadDataWithBaseUrl({ String? baseUrl, @@ -2212,7 +2099,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future loadUrl( String? url, @@ -2229,7 +2115,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future postUrl( String? url, @@ -2246,7 +2131,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -2256,7 +2140,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -2266,7 +2149,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -2276,7 +2158,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); - @override _i9.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -2286,7 +2167,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -2296,7 +2176,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future reload() => (super.noSuchMethod( Invocation.method( @@ -2306,7 +2185,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -2316,7 +2194,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -2327,7 +2204,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -2337,7 +2213,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollTo( int? x, @@ -2354,7 +2229,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future scrollBy( int? x, @@ -2371,7 +2245,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -2381,7 +2254,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(0), returnValueForMissingStub: _i9.Future.value(0), ) as _i9.Future); - @override _i9.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -2391,7 +2263,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(0), returnValueForMissingStub: _i9.Future.value(0), ) as _i9.Future); - @override _i9.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -2413,7 +2284,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i9.Future<_i4.Offset>); - @override _i9.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -2424,7 +2294,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -2436,7 +2305,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -2448,7 +2316,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -2459,7 +2326,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -2470,7 +2336,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i9.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -2480,7 +2345,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -2519,7 +2383,6 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( @@ -2556,7 +2419,6 @@ class MockWebStorage extends _i1.Mock implements _i2.WebStorage { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override _i2.WebStorage copy() => (super.noSuchMethod( Invocation.method( @@ -2590,7 +2452,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { returnValue: (int __p0) {}, returnValueForMissingStub: (int __p0) {}, ) as void Function(int)); - @override set onWeakReferenceRemoved(void Function(int)? _onWeakReferenceRemoved) => super.noSuchMethod( @@ -2600,7 +2461,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ); - @override int addDartCreatedInstance(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2610,7 +2470,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { returnValue: 0, returnValueForMissingStub: 0, ) as int); - @override int? removeWeakReference(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2619,7 +2478,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as int?); - @override T? remove(int? identifier) => (super.noSuchMethod( Invocation.method( @@ -2628,7 +2486,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as T?); - @override T? getInstanceWithWeakReference(int? identifier) => (super.noSuchMethod( @@ -2638,7 +2495,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as T?); - @override int? getIdentifier(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2647,7 +2503,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as int?); - @override void addHostCreatedInstance( _i5.Copyable? instance, @@ -2663,7 +2518,6 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ); - @override bool containsIdentifier(int? identifier) => (super.noSuchMethod( Invocation.method( 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 cc9fbfae2a3..5213793ee9e 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 @@ -93,7 +93,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeAllCookies() => (super.noSuchMethod( Invocation.method( @@ -102,7 +101,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future setAcceptThirdPartyCookies( _i2.WebView? webView, @@ -119,7 +117,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.CookieManager copy() => (super.noSuchMethod( Invocation.method( @@ -150,7 +147,6 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#webViewIdentifier), returnValue: 0, ) as int); - @override _i3.PlatformWebViewControllerCreationParams get params => (super.noSuchMethod( Invocation.getter(#params), @@ -159,7 +155,6 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformWebViewControllerCreationParams); - @override _i5.Future loadFile(String? absoluteFilePath) => (super.noSuchMethod( Invocation.method( @@ -169,7 +164,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadFlutterAsset(String? key) => (super.noSuchMethod( Invocation.method( @@ -179,7 +173,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadHtmlString( String? html, { @@ -194,7 +187,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadRequest(_i3.LoadRequestParams? params) => (super.noSuchMethod( @@ -205,7 +197,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future currentUrl() => (super.noSuchMethod( Invocation.method( @@ -214,7 +205,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -223,7 +213,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -232,7 +221,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -242,7 +230,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -252,7 +239,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -262,7 +248,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearCache() => (super.noSuchMethod( Invocation.method( @@ -272,7 +257,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearLocalStorage() => (super.noSuchMethod( Invocation.method( @@ -282,7 +266,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setPlatformNavigationDelegate( _i3.PlatformNavigationDelegate? handler) => @@ -294,7 +277,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future runJavaScript(String? javaScript) => (super.noSuchMethod( Invocation.method( @@ -304,7 +286,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future runJavaScriptReturningResult(String? javaScript) => (super.noSuchMethod( @@ -320,7 +301,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i5.Future); - @override _i5.Future addJavaScriptChannel( _i3.JavaScriptChannelParams? javaScriptChannelParams) => @@ -332,7 +312,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeJavaScriptChannel(String? javaScriptChannelName) => (super.noSuchMethod( @@ -343,7 +322,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -352,7 +330,6 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollTo( int? x, @@ -369,7 +346,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollBy( int? x, @@ -386,7 +362,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -401,7 +376,6 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i5.Future<_i4.Offset>); - @override _i5.Future enableZoom(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -411,7 +385,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -421,7 +394,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setJavaScriptMode(_i3.JavaScriptMode? javaScriptMode) => (super.noSuchMethod( @@ -432,7 +404,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setUserAgent(String? userAgent) => (super.noSuchMethod( Invocation.method( @@ -442,7 +413,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -453,7 +423,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -463,7 +432,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setOnShowFileSelector( _i5.Future> Function(_i6.FileSelectorParams)? @@ -476,7 +444,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setOnPlatformPermissionRequest( void Function(_i3.PlatformWebViewPermissionRequest)? @@ -489,7 +456,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setGeolocationPermissionsPromptCallbacks({ _i6.OnGeolocationPermissionsShowPrompt? onShowPrompt, @@ -507,7 +473,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setCustomWidgetCallbacks({ required _i6.OnShowCustomWidgetCallback? onShowCustomWidget, @@ -525,7 +490,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setOnConsoleMessage( void Function(_i3.JavaScriptConsoleMessage)? onConsoleMessage) => @@ -537,7 +501,6 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUserAgent() => (super.noSuchMethod( Invocation.method( diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart index 0928486956d..4a6130f13ad 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart @@ -128,7 +128,6 @@ class MockCookieManagerHostApi extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setCookie( int? arg_identifier, @@ -147,7 +146,6 @@ class MockCookieManagerHostApi extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeAllCookies(int? arg_identifier) => (super.noSuchMethod( Invocation.method( @@ -156,7 +154,6 @@ class MockCookieManagerHostApi extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future setAcceptThirdPartyCookies( int? arg_identifier, @@ -208,7 +205,6 @@ class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener { String, int, )); - @override _i2.DownloadListener copy() => (super.noSuchMethod( Invocation.method( @@ -238,13 +234,11 @@ class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel { Invocation.getter(#channelName), returnValue: '', ) as String); - @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, ) as void Function(String)); - @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -278,7 +272,6 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setCookie( int? identifier, @@ -296,7 +289,6 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i5.Future removeAllCookies(int? identifier) => (super.noSuchMethod( Invocation.method( @@ -305,7 +297,6 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override void setAcceptThirdPartyCookies( int? identifier, @@ -474,7 +465,6 @@ class MockTestWebChromeClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSynchronousReturnValueForOnShowFileChooser( int? instanceId, @@ -490,7 +480,6 @@ class MockTestWebChromeClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSynchronousReturnValueForOnConsoleMessage( int? instanceId, @@ -532,7 +521,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setDomStorageEnabled( int? instanceId, @@ -548,7 +536,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setJavaScriptCanOpenWindowsAutomatically( int? instanceId, @@ -564,7 +551,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSupportMultipleWindows( int? instanceId, @@ -580,7 +566,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setJavaScriptEnabled( int? instanceId, @@ -596,7 +581,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setUserAgentString( int? instanceId, @@ -612,7 +596,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setMediaPlaybackRequiresUserGesture( int? instanceId, @@ -628,7 +611,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSupportZoom( int? instanceId, @@ -644,7 +626,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setLoadWithOverviewMode( int? instanceId, @@ -660,7 +641,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setUseWideViewPort( int? instanceId, @@ -676,7 +656,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setDisplayZoomControls( int? instanceId, @@ -692,7 +671,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setBuiltInZoomControls( int? instanceId, @@ -708,7 +686,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setAllowFileAccess( int? instanceId, @@ -724,7 +701,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setTextZoom( int? instanceId, @@ -740,7 +716,6 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override String getUserAgentString(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -768,7 +743,6 @@ class MockTestWebStorageHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void deleteAllData(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -796,7 +770,6 @@ class MockTestWebViewClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setSynchronousReturnValueForShouldOverrideUrlLoading( int? instanceId, @@ -831,7 +804,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void loadData( int? instanceId, @@ -851,7 +823,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void loadDataWithBaseUrl( int? instanceId, @@ -875,7 +846,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void loadUrl( int? instanceId, @@ -893,7 +863,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void postUrl( int? instanceId, @@ -911,13 +880,11 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override String? getUrl(int? instanceId) => (super.noSuchMethod(Invocation.method( #getUrl, [instanceId], )) as String?); - @override bool canGoBack(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -926,7 +893,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: false, ) as bool); - @override bool canGoForward(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -935,7 +901,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: false, ) as bool); - @override void goBack(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -944,7 +909,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void goForward(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -953,7 +917,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void reload(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -962,7 +925,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void clearCache( int? instanceId, @@ -978,7 +940,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override _i5.Future evaluateJavascript( int? instanceId, @@ -994,13 +955,11 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override String? getTitle(int? instanceId) => (super.noSuchMethod(Invocation.method( #getTitle, [instanceId], )) as String?); - @override void scrollTo( int? instanceId, @@ -1018,7 +977,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void scrollBy( int? instanceId, @@ -1036,7 +994,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override int getScrollX(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1045,7 +1002,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: 0, ) as int); - @override int getScrollY(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1054,7 +1010,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: 0, ) as int); - @override _i3.WebViewPoint getScrollPosition(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1069,7 +1024,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), ), ) as _i3.WebViewPoint); - @override void setWebContentsDebuggingEnabled(bool? enabled) => super.noSuchMethod( Invocation.method( @@ -1078,7 +1032,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setWebViewClient( int? instanceId, @@ -1094,7 +1047,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void addJavaScriptChannel( int? instanceId, @@ -1110,7 +1062,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void removeJavaScriptChannel( int? instanceId, @@ -1126,7 +1077,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setDownloadListener( int? instanceId, @@ -1142,7 +1092,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setWebChromeClient( int? instanceId, @@ -1158,7 +1107,6 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void setBackgroundColor( int? instanceId, @@ -1193,7 +1141,6 @@ class MockTestAssetManagerHostApi extends _i1.Mock ), returnValue: [], ) as List); - @override String getAssetFilePathByName(String? name) => (super.noSuchMethod( Invocation.method( @@ -1228,7 +1175,6 @@ class MockTestPermissionRequestHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void deny(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -1257,7 +1203,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -1268,7 +1213,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -1301,7 +1245,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); - @override _i5.Future loadData({ required String? data, @@ -1321,7 +1264,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadDataWithBaseUrl({ String? baseUrl, @@ -1345,7 +1287,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadUrl( String? url, @@ -1362,7 +1303,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future postUrl( String? url, @@ -1379,7 +1319,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -1388,7 +1327,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -1397,7 +1335,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -1406,7 +1343,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -1416,7 +1352,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -1426,7 +1361,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -1436,7 +1370,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -1446,7 +1379,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -1456,7 +1388,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -1465,7 +1396,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollTo( int? x, @@ -1482,7 +1412,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollBy( int? x, @@ -1499,7 +1428,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -1508,7 +1436,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -1517,7 +1444,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -1532,7 +1458,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i5.Future<_i4.Offset>); - @override _i5.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -1543,7 +1468,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -1555,7 +1479,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -1567,7 +1490,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -1578,7 +1500,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -1589,7 +1510,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -1599,7 +1519,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -1635,7 +1554,6 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( 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 cb453ddb6b1..df06f625227 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 @@ -55,7 +55,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); - @override _i3.Future removeAllCookies() => (super.noSuchMethod( Invocation.method( @@ -64,7 +63,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ), returnValue: _i3.Future.value(false), ) as _i3.Future); - @override _i3.Future setAcceptThirdPartyCookies( _i2.WebView? webView, @@ -81,7 +79,6 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); - @override _i2.CookieManager copy() => (super.noSuchMethod( Invocation.method( diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart index f83d2eaee74..19e03b393bd 100644 --- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart @@ -138,7 +138,6 @@ class MockFlutterAssetManager extends _i1.Mock ), returnValue: _i5.Future>.value([]), ) as _i5.Future>); - @override _i5.Future getAssetFilePathByName(String? name) => (super.noSuchMethod( @@ -167,7 +166,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setJavaScriptCanOpenWindowsAutomatically(bool? flag) => (super.noSuchMethod( @@ -178,7 +176,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSupportMultipleWindows(bool? support) => (super.noSuchMethod( @@ -189,7 +186,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setJavaScriptEnabled(bool? flag) => (super.noSuchMethod( Invocation.method( @@ -199,7 +195,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setUserAgentString(String? userAgentString) => (super.noSuchMethod( @@ -210,7 +205,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -221,7 +215,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSupportZoom(bool? support) => (super.noSuchMethod( Invocation.method( @@ -231,7 +224,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setLoadWithOverviewMode(bool? overview) => (super.noSuchMethod( @@ -242,7 +234,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setUseWideViewPort(bool? use) => (super.noSuchMethod( Invocation.method( @@ -252,7 +243,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setDisplayZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -262,7 +252,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBuiltInZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -272,7 +261,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setAllowFileAccess(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -282,7 +270,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -292,7 +279,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUserAgentString() => (super.noSuchMethod( Invocation.method( @@ -301,7 +287,6 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { ), returnValue: _i5.Future.value(''), ) as _i5.Future); - @override _i2.WebSettings copy() => (super.noSuchMethod( Invocation.method( @@ -335,7 +320,6 @@ class MockWebStorage extends _i1.Mock implements _i2.WebStorage { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebStorage copy() => (super.noSuchMethod( Invocation.method( @@ -368,7 +352,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); - @override _i5.Future loadData({ required String? data, @@ -388,7 +371,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadDataWithBaseUrl({ String? baseUrl, @@ -412,7 +394,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future loadUrl( String? url, @@ -429,7 +410,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future postUrl( String? url, @@ -446,7 +426,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -455,7 +434,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -464,7 +442,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -473,7 +450,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); - @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -483,7 +459,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -493,7 +468,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -503,7 +477,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -513,7 +486,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -523,7 +495,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -532,7 +503,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollTo( int? x, @@ -549,7 +519,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future scrollBy( int? x, @@ -566,7 +535,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -575,7 +543,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -584,7 +551,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); - @override _i5.Future<_i3.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -599,7 +565,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i5.Future<_i3.Offset>); - @override _i5.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -610,7 +575,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -622,7 +586,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -634,7 +597,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -645,7 +607,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -656,7 +617,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setBackgroundColor(_i3.Color? color) => (super.noSuchMethod( Invocation.method( @@ -666,7 +626,6 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -697,25 +656,21 @@ class MockWebResourceRequest extends _i1.Mock Invocation.getter(#url), returnValue: '', ) as String); - @override bool get isForMainFrame => (super.noSuchMethod( Invocation.getter(#isForMainFrame), returnValue: false, ) as bool); - @override bool get hasGesture => (super.noSuchMethod( Invocation.getter(#hasGesture), returnValue: false, ) as bool); - @override String get method => (super.noSuchMethod( Invocation.getter(#method), returnValue: '', ) as String); - @override Map get requestHeaders => (super.noSuchMethod( Invocation.getter(#requestHeaders), @@ -754,7 +709,6 @@ class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener { String, int, )); - @override _i2.DownloadListener copy() => (super.noSuchMethod( Invocation.method( @@ -789,19 +743,16 @@ class MockWebViewAndroidJavaScriptChannel extends _i1.Mock Invocation.getter(#javascriptChannelRegistry), ), ) as _i4.JavascriptChannelRegistry); - @override String get channelName => (super.noSuchMethod( Invocation.getter(#channelName), returnValue: '', ) as String); - @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, ) as void Function(String)); - @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -836,7 +787,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i5.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -847,7 +797,6 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -883,7 +832,6 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( @@ -914,7 +862,6 @@ class MockJavascriptChannelRegistry extends _i1.Mock Invocation.getter(#channels), returnValue: {}, ) as Map); - @override void onJavascriptChannelMessage( String? channel, @@ -930,7 +877,6 @@ class MockJavascriptChannelRegistry extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void updateJavascriptChannelsFromSet(Set<_i4.JavascriptChannel>? channels) => super.noSuchMethod( @@ -967,7 +913,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.FutureOr); - @override void onPageStarted(String? url) => super.noSuchMethod( Invocation.method( @@ -976,7 +921,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void onPageFinished(String? url) => super.noSuchMethod( Invocation.method( @@ -985,7 +929,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void onProgress(int? progress) => super.noSuchMethod( Invocation.method( @@ -994,7 +937,6 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); - @override void onWebResourceError(_i4.WebResourceError? error) => super.noSuchMethod( Invocation.method( @@ -1027,7 +969,6 @@ class MockWebViewProxy extends _i1.Mock implements _i7.WebViewProxy { ), ), ) as _i2.WebView); - @override _i2.WebViewClient createWebViewClient({ void Function( @@ -1087,7 +1028,6 @@ class MockWebViewProxy extends _i1.Mock implements _i7.WebViewProxy { ), ), ) as _i2.WebViewClient); - @override _i5.Future setWebContentsDebuggingEnabled(bool? enabled) => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart index 65c87843aee..88d5af24ed7 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/test/platform_webview_controller_test.mocks.dart @@ -125,11 +125,11 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); @override - _i4.Future setOnHttpBasicAuthRequest( + _i4.Future setOnHttpAuthRequest( _i3.HttpAuthRequestCallback? onHttpAuthRequest) => (super.noSuchMethod( Invocation.method( - #setOnHttpBasicAuthRequest, + #setOnHttpAuthRequest, [onHttpAuthRequest], ), returnValue: _i4.Future.value(), From db286ba5ff62ce8954b01f882718bd5c72b211a2 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 11 Sep 2023 14:38:32 +0200 Subject: [PATCH 14/30] Implement feedback --- .../webview_flutter_test.dart | 28 ++++++++++++++----- .../webview_flutter/example/lib/main.dart | 5 ++-- .../lib/src/navigation_delegate.dart | 7 ++--- .../webview_flutter/lib/webview_flutter.dart | 1 + .../webview_flutter_test.dart | 2 +- .../example/lib/main.dart | 4 +-- .../lib/src/android_webview.dart | 5 ++-- .../lib/src/android_webview_api_impls.dart | 9 +++--- .../lib/src/android_webview_controller.dart | 12 ++++++-- .../lib/src/types/http_auth_request.dart | 15 ++++------ .../webview_flutter_test.dart | 2 +- .../example/lib/main.dart | 4 +-- .../lib/src/webkit_webview_controller.dart | 17 +++++------ 13 files changed, 62 insertions(+), 49 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 528f3d9c3cc..bf312cc3d95 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -17,7 +17,6 @@ import 'package:flutter_test/flutter_test.dart'; import 'package:integration_test/integration_test.dart'; import 'package:webview_flutter/webview_flutter.dart'; import 'package:webview_flutter_android/webview_flutter_android.dart'; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; Future main() async { @@ -34,12 +33,22 @@ Future main() async { } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; } else if (request.uri.path == '/http-basic-authentication') { - final bool isAuthenticating = request.headers['Authorization'] != null; - if (isAuthenticating) { - request.response.writeln('Authorized'); + final List? authHeader = + request.headers[HttpHeaders.authorizationHeader]; + if (authHeader != null) { + final String encodedCredential = authHeader.first.split(' ')[1]; + final String credential = + String.fromCharCodes(base64Decode(encodedCredential)); + if (credential == 'user:password') { + request.response.writeln('Authorized'); + } else { + request.response.headers.add( + HttpHeaders.wwwAuthenticateHeader, 'Basic realm="Test realm"'); + request.response.statusCode = HttpStatus.unauthorized; + } } else { request.response.headers - .add('WWW-Authenticate', 'Basic realm="Test realm"'); + .add(HttpHeaders.wwwAuthenticateHeader, 'Basic realm="Test realm"'); request.response.statusCode = HttpStatus.unauthorized; } } else { @@ -799,10 +808,15 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpAuthRequest: (HttpAuthRequest request) => request.onProceed( - const WebViewCredential(user: 'user', password: 'password'), + onHttpAuthRequest: (HttpAuthRequest request) => + request.onAuthenticate( + const WebViewCredential( + user: 'u2ser', + password: 'password', + ), ), onPageFinished: (_) => pageFinished.complete(), + onWebResourceError: (_) => fail('Authentication failed'), ), ), ); diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 35f9f1e6f1c..674710b17c8 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -15,7 +15,6 @@ import 'package:webview_flutter/webview_flutter.dart'; // #docregion platform_imports // Import for Android features. import 'package:webview_flutter_android/webview_flutter_android.dart'; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; // Import for iOS features. import 'package:webview_flutter_wkwebview/webview_flutter_wkwebview.dart'; // #enddocregion platform_imports @@ -265,14 +264,14 @@ Page resource error: // requests when a previous request is pending. TextButton( onPressed: () { - httpRequest.onCancel(); + httpRequest.onAuthenticate(null); Navigator.of(context).pop(); }, child: const Text('Cancel'), ), TextButton( onPressed: () { - httpRequest.onProceed( + httpRequest.onAuthenticate( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index 7aa255eb1e9..d1c5687c95a 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -123,7 +123,7 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, - this.onHttpAuthRequest, + HttpAuthRequestCallback? onHttpAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -144,7 +144,7 @@ class NavigationDelegate { platform.setOnUrlChange(onUrlChange); } if (onHttpAuthRequest != null) { - platform.setOnHttpAuthRequest(onHttpAuthRequest!); + platform.setOnHttpAuthRequest(onHttpAuthRequest); } } @@ -174,7 +174,4 @@ class NavigationDelegate { /// Invoked when a resource loading error occurred. final WebResourceErrorCallback? onWebResourceError; - - /// Invoked when a resource required HTTP authentication. - final HttpAuthRequestCallback? onHttpAuthRequest; } diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index effd512bd92..b92c2fd90f8 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -27,6 +27,7 @@ export 'package:webview_flutter_platform_interface/webview_flutter_platform_inte WebResourceErrorCallback, WebResourceErrorType, WebViewCookie, + WebViewCredential, WebViewPermissionResourceType, WebViewPlatform; diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 9ed263e8dc6..8ccf81f9464 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1178,7 +1178,7 @@ Future main() async { ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onProceed( + (HttpAuthRequest request) => request.onAuthenticate( const WebViewCredential(user: 'user', password: 'password'), ), ); 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 923aadb7d68..7ab6df64be4 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -163,8 +163,6 @@ Page resource error: debugPrint('url change to ${change.url}'); }) ..setOnHttpAuthRequest((HttpAuthRequest request) { - debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -255,7 +253,7 @@ Page resource error: actions: [ TextButton( onPressed: () { - httpRequest.onProceed( + httpRequest.onAuthenticate( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index 48cb4974f45..f18c66b02e3 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -7,7 +7,6 @@ import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart' show BinaryMessenger; import 'package:flutter/widgets.dart' show WidgetsFlutterBinding; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart'; import 'android_webview.g.dart'; import 'android_webview_api_impls.dart'; @@ -1533,8 +1532,8 @@ class HttpAuthHandler extends JavaObject { /// Instructs the WebView to proceed with the authentication with the provided /// credentials. - Future proceed(WebViewCredential credential) { - return api.proceedFromInstance(this, credential); + Future proceed(String username, String password) { + return api.proceedFromInstance(this, username, password); } /// Gets whether the credentials stored for the current host are suitable for diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index 404135418d7..e0e4c9a3b7a 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -5,8 +5,6 @@ import 'dart:ui'; import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; -import 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' - show WebViewCredential; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -1451,12 +1449,13 @@ class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { /// Helper method to convert instance ids to objects. Future proceedFromInstance( HttpAuthHandler instance, - WebViewCredential credential, + String username, + String password, ) { return proceed( _instanceManager.getIdentifier(instance)!, - credential.user, - credential.password, + username, + password, ); } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index c662c2a6f83..95833bc120f 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -1279,8 +1279,16 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { if (callback != null) { callback( HttpAuthRequest( - onProceed: httpAuthHandler.proceed, - onCancel: httpAuthHandler.cancel, + onAuthenticate: (WebViewCredential? credential) { + if (credential == null) { + httpAuthHandler.cancel(); + } else { + httpAuthHandler.proceed( + credential.user, + credential.password, + ); + } + }, host: host, realm: realm, ), diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart index 8da22d38403..0680b1e146a 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -2,8 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -import 'package:meta/meta.dart'; - +import 'package:flutter/foundation.dart'; import '../../webview_flutter_platform_interface.dart'; /// Defines the parameters of a pending HTTP authentication request received by @@ -51,17 +50,15 @@ import '../../webview_flutter_platform_interface.dart'; class HttpAuthRequest { /// Creates a [HttpAuthRequest]. const HttpAuthRequest({ - required this.onProceed, - required this.onCancel, + required this.onAuthenticate, required this.host, this.realm, }); - /// The callback to authenticate. - final void Function(WebViewCredential credential) onProceed; - - /// The callback to cancel authentication. - final void Function() onCancel; + /// The callback to proceed with, or cancel an auth request. + /// + /// If `credential` is `null`, the request will be canceled. + final void Function(WebViewCredential? credential) onAuthenticate; /// The host requiring authentication. final String host; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 89ecad8d0e1..064d70d506f 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1186,7 +1186,7 @@ Future main() async { ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onProceed( + (HttpAuthRequest request) => request.onAuthenticate( const WebViewCredential(user: 'user', password: 'password'), ), ); 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 d3abecb9fba..4f76dedd38c 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -259,14 +259,14 @@ Page resource error: // requests when a previous request is pending. TextButton( onPressed: () { - httpRequest.onCancel(); + httpRequest.onAuthenticate(null); Navigator.of(context).pop(); }, child: const Text('Cancel'), ), TextButton( onPressed: () { - httpRequest.onProceed( + httpRequest.onAuthenticate( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 95e2917a49f..2acf425a5ae 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -966,7 +966,15 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { if (callback != null && host != null && realm != null) { callback( HttpAuthRequest( - onProceed: (WebViewCredential credential) { + onAuthenticate: (WebViewCredential? credential) { + if (credential == null) { + return completionHandler( + NSUrlSessionAuthChallengeDisposition + .cancelAuthenticationChallenge, + null, + ); + } + return completionHandler( NSUrlSessionAuthChallengeDisposition.useCredential, NSUrlCredential.withUser( @@ -976,13 +984,6 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ), ); }, - onCancel: () { - completionHandler( - NSUrlSessionAuthChallengeDisposition - .cancelAuthenticationChallenge, - null, - ); - }, host: host, realm: realm, ), From 467feb32e06a92dd983d072bb75f1643a51bda5c Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 11 Sep 2023 16:12:42 +0200 Subject: [PATCH 15/30] Remove redundant key in `Info.plist` --- .../example/integration_test/webview_flutter_test.dart | 4 ++-- .../webview_flutter_wkwebview/example/ios/Runner/Info.plist | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index bf312cc3d95..b157dc263e3 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -800,7 +800,7 @@ Future main() async { await expectLater(authRequested.future, completes); }); - testWidgets('can reply to HTTP basic auth requests', + testWidgets('can authenticate to HTTP basic auth requests', (WidgetTester tester) async { final WebViewController controller = WebViewController(); final Completer pageFinished = Completer(); @@ -811,7 +811,7 @@ Future main() async { onHttpAuthRequest: (HttpAuthRequest request) => request.onAuthenticate( const WebViewCredential( - user: 'u2ser', + user: 'user', password: 'password', ), ), diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist index c4c0ff0335c..51f3642b2da 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist @@ -33,7 +33,6 @@ If you want to use the camera, you have to give permission. UIApplicationSupportsIndirectInputEvents - UIBackgroundModes UILaunchStoryboardName LaunchScreen From dad8ae6d5db6f3e9bb12a4c1625d8fa91e582061 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Mon, 11 Sep 2023 17:00:54 +0200 Subject: [PATCH 16/30] Update example apps --- .../webview_flutter/example/lib/main.dart | 37 ++++++++++++++--- .../example/lib/main.dart | 38 ++++++++++++++--- .../example/ios/Runner/Info.plist | 23 +++++------ .../example/lib/main.dart | 41 +++++++++++++++---- 4 files changed, 109 insertions(+), 30 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 674710b17c8..c5c1544043b 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -173,8 +173,6 @@ Page resource error: debugPrint('url change to ${change.url}'); }, onHttpAuthRequest: (HttpAuthRequest request) { - debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }, ), @@ -364,7 +362,7 @@ class SampleMenu extends StatelessWidget { _onLogExample(); break; case MenuOptions.basicAuthentication: - _basicAuthExample(); + _promptForUrl(context); break; } }, @@ -584,9 +582,36 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - Future _basicAuthExample() { - return webViewController.loadRequest(Uri.parse( - 'https://www.httpwatch.com/httpgallery/authentication/#showExample10')); + Future _promptForUrl(BuildContext context) { + final TextEditingController urlTextController = TextEditingController(); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Input URL to visit'), + content: TextField( + decoration: const InputDecoration(labelText: 'URL'), + autofocus: true, + controller: urlTextController, + ), + actions: [ + TextButton( + onPressed: () { + if (urlTextController.text.isNotEmpty) { + final Uri? uri = Uri.tryParse(urlTextController.text); + if (uri != null && uri.scheme.isNotEmpty) { + webViewController.loadRequest(uri); + Navigator.pop(context); + } + } + }, + child: const Text('Visit'), + ), + ], + ); + }, + ); } } 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 7ab6df64be4..4a306160766 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -354,7 +354,7 @@ class SampleMenu extends StatelessWidget { _onLogExample(); break; case MenuOptions.basicAuthentication: - _basicAuthExample(); + _promptForUrl(context); break; } }, @@ -606,10 +606,38 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - Future _basicAuthExample() { - return webViewController.loadRequest(LoadRequestParams( - uri: Uri.parse( - 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + Future _promptForUrl(BuildContext context) { + final TextEditingController urlTextController = TextEditingController(); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Input URL to visit'), + content: TextField( + decoration: const InputDecoration(labelText: 'URL'), + autofocus: true, + controller: urlTextController, + ), + actions: [ + TextButton( + onPressed: () { + if (urlTextController.text.isNotEmpty) { + final Uri? uri = Uri.tryParse(urlTextController.text); + if (uri != null && uri.scheme.isNotEmpty) { + webViewController.loadRequest( + LoadRequestParams(uri: uri), + ); + Navigator.pop(context); + } + } + }, + child: const Text('Visit'), + ), + ], + ); + }, + ); } } diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist index 51f3642b2da..6aa6702a86e 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/Runner/Info.plist @@ -2,8 +2,6 @@ - CADisableMinimumFrameDurationOnPhone - CFBundleDevelopmentRegion en CFBundleExecutable @@ -24,16 +22,6 @@ $(FLUTTER_BUILD_NUMBER) LSRequiresIPhoneOS - NSAppTransportSecurity - - NSAllowsArbitraryLoadsInWebContent - - - NSCameraUsageDescription - If you want to use the camera, you have to give permission. - UIApplicationSupportsIndirectInputEvents - - UILaunchStoryboardName LaunchScreen UIMainStoryboardFile @@ -51,5 +39,16 @@ UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + CADisableMinimumFrameDurationOnPhone + + UIApplicationSupportsIndirectInputEvents + + NSCameraUsageDescription + If you want to use the camera, you have to give permission. + NSAppTransportSecurity + + NSAllowsArbitraryLoadsInWebContent + + 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 4f76dedd38c..f9d623d09ae 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -164,8 +164,6 @@ Page resource error: debugPrint('url change to ${change.url}'); }) ..setOnHttpAuthRequest((HttpAuthRequest request) { - debugPrint( - 'HTTP basic auth request with host ${request.host} and realm ${request.realm ?? '-'}'); openDialog(request); }), ) @@ -363,7 +361,7 @@ class SampleMenu extends StatelessWidget { _onLogExample(); break; case MenuOptions.basicAuthentication: - _basicAuthExample(); + _promptForUrl(context); break; } }, @@ -588,10 +586,39 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - Future _basicAuthExample() { - return webViewController.loadRequest(LoadRequestParams( - uri: Uri.parse( - 'https://www.httpwatch.com/httpgallery/authentication/#showExample10'))); + Future _promptForUrl(BuildContext context) { + final TextEditingController urlTextController = + TextEditingController(text: 'https://'); + + return showDialog( + context: context, + builder: (BuildContext context) { + return AlertDialog( + title: const Text('Input URL to visit'), + content: TextField( + decoration: const InputDecoration(labelText: 'URL'), + autofocus: true, + controller: urlTextController, + ), + actions: [ + TextButton( + onPressed: () { + if (urlTextController.text.isNotEmpty) { + final Uri? uri = Uri.tryParse(urlTextController.text); + if (uri != null && uri.scheme.isNotEmpty) { + webViewController.loadRequest( + LoadRequestParams(uri: uri), + ); + Navigator.pop(context); + } + } + }, + child: const Text('Visit'), + ), + ], + ); + }, + ); } } From 0fef59148b95242e89de371318bf57c2d20229c0 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Wed, 1 Nov 2023 11:49:34 +0100 Subject: [PATCH 17/30] Add platform interface dev dependency to example --- packages/webview_flutter/webview_flutter/example/pubspec.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml index 867029455aa..c863f7d4c09 100644 --- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml @@ -27,6 +27,8 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter + webview_flutter_platform_interface: + path: ../../webview_flutter_platform_interface flutter: uses-material-design: true From ce35d9b7603fe911c7a92ffc1e4c2e812b0d28e5 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 7 Nov 2023 19:31:13 -0500 Subject: [PATCH 18/30] Update packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart --- .../lib/src/types/http_auth_request.dart | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart index 0680b1e146a..14a94b26c06 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -3,7 +3,8 @@ // found in the LICENSE file. import 'package:flutter/foundation.dart'; -import '../../webview_flutter_platform_interface.dart'; +import 'webview_credential.dart'; +import '../platform_navigation_delegate.dart'; /// Defines the parameters of a pending HTTP authentication request received by /// the webview through a [HttpAuthRequestCallback]. From 580521a070426ba0fbe56d1fcb000da2efe556fe Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 7 Nov 2023 20:14:41 -0500 Subject: [PATCH 19/30] Fix some lints, errros and call on errors --- .../ios/Classes/FLTWebViewFlutterPlugin.m | 2 +- .../Classes/FWFNavigationDelegateHostApi.m | 34 ++++++++++++------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m index ee40a8451d7..e776726693b 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FLTWebViewFlutterPlugin.m @@ -106,7 +106,7 @@ + (void)registerWithRegistrar:(NSObject *)registrar { [[FWFURLHostApiImpl alloc] initWithBinaryMessenger:registrar.messenger instanceManager:instanceManager]); - FWFNSUrlCredentialHostApiSetup( + SetUpFWFNSUrlCredentialHostApi( registrar.messenger, [[FWFURLCredentialHostApiImpl alloc] initWithBinaryMessenger:registrar.messenger instanceManager:instanceManager]); diff --git a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m index f17212caff1..db8c4562748 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/ios/Classes/FWFNavigationDelegateHostApi.m @@ -115,8 +115,8 @@ - (void)webViewWebContentProcessDidTerminateForDelegate:(FWFNavigationDelegate * completion: (void (^)(FWFAuthenticationChallengeResponse *_Nullable, FlutterError *_Nullable))completion { - NSNumber *webViewIdentifier = - @([self.instanceManager identifierWithStrongReferenceForInstance:webView]); + NSInteger webViewIdentifier = + [self.instanceManager identifierWithStrongReferenceForInstance:webView]; FWFURLAuthenticationChallengeFlutterApiImpl *challengeApi = [[FWFURLAuthenticationChallengeFlutterApiImpl alloc] @@ -128,14 +128,15 @@ - (void)webViewWebContentProcessDidTerminateForDelegate:(FWFNavigationDelegate * NSAssert(!error, @"%@", error); }]; - [self didReceiveAuthenticationChallengeForDelegateWithIdentifier: - @([self identifierForDelegate:instance]) - webViewIdentifier:webViewIdentifier - challengeIdentifier: - @([self.instanceManager - identifierWithStrongReferenceForInstance: - challenge]) - completion:completion]; + [self + didReceiveAuthenticationChallengeForDelegateWithIdentifier:[self + identifierForDelegate:instance] + webViewIdentifier:webViewIdentifier + challengeIdentifier: + [self.instanceManager + identifierWithStrongReferenceForInstance: + challenge] + completion:completion]; } @end @@ -179,8 +180,13 @@ - (void)webView:(WKWebView *)webView completion:^(FWFWKNavigationActionPolicyEnumData *policy, FlutterError *error) { NSAssert(!error, @"%@", error); - decisionHandler( - FWFNativeWKNavigationActionPolicyFromEnumData(policy)); + if (!error) { + decisionHandler( + FWFNativeWKNavigationActionPolicyFromEnumData( + policy)); + } else { + decisionHandler(WKNavigationActionPolicyCancel); + } }]; } @@ -241,6 +247,10 @@ - (void)webView:(WKWebView *)webView : nil; completionHandler(disposition, credential); + } else { + completionHandler( + NSURLSessionAuthChallengeCancelAuthenticationChallenge, + nil); } }]; } From d1f305b7b9db829e578f7687716b65db6cdbe641 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 8 Nov 2023 13:33:29 -0500 Subject: [PATCH 20/30] fix lints --- .../lib/src/types/http_auth_request.dart | 1 - .../ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart index 14a94b26c06..d97206d766c 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -4,7 +4,6 @@ import 'package:flutter/foundation.dart'; import 'webview_credential.dart'; -import '../platform_navigation_delegate.dart'; /// Defines the parameters of a pending HTTP authentication request received by /// the webview through a [HttpAuthRequestCallback]. diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m index 08b2e4fe888..c5a6cdf36cf 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLProtectionSpaceHostApiTests.m @@ -28,14 +28,16 @@ - (void)testFlutterApiCreate { [flutterApi createWithInstance:protectionSpace host:@"host" realm:@"realm" + authenticationMethod:@"method" completion:^(FlutterError *error){ }]; long identifier = [instanceManager identifierWithStrongReferenceForInstance:protectionSpace]; - OCMVerify([flutterApi.api createWithIdentifier:@(identifier) + OCMVerify([flutterApi.api createWithIdentifier:identifier host:@"host" realm:@"realm" + authenticationMethod:@"method" completion:OCMOCK_ANY]); } @end From a3f74be0b36655cf27231131c887c39c2fa5dd77 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 8 Nov 2023 13:42:52 -0500 Subject: [PATCH 21/30] fix tests --- .../ios/RunnerTests/FWFNavigationDelegateHostApiTests.m | 6 +++--- .../RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m | 4 ++-- .../example/ios/RunnerTests/FWFURLCredentialHostApiTests.m | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m index 24bd6cf7c29..dc4cb3cf8ab 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFNavigationDelegateHostApiTests.m @@ -242,9 +242,9 @@ - (void)testDidReceiveAuthenticationChallenge { [instanceManager addDartCreatedInstance:credential withIdentifier:5]; OCMStub([mockFlutterAPI - didReceiveAuthenticationChallengeForDelegateWithIdentifier:@0 - webViewIdentifier:@1 - challengeIdentifier:@(2) + didReceiveAuthenticationChallengeForDelegateWithIdentifier:0 + webViewIdentifier:1 + challengeIdentifier:2 completion: ([OCMArg invokeBlockWithArgs: diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m index 2de5eb67ddb..fc0edf9f402 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLAuthenticationChallengeHostApiTests.m @@ -40,8 +40,8 @@ - (void)testFlutterApiCreate { long identifier = [instanceManager identifierWithStrongReferenceForInstance:mockChallenge]; long protectionSpaceIdentifier = [instanceManager identifierWithStrongReferenceForInstance:protectionSpace]; - OCMVerify([flutterApi.api createWithIdentifier:@(identifier) - protectionSpaceIdentifier:@(protectionSpaceIdentifier) + OCMVerify([flutterApi.api createWithIdentifier:identifier + protectionSpaceIdentifier:protectionSpaceIdentifier completion:OCMOCK_ANY]); } @end diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m index 70c9e29ee95..7f3aa3426da 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/ios/RunnerTests/FWFURLCredentialHostApiTests.m @@ -20,7 +20,7 @@ - (void)testHostApiCreate { instanceManager:instanceManager]; FlutterError *error; - [hostApi createWithUserWithIdentifier:@0 + [hostApi createWithUserWithIdentifier:0 user:@"user" password:@"password" persistence:FWFNSUrlCredentialPersistencePermanent From ed3798f84d4fbf8fe798e3d06494d5e28492cdb4 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 8 Nov 2023 13:53:53 -0500 Subject: [PATCH 22/30] add onProceed and onCancel back --- .../webview_flutter_test.dart | 3 +-- .../webview_flutter/example/lib/main.dart | 4 ++-- .../webview_flutter_test.dart | 2 +- .../example/lib/main.dart | 2 +- .../lib/src/android_webview_controller.dart | 14 +++++--------- .../lib/src/types/http_auth_request.dart | 12 +++++++----- .../webview_flutter_test.dart | 2 +- .../example/lib/main.dart | 4 ++-- .../lib/src/webkit_webview_controller.dart | 19 +++++++++---------- 9 files changed, 29 insertions(+), 33 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index b157dc263e3..615164b6cdd 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -808,8 +808,7 @@ Future main() async { unawaited( controller.setNavigationDelegate( NavigationDelegate( - onHttpAuthRequest: (HttpAuthRequest request) => - request.onAuthenticate( + onHttpAuthRequest: (HttpAuthRequest request) => request.onProceed( const WebViewCredential( user: 'user', password: 'password', diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index ada6c58728d..0297a6bdf40 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -262,14 +262,14 @@ Page resource error: // requests when a previous request is pending. TextButton( onPressed: () { - httpRequest.onAuthenticate(null); + httpRequest.onCancel(); Navigator.of(context).pop(); }, child: const Text('Cancel'), ), TextButton( onPressed: () { - httpRequest.onAuthenticate( + httpRequest.onProceed( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 8ccf81f9464..9ed263e8dc6 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -1178,7 +1178,7 @@ Future main() async { ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onAuthenticate( + (HttpAuthRequest request) => request.onProceed( const WebViewCredential(user: 'user', password: 'password'), ), ); 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 ed99d778773..387fdb1bb66 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -253,7 +253,7 @@ Page resource error: actions: [ TextButton( onPressed: () { - httpRequest.onAuthenticate( + httpRequest.onProceed( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index 95833bc120f..c7f3af8f507 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -1279,15 +1279,11 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { if (callback != null) { callback( HttpAuthRequest( - onAuthenticate: (WebViewCredential? credential) { - if (credential == null) { - httpAuthHandler.cancel(); - } else { - httpAuthHandler.proceed( - credential.user, - credential.password, - ); - } + onProceed: (WebViewCredential credential) { + httpAuthHandler.proceed(credential.user, credential.password); + }, + onCancel: () { + httpAuthHandler.cancel(); }, host: host, realm: realm, diff --git a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart index d97206d766c..8630a8fff3a 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart +++ b/packages/webview_flutter/webview_flutter_platform_interface/lib/src/types/http_auth_request.dart @@ -50,15 +50,17 @@ import 'webview_credential.dart'; class HttpAuthRequest { /// Creates a [HttpAuthRequest]. const HttpAuthRequest({ - required this.onAuthenticate, + required this.onProceed, + required this.onCancel, required this.host, this.realm, }); - /// The callback to proceed with, or cancel an auth request. - /// - /// If `credential` is `null`, the request will be canceled. - final void Function(WebViewCredential? credential) onAuthenticate; + /// The callback to authenticate. + final void Function(WebViewCredential credential) onProceed; + + /// The callback to cancel authentication. + final void Function() onCancel; /// The host requiring authentication. final String host; diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart index 064d70d506f..89ecad8d0e1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/integration_test/webview_flutter_test.dart @@ -1186,7 +1186,7 @@ Future main() async { ); await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onAuthenticate( + (HttpAuthRequest request) => request.onProceed( const WebViewCredential(user: 'user', password: 'password'), ), ); 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 85e8a8cfe2f..c2370184bf1 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/lib/main.dart @@ -257,14 +257,14 @@ Page resource error: // requests when a previous request is pending. TextButton( onPressed: () { - httpRequest.onAuthenticate(null); + httpRequest.onCancel(); Navigator.of(context).pop(); }, child: const Text('Cancel'), ), TextButton( onPressed: () { - httpRequest.onAuthenticate( + httpRequest.onProceed( WebViewCredential( user: usernameTextController.text, password: passwordTextController.text, diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 2acf425a5ae..3ceb370abac 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -966,16 +966,8 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { if (callback != null && host != null && realm != null) { callback( HttpAuthRequest( - onAuthenticate: (WebViewCredential? credential) { - if (credential == null) { - return completionHandler( - NSUrlSessionAuthChallengeDisposition - .cancelAuthenticationChallenge, - null, - ); - } - - return completionHandler( + onProceed: (WebViewCredential credential) { + completionHandler( NSUrlSessionAuthChallengeDisposition.useCredential, NSUrlCredential.withUser( user: credential.user, @@ -984,6 +976,13 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { ), ); }, + onCancel: () { + completionHandler( + NSUrlSessionAuthChallengeDisposition + .cancelAuthenticationChallenge, + null, + ); + }, host: host, realm: realm, ), From 154c1f84779ebb1e66a6685c3fd5d8d28a6db350 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 8 Nov 2023 17:27:15 -0500 Subject: [PATCH 23/30] dont require realm to be nonnull --- .../lib/src/webkit_webview_controller.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart index 3ceb370abac..62a4deb8ad4 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_wkwebview/lib/src/webkit_webview_controller.dart @@ -963,7 +963,7 @@ class WebKitNavigationDelegate extends PlatformNavigationDelegate { final String? host = challenge.protectionSpace.host; final String? realm = challenge.protectionSpace.realm; - if (callback != null && host != null && realm != null) { + if (callback != null && host != null) { callback( HttpAuthRequest( onProceed: (WebViewCredential credential) { From 3c61dbc4242fcd27e64e47668234dac496e64c94 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 8 Nov 2023 17:30:04 -0500 Subject: [PATCH 24/30] add line back --- packages/webview_flutter/webview_flutter/example/lib/main.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/webview_flutter/webview_flutter/example/lib/main.dart b/packages/webview_flutter/webview_flutter/example/lib/main.dart index 0297a6bdf40..8e1982964d1 100644 --- a/packages/webview_flutter/webview_flutter/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter/example/lib/main.dart @@ -129,6 +129,7 @@ class _WebViewExampleState extends State { if (WebViewPlatform.instance is WebKitWebViewPlatform) { params = WebKitWebViewControllerCreationParams( allowsInlineMediaPlayback: true, + mediaTypesRequiringUserAction: const {}, ); } else { params = const PlatformWebViewControllerCreationParams(); From a21f29a134d6c9244d7d6ca70659a3f9cf3ee4b0 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 21 Nov 2023 12:15:34 +0100 Subject: [PATCH 25/30] Update changelogs --- packages/webview_flutter/webview_flutter_android/CHANGELOG.md | 2 +- packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 89af75b43f8..5767150a0bb 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,6 +1,6 @@ ## 3.13.0 -* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. +* Adds support for `PlatformNavigationDelegate.setOnHttpAuthRequest`. * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. ## 3.12.1 diff --git a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md index 0357ba9bfd7..cc60d2de094 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_wkwebview/CHANGELOG.md @@ -1,6 +1,6 @@ ## 3.10.0 -* Adds support for `PlatformNavigationDelegate.setOnReceiveHttpAuthRequest`. +* Adds support for `PlatformNavigationDelegate.setOnHttpAuthRequest`. * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. ## 3.9.4 From 7aca4a9f9a2b4cf98bfad27c1a37e6035c1b2ad4 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 21 Nov 2023 12:54:35 +0100 Subject: [PATCH 26/30] Separate ios changes --- .../webview_flutter/CHANGELOG.md | 3 +- .../webview_flutter_test.dart | 73 +------ .../ios/Runner.xcodeproj/project.pbxproj | 2 +- .../xcshareddata/xcschemes/Runner.xcscheme | 2 +- .../webview_flutter/example/lib/main.dart | 99 ---------- .../webview_flutter/example/pubspec.yaml | 8 +- .../example/test/main_test.dart | 5 - .../lib/src/navigation_delegate.dart | 8 - .../webview_flutter/lib/webview_flutter.dart | 2 - .../webview_flutter/pubspec.yaml | 9 +- .../test/navigation_delegate_test.dart | 12 -- .../test/navigation_delegate_test.mocks.dart | 11 -- .../test/webview_controller_test.mocks.dart | 11 -- .../webview_flutter_android/CHANGELOG.md | 3 +- .../GeneratedAndroidWebView.java | 175 ----------------- .../WebViewClientFlutterApiImpl.java | 21 -- .../WebViewClientHostApiImpl.java | 22 +-- .../webviewflutter/WebViewFlutterPlugin.java | 3 - .../webview_flutter_test.dart | 86 --------- .../example/lib/main.dart | 98 +--------- .../example/pubspec.yaml | 5 - .../lib/src/android_proxy.dart | 6 - .../lib/src/android_webview.dart | 49 ----- .../lib/src/android_webview.g.dart | 171 ----------------- .../lib/src/android_webview_api_impls.dart | 112 +---------- .../lib/src/android_webview_controller.dart | 33 +--- .../pigeons/android_webview.dart | 40 ---- .../webview_flutter_android/pubspec.yaml | 9 +- .../android_navigation_delegate_test.dart | 66 ++----- .../test/android_webview_controller_test.dart | 6 - ...android_webview_controller_test.mocks.dart | 181 ++++++++++++++---- ...oid_webview_cookie_manager_test.mocks.dart | 37 ++++ .../test/android_webview_test.mocks.dart | 82 ++++++++ ...iew_android_cookie_manager_test.mocks.dart | 3 + .../webview_android_widget_test.mocks.dart | 60 ++++++ .../test/test_android_webview.g.dart | 101 ---------- .../pubspec.yaml | 2 +- 37 files changed, 372 insertions(+), 1244 deletions(-) diff --git a/packages/webview_flutter/webview_flutter/CHANGELOG.md b/packages/webview_flutter/webview_flutter/CHANGELOG.md index e1634a5d3af..3e2c39d3012 100644 --- a/packages/webview_flutter/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter/CHANGELOG.md @@ -1,6 +1,5 @@ -## 4.5.0 +## NEXT -* Adds support for HTTP basic authentication. See `NavigationDelegate(onReceivedHttpAuthRequest)`. * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. ## 4.4.2 diff --git a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart index 615164b6cdd..cee1b8b0344 100644 --- a/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter/example/integration_test/webview_flutter_test.dart @@ -32,25 +32,6 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; - } else if (request.uri.path == '/http-basic-authentication') { - final List? authHeader = - request.headers[HttpHeaders.authorizationHeader]; - if (authHeader != null) { - final String encodedCredential = authHeader.first.split(' ')[1]; - final String credential = - String.fromCharCodes(base64Decode(encodedCredential)); - if (credential == 'user:password') { - request.response.writeln('Authorized'); - } else { - request.response.headers.add( - HttpHeaders.wwwAuthenticateHeader, 'Basic realm="Test realm"'); - request.response.statusCode = HttpStatus.unauthorized; - } - } else { - request.response.headers - .add(HttpHeaders.wwwAuthenticateHeader, 'Basic realm="Test realm"'); - request.response.statusCode = HttpStatus.unauthorized; - } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -60,7 +41,6 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; - final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets('loadRequest', (WidgetTester tester) async { final Completer pageFinished = Completer(); @@ -69,9 +49,12 @@ Future main() async { unawaited(controller.setNavigationDelegate( NavigationDelegate(onPageFinished: (_) => pageFinished.complete()), )); - await tester.pumpWidget(WebViewWidget(controller: controller)); unawaited(controller.loadRequest(Uri.parse(primaryUrl))); + + await tester.pumpWidget(WebViewWidget(controller: controller)); + await pageFinished.future; + final String? currentUrl = await controller.currentUrl(); expect(currentUrl, primaryUrl); }); @@ -778,54 +761,6 @@ Future main() async { await expectLater(urlChangeCompleter.future, completion(secondaryUrl)); }); - - testWidgets('can receive HTTP basic auth requests', - (WidgetTester tester) async { - final Completer authRequested = Completer(); - final WebViewController controller = WebViewController(); - - unawaited( - controller.setNavigationDelegate( - NavigationDelegate( - onHttpAuthRequest: (HttpAuthRequest request) => - authRequested.complete(), - ), - ), - ); - - await tester.pumpWidget(WebViewWidget(controller: controller)); - - unawaited(controller.loadRequest(Uri.parse(basicAuthUrl))); - - await expectLater(authRequested.future, completes); - }); - - testWidgets('can authenticate to HTTP basic auth requests', - (WidgetTester tester) async { - final WebViewController controller = WebViewController(); - final Completer pageFinished = Completer(); - - unawaited( - controller.setNavigationDelegate( - NavigationDelegate( - onHttpAuthRequest: (HttpAuthRequest request) => request.onProceed( - const WebViewCredential( - user: 'user', - password: 'password', - ), - ), - onPageFinished: (_) => pageFinished.complete(), - onWebResourceError: (_) => fail('Authentication failed'), - ), - ), - ); - - await tester.pumpWidget(WebViewWidget(controller: controller)); - - unawaited(controller.loadRequest(Uri.parse(basicAuthUrl))); - - await expectLater(pageFinished.future, completes); - }); }); testWidgets('target _blank opens in same window', diff --git a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj index 8c5cae5f9d0..f4a6c737e42 100644 --- a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj +++ b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/project.pbxproj @@ -274,7 +274,7 @@ isa = PBXProject; attributes = { DefaultBuildSystemTypeForWorkspace = Original; - LastUpgradeCheck = 1430; + LastUpgradeCheck = 1300; ORGANIZATIONNAME = "The Flutter Authors"; TargetAttributes = { 68BDCAE823C3F7CB00D9C032 = { diff --git a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme index cf07c46df2e..cb713d76763 100644 --- a/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme +++ b/packages/webview_flutter/webview_flutter/example/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -1,6 +1,6 @@ openDialog(HttpAuthRequest httpRequest) async { - final TextEditingController usernameTextController = - TextEditingController(); - final TextEditingController passwordTextController = - TextEditingController(); - - return showDialog( - context: context, - barrierDismissible: false, - builder: (BuildContext context) { - return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), - content: SingleChildScrollView( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - decoration: const InputDecoration(labelText: 'Username'), - autofocus: true, - controller: usernameTextController, - ), - TextField( - decoration: const InputDecoration(labelText: 'Password'), - controller: passwordTextController, - ), - ], - ), - ), - actions: [ - // Explicitly cancel the request on iOS as the OS does not emit new - // requests when a previous request is pending. - TextButton( - onPressed: () { - httpRequest.onCancel(); - Navigator.of(context).pop(); - }, - child: const Text('Cancel'), - ), - TextButton( - onPressed: () { - httpRequest.onProceed( - WebViewCredential( - user: usernameTextController.text, - password: passwordTextController.text, - ), - ); - Navigator.of(context).pop(); - }, - child: const Text('Authenticate'), - ), - ], - ); - }, - ); - } } enum MenuOptions { @@ -302,7 +243,6 @@ enum MenuOptions { transparentBackground, setCookie, logExample, - basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -362,9 +302,6 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; - case MenuOptions.basicAuthentication: - _promptForUrl(context); - break; } }, itemBuilder: (BuildContext context) => >[ @@ -425,10 +362,6 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.logExample, child: Text('Log example'), ), - const PopupMenuItem( - value: MenuOptions.basicAuthentication, - child: Text('Basic Authentication Example'), - ), ], ); } @@ -582,38 +515,6 @@ class SampleMenu extends StatelessWidget { return webViewController.loadHtmlString(kLogExamplePage); } - - Future _promptForUrl(BuildContext context) { - final TextEditingController urlTextController = TextEditingController(); - - return showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: const Text('Input URL to visit'), - content: TextField( - decoration: const InputDecoration(labelText: 'URL'), - autofocus: true, - controller: urlTextController, - ), - actions: [ - TextButton( - onPressed: () { - if (urlTextController.text.isNotEmpty) { - final Uri? uri = Uri.tryParse(urlTextController.text); - if (uri != null && uri.scheme.isNotEmpty) { - webViewController.loadRequest(uri); - Navigator.pop(context); - } - } - }, - child: const Text('Visit'), - ), - ], - ); - }, - ); - } } class NavigationControls extends StatelessWidget { diff --git a/packages/webview_flutter/webview_flutter/example/pubspec.yaml b/packages/webview_flutter/webview_flutter/example/pubspec.yaml index fa06a6bb8e3..efc363539b7 100644 --- a/packages/webview_flutter/webview_flutter/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/example/pubspec.yaml @@ -27,8 +27,7 @@ dev_dependencies: sdk: flutter integration_test: sdk: flutter - webview_flutter_platform_interface: - path: ../../webview_flutter_platform_interface + webview_flutter_platform_interface: ^2.3.0 flutter: uses-material-design: true @@ -37,8 +36,3 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css - -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins -dependency_overrides: - {webview_flutter_android: {path: ../../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}, webview_flutter_wkwebview: {path: ../../../webview_flutter/webview_flutter_wkwebview}} diff --git a/packages/webview_flutter/webview_flutter/example/test/main_test.dart b/packages/webview_flutter/webview_flutter/example/test/main_test.dart index c4b43428ec9..b1f36d364ab 100644 --- a/packages/webview_flutter/webview_flutter/example/test/main_test.dart +++ b/packages/webview_flutter/webview_flutter/example/test/main_test.dart @@ -116,9 +116,4 @@ class FakeNavigationDelegate extends PlatformNavigationDelegate { @override Future setOnUrlChange(UrlChangeCallback onUrlChange) async {} - - @override - Future setOnHttpAuthRequest( - HttpAuthRequestCallback handler, - ) async {} } diff --git a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart index d1c5687c95a..9ca6981339d 100644 --- a/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart +++ b/packages/webview_flutter/webview_flutter/lib/src/navigation_delegate.dart @@ -48,7 +48,6 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, - void Function(HttpAuthRequest request)? onHttpAuthRequest, }) : this.fromPlatformCreationParams( const PlatformNavigationDelegateCreationParams(), onNavigationRequest: onNavigationRequest, @@ -57,7 +56,6 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, - onHttpAuthRequest: onHttpAuthRequest, ); /// Constructs a [NavigationDelegate] from creation params for a specific @@ -100,7 +98,6 @@ class NavigationDelegate { void Function(int progress)? onProgress, void Function(WebResourceError error)? onWebResourceError, void Function(UrlChange change)? onUrlChange, - void Function(HttpAuthRequest request)? onHttpAuthRequest, }) : this.fromPlatform( PlatformNavigationDelegate(params), onNavigationRequest: onNavigationRequest, @@ -109,7 +106,6 @@ class NavigationDelegate { onProgress: onProgress, onWebResourceError: onWebResourceError, onUrlChange: onUrlChange, - onHttpAuthRequest: onHttpAuthRequest, ); /// Constructs a [NavigationDelegate] from a specific platform implementation. @@ -123,7 +119,6 @@ class NavigationDelegate { this.onProgress, this.onWebResourceError, void Function(UrlChange change)? onUrlChange, - HttpAuthRequestCallback? onHttpAuthRequest, }) { if (onNavigationRequest != null) { platform.setOnNavigationRequest(onNavigationRequest!); @@ -143,9 +138,6 @@ class NavigationDelegate { if (onUrlChange != null) { platform.setOnUrlChange(onUrlChange); } - if (onHttpAuthRequest != null) { - platform.setOnHttpAuthRequest(onHttpAuthRequest); - } } /// Implementation of [PlatformNavigationDelegate] for the current platform. diff --git a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart index b92c2fd90f8..4132a61cab7 100644 --- a/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart +++ b/packages/webview_flutter/webview_flutter/lib/webview_flutter.dart @@ -6,7 +6,6 @@ library webview_flutter; export 'package:webview_flutter_platform_interface/webview_flutter_platform_interface.dart' show - HttpAuthRequest, JavaScriptConsoleMessage, JavaScriptLogLevel, JavaScriptMessage, @@ -27,7 +26,6 @@ export 'package:webview_flutter_platform_interface/webview_flutter_platform_inte WebResourceErrorCallback, WebResourceErrorType, WebViewCookie, - WebViewCredential, WebViewPermissionResourceType, WebViewPlatform; diff --git a/packages/webview_flutter/webview_flutter/pubspec.yaml b/packages/webview_flutter/webview_flutter/pubspec.yaml index eccf5a74fa5..018fde3bd40 100644 --- a/packages/webview_flutter/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 4.5.0 +version: 4.4.2 environment: sdk: ">=3.0.0 <4.0.0" @@ -20,7 +20,7 @@ dependencies: flutter: sdk: flutter webview_flutter_android: ^3.12.0 - webview_flutter_platform_interface: ^2.7.0 + webview_flutter_platform_interface: ^2.6.0 webview_flutter_wkwebview: ^3.9.0 dev_dependencies: @@ -34,8 +34,3 @@ topics: - html - webview - webview-flutter - -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins -dependency_overrides: - {webview_flutter_android: {path: ../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}, webview_flutter_wkwebview: {path: ../../webview_flutter/webview_flutter_wkwebview}} diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart index c2bc6f230fa..ffd97718bd4 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.dart @@ -87,18 +87,6 @@ void main() { verify(delegate.platform.setOnUrlChange(onUrlChange)); }); - - test('onHttpAuthRequest', () { - WebViewPlatform.instance = TestWebViewPlatform(); - - void onHttpAuthRequest(HttpAuthRequest request) {} - - final NavigationDelegate delegate = NavigationDelegate( - onHttpAuthRequest: onHttpAuthRequest, - ); - - verify(delegate.platform.setOnHttpAuthRequest(onHttpAuthRequest)); - }); }); } diff --git a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart index 0d92999d619..0a3475f8fcf 100644 --- a/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/navigation_delegate_test.mocks.dart @@ -250,15 +250,4 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i8.Future.value(), returnValueForMissingStub: _i8.Future.value(), ) as _i8.Future); - @override - _i8.Future setOnHttpAuthRequest( - _i3.HttpAuthRequestCallback? onHttpAuthRequest) => - (super.noSuchMethod( - Invocation.method( - #setOnHttpAuthRequest, - [onHttpAuthRequest], - ), - returnValue: _i8.Future.value(), - returnValueForMissingStub: _i8.Future.value(), - ) as _i8.Future); } diff --git a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart index 490369694e5..343a7ad5689 100644 --- a/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter/test/webview_controller_test.mocks.dart @@ -466,15 +466,4 @@ class MockPlatformNavigationDelegate extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); - @override - _i5.Future setOnHttpAuthRequest( - _i6.HttpAuthRequestCallback? onHttpAuthRequest) => - (super.noSuchMethod( - Invocation.method( - #setOnHttpAuthRequest, - [onHttpAuthRequest], - ), - returnValue: _i5.Future.value(), - returnValueForMissingStub: _i5.Future.value(), - ) as _i5.Future); } diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 5767150a0bb..fc1b391494d 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,6 +1,5 @@ -## 3.13.0 +## NEXT -* Adds support for `PlatformNavigationDelegate.setOnHttpAuthRequest`. * Updates minimum supported SDK version to Flutter 3.10/Dart 3.0. ## 3.12.1 diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java index 703c81a31da..8e8a12cbd30 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java @@ -2523,29 +2523,6 @@ public void doUpdateVisitedHistory( Arrays.asList(instanceIdArg, webViewInstanceIdArg, urlArg, isReloadArg)), channelReply -> callback.reply(null)); } - - public void onReceivedHttpAuthRequest( - @NonNull Long instanceIdArg, - @NonNull Long webViewInstanceIdArg, - @NonNull Long httpAuthHandlerInstanceIdArg, - @NonNull String hostArg, - @NonNull String realmArg, - @NonNull Reply callback) { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest", - getCodec()); - channel.send( - new ArrayList( - Arrays.asList( - instanceIdArg, - webViewInstanceIdArg, - httpAuthHandlerInstanceIdArg, - hostArg, - realmArg)), - channelReply -> callback.reply(null)); - } } /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface DownloadListenerHostApi { @@ -3438,156 +3415,4 @@ public void create(@NonNull Long instanceIdArg, @NonNull Reply callback) { channelReply -> callback.reply(null)); } } - /** - * Host API for `HttpAuthHandler`. - * - *

This class may handle instantiating and adding native object instances that are attached to - * a Dart instance or handle method calls on the associated native class or an instance of the - * class. - * - *

See https://developer.android.com/reference/android/webkit/HttpAuthHandler. - * - *

Generated interface from Pigeon that represents a handler of messages from Flutter. - */ - public interface HttpAuthHandlerHostApi { - /** Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. */ - @NonNull - Boolean useHttpAuthUsernamePassword(@NonNull Long instanceId); - /** Handles Dart method `HttpAuthHandler.cancel`. */ - void cancel(@NonNull Long instanceId); - /** Handles Dart method `HttpAuthHandler.proceed`. */ - void proceed(@NonNull Long instanceId, @NonNull String username, @NonNull String password); - - /** The codec used by HttpAuthHandlerHostApi. */ - static @NonNull MessageCodec getCodec() { - return new StandardMessageCodec(); - } - /** - * Sets up an instance of `HttpAuthHandlerHostApi` to handle messages through the - * `binaryMessenger`. - */ - static void setup( - @NonNull BinaryMessenger binaryMessenger, @Nullable HttpAuthHandlerHostApi api) { - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword", - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList(); - ArrayList args = (ArrayList) message; - Number instanceIdArg = (Number) args.get(0); - try { - Boolean output = - api.useHttpAuthUsernamePassword( - (instanceIdArg == null) ? null : instanceIdArg.longValue()); - wrapped.add(0, output); - } catch (Throwable exception) { - ArrayList wrappedError = wrapError(exception); - wrapped = wrappedError; - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel", - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList(); - ArrayList args = (ArrayList) message; - Number instanceIdArg = (Number) args.get(0); - try { - api.cancel((instanceIdArg == null) ? null : instanceIdArg.longValue()); - wrapped.add(0, null); - } catch (Throwable exception) { - ArrayList wrappedError = wrapError(exception); - wrapped = wrappedError; - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed", - getCodec()); - if (api != null) { - channel.setMessageHandler( - (message, reply) -> { - ArrayList wrapped = new ArrayList(); - ArrayList args = (ArrayList) message; - Number instanceIdArg = (Number) args.get(0); - String usernameArg = (String) args.get(1); - String passwordArg = (String) args.get(2); - try { - api.proceed( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - usernameArg, - passwordArg); - wrapped.add(0, null); - } catch (Throwable exception) { - ArrayList wrappedError = wrapError(exception); - wrapped = wrappedError; - } - reply.reply(wrapped); - }); - } else { - channel.setMessageHandler(null); - } - } - } - } - /** - * Flutter API for `HttpAuthHandler`. - * - *

This class may handle instantiating and adding Dart instances that are attached to a native - * instance or receiving callback methods from an overridden native class. - * - *

See https://developer.android.com/reference/android/webkit/HttpAuthHandler. - * - *

Generated class from Pigeon that represents Flutter messages that can be called from Java. - */ - public static class HttpAuthHandlerFlutterApi { - private final @NonNull BinaryMessenger binaryMessenger; - - public HttpAuthHandlerFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { - this.binaryMessenger = argBinaryMessenger; - } - - /** Public interface for sending reply. */ - @SuppressWarnings("UnknownNullness") - public interface Reply { - void reply(T reply); - } - /** The codec used by HttpAuthHandlerFlutterApi. */ - static @NonNull MessageCodec getCodec() { - return new StandardMessageCodec(); - } - /** Create a new Dart instance and add it to the `InstanceManager`. */ - public void create(@NonNull Long instanceIdArg, @NonNull Reply callback) { - BasicMessageChannel channel = - new BasicMessageChannel<>( - binaryMessenger, - "dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create", - getCodec()); - channel.send( - new ArrayList(Collections.singletonList(instanceIdArg)), - channelReply -> callback.reply(null)); - } - } } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java index 7a5a057cf11..4dee9c0ad3f 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java @@ -6,7 +6,6 @@ import android.annotation.SuppressLint; import android.os.Build; -import android.webkit.HttpAuthHandler; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -231,26 +230,6 @@ public void doUpdateVisitedHistory( getIdentifierForClient(webViewClient), webViewIdentifier, url, isReload, callback); } - /** Passes arguments from {@link WebViewClient#onReceivedHttpAuthRequest} to Dart. */ - public void onReceivedHttpAuthRequest( - @NonNull WebViewClient webViewClient, - @NonNull WebView webview, - @NonNull HttpAuthHandler httpAuthHandler, - @NonNull String host, - @NonNull String realm, - @NonNull Reply callback) { - new HttpAuthHandlerFlutterApiImpl(binaryMessenger, instanceManager) - .create(httpAuthHandler, reply -> {}); - - onReceivedHttpAuthRequest( - Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(webViewClient)), - Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(webview)), - Objects.requireNonNull(instanceManager.getIdentifierForStrongReference(httpAuthHandler)), - host, - realm, - callback); - } - private long getIdentifierForClient(WebViewClient webViewClient) { final Long identifier = instanceManager.getIdentifierForStrongReference(webViewClient); if (identifier == null) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 1ace7bfe072..35ae02a7625 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -9,7 +9,6 @@ import android.graphics.Bitmap; import android.os.Build; import android.view.KeyEvent; -import android.webkit.HttpAuthHandler; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebView; @@ -39,7 +38,7 @@ public static class WebViewClientImpl extends WebViewClient { /** * Creates a {@link WebViewClient} that passes arguments of callbacks methods to Dart. * - * @param flutterApi handles sending messages to Dart. + * @param flutterApi handles sending messages to Dart */ public WebViewClientImpl(@NonNull WebViewClientFlutterApiImpl flutterApi) { this.flutterApi = flutterApi; @@ -96,15 +95,6 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } - @Override - public void onReceivedHttpAuthRequest( - @NonNull WebView view, - @NonNull HttpAuthHandler handler, - @NonNull String host, - @NonNull String realm) { - flutterApi.onReceivedHttpAuthRequest(this, view, handler, host, realm, reply -> {}); - } - @Override public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be @@ -186,16 +176,6 @@ public void doUpdateVisitedHistory( flutterApi.doUpdateVisitedHistory(this, view, url, isReload, reply -> {}); } - // Handles an HTTP authentication request. - // - // This callback is invoked when the WebView encounters a website requiring HTTP authentication. - // [host] and [realm] are provided for matching against stored credentials, if any. - @Override - public void onReceivedHttpAuthRequest( - @NonNull WebView view, HttpAuthHandler handler, String host, String realm) { - flutterApi.onReceivedHttpAuthRequest(this, view, handler, host, realm, reply -> {}); - } - @Override public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java index 7f026119f47..e763c919e02 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java @@ -19,7 +19,6 @@ import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.DownloadListenerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.FlutterAssetManagerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.GeolocationPermissionsCallbackHostApi; -import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.InstanceManagerHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaObjectHostApi; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaScriptChannelHostApi; @@ -145,8 +144,6 @@ private void setUp( new GeolocationPermissionsCallbackHostApiImpl(binaryMessenger, instanceManager)); CustomViewCallbackHostApi.setup( binaryMessenger, new CustomViewCallbackHostApiImpl(binaryMessenger, instanceManager)); - HttpAuthHandlerHostApi.setup( - binaryMessenger, new HttpAuthHandlerHostApiImpl(binaryMessenger, instanceManager)); } @Override diff --git a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart index 9ed263e8dc6..19fd1a44758 100644 --- a/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart +++ b/packages/webview_flutter/webview_flutter_android/example/integration_test/webview_flutter_test.dart @@ -35,15 +35,6 @@ Future main() async { request.response.writeln('${request.headers}'); } else if (request.uri.path == '/favicon.ico') { request.response.statusCode = HttpStatus.notFound; - } else if (request.uri.path == '/http-basic-authentication') { - final bool isAuthenticating = request.headers['Authorization'] != null; - if (isAuthenticating) { - request.response.writeln('Authorized'); - } else { - request.response.headers - .add('WWW-Authenticate', 'Basic realm="Test realm"'); - request.response.statusCode = HttpStatus.unauthorized; - } } else { fail('unexpected request: ${request.method} ${request.uri}'); } @@ -53,7 +44,6 @@ Future main() async { final String primaryUrl = '$prefixUrl/hello.txt'; final String secondaryUrl = '$prefixUrl/secondary.txt'; final String headersUrl = '$prefixUrl/headers'; - final String basicAuthUrl = '$prefixUrl/http-basic-authentication'; testWidgets('loadRequest', (WidgetTester tester) async { final Completer pageFinished = Completer(); @@ -1129,82 +1119,6 @@ Future main() async { }); }); - testWidgets('can receive HTTP basic auth requests', - (WidgetTester tester) async { - final Completer authRequested = Completer(); - final PlatformWebViewController controller = PlatformWebViewController( - const PlatformWebViewControllerCreationParams(), - ); - - final PlatformNavigationDelegate navigationDelegate = - PlatformNavigationDelegate( - const PlatformNavigationDelegateCreationParams(), - ); - await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => authRequested.complete()); - await controller.setPlatformNavigationDelegate(navigationDelegate); - - // Clear cache so that the auth request is always received and we don't get - // a cached response. - await controller.clearCache(); - - await tester.pumpWidget( - Builder( - builder: (BuildContext context) { - return PlatformWebViewWidget( - AndroidWebViewWidgetCreationParams(controller: controller), - ).build(context); - }, - ), - ); - - await controller.loadRequest( - LoadRequestParams(uri: Uri.parse(basicAuthUrl)), - ); - - await expectLater(authRequested.future, completes); - }); - - testWidgets('can reply to HTTP basic auth requests', - (WidgetTester tester) async { - final Completer pageFinished = Completer(); - final PlatformWebViewController controller = PlatformWebViewController( - const PlatformWebViewControllerCreationParams(), - ); - - final PlatformNavigationDelegate navigationDelegate = - PlatformNavigationDelegate( - const PlatformNavigationDelegateCreationParams(), - ); - await navigationDelegate.setOnPageFinished((_) => pageFinished.complete()); - await navigationDelegate.setOnHttpAuthRequest( - (HttpAuthRequest request) => request.onProceed( - const WebViewCredential(user: 'user', password: 'password'), - ), - ); - await controller.setPlatformNavigationDelegate(navigationDelegate); - - // Clear cache so that the auth request is always received and we do not get - // a cached response. - await controller.clearCache(); - - await tester.pumpWidget( - Builder( - builder: (BuildContext context) { - return PlatformWebViewWidget( - AndroidWebViewWidgetCreationParams(controller: controller), - ).build(context); - }, - ), - ); - - await controller.loadRequest( - LoadRequestParams(uri: Uri.parse(basicAuthUrl)), - ); - - await expectLater(pageFinished.future, completes); - }); - testWidgets('target _blank opens in same window', (WidgetTester tester) async { final Completer pageLoaded = Completer(); 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 387fdb1bb66..68794e4157e 100644 --- a/packages/webview_flutter/webview_flutter_android/example/lib/main.dart +++ b/packages/webview_flutter/webview_flutter_android/example/lib/main.dart @@ -161,9 +161,6 @@ Page resource error: }) ..setOnUrlChange((UrlChange change) { debugPrint('url change to ${change.url}'); - }) - ..setOnHttpAuthRequest((HttpAuthRequest request) { - openDialog(request); }), ) ..addJavaScriptChannel(JavaScriptChannelParams( @@ -182,11 +179,9 @@ Page resource error: request.grant(); }, ) - ..loadRequest( - LoadRequestParams( - uri: Uri.parse('https://flutter.dev'), - ), - ); + ..loadRequest(LoadRequestParams( + uri: Uri.parse('https://flutter.dev'), + )); } @override @@ -224,50 +219,6 @@ Page resource error: child: const Icon(Icons.favorite), ); } - - Future openDialog(HttpAuthRequest httpRequest) async { - final TextEditingController usernameTextController = - TextEditingController(); - final TextEditingController passwordTextController = - TextEditingController(); - - return showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: Text('${httpRequest.host}: ${httpRequest.realm ?? '-'}'), - content: Column( - mainAxisSize: MainAxisSize.min, - children: [ - TextField( - decoration: const InputDecoration(labelText: 'Username'), - autofocus: true, - controller: usernameTextController, - ), - TextField( - decoration: const InputDecoration(labelText: 'Password'), - controller: passwordTextController, - ), - ], - ), - actions: [ - TextButton( - onPressed: () { - httpRequest.onProceed( - WebViewCredential( - user: usernameTextController.text, - password: passwordTextController.text, - ), - ); - Navigator.of(context).pop(); - }, - child: const Text('Authenticate'), - ), - ], - ); - }, - ); - } } enum MenuOptions { @@ -286,7 +237,6 @@ enum MenuOptions { setCookie, videoExample, logExample, - basicAuthentication, } class SampleMenu extends StatelessWidget { @@ -353,9 +303,6 @@ class SampleMenu extends StatelessWidget { case MenuOptions.logExample: _onLogExample(); break; - case MenuOptions.basicAuthentication: - _promptForUrl(context); - break; } }, itemBuilder: (BuildContext context) => >[ @@ -420,10 +367,6 @@ class SampleMenu extends StatelessWidget { value: MenuOptions.videoExample, child: Text('Video example'), ), - const PopupMenuItem( - value: MenuOptions.basicAuthentication, - child: Text('Basic Authentication Example'), - ), ], ); } @@ -603,41 +546,8 @@ class SampleMenu extends StatelessWidget { debugPrint( '== JS == ${consoleMessage.level.name}: ${consoleMessage.message}'); }); - return webViewController.loadHtmlString(kLogExamplePage); - } - Future _promptForUrl(BuildContext context) { - final TextEditingController urlTextController = TextEditingController(); - - return showDialog( - context: context, - builder: (BuildContext context) { - return AlertDialog( - title: const Text('Input URL to visit'), - content: TextField( - decoration: const InputDecoration(labelText: 'URL'), - autofocus: true, - controller: urlTextController, - ), - actions: [ - TextButton( - onPressed: () { - if (urlTextController.text.isNotEmpty) { - final Uri? uri = Uri.tryParse(urlTextController.text); - if (uri != null && uri.scheme.isNotEmpty) { - webViewController.loadRequest( - LoadRequestParams(uri: uri), - ); - Navigator.pop(context); - } - } - }, - child: const Text('Visit'), - ), - ], - ); - }, - ); + return webViewController.loadHtmlString(kLogExamplePage); } } diff --git a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml index baed2e5489a..e88143ab6a1 100644 --- a/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/example/pubspec.yaml @@ -33,8 +33,3 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css - -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins -dependency_overrides: - {webview_flutter_android: {path: ../../../webview_flutter/webview_flutter_android}, webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart index 339ce9fed2b..f3d00ebd88e 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_proxy.dart @@ -78,12 +78,6 @@ class AndroidWebViewProxy { void Function(android_webview.WebView webView, String url)? urlLoading, void Function(android_webview.WebView webView, String url, bool isReload)? doUpdateVisitedHistory, - void Function( - android_webview.WebView webView, - android_webview.HttpAuthHandler handler, - String host, - String realm, - )? onReceivedHttpAuthRequest, }) createAndroidWebViewClient; /// Constructs a [android_webview.FlutterAssetManager]. diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart index f18c66b02e3..c0778ed0722 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.dart @@ -769,7 +769,6 @@ class WebViewClient extends JavaObject { this.requestLoading, this.urlLoading, this.doUpdateVisitedHistory, - this.onReceivedHttpAuthRequest, @visibleForTesting super.binaryMessenger, @visibleForTesting super.instanceManager, }) : super.detached() { @@ -790,7 +789,6 @@ class WebViewClient extends JavaObject { this.requestLoading, this.urlLoading, this.doUpdateVisitedHistory, - this.onReceivedHttpAuthRequest, super.binaryMessenger, super.instanceManager, }) : super.detached(); @@ -939,14 +937,6 @@ class WebViewClient extends JavaObject { final void Function(WebView webView, String url, bool isReload)? doUpdateVisitedHistory; - /// This callback is only called for requests that require HTTP authentication. - final void Function( - WebView webView, - HttpAuthHandler handler, - String host, - String realm, - )? onReceivedHttpAuthRequest; - /// Sets the required synchronous return value for the Java method, /// `WebViewClient.shouldOverrideUrlLoading(...)`. /// @@ -975,7 +965,6 @@ class WebViewClient extends JavaObject { requestLoading: requestLoading, urlLoading: urlLoading, doUpdateVisitedHistory: doUpdateVisitedHistory, - onReceivedHttpAuthRequest: onReceivedHttpAuthRequest, binaryMessenger: _api.binaryMessenger, instanceManager: _api.instanceManager, ); @@ -1507,41 +1496,3 @@ class CustomViewCallback extends JavaObject { ); } } - -/// Represents a request for HTTP authentication. -/// -/// Instances of this class are created by the [WebView] and passed to -/// [WebViewClient.onReceivedHttpAuthRequest]. The host application must call -/// either [HttpAuthHandler.proceed] or [HttpAuthHandler.cancel] to set the -/// WebView's response to the request. -class HttpAuthHandler extends JavaObject { - /// Constructs a [HttpAuthHandler]. - HttpAuthHandler({ - super.binaryMessenger, - super.instanceManager, - }) : super.detached(); - - /// Pigeon Host Api implementation for [HttpAuthHandler]. - @visibleForTesting - static HttpAuthHandlerHostApiImpl api = HttpAuthHandlerHostApiImpl(); - - /// Instructs the WebView to cancel the authentication request. - Future cancel() { - return api.cancelFromInstance(this); - } - - /// Instructs the WebView to proceed with the authentication with the provided - /// credentials. - Future proceed(String username, String password) { - return api.proceedFromInstance(this, username, password); - } - - /// Gets whether the credentials stored for the current host are suitable for - /// use. - /// - /// Credentials are not suitable if they have previously been rejected by the - /// server for the current request. - Future useHttpAuthUsernamePassword() { - return api.useHttpAuthUsernamePasswordFromInstance(this); - } -} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart index 6911ed651da..8435f7302fa 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart @@ -1703,9 +1703,6 @@ abstract class WebViewClientFlutterApi { void doUpdateVisitedHistory( int instanceId, int webViewInstanceId, String url, bool isReload); - void onReceivedHttpAuthRequest(int instanceId, int webViewInstanceId, - int httpAuthHandlerInstanceId, String host, String realm); - static void setup(WebViewClientFlutterApi? api, {BinaryMessenger? binaryMessenger}) { { @@ -1909,39 +1906,6 @@ abstract class WebViewClientFlutterApi { }); } } - { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest', - codec, - binaryMessenger: binaryMessenger); - if (api == null) { - channel.setMessageHandler(null); - } else { - channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null.'); - final List args = (message as List?)!; - final int? arg_instanceId = (args[0] as int?); - assert(arg_instanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); - final int? arg_webViewInstanceId = (args[1] as int?); - assert(arg_webViewInstanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); - final int? arg_httpAuthHandlerInstanceId = (args[2] as int?); - assert(arg_httpAuthHandlerInstanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null int.'); - final String? arg_host = (args[3] as String?); - assert(arg_host != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.WebViewClientFlutterApi.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.WebViewClientFlutterApi.onReceivedHttpAuthRequest was null, expected non-null String.'); - api.onReceivedHttpAuthRequest(arg_instanceId!, arg_webViewInstanceId!, - arg_httpAuthHandlerInstanceId!, arg_host!, arg_realm!); - return; - }); - } - } } } @@ -2835,138 +2799,3 @@ abstract class GeolocationPermissionsCallbackFlutterApi { } } } - -/// Host API for `HttpAuthHandler`. -/// -/// This class may handle instantiating and adding native object instances that -/// are attached to a Dart instance or handle method calls on the associated -/// native class or an instance of the class. -/// -/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. -class HttpAuthHandlerHostApi { - /// Constructor for [HttpAuthHandlerHostApi]. The [binaryMessenger] named argument is - /// available for dependency injection. If it is left null, the default - /// BinaryMessenger will be used which routes to the host platform. - HttpAuthHandlerHostApi({BinaryMessenger? binaryMessenger}) - : _binaryMessenger = binaryMessenger; - final BinaryMessenger? _binaryMessenger; - - static const MessageCodec codec = StandardMessageCodec(); - - /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. - Future useHttpAuthUsernamePassword(int arg_instanceId) async { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword', - codec, - binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send([arg_instanceId]) as List?; - if (replyList == null) { - throw PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel.', - ); - } else if (replyList.length > 1) { - throw PlatformException( - code: replyList[0]! as String, - message: replyList[1] as String?, - details: replyList[2], - ); - } else if (replyList[0] == null) { - throw PlatformException( - code: 'null-error', - message: 'Host platform returned null value for non-null return value.', - ); - } else { - return (replyList[0] as bool?)!; - } - } - - /// Handles Dart method `HttpAuthHandler.cancel`. - Future cancel(int arg_instanceId) async { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel', - codec, - binaryMessenger: _binaryMessenger); - final List? replyList = - await channel.send([arg_instanceId]) as List?; - if (replyList == null) { - throw PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel.', - ); - } else if (replyList.length > 1) { - throw PlatformException( - code: replyList[0]! as String, - message: replyList[1] as String?, - details: replyList[2], - ); - } else { - return; - } - } - - /// Handles Dart method `HttpAuthHandler.proceed`. - Future proceed( - int arg_instanceId, String arg_username, String arg_password) async { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed', - codec, - binaryMessenger: _binaryMessenger); - final List? replyList = await channel - .send([arg_instanceId, arg_username, arg_password]) - as List?; - if (replyList == null) { - throw PlatformException( - code: 'channel-error', - message: 'Unable to establish connection on channel.', - ); - } else if (replyList.length > 1) { - throw PlatformException( - code: replyList[0]! as String, - message: replyList[1] as String?, - details: replyList[2], - ); - } else { - return; - } - } -} - -/// Flutter API for `HttpAuthHandler`. -/// -/// This class may handle instantiating and adding Dart instances that are -/// attached to a native instance or receiving callback methods from an -/// overridden native class. -/// -/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. -abstract class HttpAuthHandlerFlutterApi { - static const MessageCodec codec = StandardMessageCodec(); - - /// Create a new Dart instance and add it to the `InstanceManager`. - void create(int instanceId); - - static void setup(HttpAuthHandlerFlutterApi? api, - {BinaryMessenger? binaryMessenger}) { - { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create', - codec, - binaryMessenger: binaryMessenger); - if (api == null) { - channel.setMessageHandler(null); - } else { - channel.setMessageHandler((Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create was null.'); - final List args = (message as List?)!; - final int? arg_instanceId = (args[0] as int?); - assert(arg_instanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerFlutterApi.create was null, expected non-null int.'); - api.create(arg_instanceId!); - return; - }); - } - } - } -} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart index e0e4c9a3b7a..4ecb06b0579 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_api_impls.dart @@ -2,9 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:typed_data'; import 'dart:ui'; -import 'package:flutter/services.dart' show BinaryMessenger, Uint8List; +import 'package:flutter/services.dart' show BinaryMessenger; import 'android_webview.dart'; import 'android_webview.g.dart'; @@ -49,7 +50,6 @@ class AndroidWebViewFlutterApis { PermissionRequestFlutterApiImpl? permissionRequestFlutterApi, CustomViewCallbackFlutterApiImpl? customViewCallbackFlutterApi, ViewFlutterApiImpl? viewFlutterApi, - HttpAuthHandlerFlutterApiImpl? httpAuthHandlerFlutterApi, }) { this.javaObjectFlutterApi = javaObjectFlutterApi ?? JavaObjectFlutterApiImpl(); @@ -72,8 +72,6 @@ class AndroidWebViewFlutterApis { this.customViewCallbackFlutterApi = customViewCallbackFlutterApi ?? CustomViewCallbackFlutterApiImpl(); this.viewFlutterApi = viewFlutterApi ?? ViewFlutterApiImpl(); - this.httpAuthHandlerFlutterApi = - httpAuthHandlerFlutterApi ?? HttpAuthHandlerFlutterApiImpl(); } static bool _haveBeenSetUp = false; @@ -117,9 +115,6 @@ class AndroidWebViewFlutterApis { /// Flutter Api for [View]. late final ViewFlutterApiImpl viewFlutterApi; - /// Flutter Api for [HttpAuthHandler]. - late final HttpAuthHandlerFlutterApiImpl httpAuthHandlerFlutterApi; - /// Ensures all the Flutter APIs have been setup to receive calls from native code. void ensureSetUp() { if (!_haveBeenSetUp) { @@ -135,7 +130,6 @@ class AndroidWebViewFlutterApis { PermissionRequestFlutterApi.setup(permissionRequestFlutterApi); CustomViewCallbackFlutterApi.setup(customViewCallbackFlutterApi); ViewFlutterApi.setup(viewFlutterApi); - HttpAuthHandlerFlutterApi.setup(httpAuthHandlerFlutterApi); _haveBeenSetUp = true; } } @@ -809,49 +803,16 @@ class WebViewClientFlutterApiImpl extends WebViewClientFlutterApi { .getInstanceWithWeakReference(webViewInstanceId) as WebView?; assert( instance != null, - 'InstanceManager does not contain a WebViewClient with instanceId: $instanceId', + 'InstanceManager does not contain an WebViewClient with instanceId: $instanceId', ); assert( webViewInstance != null, - 'InstanceManager does not contain a WebView with instanceId: $webViewInstanceId', + 'InstanceManager does not contain an WebView with instanceId: $webViewInstanceId', ); if (instance!.doUpdateVisitedHistory != null) { instance.doUpdateVisitedHistory!(webViewInstance!, url, isReload); } } - - @override - void onReceivedHttpAuthRequest( - int instanceId, - int webViewInstanceId, - int httpAuthHandlerInstanceId, - String host, - String realm, - ) { - final WebViewClient? instance = instanceManager - .getInstanceWithWeakReference(instanceId) as WebViewClient?; - final WebView? webViewInstance = instanceManager - .getInstanceWithWeakReference(webViewInstanceId) as WebView?; - final HttpAuthHandler? httpAuthHandlerInstance = - instanceManager.getInstanceWithWeakReference(httpAuthHandlerInstanceId) - as HttpAuthHandler?; - assert( - instance != null, - 'InstanceManager does not contain a WebViewClient with instanceId: $instanceId', - ); - assert( - webViewInstance != null, - 'InstanceManager does not contain a WebView with instanceId: $webViewInstanceId', - ); - assert( - httpAuthHandlerInstance != null, - 'InstanceManager does not contain a HttpAuthHandler with instanceId: $httpAuthHandlerInstanceId', - ); - if (instance!.onReceivedHttpAuthRequest != null) { - return instance.onReceivedHttpAuthRequest!( - webViewInstance!, httpAuthHandlerInstance!, host, realm); - } - } } /// Host api implementation for [DownloadListener]. @@ -1429,68 +1390,3 @@ class CookieManagerHostApiImpl extends CookieManagerHostApi { ); } } - -/// Host api implementation for [HttpAuthHandler]. -class HttpAuthHandlerHostApiImpl extends HttpAuthHandlerHostApi { - /// Constructs a [HttpAuthHandlerHostApiImpl]. - HttpAuthHandlerHostApiImpl({ - super.binaryMessenger, - InstanceManager? instanceManager, - }) : _instanceManager = instanceManager ?? JavaObject.globalInstanceManager; - - /// Maintains instances stored to communicate with native language objects. - final InstanceManager _instanceManager; - - /// Helper method to convert instance ids to objects. - Future cancelFromInstance(HttpAuthHandler instance) { - return cancel(_instanceManager.getIdentifier(instance)!); - } - - /// Helper method to convert instance ids to objects. - Future proceedFromInstance( - HttpAuthHandler instance, - String username, - String password, - ) { - return proceed( - _instanceManager.getIdentifier(instance)!, - username, - password, - ); - } - - /// Helper method to convert instance ids to objects. - Future useHttpAuthUsernamePasswordFromInstance( - HttpAuthHandler instance, - ) { - return useHttpAuthUsernamePassword( - _instanceManager.getIdentifier(instance)!, - ); - } -} - -/// Flutter API implementation for [HttpAuthHandler]. -class HttpAuthHandlerFlutterApiImpl extends HttpAuthHandlerFlutterApi { - /// Constructs a [HttpAuthHandlerFlutterApiImpl]. - HttpAuthHandlerFlutterApiImpl({ - this.binaryMessenger, - InstanceManager? instanceManager, - }) : instanceManager = instanceManager ?? JavaObject.globalInstanceManager; - - /// Receives binary data across the Flutter platform barrier. - /// - /// If it is null, the default BinaryMessenger will be used which routes to - /// the host platform. - final BinaryMessenger? binaryMessenger; - - /// Maintains instances stored to communicate with native language objects. - final InstanceManager instanceManager; - - @override - void create(int instanceId) { - instanceManager.addHostCreatedInstance( - HttpAuthHandler(), - instanceId, - ); - } -} diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart index c7f3af8f507..ccfe14391e8 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview_controller.dart @@ -77,7 +77,7 @@ class AndroidWebViewPermissionResourceType /// Implementation of the [PlatformWebViewController] with the Android WebView API. class AndroidWebViewController extends PlatformWebViewController { - /// Creates a new [AndroidWebViewController]. + /// Creates a new [AndroidWebViewCookieManager]. AndroidWebViewController(PlatformWebViewControllerCreationParams params) : super.implementation(params is AndroidWebViewControllerCreationParams ? params @@ -1268,29 +1268,6 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { callback(AndroidUrlChange(url: url, isReload: isReload)); } }, - onReceivedHttpAuthRequest: ( - android_webview.WebView webView, - android_webview.HttpAuthHandler httpAuthHandler, - String host, - String realm, - ) { - final void Function(HttpAuthRequest)? callback = - weakThis.target?._onHttpAuthRequest; - if (callback != null) { - callback( - HttpAuthRequest( - onProceed: (WebViewCredential credential) { - httpAuthHandler.proceed(credential.user, credential.password); - }, - onCancel: () { - httpAuthHandler.cancel(); - }, - host: host, - realm: realm, - ), - ); - } - }, ); _downloadListener = (this.params as AndroidNavigationDelegateCreationParams) @@ -1347,7 +1324,6 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { NavigationRequestCallback? _onNavigationRequest; LoadRequestCallback? _onLoadRequest; UrlChangeCallback? _onUrlChange; - HttpAuthRequestCallback? _onHttpAuthRequest; void _handleNavigation( String url, { @@ -1434,11 +1410,4 @@ class AndroidNavigationDelegate extends PlatformNavigationDelegate { Future setOnUrlChange(UrlChangeCallback onUrlChange) async { _onUrlChange = onUrlChange; } - - @override - Future setOnHttpAuthRequest( - HttpAuthRequestCallback onHttpAuthRequest, - ) async { - _onHttpAuthRequest = onHttpAuthRequest; - } } diff --git a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart index 34e8f21bde1..6cce34382a1 100644 --- a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart +++ b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart @@ -358,14 +358,6 @@ abstract class WebViewClientFlutterApi { String url, bool isReload, ); - - void onReceivedHttpAuthRequest( - int instanceId, - int webViewInstanceId, - int httpAuthHandlerInstanceId, - String host, - String realm, - ); } @HostApi(dartHostTestHandler: 'TestDownloadListenerHostApi') @@ -559,35 +551,3 @@ abstract class GeolocationPermissionsCallbackFlutterApi { /// Create a new Dart instance and add it to the `InstanceManager`. void create(int instanceId); } - -/// Host API for `HttpAuthHandler`. -/// -/// This class may handle instantiating and adding native object instances that -/// are attached to a Dart instance or handle method calls on the associated -/// native class or an instance of the class. -/// -/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. -@HostApi(dartHostTestHandler: 'TestHttpAuthHandlerHostApi') -abstract class HttpAuthHandlerHostApi { - /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. - bool useHttpAuthUsernamePassword(int instanceId); - - /// Handles Dart method `HttpAuthHandler.cancel`. - void cancel(int instanceId); - - /// Handles Dart method `HttpAuthHandler.proceed`. - void proceed(int instanceId, String username, String password); -} - -/// Flutter API for `HttpAuthHandler`. -/// -/// This class may handle instantiating and adding Dart instances that are -/// attached to a native instance or receiving callback methods from an -/// overridden native class. -/// -/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. -@FlutterApi() -abstract class HttpAuthHandlerFlutterApi { - /// Create a new Dart instance and add it to the `InstanceManager`. - void create(int instanceId); -} diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index aaadd6da697..4a36901a13a 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: 3.13.0 +version: 3.12.1 environment: sdk: ">=3.0.0 <4.0.0" @@ -20,7 +20,7 @@ flutter: dependencies: flutter: sdk: flutter - webview_flutter_platform_interface: ^2.7.0 + webview_flutter_platform_interface: ^2.6.0 dev_dependencies: build_runner: ^2.1.4 @@ -33,8 +33,3 @@ topics: - html - webview - webview-flutter - -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins -dependency_overrides: - {webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart index 3b407a8d65f..269123e081d 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_navigation_delegate_test.dart @@ -446,52 +446,27 @@ void main() { expect(callbackNavigationRequest.url, 'https://www.google.com'); expect(completer.isCompleted, true); }); + }); - test('onUrlChange', () { - final AndroidNavigationDelegate androidNavigationDelegate = - AndroidNavigationDelegate(_buildCreationParams()); - - late final AndroidUrlChange urlChange; - androidNavigationDelegate.setOnUrlChange( - (UrlChange change) { - urlChange = change as AndroidUrlChange; - }, - ); - - CapturingWebViewClient.lastCreatedDelegate.doUpdateVisitedHistory!( - android_webview.WebView.detached(), - 'https://www.google.com', - false, - ); - - expect(urlChange.url, 'https://www.google.com'); - expect(urlChange.isReload, isFalse); - }); - - test('onReceivedHttpAuthRequest emits host and realm', () { - final AndroidNavigationDelegate androidNavigationDelegate = - AndroidNavigationDelegate(_buildCreationParams()); - - String? callbackHost; - String? callbackRealm; - androidNavigationDelegate.setOnHttpAuthRequest((HttpAuthRequest request) { - callbackHost = request.host; - callbackRealm = request.realm; - }); - - const String expectedHost = 'expectedHost'; - const String expectedRealm = 'expectedRealm'; - - CapturingWebViewClient.lastCreatedDelegate.onReceivedHttpAuthRequest!( - android_webview.WebView.detached(), - android_webview.HttpAuthHandler(), - expectedHost, - expectedRealm, - ); - - expect(callbackHost, expectedHost); - expect(callbackRealm, expectedRealm); - }); + test('onUrlChange', () { + final AndroidNavigationDelegate androidNavigationDelegate = + AndroidNavigationDelegate(_buildCreationParams()); + + late final AndroidUrlChange urlChange; + androidNavigationDelegate.setOnUrlChange( + (UrlChange change) { + urlChange = change as AndroidUrlChange; + }, + ); + + CapturingWebViewClient.lastCreatedDelegate.doUpdateVisitedHistory!( + android_webview.WebView.detached(), + 'https://www.google.com', + false, + ); + + expect(urlChange.url, 'https://www.google.com'); + expect(urlChange.isReload, isFalse); }); } @@ -514,7 +489,6 @@ class CapturingWebViewClient extends android_webview.WebViewClient { super.onPageFinished, super.onPageStarted, super.onReceivedError, - super.onReceivedHttpAuthRequest, super.onReceivedRequestError, super.requestLoading, super.urlLoading, diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart index ee1e27a2a69..6a7bf30e614 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.dart @@ -132,12 +132,6 @@ void main() { String description, String failingUrl, )? onReceivedError, - void Function( - android_webview.WebView webView, - android_webview.HttpAuthHandler hander, - String host, - String realm, - )? onReceivedHttpAuthRequest, void Function( android_webview.WebView webView, android_webview.WebResourceRequest request, diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart index e09c9d77b88..ebb01cf8f11 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_controller_test.mocks.dart @@ -255,6 +255,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidWebChromeClient), ), ) as _i2.WebChromeClient); + @override _i2.WebViewClient get androidWebViewClient => (super.noSuchMethod( Invocation.getter(#androidWebViewClient), @@ -267,6 +268,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidWebViewClient), ), ) as _i2.WebViewClient); + @override _i2.DownloadListener get androidDownloadListener => (super.noSuchMethod( Invocation.getter(#androidDownloadListener), @@ -279,6 +281,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#androidDownloadListener), ), ) as _i2.DownloadListener); + @override _i3.PlatformNavigationDelegateCreationParams get params => (super.noSuchMethod( @@ -293,6 +296,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformNavigationDelegateCreationParams); + @override _i9.Future setOnLoadRequest(_i8.LoadRequestCallback? onLoadRequest) => (super.noSuchMethod( @@ -303,6 +307,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnNavigationRequest( _i3.NavigationRequestCallback? onNavigationRequest) => @@ -314,6 +319,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnPageStarted(_i3.PageEventCallback? onPageStarted) => (super.noSuchMethod( @@ -324,6 +330,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnPageFinished(_i3.PageEventCallback? onPageFinished) => (super.noSuchMethod( @@ -334,6 +341,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnProgress(_i3.ProgressCallback? onProgress) => (super.noSuchMethod( @@ -344,6 +352,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnWebResourceError( _i3.WebResourceErrorCallback? onWebResourceError) => @@ -355,6 +364,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnUrlChange(_i3.UrlChangeCallback? onUrlChange) => (super.noSuchMethod( @@ -365,17 +375,7 @@ class MockAndroidNavigationDelegate extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); - @override - _i9.Future setOnHttpAuthRequest( - _i3.HttpAuthRequestCallback? onHttpAuthRequest) => - (super.noSuchMethod( - Invocation.method( - #setOnHttpAuthRequest, - [onHttpAuthRequest], - ), - returnValue: _i9.Future.value(), - returnValueForMissingStub: _i9.Future.value(), - ) as _i9.Future); + @override _i9.Future setOnHttpError(_i3.HttpResponseErrorCallback? onHttpError) => (super.noSuchMethod( @@ -399,6 +399,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: 0, returnValueForMissingStub: 0, ) as int); + @override _i3.PlatformWebViewControllerCreationParams get params => (super.noSuchMethod( Invocation.getter(#params), @@ -412,6 +413,7 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformWebViewControllerCreationParams); + @override _i9.Future loadFile(String? absoluteFilePath) => (super.noSuchMethod( Invocation.method( @@ -421,6 +423,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future loadFlutterAsset(String? key) => (super.noSuchMethod( Invocation.method( @@ -430,6 +433,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future loadHtmlString( String? html, { @@ -444,6 +448,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future loadRequest(_i3.LoadRequestParams? params) => (super.noSuchMethod( @@ -454,6 +459,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future currentUrl() => (super.noSuchMethod( Invocation.method( @@ -463,6 +469,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -472,6 +479,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); + @override _i9.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -481,6 +489,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); + @override _i9.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -490,6 +499,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -499,6 +509,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future reload() => (super.noSuchMethod( Invocation.method( @@ -508,6 +519,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future clearCache() => (super.noSuchMethod( Invocation.method( @@ -517,6 +529,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future clearLocalStorage() => (super.noSuchMethod( Invocation.method( @@ -526,6 +539,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setPlatformNavigationDelegate( _i3.PlatformNavigationDelegate? handler) => @@ -537,6 +551,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future runJavaScript(String? javaScript) => (super.noSuchMethod( Invocation.method( @@ -546,6 +561,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future runJavaScriptReturningResult(String? javaScript) => (super.noSuchMethod( @@ -568,6 +584,7 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i9.Future); + @override _i9.Future addJavaScriptChannel( _i3.JavaScriptChannelParams? javaScriptChannelParams) => @@ -579,6 +596,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future removeJavaScriptChannel(String? javaScriptChannelName) => (super.noSuchMethod( @@ -589,6 +607,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -598,6 +617,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future scrollTo( int? x, @@ -614,6 +634,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future scrollBy( int? x, @@ -630,6 +651,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -651,6 +673,7 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Offset>); + @override _i9.Future enableZoom(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -660,6 +683,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -669,6 +693,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setJavaScriptMode(_i3.JavaScriptMode? javaScriptMode) => (super.noSuchMethod( @@ -679,6 +704,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setUserAgent(String? userAgent) => (super.noSuchMethod( Invocation.method( @@ -688,6 +714,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -698,6 +725,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -707,6 +735,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnShowFileSelector( _i9.Future> Function(_i8.FileSelectorParams)? @@ -719,6 +748,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnPlatformPermissionRequest( void Function(_i3.PlatformWebViewPermissionRequest)? @@ -731,6 +761,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setGeolocationPermissionsPromptCallbacks({ _i8.OnGeolocationPermissionsShowPrompt? onShowPrompt, @@ -748,6 +779,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setCustomWidgetCallbacks({ required _i8.OnShowCustomWidgetCallback? onShowCustomWidget, @@ -765,6 +797,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setOnConsoleMessage( void Function(_i3.JavaScriptConsoleMessage)? onConsoleMessage) => @@ -776,6 +809,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future getUserAgent() => (super.noSuchMethod( Invocation.method( @@ -804,6 +838,7 @@ class MockAndroidWebViewProxy extends _i1.Mock Invocation.getter(#createAndroidWebView), ), ) as _i2.WebView Function()); + @override _i2.WebChromeClient Function({ void Function( @@ -932,6 +967,7 @@ class MockAndroidWebViewProxy extends _i1.Mock _i2.FileChooserParams, )? onShowFileChooser, })); + @override _i2.WebViewClient Function({ void Function( @@ -953,12 +989,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, - void Function( - _i2.WebView, - _i2.HttpAuthHandler, - String, - String, - )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -994,12 +1024,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, - void Function( - _i2.WebView, - _i2.HttpAuthHandler, - String, - String, - )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1038,12 +1062,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, - void Function( - _i2.WebView, - _i2.HttpAuthHandler, - String, - String, - )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1082,12 +1100,6 @@ class MockAndroidWebViewProxy extends _i1.Mock String, String, )? onReceivedError, - void Function( - _i2.WebView, - _i2.HttpAuthHandler, - String, - String, - )? onReceivedHttpAuthRequest, void Function( _i2.WebView, _i2.WebResourceRequest, @@ -1102,6 +1114,7 @@ class MockAndroidWebViewProxy extends _i1.Mock String, )? urlLoading, })); + @override _i2.FlutterAssetManager Function() get createFlutterAssetManager => (super.noSuchMethod( @@ -1115,6 +1128,7 @@ class MockAndroidWebViewProxy extends _i1.Mock Invocation.getter(#createFlutterAssetManager), ), ) as _i2.FlutterAssetManager Function()); + @override _i2.JavaScriptChannel Function( String, { @@ -1141,6 +1155,7 @@ class MockAndroidWebViewProxy extends _i1.Mock String, { required void Function(String) postMessage, })); + @override _i2.DownloadListener Function( {required void Function( @@ -1183,6 +1198,7 @@ class MockAndroidWebViewProxy extends _i1.Mock String, int, ) onDownloadStart})); + @override _i9.Future setWebContentsDebuggingEnabled(bool? enabled) => (super.noSuchMethod( @@ -1213,6 +1229,7 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#instanceManager), ), ) as _i5.InstanceManager); + @override _i6.PlatformViewsServiceProxy get platformViewsServiceProxy => (super.noSuchMethod( @@ -1226,12 +1243,14 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#platformViewsServiceProxy), ), ) as _i6.PlatformViewsServiceProxy); + @override bool get displayWithHybridComposition => (super.noSuchMethod( Invocation.getter(#displayWithHybridComposition), returnValue: false, returnValueForMissingStub: false, ) as bool); + @override _i3.PlatformWebViewController get controller => (super.noSuchMethod( Invocation.getter(#controller), @@ -1244,12 +1263,14 @@ class MockAndroidWebViewWidgetCreationParams extends _i1.Mock Invocation.getter(#controller), ), ) as _i3.PlatformWebViewController); + @override _i4.TextDirection get layoutDirection => (super.noSuchMethod( Invocation.getter(#layoutDirection), returnValue: _i4.TextDirection.rtl, returnValueForMissingStub: _i4.TextDirection.rtl, ) as _i4.TextDirection); + @override Set<_i11.Factory<_i12.OneSequenceGestureRecognizer>> get gestureRecognizers => (super.noSuchMethod( @@ -1271,18 +1292,21 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: false, returnValueForMissingStub: false, ) as bool); + @override int get viewId => (super.noSuchMethod( Invocation.getter(#viewId), returnValue: 0, returnValueForMissingStub: 0, ) as int); + @override bool get awaitingCreation => (super.noSuchMethod( Invocation.getter(#awaitingCreation), returnValue: false, returnValueForMissingStub: false, ) as bool); + @override _i7.PointTransformer get pointTransformer => (super.noSuchMethod( Invocation.getter(#pointTransformer), @@ -1295,6 +1319,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock Invocation.getter(#pointTransformer), ), ) as _i7.PointTransformer); + @override set pointTransformer(_i7.PointTransformer? transformer) => super.noSuchMethod( Invocation.setter( @@ -1303,12 +1328,14 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); + @override bool get isCreated => (super.noSuchMethod( Invocation.getter(#isCreated), returnValue: false, returnValueForMissingStub: false, ) as bool); + @override List<_i7.PlatformViewCreatedCallback> get createdCallbacks => (super.noSuchMethod( @@ -1316,6 +1343,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: <_i7.PlatformViewCreatedCallback>[], returnValueForMissingStub: <_i7.PlatformViewCreatedCallback>[], ) as List<_i7.PlatformViewCreatedCallback>); + @override _i9.Future setOffset(_i4.Offset? off) => (super.noSuchMethod( Invocation.method( @@ -1325,6 +1353,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future create({ _i4.Size? size, @@ -1342,6 +1371,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future<_i4.Size> setSize(_i4.Size? size) => (super.noSuchMethod( Invocation.method( @@ -1363,6 +1393,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Size>); + @override _i9.Future sendMotionEvent(_i7.AndroidMotionEvent? event) => (super.noSuchMethod( @@ -1373,6 +1404,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override void addOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1383,6 +1415,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void removeOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1393,6 +1426,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); + @override _i9.Future setLayoutDirection(_i4.TextDirection? layoutDirection) => (super.noSuchMethod( @@ -1403,6 +1437,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future dispatchPointerEvent(_i12.PointerEvent? event) => (super.noSuchMethod( @@ -1413,6 +1448,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future clearFocus() => (super.noSuchMethod( Invocation.method( @@ -1422,6 +1458,7 @@ class MockExpensiveAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future dispose() => (super.noSuchMethod( Invocation.method( @@ -1447,6 +1484,7 @@ class MockFlutterAssetManager extends _i1.Mock returnValue: _i9.Future>.value([]), returnValueForMissingStub: _i9.Future>.value([]), ) as _i9.Future>); + @override _i9.Future getAssetFilePathByName(String? name) => (super.noSuchMethod( @@ -1469,12 +1507,14 @@ class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel { returnValue: '', returnValueForMissingStub: '', ) as String); + @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, returnValueForMissingStub: (String message) {}, ) as void Function(String)); + @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -1508,6 +1548,7 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: [], returnValueForMissingStub: [], ) as List); + @override _i9.Future grant(List? resources) => (super.noSuchMethod( Invocation.method( @@ -1517,6 +1558,7 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future deny() => (super.noSuchMethod( Invocation.method( @@ -1526,6 +1568,7 @@ class MockPermissionRequest extends _i1.Mock implements _i2.PermissionRequest { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i2.PermissionRequest copy() => (super.noSuchMethod( Invocation.method( @@ -1608,6 +1651,7 @@ class MockPlatformViewsServiceProxy extends _i1.Mock ), ), ) as _i7.ExpensiveAndroidViewController); + @override _i7.SurfaceAndroidViewController initSurfaceAndroidView({ required int? id, @@ -1674,18 +1718,21 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: false, returnValueForMissingStub: false, ) as bool); + @override int get viewId => (super.noSuchMethod( Invocation.getter(#viewId), returnValue: 0, returnValueForMissingStub: 0, ) as int); + @override bool get awaitingCreation => (super.noSuchMethod( Invocation.getter(#awaitingCreation), returnValue: false, returnValueForMissingStub: false, ) as bool); + @override _i7.PointTransformer get pointTransformer => (super.noSuchMethod( Invocation.getter(#pointTransformer), @@ -1698,6 +1745,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock Invocation.getter(#pointTransformer), ), ) as _i7.PointTransformer); + @override set pointTransformer(_i7.PointTransformer? transformer) => super.noSuchMethod( Invocation.setter( @@ -1706,12 +1754,14 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); + @override bool get isCreated => (super.noSuchMethod( Invocation.getter(#isCreated), returnValue: false, returnValueForMissingStub: false, ) as bool); + @override List<_i7.PlatformViewCreatedCallback> get createdCallbacks => (super.noSuchMethod( @@ -1719,6 +1769,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: <_i7.PlatformViewCreatedCallback>[], returnValueForMissingStub: <_i7.PlatformViewCreatedCallback>[], ) as List<_i7.PlatformViewCreatedCallback>); + @override _i9.Future setOffset(_i4.Offset? off) => (super.noSuchMethod( Invocation.method( @@ -1728,6 +1779,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future create({ _i4.Size? size, @@ -1745,6 +1797,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future<_i4.Size> setSize(_i4.Size? size) => (super.noSuchMethod( Invocation.method( @@ -1766,6 +1819,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), )), ) as _i9.Future<_i4.Size>); + @override _i9.Future sendMotionEvent(_i7.AndroidMotionEvent? event) => (super.noSuchMethod( @@ -1776,6 +1830,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override void addOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1786,6 +1841,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void removeOnPlatformViewCreatedListener( _i7.PlatformViewCreatedCallback? listener) => @@ -1796,6 +1852,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock ), returnValueForMissingStub: null, ); + @override _i9.Future setLayoutDirection(_i4.TextDirection? layoutDirection) => (super.noSuchMethod( @@ -1806,6 +1863,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future dispatchPointerEvent(_i12.PointerEvent? event) => (super.noSuchMethod( @@ -1816,6 +1874,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future clearFocus() => (super.noSuchMethod( Invocation.method( @@ -1825,6 +1884,7 @@ class MockSurfaceAndroidViewController extends _i1.Mock returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future dispose() => (super.noSuchMethod( Invocation.method( @@ -1850,6 +1910,7 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -1860,6 +1921,7 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -1896,6 +1958,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setJavaScriptCanOpenWindowsAutomatically(bool? flag) => (super.noSuchMethod( @@ -1906,6 +1969,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setSupportMultipleWindows(bool? support) => (super.noSuchMethod( @@ -1916,6 +1980,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setJavaScriptEnabled(bool? flag) => (super.noSuchMethod( Invocation.method( @@ -1925,6 +1990,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setUserAgentString(String? userAgentString) => (super.noSuchMethod( @@ -1935,6 +2001,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -1945,6 +2012,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setSupportZoom(bool? support) => (super.noSuchMethod( Invocation.method( @@ -1954,6 +2022,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setLoadWithOverviewMode(bool? overview) => (super.noSuchMethod( @@ -1964,6 +2033,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setUseWideViewPort(bool? use) => (super.noSuchMethod( Invocation.method( @@ -1973,6 +2043,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setDisplayZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -1982,6 +2053,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setBuiltInZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -1991,6 +2063,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setAllowFileAccess(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -2000,6 +2073,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -2009,6 +2083,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future getUserAgentString() => (super.noSuchMethod( Invocation.method( @@ -2018,6 +2093,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i9.Future.value(''), returnValueForMissingStub: _i9.Future.value(''), ) as _i9.Future); + @override _i2.WebSettings copy() => (super.noSuchMethod( Invocation.method( @@ -2057,6 +2133,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); + @override _i9.Future loadData({ required String? data, @@ -2076,6 +2153,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future loadDataWithBaseUrl({ String? baseUrl, @@ -2099,6 +2177,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future loadUrl( String? url, @@ -2115,6 +2194,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future postUrl( String? url, @@ -2131,6 +2211,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -2140,6 +2221,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -2149,6 +2231,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); + @override _i9.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -2158,6 +2241,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(false), returnValueForMissingStub: _i9.Future.value(false), ) as _i9.Future); + @override _i9.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -2167,6 +2251,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -2176,6 +2261,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future reload() => (super.noSuchMethod( Invocation.method( @@ -2185,6 +2271,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -2194,6 +2281,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -2204,6 +2292,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -2213,6 +2302,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future scrollTo( int? x, @@ -2229,6 +2319,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future scrollBy( int? x, @@ -2245,6 +2336,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -2254,6 +2346,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(0), returnValueForMissingStub: _i9.Future.value(0), ) as _i9.Future); + @override _i9.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -2263,6 +2356,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(0), returnValueForMissingStub: _i9.Future.value(0), ) as _i9.Future); + @override _i9.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -2284,6 +2378,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i9.Future<_i4.Offset>); + @override _i9.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -2294,6 +2389,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -2305,6 +2401,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -2316,6 +2413,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -2326,6 +2424,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -2336,6 +2435,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i9.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -2345,6 +2445,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -2383,6 +2484,7 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( @@ -2419,6 +2521,7 @@ class MockWebStorage extends _i1.Mock implements _i2.WebStorage { returnValue: _i9.Future.value(), returnValueForMissingStub: _i9.Future.value(), ) as _i9.Future); + @override _i2.WebStorage copy() => (super.noSuchMethod( Invocation.method( @@ -2452,6 +2555,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { returnValue: (int __p0) {}, returnValueForMissingStub: (int __p0) {}, ) as void Function(int)); + @override set onWeakReferenceRemoved(void Function(int)? _onWeakReferenceRemoved) => super.noSuchMethod( @@ -2461,6 +2565,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ); + @override int addDartCreatedInstance(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2470,6 +2575,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { returnValue: 0, returnValueForMissingStub: 0, ) as int); + @override int? removeWeakReference(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2478,6 +2584,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as int?); + @override T? remove(int? identifier) => (super.noSuchMethod( Invocation.method( @@ -2486,6 +2593,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as T?); + @override T? getInstanceWithWeakReference(int? identifier) => (super.noSuchMethod( @@ -2495,6 +2603,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as T?); + @override int? getIdentifier(_i5.Copyable? instance) => (super.noSuchMethod( Invocation.method( @@ -2503,6 +2612,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ) as int?); + @override void addHostCreatedInstance( _i5.Copyable? instance, @@ -2518,6 +2628,7 @@ class MockInstanceManager extends _i1.Mock implements _i5.InstanceManager { ), returnValueForMissingStub: null, ); + @override bool containsIdentifier(int? identifier) => (super.noSuchMethod( Invocation.method( 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 5213793ee9e..cc9fbfae2a3 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 @@ -93,6 +93,7 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future removeAllCookies() => (super.noSuchMethod( Invocation.method( @@ -101,6 +102,7 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future setAcceptThirdPartyCookies( _i2.WebView? webView, @@ -117,6 +119,7 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.CookieManager copy() => (super.noSuchMethod( Invocation.method( @@ -147,6 +150,7 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#webViewIdentifier), returnValue: 0, ) as int); + @override _i3.PlatformWebViewControllerCreationParams get params => (super.noSuchMethod( Invocation.getter(#params), @@ -155,6 +159,7 @@ class MockAndroidWebViewController extends _i1.Mock Invocation.getter(#params), ), ) as _i3.PlatformWebViewControllerCreationParams); + @override _i5.Future loadFile(String? absoluteFilePath) => (super.noSuchMethod( Invocation.method( @@ -164,6 +169,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadFlutterAsset(String? key) => (super.noSuchMethod( Invocation.method( @@ -173,6 +179,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadHtmlString( String? html, { @@ -187,6 +194,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadRequest(_i3.LoadRequestParams? params) => (super.noSuchMethod( @@ -197,6 +205,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future currentUrl() => (super.noSuchMethod( Invocation.method( @@ -205,6 +214,7 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -213,6 +223,7 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -221,6 +232,7 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -230,6 +242,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -239,6 +252,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -248,6 +262,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future clearCache() => (super.noSuchMethod( Invocation.method( @@ -257,6 +272,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future clearLocalStorage() => (super.noSuchMethod( Invocation.method( @@ -266,6 +282,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setPlatformNavigationDelegate( _i3.PlatformNavigationDelegate? handler) => @@ -277,6 +294,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future runJavaScript(String? javaScript) => (super.noSuchMethod( Invocation.method( @@ -286,6 +304,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future runJavaScriptReturningResult(String? javaScript) => (super.noSuchMethod( @@ -301,6 +320,7 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i5.Future); + @override _i5.Future addJavaScriptChannel( _i3.JavaScriptChannelParams? javaScriptChannelParams) => @@ -312,6 +332,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future removeJavaScriptChannel(String? javaScriptChannelName) => (super.noSuchMethod( @@ -322,6 +343,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -330,6 +352,7 @@ class MockAndroidWebViewController extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future scrollTo( int? x, @@ -346,6 +369,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future scrollBy( int? x, @@ -362,6 +386,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -376,6 +401,7 @@ class MockAndroidWebViewController extends _i1.Mock ), )), ) as _i5.Future<_i4.Offset>); + @override _i5.Future enableZoom(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -385,6 +411,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -394,6 +421,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setJavaScriptMode(_i3.JavaScriptMode? javaScriptMode) => (super.noSuchMethod( @@ -404,6 +432,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setUserAgent(String? userAgent) => (super.noSuchMethod( Invocation.method( @@ -413,6 +442,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -423,6 +453,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -432,6 +463,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setOnShowFileSelector( _i5.Future> Function(_i6.FileSelectorParams)? @@ -444,6 +476,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setOnPlatformPermissionRequest( void Function(_i3.PlatformWebViewPermissionRequest)? @@ -456,6 +489,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setGeolocationPermissionsPromptCallbacks({ _i6.OnGeolocationPermissionsShowPrompt? onShowPrompt, @@ -473,6 +507,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setCustomWidgetCallbacks({ required _i6.OnShowCustomWidgetCallback? onShowCustomWidget, @@ -490,6 +525,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setOnConsoleMessage( void Function(_i3.JavaScriptConsoleMessage)? onConsoleMessage) => @@ -501,6 +537,7 @@ class MockAndroidWebViewController extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getUserAgent() => (super.noSuchMethod( Invocation.method( diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart index 4a6130f13ad..0928486956d 100644 --- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart @@ -128,6 +128,7 @@ class MockCookieManagerHostApi extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setCookie( int? arg_identifier, @@ -146,6 +147,7 @@ class MockCookieManagerHostApi extends _i1.Mock returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future removeAllCookies(int? arg_identifier) => (super.noSuchMethod( Invocation.method( @@ -154,6 +156,7 @@ class MockCookieManagerHostApi extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future setAcceptThirdPartyCookies( int? arg_identifier, @@ -205,6 +208,7 @@ class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener { String, int, )); + @override _i2.DownloadListener copy() => (super.noSuchMethod( Invocation.method( @@ -234,11 +238,13 @@ class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel { Invocation.getter(#channelName), returnValue: '', ) as String); + @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, ) as void Function(String)); + @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -272,6 +278,7 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setCookie( int? identifier, @@ -289,6 +296,7 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override _i5.Future removeAllCookies(int? identifier) => (super.noSuchMethod( Invocation.method( @@ -297,6 +305,7 @@ class MockTestCookieManagerHostApi extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override void setAcceptThirdPartyCookies( int? identifier, @@ -465,6 +474,7 @@ class MockTestWebChromeClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setSynchronousReturnValueForOnShowFileChooser( int? instanceId, @@ -480,6 +490,7 @@ class MockTestWebChromeClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setSynchronousReturnValueForOnConsoleMessage( int? instanceId, @@ -521,6 +532,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setDomStorageEnabled( int? instanceId, @@ -536,6 +548,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setJavaScriptCanOpenWindowsAutomatically( int? instanceId, @@ -551,6 +564,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setSupportMultipleWindows( int? instanceId, @@ -566,6 +580,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setJavaScriptEnabled( int? instanceId, @@ -581,6 +596,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setUserAgentString( int? instanceId, @@ -596,6 +612,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setMediaPlaybackRequiresUserGesture( int? instanceId, @@ -611,6 +628,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setSupportZoom( int? instanceId, @@ -626,6 +644,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setLoadWithOverviewMode( int? instanceId, @@ -641,6 +660,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setUseWideViewPort( int? instanceId, @@ -656,6 +676,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setDisplayZoomControls( int? instanceId, @@ -671,6 +692,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setBuiltInZoomControls( int? instanceId, @@ -686,6 +708,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setAllowFileAccess( int? instanceId, @@ -701,6 +724,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setTextZoom( int? instanceId, @@ -716,6 +740,7 @@ class MockTestWebSettingsHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override String getUserAgentString(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -743,6 +768,7 @@ class MockTestWebStorageHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void deleteAllData(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -770,6 +796,7 @@ class MockTestWebViewClientHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setSynchronousReturnValueForShouldOverrideUrlLoading( int? instanceId, @@ -804,6 +831,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void loadData( int? instanceId, @@ -823,6 +851,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void loadDataWithBaseUrl( int? instanceId, @@ -846,6 +875,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void loadUrl( int? instanceId, @@ -863,6 +893,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void postUrl( int? instanceId, @@ -880,11 +911,13 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override String? getUrl(int? instanceId) => (super.noSuchMethod(Invocation.method( #getUrl, [instanceId], )) as String?); + @override bool canGoBack(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -893,6 +926,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: false, ) as bool); + @override bool canGoForward(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -901,6 +935,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: false, ) as bool); + @override void goBack(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -909,6 +944,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void goForward(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -917,6 +953,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void reload(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -925,6 +962,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void clearCache( int? instanceId, @@ -940,6 +978,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override _i5.Future evaluateJavascript( int? instanceId, @@ -955,11 +994,13 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override String? getTitle(int? instanceId) => (super.noSuchMethod(Invocation.method( #getTitle, [instanceId], )) as String?); + @override void scrollTo( int? instanceId, @@ -977,6 +1018,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void scrollBy( int? instanceId, @@ -994,6 +1036,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override int getScrollX(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1002,6 +1045,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: 0, ) as int); + @override int getScrollY(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1010,6 +1054,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValue: 0, ) as int); + @override _i3.WebViewPoint getScrollPosition(int? instanceId) => (super.noSuchMethod( Invocation.method( @@ -1024,6 +1069,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), ), ) as _i3.WebViewPoint); + @override void setWebContentsDebuggingEnabled(bool? enabled) => super.noSuchMethod( Invocation.method( @@ -1032,6 +1078,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setWebViewClient( int? instanceId, @@ -1047,6 +1094,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void addJavaScriptChannel( int? instanceId, @@ -1062,6 +1110,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void removeJavaScriptChannel( int? instanceId, @@ -1077,6 +1126,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setDownloadListener( int? instanceId, @@ -1092,6 +1142,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setWebChromeClient( int? instanceId, @@ -1107,6 +1158,7 @@ class MockTestWebViewHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void setBackgroundColor( int? instanceId, @@ -1141,6 +1193,7 @@ class MockTestAssetManagerHostApi extends _i1.Mock ), returnValue: [], ) as List); + @override String getAssetFilePathByName(String? name) => (super.noSuchMethod( Invocation.method( @@ -1175,6 +1228,7 @@ class MockTestPermissionRequestHostApi extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void deny(int? instanceId) => super.noSuchMethod( Invocation.method( @@ -1203,6 +1257,7 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -1213,6 +1268,7 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -1245,6 +1301,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); + @override _i5.Future loadData({ required String? data, @@ -1264,6 +1321,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadDataWithBaseUrl({ String? baseUrl, @@ -1287,6 +1345,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadUrl( String? url, @@ -1303,6 +1362,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future postUrl( String? url, @@ -1319,6 +1379,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -1327,6 +1388,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -1335,6 +1397,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -1343,6 +1406,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -1352,6 +1416,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -1361,6 +1426,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -1370,6 +1436,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -1379,6 +1446,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -1388,6 +1456,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -1396,6 +1465,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future scrollTo( int? x, @@ -1412,6 +1482,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future scrollBy( int? x, @@ -1428,6 +1499,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -1436,6 +1508,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); + @override _i5.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -1444,6 +1517,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); + @override _i5.Future<_i4.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -1458,6 +1532,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i5.Future<_i4.Offset>); + @override _i5.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -1468,6 +1543,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -1479,6 +1555,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -1490,6 +1567,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -1500,6 +1578,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -1510,6 +1589,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setBackgroundColor(_i4.Color? color) => (super.noSuchMethod( Invocation.method( @@ -1519,6 +1599,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -1554,6 +1635,7 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( 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 df06f625227..cb453ddb6b1 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 @@ -55,6 +55,7 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); + @override _i3.Future removeAllCookies() => (super.noSuchMethod( Invocation.method( @@ -63,6 +64,7 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { ), returnValue: _i3.Future.value(false), ) as _i3.Future); + @override _i3.Future setAcceptThirdPartyCookies( _i2.WebView? webView, @@ -79,6 +81,7 @@ class MockCookieManager extends _i1.Mock implements _i2.CookieManager { returnValue: _i3.Future.value(), returnValueForMissingStub: _i3.Future.value(), ) as _i3.Future); + @override _i2.CookieManager copy() => (super.noSuchMethod( Invocation.method( diff --git a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart index 19e03b393bd..f83d2eaee74 100644 --- a/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart +++ b/packages/webview_flutter/webview_flutter_android/test/legacy/webview_android_widget_test.mocks.dart @@ -138,6 +138,7 @@ class MockFlutterAssetManager extends _i1.Mock ), returnValue: _i5.Future>.value([]), ) as _i5.Future>); + @override _i5.Future getAssetFilePathByName(String? name) => (super.noSuchMethod( @@ -166,6 +167,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setJavaScriptCanOpenWindowsAutomatically(bool? flag) => (super.noSuchMethod( @@ -176,6 +178,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setSupportMultipleWindows(bool? support) => (super.noSuchMethod( @@ -186,6 +189,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setJavaScriptEnabled(bool? flag) => (super.noSuchMethod( Invocation.method( @@ -195,6 +199,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setUserAgentString(String? userAgentString) => (super.noSuchMethod( @@ -205,6 +210,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setMediaPlaybackRequiresUserGesture(bool? require) => (super.noSuchMethod( @@ -215,6 +221,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setSupportZoom(bool? support) => (super.noSuchMethod( Invocation.method( @@ -224,6 +231,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setLoadWithOverviewMode(bool? overview) => (super.noSuchMethod( @@ -234,6 +242,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setUseWideViewPort(bool? use) => (super.noSuchMethod( Invocation.method( @@ -243,6 +252,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setDisplayZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -252,6 +262,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setBuiltInZoomControls(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -261,6 +272,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setAllowFileAccess(bool? enabled) => (super.noSuchMethod( Invocation.method( @@ -270,6 +282,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setTextZoom(int? textZoom) => (super.noSuchMethod( Invocation.method( @@ -279,6 +292,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getUserAgentString() => (super.noSuchMethod( Invocation.method( @@ -287,6 +301,7 @@ class MockWebSettings extends _i1.Mock implements _i2.WebSettings { ), returnValue: _i5.Future.value(''), ) as _i5.Future); + @override _i2.WebSettings copy() => (super.noSuchMethod( Invocation.method( @@ -320,6 +335,7 @@ class MockWebStorage extends _i1.Mock implements _i2.WebStorage { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebStorage copy() => (super.noSuchMethod( Invocation.method( @@ -352,6 +368,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { Invocation.getter(#settings), ), ) as _i2.WebSettings); + @override _i5.Future loadData({ required String? data, @@ -371,6 +388,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadDataWithBaseUrl({ String? baseUrl, @@ -394,6 +412,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future loadUrl( String? url, @@ -410,6 +429,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future postUrl( String? url, @@ -426,6 +446,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getUrl() => (super.noSuchMethod( Invocation.method( @@ -434,6 +455,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future canGoBack() => (super.noSuchMethod( Invocation.method( @@ -442,6 +464,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future canGoForward() => (super.noSuchMethod( Invocation.method( @@ -450,6 +473,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(false), ) as _i5.Future); + @override _i5.Future goBack() => (super.noSuchMethod( Invocation.method( @@ -459,6 +483,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future goForward() => (super.noSuchMethod( Invocation.method( @@ -468,6 +493,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future reload() => (super.noSuchMethod( Invocation.method( @@ -477,6 +503,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future clearCache(bool? includeDiskFiles) => (super.noSuchMethod( Invocation.method( @@ -486,6 +513,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future evaluateJavascript(String? javascriptString) => (super.noSuchMethod( @@ -495,6 +523,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getTitle() => (super.noSuchMethod( Invocation.method( @@ -503,6 +532,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future scrollTo( int? x, @@ -519,6 +549,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future scrollBy( int? x, @@ -535,6 +566,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future getScrollX() => (super.noSuchMethod( Invocation.method( @@ -543,6 +575,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); + @override _i5.Future getScrollY() => (super.noSuchMethod( Invocation.method( @@ -551,6 +584,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), returnValue: _i5.Future.value(0), ) as _i5.Future); + @override _i5.Future<_i3.Offset> getScrollPosition() => (super.noSuchMethod( Invocation.method( @@ -565,6 +599,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { ), )), ) as _i5.Future<_i3.Offset>); + @override _i5.Future setWebViewClient(_i2.WebViewClient? webViewClient) => (super.noSuchMethod( @@ -575,6 +610,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future addJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -586,6 +622,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future removeJavaScriptChannel( _i2.JavaScriptChannel? javaScriptChannel) => @@ -597,6 +634,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setDownloadListener(_i2.DownloadListener? listener) => (super.noSuchMethod( @@ -607,6 +645,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setWebChromeClient(_i2.WebChromeClient? client) => (super.noSuchMethod( @@ -617,6 +656,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setBackgroundColor(_i3.Color? color) => (super.noSuchMethod( Invocation.method( @@ -626,6 +666,7 @@ class MockWebView extends _i1.Mock implements _i2.WebView { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebView copy() => (super.noSuchMethod( Invocation.method( @@ -656,21 +697,25 @@ class MockWebResourceRequest extends _i1.Mock Invocation.getter(#url), returnValue: '', ) as String); + @override bool get isForMainFrame => (super.noSuchMethod( Invocation.getter(#isForMainFrame), returnValue: false, ) as bool); + @override bool get hasGesture => (super.noSuchMethod( Invocation.getter(#hasGesture), returnValue: false, ) as bool); + @override String get method => (super.noSuchMethod( Invocation.getter(#method), returnValue: '', ) as String); + @override Map get requestHeaders => (super.noSuchMethod( Invocation.getter(#requestHeaders), @@ -709,6 +754,7 @@ class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener { String, int, )); + @override _i2.DownloadListener copy() => (super.noSuchMethod( Invocation.method( @@ -743,16 +789,19 @@ class MockWebViewAndroidJavaScriptChannel extends _i1.Mock Invocation.getter(#javascriptChannelRegistry), ), ) as _i4.JavascriptChannelRegistry); + @override String get channelName => (super.noSuchMethod( Invocation.getter(#channelName), returnValue: '', ) as String); + @override void Function(String) get postMessage => (super.noSuchMethod( Invocation.getter(#postMessage), returnValue: (String message) {}, ) as void Function(String)); + @override _i2.JavaScriptChannel copy() => (super.noSuchMethod( Invocation.method( @@ -787,6 +836,7 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i5.Future setSynchronousReturnValueForOnConsoleMessage(bool? value) => (super.noSuchMethod( @@ -797,6 +847,7 @@ class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebChromeClient copy() => (super.noSuchMethod( Invocation.method( @@ -832,6 +883,7 @@ class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient { returnValue: _i5.Future.value(), returnValueForMissingStub: _i5.Future.value(), ) as _i5.Future); + @override _i2.WebViewClient copy() => (super.noSuchMethod( Invocation.method( @@ -862,6 +914,7 @@ class MockJavascriptChannelRegistry extends _i1.Mock Invocation.getter(#channels), returnValue: {}, ) as Map); + @override void onJavascriptChannelMessage( String? channel, @@ -877,6 +930,7 @@ class MockJavascriptChannelRegistry extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void updateJavascriptChannelsFromSet(Set<_i4.JavascriptChannel>? channels) => super.noSuchMethod( @@ -913,6 +967,7 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValue: _i5.Future.value(false), ) as _i5.FutureOr); + @override void onPageStarted(String? url) => super.noSuchMethod( Invocation.method( @@ -921,6 +976,7 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void onPageFinished(String? url) => super.noSuchMethod( Invocation.method( @@ -929,6 +985,7 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void onProgress(int? progress) => super.noSuchMethod( Invocation.method( @@ -937,6 +994,7 @@ class MockWebViewPlatformCallbacksHandler extends _i1.Mock ), returnValueForMissingStub: null, ); + @override void onWebResourceError(_i4.WebResourceError? error) => super.noSuchMethod( Invocation.method( @@ -969,6 +1027,7 @@ class MockWebViewProxy extends _i1.Mock implements _i7.WebViewProxy { ), ), ) as _i2.WebView); + @override _i2.WebViewClient createWebViewClient({ void Function( @@ -1028,6 +1087,7 @@ class MockWebViewProxy extends _i1.Mock implements _i7.WebViewProxy { ), ), ) as _i2.WebViewClient); + @override _i5.Future setWebContentsDebuggingEnabled(bool? enabled) => (super.noSuchMethod( diff --git a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart index da34fcffa9c..9644887711d 100644 --- a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart @@ -1912,104 +1912,3 @@ abstract class TestGeolocationPermissionsCallbackHostApi { } } } - -/// Host API for `HttpAuthHandler`. -/// -/// This class may handle instantiating and adding native object instances that -/// are attached to a Dart instance or handle method calls on the associated -/// native class or an instance of the class. -/// -/// See https://developer.android.com/reference/android/webkit/HttpAuthHandler. -abstract class TestHttpAuthHandlerHostApi { - static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => - TestDefaultBinaryMessengerBinding.instance; - static const MessageCodec codec = StandardMessageCodec(); - - /// Handles Dart method `HttpAuthHandler.useHttpAuthUsernamePassword`. - bool useHttpAuthUsernamePassword(int instanceId); - - /// Handles Dart method `HttpAuthHandler.cancel`. - void cancel(int instanceId); - - /// Handles Dart method `HttpAuthHandler.proceed`. - void proceed(int instanceId, String username, String password); - - static void setup(TestHttpAuthHandlerHostApi? api, - {BinaryMessenger? binaryMessenger}) { - { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword', - codec, - binaryMessenger: binaryMessenger); - if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); - } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword was null.'); - final List args = (message as List?)!; - final int? arg_instanceId = (args[0] as int?); - assert(arg_instanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.useHttpAuthUsernamePassword was null, expected non-null int.'); - final bool output = api.useHttpAuthUsernamePassword(arg_instanceId!); - return [output]; - }); - } - } - { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel', - codec, - binaryMessenger: binaryMessenger); - if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); - } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel was null.'); - final List args = (message as List?)!; - final int? arg_instanceId = (args[0] as int?); - assert(arg_instanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.cancel was null, expected non-null int.'); - api.cancel(arg_instanceId!); - return []; - }); - } - } - { - final BasicMessageChannel channel = BasicMessageChannel( - 'dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed', - codec, - binaryMessenger: binaryMessenger); - if (api == null) { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, null); - } else { - _testBinaryMessengerBinding!.defaultBinaryMessenger - .setMockDecodedMessageHandler(channel, - (Object? message) async { - assert(message != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null.'); - final List args = (message as List?)!; - final int? arg_instanceId = (args[0] as int?); - assert(arg_instanceId != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null int.'); - final String? arg_username = (args[1] as String?); - assert(arg_username != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null String.'); - final String? arg_password = (args[2] as String?); - assert(arg_password != null, - 'Argument for dev.flutter.pigeon.webview_flutter_android.HttpAuthHandlerHostApi.proceed was null, expected non-null String.'); - api.proceed(arg_instanceId!, arg_username!, arg_password!); - return []; - }); - } - } - } -} diff --git a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml index 94bd51f9cab..1508743dd41 100644 --- a/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_platform_interface/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: flutter: sdk: flutter meta: ^1.7.0 - plugin_platform_interface: ^2.1.6 + plugin_platform_interface: ^2.1.0 dev_dependencies: build_runner: ^2.1.8 From a9e27d0282ac80f2769216cd324ae1a8f5c9ef00 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 21 Nov 2023 12:55:43 +0100 Subject: [PATCH 27/30] Delete packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java --- .../HttpAuthHandlerFlutterApiImpl.java | 51 ------------------- 1 file changed, 51 deletions(-) delete mode 100644 packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java deleted file mode 100644 index 1d5a170ff3b..00000000000 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerFlutterApiImpl.java +++ /dev/null @@ -1,51 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package io.flutter.plugins.webviewflutter; - -import android.webkit.HttpAuthHandler; -import androidx.annotation.NonNull; -import io.flutter.plugin.common.BinaryMessenger; -import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerFlutterApi; - -/** - * Flutter API implementation for {@link HttpAuthHandler}. - * - *

This class may handle adding native instances that are attached to a Dart instance or passing - * arguments of callbacks methods to a Dart instance. - */ -public class HttpAuthHandlerFlutterApiImpl { - // To ease adding additional methods, this value is added prematurely. - @SuppressWarnings({"unused", "FieldCanBeLocal"}) - private final BinaryMessenger binaryMessenger; - - private final InstanceManager instanceManager; - - private final HttpAuthHandlerFlutterApi api; - - /** - * Constructs a {@link HttpAuthHandlerFlutterApiImpl}. - * - * @param binaryMessenger used to communicate with Dart over asynchronous messages - * @param instanceManager maintains instances stored to communicate with attached Dart objects - */ - public HttpAuthHandlerFlutterApiImpl( - @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { - this.binaryMessenger = binaryMessenger; - this.instanceManager = instanceManager; - api = new HttpAuthHandlerFlutterApi(binaryMessenger); - } - - /** - * Stores the `HttpAuthHandler` instance and notifies Dart to create and store a new - * `HttpAuthHandler` instance that is attached to this one. If `instance` has already been added, - * this method does nothing. - */ - public void create( - @NonNull HttpAuthHandler instance, @NonNull HttpAuthHandlerFlutterApi.Reply callback) { - if (!instanceManager.containsInstance(instance)) { - api.create(instanceManager.addHostCreatedInstance(instance), callback); - } - } -} From a42c1c4bad118c5edef68704a75755e5afe34ad7 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 21 Nov 2023 12:55:53 +0100 Subject: [PATCH 28/30] Delete packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java --- .../HttpAuthHandlerHostApiImpl.java | 57 ------------------- 1 file changed, 57 deletions(-) delete mode 100644 packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java deleted file mode 100644 index 591571d2a6c..00000000000 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerHostApiImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package io.flutter.plugins.webviewflutter; - -import android.webkit.HttpAuthHandler; -import androidx.annotation.NonNull; -import io.flutter.plugin.common.BinaryMessenger; -import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.HttpAuthHandlerHostApi; -import java.util.Objects; - -/** - * Host api implementation for {@link HttpAuthHandler}. - * - *

Handles creating {@link HttpAuthHandler}s that intercommunicate with a paired Dart object. - */ -public class HttpAuthHandlerHostApiImpl implements HttpAuthHandlerHostApi { - // To ease adding additional methods, this value is added prematurely. - @SuppressWarnings({"unused", "FieldCanBeLocal"}) - private final BinaryMessenger binaryMessenger; - - private final InstanceManager instanceManager; - - /** - * Constructs a {@link HttpAuthHandlerHostApiImpl}. - * - * @param binaryMessenger used to communicate with Dart over asynchronous messages - * @param instanceManager maintains instances stored to communicate with attached Dart objects - */ - public HttpAuthHandlerHostApiImpl( - @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { - this.binaryMessenger = binaryMessenger; - this.instanceManager = instanceManager; - } - - @NonNull - @Override - public Boolean useHttpAuthUsernamePassword(@NonNull Long instanceId) { - return getHttpAuthHandlerInstance(instanceId).useHttpAuthUsernamePassword(); - } - - @Override - public void cancel(@NonNull Long instanceId) { - getHttpAuthHandlerInstance(instanceId).cancel(); - } - - @Override - public void proceed( - @NonNull Long instanceId, @NonNull String username, @NonNull String password) { - getHttpAuthHandlerInstance(instanceId).proceed(username, password); - } - - private HttpAuthHandler getHttpAuthHandlerInstance(@NonNull Long instanceId) { - return Objects.requireNonNull(instanceManager.getInstance(instanceId)); - } -} From e64c82f3ae3354190f16f88ce8197e8a4796a468 Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 21 Nov 2023 12:56:05 +0100 Subject: [PATCH 29/30] Delete packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java --- .../webviewflutter/HttpAuthHandlerTest.java | 76 ------------------- 1 file changed, 76 deletions(-) delete mode 100644 packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java deleted file mode 100644 index a66f41bd292..00000000000 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/HttpAuthHandlerTest.java +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -package io.flutter.plugins.webviewflutter; - -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; - -import android.webkit.HttpAuthHandler; -import io.flutter.plugin.common.BinaryMessenger; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; - -public class HttpAuthHandlerTest { - @Rule public MockitoRule mockitoRule = MockitoJUnit.rule(); - - @Mock HttpAuthHandler mockAuthHandler; - - @Mock BinaryMessenger mockBinaryMessenger; - - InstanceManager instanceManager; - - @Before - public void setUp() { - instanceManager = InstanceManager.create(identifier -> {}); - } - - @After - public void tearDown() { - instanceManager.stopFinalizationListener(); - } - - @Test - public void proceed() { - final HttpAuthHandlerHostApiImpl hostApi = - new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); - final long instanceIdentifier = 65L; - final String username = "username"; - final String password = "password"; - instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); - - hostApi.proceed(instanceIdentifier, username, password); - - verify(mockAuthHandler).proceed(eq(username), eq(password)); - } - - @Test - public void cancel() { - final HttpAuthHandlerHostApiImpl hostApi = - new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); - final long instanceIdentifier = 65L; - instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); - - hostApi.cancel(instanceIdentifier); - - verify(mockAuthHandler).cancel(); - } - - @Test - public void useHttpAuthUsernamePassword() { - final HttpAuthHandlerHostApiImpl hostApi = - new HttpAuthHandlerHostApiImpl(mockBinaryMessenger, instanceManager); - final long instanceIdentifier = 65L; - instanceManager.addDartCreatedInstance(mockAuthHandler, instanceIdentifier); - - hostApi.useHttpAuthUsernamePassword(instanceIdentifier); - - verify(mockAuthHandler).useHttpAuthUsernamePassword(); - } -} From 3ccf15723efbf676f6b3fbd1e1410d6a2ec1be2d Mon Sep 17 00:00:00 2001 From: Jeroen Weener Date: Tue, 28 Nov 2023 09:36:48 +0100 Subject: [PATCH 30/30] Update pubspecs --- .../webview_flutter_wkwebview/example/pubspec.yaml | 7 +------ .../webview_flutter/webview_flutter_wkwebview/pubspec.yaml | 5 ----- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml index 32b8aa3f94f..65904046323 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/example/pubspec.yaml @@ -10,7 +10,7 @@ dependencies: flutter: sdk: flutter path_provider: ^2.0.6 - webview_flutter_platform_interface: ^2.6.0 + webview_flutter_platform_interface: ^2.7.0 webview_flutter_wkwebview: # When depending on this package from a real application you should use: # webview_flutter: ^x.y.z @@ -32,8 +32,3 @@ flutter: - assets/sample_video.mp4 - assets/www/index.html - assets/www/styles/style.css - -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins -dependency_overrides: - {webview_flutter_platform_interface: {path: ../../../webview_flutter/webview_flutter_platform_interface}} diff --git a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml index ae8b7837963..75a6f39c7f9 100644 --- a/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_wkwebview/pubspec.yaml @@ -33,8 +33,3 @@ topics: - html - webview - webview-flutter - -# FOR TESTING AND INITIAL REVIEW ONLY. DO NOT MERGE. -# See https://github.com/flutter/flutter/wiki/Contributing-to-Plugins-and-Packages#changing-federated-plugins -dependency_overrides: - {webview_flutter_platform_interface: {path: ../../webview_flutter/webview_flutter_platform_interface}}