Fix bugs in Dart Implementation of the Pigeon API (#4461)
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 1ddd6f3..f6faa8e 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
@@ -29,6 +29,8 @@
/// To learn more about WebView and alternatives for serving web content, read
/// the documentation on
/// [Web-based content](https://developer.android.com/guide/webapps).
+///
+/// When a [WebView] is no longer needed [release] must be called.
class WebView {
/// Constructs a new WebView.
WebView({this.useHybridComposition = false}) {
@@ -40,9 +42,6 @@
static WebViewHostApiImpl api = WebViewHostApiImpl();
WebViewClient? _currentWebViewClient;
- DownloadListener? _currentDownloadListener;
- WebChromeClient? _currentWebChromeClient;
- Set<JavaScriptChannel> _javaScriptChannels = <JavaScriptChannel>{};
/// Whether the [WebView] will be rendered with an [AndroidViewSurface].
///
@@ -187,18 +186,8 @@
///
/// This will replace the current handler.
Future<void> setWebViewClient(WebViewClient webViewClient) {
- final WebViewClient? currentWebViewClient = _currentWebViewClient;
-
- if (webViewClient == currentWebViewClient) {
- return Future<void>.value();
- }
-
- if (currentWebViewClient != null) {
- WebViewClient.api.disposeFromInstance(currentWebViewClient);
- }
-
- WebViewClient.api.createFromInstance(webViewClient);
_currentWebViewClient = webViewClient;
+ WebViewClient.api.createFromInstance(webViewClient);
return api.setWebViewClientFromInstance(this, webViewClient);
}
@@ -227,7 +216,6 @@
/// content is ever loaded into the WebView even inside an iframe.
Future<void> addJavaScriptChannel(JavaScriptChannel javaScriptChannel) {
JavaScriptChannel.api.createFromInstance(javaScriptChannel);
- _javaScriptChannels.add(javaScriptChannel);
return api.addJavaScriptChannelFromInstance(this, javaScriptChannel);
}
@@ -236,27 +224,15 @@
/// Note that the removal will not be reflected in JavaScript until the page
/// is next (re)loaded. See [addJavaScriptChannel].
Future<void> removeJavaScriptChannel(JavaScriptChannel javaScriptChannel) {
- _javaScriptChannels.remove(javaScriptChannel);
- api.removeJavaScriptChannelFromInstance(this, javaScriptChannel);
- return JavaScriptChannel.api.disposeFromInstance(javaScriptChannel);
+ JavaScriptChannel.api.createFromInstance(javaScriptChannel);
+ return api.removeJavaScriptChannelFromInstance(this, javaScriptChannel);
}
/// Registers the interface to be used when content can not be handled by the rendering engine, and should be downloaded instead.
///
/// This will replace the current handler.
Future<void> setDownloadListener(DownloadListener listener) {
- final DownloadListener? currentDownloadListener = _currentDownloadListener;
-
- if (listener == currentDownloadListener) {
- return Future<void>.value();
- }
-
- if (currentDownloadListener != null) {
- DownloadListener.api.disposeFromInstance(currentDownloadListener);
- }
-
DownloadListener.api.createFromInstance(listener);
- _currentDownloadListener = listener;
return api.setDownloadListenerFromInstance(this, listener);
}
@@ -266,26 +242,26 @@
/// JavaScript dialogs, favicons, titles, and the progress. This will replace
/// the current handler.
Future<void> setWebChromeClient(WebChromeClient client) {
- final WebChromeClient? currentWebChromeClient = _currentWebChromeClient;
-
- if (client == currentWebChromeClient) {
- return Future<void>.value();
- }
-
- if (currentWebChromeClient != null) {
- WebChromeClient.api.disposeFromInstance(currentWebChromeClient);
- }
-
- final WebViewClient? currentWebViewClient = _currentWebViewClient;
+ // WebView requires a WebViewClient because of a bug fix that makes
+ // calls to WebViewClient.requestLoading/WebViewClient.urlLoading when a new
+ // window is opened. This is to make sure a url opened by `Window.open` has
+ // a secure url.
assert(
- currentWebViewClient != null,
+ _currentWebViewClient != null,
"Can't set a WebChromeClient without setting a WebViewClient first.",
);
-
- WebChromeClient.api.createFromInstance(client, currentWebViewClient!);
- _currentWebChromeClient = client;
+ WebChromeClient.api.createFromInstance(client, _currentWebViewClient!);
return api.setWebChromeClientFromInstance(this, client);
}
+
+ /// Releases all resources used by the [WebView].
+ ///
+ /// Any methods called after [release] will throw an exception.
+ Future<void> release() {
+ _currentWebViewClient = null;
+ WebSettings.api.disposeFromInstance(settings);
+ return api.disposeFromInstance(this);
+ }
}
/// Manages settings state for a [WebView].
@@ -332,7 +308,7 @@
///
/// The default is false.
Future<void> setSupportMultipleWindows(bool support) {
- return api.setSupportZoomFromInstance(this, support);
+ return api.setSupportMultipleWindowsFromInstance(this, support);
}
/// Tells the WebView to enable JavaScript execution.
@@ -423,7 +399,9 @@
/// See [WebView.addJavaScriptChannel].
abstract class JavaScriptChannel {
/// Constructs a [JavaScriptChannel].
- JavaScriptChannel(this.channelName);
+ JavaScriptChannel(this.channelName) {
+ AndroidWebViewFlutterApis.instance.ensureSetUp();
+ }
/// Pigeon Host Api implementation for [JavaScriptChannel].
@visibleForTesting
@@ -433,61 +411,95 @@
final String channelName;
/// Callback method when javaScript calls `postMessage` on the object instance passed.
- void postMessage(String message) {}
+ void postMessage(String message);
}
/// Receive various notifications and requests for [WebView].
abstract class WebViewClient {
/// Constructs a [WebViewClient].
- WebViewClient({this.shouldOverrideUrlLoading = true});
+ WebViewClient({this.shouldOverrideUrlLoading = true}) {
+ AndroidWebViewFlutterApis.instance.ensureSetUp();
+ }
/// User authentication failed on server.
- static const int errorAuthentication = 0xfffffffc;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_AUTHENTICATION
+ static const int errorAuthentication = -4;
/// Malformed URL.
- static const int errorBadUrl = 0xfffffff4;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_BAD_URL
+ static const int errorBadUrl = -12;
/// Failed to connect to the server.
- static const int errorConnect = 0xfffffffa;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_CONNECT
+ static const int errorConnect = -6;
/// Failed to perform SSL handshake.
- static const int errorFailedSslHandshake = 0xfffffff5;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_FAILED_SSL_HANDSHAKE
+ static const int errorFailedSslHandshake = -11;
/// Generic file error.
- static const int errorFile = 0xfffffff3;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_FILE
+ static const int errorFile = -13;
/// File not found.
- static const int errorFileNotFound = 0xfffffff2;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_FILE_NOT_FOUND
+ static const int errorFileNotFound = -14;
/// Server or proxy hostname lookup failed.
- static const int errorHostLookup = 0xfffffffe;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_HOST_LOOKUP
+ static const int errorHostLookup = -2;
/// Failed to read or write to the server.
- static const int errorIO = 0xfffffff9;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_IO
+ static const int errorIO = -7;
/// User authentication failed on proxy.
- static const int errorProxyAuthentication = 0xfffffffb;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_PROXY_AUTHENTICATION
+ static const int errorProxyAuthentication = -5;
/// Too many redirects.
- static const int errorRedirectLoop = 0xfffffff7;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_REDIRECT_LOOP
+ static const int errorRedirectLoop = -9;
/// Connection timed out.
- static const int errorTimeout = 0xfffffff8;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_TIMEOUT
+ static const int errorTimeout = -8;
/// Too many requests during this load.
- static const int errorTooManyRequests = 0xfffffff1;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_TOO_MANY_REQUESTS
+ static const int errorTooManyRequests = -15;
/// Generic error.
- static const int errorUnknown = 0xffffffff;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_UNKNOWN
+ static const int errorUnknown = -1;
/// Resource load was canceled by Safe Browsing.
- static const int errorUnsafeResource = 0xfffffff0;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_UNSAFE_RESOURCE
+ static const int errorUnsafeResource = -16;
/// Unsupported authentication scheme (not basic or digest).
- static const int errorUnsupportedAuthScheme = 0xfffffffd;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_UNSUPPORTED_AUTH_SCHEME
+ static const int errorUnsupportedAuthScheme = -3;
/// Unsupported URI scheme.
- static const int errorUnsupportedScheme = 0xfffffff6;
+ ///
+ /// See https://developer.android.com/reference/android/webkit/WebViewClient#ERROR_UNSUPPORTED_SCHEME
+ static const int errorUnsupportedScheme = -10;
/// Pigeon Host Api implementation for [WebViewClient].
@visibleForTesting
@@ -573,6 +585,11 @@
/// The interface to be used when content can not be handled by the rendering engine for [WebView], and should be downloaded instead.
abstract class DownloadListener {
+ /// Constructs a [DownloadListener].
+ DownloadListener() {
+ AndroidWebViewFlutterApis.instance.ensureSetUp();
+ }
+
/// Pigeon Host Api implementation for [DownloadListener].
@visibleForTesting
static DownloadListenerHostApiImpl api = DownloadListenerHostApiImpl();
@@ -589,12 +606,17 @@
/// Handles JavaScript dialogs, favicons, titles, and the progress for [WebView].
abstract class WebChromeClient {
+ /// Constructs a [WebChromeClient].
+ WebChromeClient() {
+ AndroidWebViewFlutterApis.instance.ensureSetUp();
+ }
+
/// Pigeon Host Api implementation for [WebChromeClient].
@visibleForTesting
static WebChromeClientHostApiImpl api = WebChromeClientHostApiImpl();
/// Notify the host application that a file should be downloaded.
- void onProgressChanged(WebView webView, int progress);
+ void onProgressChanged(WebView webView, int progress) {}
}
/// Encompasses parameters to the [WebViewClient.requestLoading] method.
@@ -609,24 +631,24 @@
required this.requestHeaders,
});
- /// Gets the URL for which the resource request was made.
+ /// The URL for which the resource request was made.
final String url;
- /// Gets whether the request was made in order to fetch the main frame's document.
- final isForMainFrame;
+ /// Whether the request was made in order to fetch the main frame's document.
+ final bool isForMainFrame;
- /// Gets whether the request was a result of a server-side redirect.
+ /// Whether the request was a result of a server-side redirect.
///
/// Only supported on Android version >= 24.
final bool? isRedirect;
- /// Gets whether a gesture (such as a click) was associated with the request.
+ /// Whether a gesture (such as a click) was associated with the request.
final bool hasGesture;
- /// Gets the method associated with the request, for example "GET".
+ /// The method associated with the request, for example "GET".
final String method;
- /// Gets the headers associated with the request.
+ /// The headers associated with the request.
final Map<String, String> requestHeaders;
}
diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.pigeon.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.pigeon.dart
index 81ec7c7..7fb95f1 100644
--- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.pigeon.dart
+++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.pigeon.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.
-// Autogenerated from Pigeon (v1.0.7), do not edit directly.
+// Autogenerated from Pigeon (v1.0.9), 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
// @dart = 2.12
@@ -1039,31 +1039,6 @@
return;
}
}
-
- Future<void> dispose(int arg_instanceId) async {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.JavaScriptChannelHostApi.dispose', codec,
- binaryMessenger: _binaryMessenger);
- final Map<Object?, Object?>? replyMap =
- await channel.send(<Object>[arg_instanceId]) as Map<Object?, Object?>?;
- if (replyMap == null) {
- throw PlatformException(
- code: 'channel-error',
- message: 'Unable to establish connection on channel.',
- details: null,
- );
- } else if (replyMap['error'] != null) {
- final Map<Object?, Object?> error =
- (replyMap['error'] as Map<Object?, Object?>?)!;
- throw PlatformException(
- code: (error['code'] as String?)!,
- message: error['message'] as String?,
- details: error['details'],
- );
- } else {
- return;
- }
- }
}
class _JavaScriptChannelFlutterApiCodec extends StandardMessageCodec {
@@ -1074,11 +1049,33 @@
static const MessageCodec<Object?> codec =
_JavaScriptChannelFlutterApiCodec();
+ void dispose(int instanceId);
void postMessage(int instanceId, String message);
- static void setup(JavaScriptChannelFlutterApi? api) {
+ static void setup(JavaScriptChannelFlutterApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.JavaScriptChannelFlutterApi.postMessage', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.JavaScriptChannelFlutterApi.dispose', codec,
+ binaryMessenger: binaryMessenger);
+ if (api == null) {
+ channel.setMessageHandler(null);
+ } else {
+ channel.setMessageHandler((Object? message) async {
+ assert(message != null,
+ 'Argument for dev.flutter.pigeon.JavaScriptChannelFlutterApi.dispose was null.');
+ final List<Object?> args = (message as List<Object?>?)!;
+ final int? arg_instanceId = (args[0] as int?);
+ assert(arg_instanceId != null,
+ 'Argument for dev.flutter.pigeon.JavaScriptChannelFlutterApi.dispose was null, expected non-null int.');
+ api.dispose(arg_instanceId!);
+ return;
+ });
+ }
+ }
+ {
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.JavaScriptChannelFlutterApi.postMessage', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1086,10 +1083,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.JavaScriptChannelFlutterApi.postMessage was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.JavaScriptChannelFlutterApi.postMessage was null, expected non-null int.');
- final String? arg_message = args[1] as String?;
+ final String? arg_message = (args[1] as String?);
assert(arg_message != null,
'Argument for dev.flutter.pigeon.JavaScriptChannelFlutterApi.postMessage was null, expected non-null String.');
api.postMessage(arg_instanceId!, arg_message!);
@@ -1141,31 +1138,6 @@
return;
}
}
-
- Future<void> dispose(int arg_instanceId) async {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientHostApi.dispose', codec,
- binaryMessenger: _binaryMessenger);
- final Map<Object?, Object?>? replyMap =
- await channel.send(<Object>[arg_instanceId]) as Map<Object?, Object?>?;
- if (replyMap == null) {
- throw PlatformException(
- code: 'channel-error',
- message: 'Unable to establish connection on channel.',
- details: null,
- );
- } else if (replyMap['error'] != null) {
- final Map<Object?, Object?> error =
- (replyMap['error'] as Map<Object?, Object?>?)!;
- throw PlatformException(
- code: (error['code'] as String?)!,
- message: error['message'] as String?,
- details: error['details'],
- );
- } else {
- return;
- }
- }
}
class _WebViewClientFlutterApiCodec extends StandardMessageCodec {
@@ -1178,9 +1150,6 @@
} else if (value is WebResourceRequestData) {
buffer.putUint8(129);
writeValue(buffer, value.encode());
- } else if (value is WebResourceRequestData) {
- buffer.putUint8(130);
- writeValue(buffer, value.encode());
} else {
super.writeValue(buffer, value);
}
@@ -1195,9 +1164,6 @@
case 129:
return WebResourceRequestData.decode(readValue(buffer)!);
- case 130:
- return WebResourceRequestData.decode(readValue(buffer)!);
-
default:
return super.readValueOfType(type, buffer);
}
@@ -1207,6 +1173,7 @@
abstract class WebViewClientFlutterApi {
static const MessageCodec<Object?> codec = _WebViewClientFlutterApiCodec();
+ void dispose(int instanceId);
void onPageStarted(int instanceId, int webViewInstanceId, String url);
void onPageFinished(int instanceId, int webViewInstanceId, String url);
void onReceivedRequestError(int instanceId, int webViewInstanceId,
@@ -1216,10 +1183,31 @@
void requestLoading(
int instanceId, int webViewInstanceId, WebResourceRequestData request);
void urlLoading(int instanceId, int webViewInstanceId, String url);
- static void setup(WebViewClientFlutterApi? api) {
+ static void setup(WebViewClientFlutterApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientFlutterApi.onPageStarted', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientFlutterApi.dispose', codec,
+ binaryMessenger: binaryMessenger);
+ if (api == null) {
+ channel.setMessageHandler(null);
+ } else {
+ channel.setMessageHandler((Object? message) async {
+ assert(message != null,
+ 'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.dispose was null.');
+ final List<Object?> args = (message as List<Object?>?)!;
+ final int? arg_instanceId = (args[0] as int?);
+ assert(arg_instanceId != null,
+ 'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.dispose was null, expected non-null int.');
+ api.dispose(arg_instanceId!);
+ return;
+ });
+ }
+ }
+ {
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientFlutterApi.onPageStarted', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1227,13 +1215,13 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageStarted was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageStarted was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageStarted was null, expected non-null int.');
- final String? arg_url = args[2] as String?;
+ final String? arg_url = (args[2] as String?);
assert(arg_url != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageStarted was null, expected non-null String.');
api.onPageStarted(arg_instanceId!, arg_webViewInstanceId!, arg_url!);
@@ -1242,8 +1230,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientFlutterApi.onPageFinished', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientFlutterApi.onPageFinished', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1251,13 +1240,13 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageFinished was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageFinished was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageFinished was null, expected non-null int.');
- final String? arg_url = args[2] as String?;
+ final String? arg_url = (args[2] as String?);
assert(arg_url != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onPageFinished was null, expected non-null String.');
api.onPageFinished(arg_instanceId!, arg_webViewInstanceId!, arg_url!);
@@ -1266,9 +1255,10 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedRequestError',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1276,18 +1266,18 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedRequestError was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null int.');
final WebResourceRequestData? arg_request =
- args[2] as WebResourceRequestData?;
+ (args[2] as WebResourceRequestData?);
assert(arg_request != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null WebResourceRequestData.');
final WebResourceErrorData? arg_error =
- args[3] as WebResourceErrorData?;
+ (args[3] as WebResourceErrorData?);
assert(arg_error != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedRequestError was null, expected non-null WebResourceErrorData.');
api.onReceivedRequestError(arg_instanceId!, arg_webViewInstanceId!,
@@ -1297,8 +1287,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1306,19 +1297,19 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError was null, expected non-null int.');
- final int? arg_errorCode = args[2] as int?;
+ final int? arg_errorCode = (args[2] as int?);
assert(arg_errorCode != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError was null, expected non-null int.');
- final String? arg_description = args[3] as String?;
+ final String? arg_description = (args[3] as String?);
assert(arg_description != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError was null, expected non-null String.');
- final String? arg_failingUrl = args[4] as String?;
+ final String? arg_failingUrl = (args[4] as String?);
assert(arg_failingUrl != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.onReceivedError was null, expected non-null String.');
api.onReceivedError(arg_instanceId!, arg_webViewInstanceId!,
@@ -1328,8 +1319,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientFlutterApi.requestLoading', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientFlutterApi.requestLoading', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1337,14 +1329,14 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.requestLoading was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.requestLoading was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.requestLoading was null, expected non-null int.');
final WebResourceRequestData? arg_request =
- args[2] as WebResourceRequestData?;
+ (args[2] as WebResourceRequestData?);
assert(arg_request != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.requestLoading was null, expected non-null WebResourceRequestData.');
api.requestLoading(
@@ -1354,8 +1346,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1363,13 +1356,13 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading was null, expected non-null int.');
- final String? arg_url = args[2] as String?;
+ final String? arg_url = (args[2] as String?);
assert(arg_url != null,
'Argument for dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading was null, expected non-null String.');
api.urlLoading(arg_instanceId!, arg_webViewInstanceId!, arg_url!);
@@ -1419,31 +1412,6 @@
return;
}
}
-
- Future<void> dispose(int arg_instanceId) async {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.DownloadListenerHostApi.dispose', codec,
- binaryMessenger: _binaryMessenger);
- final Map<Object?, Object?>? replyMap =
- await channel.send(<Object>[arg_instanceId]) as Map<Object?, Object?>?;
- if (replyMap == null) {
- throw PlatformException(
- code: 'channel-error',
- message: 'Unable to establish connection on channel.',
- details: null,
- );
- } else if (replyMap['error'] != null) {
- final Map<Object?, Object?> error =
- (replyMap['error'] as Map<Object?, Object?>?)!;
- throw PlatformException(
- code: (error['code'] as String?)!,
- message: error['message'] as String?,
- details: error['details'],
- );
- } else {
- return;
- }
- }
}
class _DownloadListenerFlutterApiCodec extends StandardMessageCodec {
@@ -1453,13 +1421,35 @@
abstract class DownloadListenerFlutterApi {
static const MessageCodec<Object?> codec = _DownloadListenerFlutterApiCodec();
+ void dispose(int instanceId);
void onDownloadStart(int instanceId, String url, String userAgent,
String contentDisposition, String mimetype, int contentLength);
- static void setup(DownloadListenerFlutterApi? api) {
+ static void setup(DownloadListenerFlutterApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.DownloadListenerFlutterApi.dispose', codec,
+ binaryMessenger: binaryMessenger);
+ if (api == null) {
+ channel.setMessageHandler(null);
+ } else {
+ channel.setMessageHandler((Object? message) async {
+ assert(message != null,
+ 'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.dispose was null.');
+ final List<Object?> args = (message as List<Object?>?)!;
+ final int? arg_instanceId = (args[0] as int?);
+ assert(arg_instanceId != null,
+ 'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.dispose was null, expected non-null int.');
+ api.dispose(arg_instanceId!);
+ return;
+ });
+ }
+ }
+ {
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1467,22 +1457,22 @@
assert(message != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null int.');
- final String? arg_url = args[1] as String?;
+ final String? arg_url = (args[1] as String?);
assert(arg_url != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null String.');
- final String? arg_userAgent = args[2] as String?;
+ final String? arg_userAgent = (args[2] as String?);
assert(arg_userAgent != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null String.');
- final String? arg_contentDisposition = args[3] as String?;
+ final String? arg_contentDisposition = (args[3] as String?);
assert(arg_contentDisposition != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null String.');
- final String? arg_mimetype = args[4] as String?;
+ final String? arg_mimetype = (args[4] as String?);
assert(arg_mimetype != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null String.');
- final int? arg_contentLength = args[5] as int?;
+ final int? arg_contentLength = (args[5] as int?);
assert(arg_contentLength != null,
'Argument for dev.flutter.pigeon.DownloadListenerFlutterApi.onDownloadStart was null, expected non-null int.');
api.onDownloadStart(arg_instanceId!, arg_url!, arg_userAgent!,
@@ -1535,31 +1525,6 @@
return;
}
}
-
- Future<void> dispose(int arg_instanceId) async {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebChromeClientHostApi.dispose', codec,
- binaryMessenger: _binaryMessenger);
- final Map<Object?, Object?>? replyMap =
- await channel.send(<Object>[arg_instanceId]) as Map<Object?, Object?>?;
- if (replyMap == null) {
- throw PlatformException(
- code: 'channel-error',
- message: 'Unable to establish connection on channel.',
- details: null,
- );
- } else if (replyMap['error'] != null) {
- final Map<Object?, Object?> error =
- (replyMap['error'] as Map<Object?, Object?>?)!;
- throw PlatformException(
- code: (error['code'] as String?)!,
- message: error['message'] as String?,
- details: error['details'],
- );
- } else {
- return;
- }
- }
}
class _WebChromeClientFlutterApiCodec extends StandardMessageCodec {
@@ -1569,12 +1534,34 @@
abstract class WebChromeClientFlutterApi {
static const MessageCodec<Object?> codec = _WebChromeClientFlutterApiCodec();
+ void dispose(int instanceId);
void onProgressChanged(int instanceId, int webViewInstanceId, int progress);
- static void setup(WebChromeClientFlutterApi? api) {
+ static void setup(WebChromeClientFlutterApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebChromeClientFlutterApi.dispose', codec,
+ binaryMessenger: binaryMessenger);
+ if (api == null) {
+ channel.setMessageHandler(null);
+ } else {
+ channel.setMessageHandler((Object? message) async {
+ assert(message != null,
+ 'Argument for dev.flutter.pigeon.WebChromeClientFlutterApi.dispose was null.');
+ final List<Object?> args = (message as List<Object?>?)!;
+ final int? arg_instanceId = (args[0] as int?);
+ assert(arg_instanceId != null,
+ 'Argument for dev.flutter.pigeon.WebChromeClientFlutterApi.dispose was null, expected non-null int.');
+ api.dispose(arg_instanceId!);
+ return;
+ });
+ }
+ }
+ {
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebChromeClientFlutterApi.onProgressChanged',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMessageHandler(null);
} else {
@@ -1582,13 +1569,13 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebChromeClientFlutterApi.onProgressChanged was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebChromeClientFlutterApi.onProgressChanged was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebChromeClientFlutterApi.onProgressChanged was null, expected non-null int.');
- final int? arg_progress = args[2] as int?;
+ final int? arg_progress = (args[2] as int?);
assert(arg_progress != null,
'Argument for dev.flutter.pigeon.WebChromeClientFlutterApi.onProgressChanged was null, expected non-null int.');
api.onProgressChanged(
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 f909e49..fba0dea 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
@@ -8,6 +8,77 @@
import 'android_webview.pigeon.dart';
import 'instance_manager.dart';
+/// Converts [WebResourceRequestData] to [WebResourceRequest]
+WebResourceRequest _toWebResourceRequest(WebResourceRequestData data) {
+ return WebResourceRequest(
+ url: data.url!,
+ isForMainFrame: data.isForMainFrame!,
+ isRedirect: data.isRedirect,
+ hasGesture: data.hasGesture!,
+ method: data.method!,
+ requestHeaders:
+ data.requestHeaders?.cast<String, String>() ?? <String, String>{},
+ );
+}
+
+/// Converts [WebResourceErrorData] to [WebResourceError].
+WebResourceError _toWebResourceError(WebResourceErrorData data) {
+ return WebResourceError(
+ errorCode: data.errorCode!,
+ description: data.description!,
+ );
+}
+
+/// Handles initialization of Flutter APIs for Android WebView.
+class AndroidWebViewFlutterApis {
+ /// Creates a [AndroidWebViewFlutterApis].
+ AndroidWebViewFlutterApis({
+ DownloadListenerFlutterApiImpl? downloadListenerFlutterApi,
+ WebViewClientFlutterApiImpl? webViewClientFlutterApi,
+ WebChromeClientFlutterApiImpl? webChromeClientFlutterApi,
+ JavaScriptChannelFlutterApiImpl? javaScriptChannelFlutterApi,
+ }) {
+ this.downloadListenerFlutterApi =
+ downloadListenerFlutterApi ?? DownloadListenerFlutterApiImpl();
+ this.webViewClientFlutterApi =
+ webViewClientFlutterApi ?? WebViewClientFlutterApiImpl();
+ this.webChromeClientFlutterApi =
+ webChromeClientFlutterApi ?? WebChromeClientFlutterApiImpl();
+ this.javaScriptChannelFlutterApi =
+ javaScriptChannelFlutterApi ?? JavaScriptChannelFlutterApiImpl();
+ }
+
+ static bool _haveBeenSetUp = false;
+
+ /// Mutable instance containing all Flutter Apis for Android WebView.
+ ///
+ /// This should only be changed for testing purposes.
+ static AndroidWebViewFlutterApis instance = AndroidWebViewFlutterApis();
+
+ /// Flutter Api for [DownloadListener].
+ late final DownloadListenerFlutterApiImpl downloadListenerFlutterApi;
+
+ /// Flutter Api for [WebViewClient].
+ late final WebViewClientFlutterApiImpl webViewClientFlutterApi;
+
+ /// Flutter Api for [WebChromeClient].
+ late final WebChromeClientFlutterApiImpl webChromeClientFlutterApi;
+
+ /// Flutter Api for [JavaScriptChannel].
+ late final JavaScriptChannelFlutterApiImpl javaScriptChannelFlutterApi;
+
+ /// Ensures all the Flutter APIs have been setup to receive calls from native code.
+ void ensureSetUp() {
+ if (!_haveBeenSetUp) {
+ DownloadListenerFlutterApi.setup(downloadListenerFlutterApi);
+ WebViewClientFlutterApi.setup(webViewClientFlutterApi);
+ WebChromeClientFlutterApi.setup(webChromeClientFlutterApi);
+ JavaScriptChannelFlutterApi.setup(javaScriptChannelFlutterApi);
+ _haveBeenSetUp = true;
+ }
+ }
+}
+
/// Host api implementation for [WebView].
class WebViewHostApiImpl extends WebViewHostApi {
/// Constructs a [WebViewHostApiImpl].
@@ -31,10 +102,11 @@
/// Helper method to convert instances ids to objects.
Future<void> disposeFromInstance(WebView instance) async {
- final int? instanceId = instanceManager.removeInstance(instance);
+ final int? instanceId = instanceManager.getInstanceId(instance);
if (instanceId != null) {
- return dispose(instanceId);
+ await dispose(instanceId);
}
+ instanceManager.removeInstance(instance);
}
/// Helper method to convert instances ids to objects.
@@ -239,7 +311,7 @@
WebSettings instance,
bool flag,
) {
- return setJavaScriptCanOpenWindowsAutomatically(
+ return setJavaScriptEnabled(
instanceManager.getInstanceId(instance)!,
flag,
);
@@ -337,20 +409,12 @@
return create(instanceId, instance.channelName);
}
}
-
- /// Helper method to convert instances ids to objects.
- Future<void> disposeFromInstance(JavaScriptChannel instance) async {
- final int? instanceId = instanceManager.removeInstance(instance);
- if (instanceId != null) {
- return dispose(instanceId);
- }
- }
}
/// Flutter api implementation for [JavaScriptChannel].
class JavaScriptChannelFlutterApiImpl extends JavaScriptChannelFlutterApi {
/// Constructs a [JavaScriptChannelFlutterApiImpl].
- JavaScriptChannelHostApiImpl({InstanceManager? instanceManager}) {
+ JavaScriptChannelFlutterApiImpl({InstanceManager? instanceManager}) {
this.instanceManager = instanceManager ?? InstanceManager.instance;
}
@@ -358,6 +422,11 @@
late final InstanceManager instanceManager;
@override
+ void dispose(int instanceId) {
+ instanceManager.removeInstance(instanceId);
+ }
+
+ @override
void postMessage(int instanceId, String message) {
final JavaScriptChannel instance =
instanceManager.getInstance(instanceId) as JavaScriptChannel;
@@ -385,14 +454,6 @@
return create(instanceId, instance.shouldOverrideUrlLoading);
}
}
-
- /// Helper method to convert instances ids to objects.
- Future<void> disposeFromInstance(WebViewClient instance) async {
- final int? instanceId = instanceManager.removeInstance(instance);
- if (instanceId != null) {
- return dispose(instanceId);
- }
- }
}
/// Flutter api implementation for [WebViewClient].
@@ -406,6 +467,11 @@
late final InstanceManager instanceManager;
@override
+ void dispose(int instanceId) {
+ instanceManager.removeInstance(instanceId);
+ }
+
+ @override
void onPageFinished(int instanceId, int webViewInstanceId, String url) {
final WebViewClient instance =
instanceManager.getInstance(instanceId) as WebViewClient;
@@ -455,18 +521,8 @@
instanceManager.getInstance(instanceId) as WebViewClient;
instance.onReceivedRequestError(
instanceManager.getInstance(webViewInstanceId) as WebView,
- WebResourceRequest(
- url: request.url!,
- isForMainFrame: request.isForMainFrame!,
- isRedirect: request.isRedirect,
- hasGesture: request.hasGesture!,
- method: request.method!,
- requestHeaders: request.requestHeaders!.cast<String, String>(),
- ),
- WebResourceError(
- errorCode: error.errorCode!,
- description: error.description!,
- ),
+ _toWebResourceRequest(request),
+ _toWebResourceError(error),
);
}
@@ -480,14 +536,7 @@
instanceManager.getInstance(instanceId) as WebViewClient;
instance.requestLoading(
instanceManager.getInstance(webViewInstanceId) as WebView,
- WebResourceRequest(
- url: request.url!,
- isForMainFrame: request.isForMainFrame!,
- isRedirect: request.isRedirect,
- hasGesture: request.hasGesture!,
- method: request.method!,
- requestHeaders: request.requestHeaders!.cast<String, String>(),
- ),
+ _toWebResourceRequest(request),
);
}
@@ -526,14 +575,6 @@
return create(instanceId);
}
}
-
- /// Helper method to convert instances ids to objects.
- Future<void> disposeFromInstance(DownloadListener instance) async {
- final int? instanceId = instanceManager.removeInstance(instance);
- if (instanceId != null) {
- return dispose(instanceId);
- }
- }
}
/// Flutter api implementation for [DownloadListener].
@@ -547,6 +588,11 @@
late final InstanceManager instanceManager;
@override
+ void dispose(int instanceId) {
+ instanceManager.removeInstance(instanceId);
+ }
+
+ @override
void onDownloadStart(
int instanceId,
String url,
@@ -590,14 +636,6 @@
return create(instanceId, instanceManager.getInstanceId(webViewClient)!);
}
}
-
- /// Helper method to convert instances ids to objects.
- Future<void> disposeFromInstance(WebChromeClient instance) async {
- final int? instanceId = instanceManager.removeInstance(instance);
- if (instanceId != null) {
- return dispose(instanceId);
- }
- }
}
/// Flutter api implementation for [DownloadListener].
@@ -611,6 +649,11 @@
late final InstanceManager instanceManager;
@override
+ void dispose(int instanceId) {
+ instanceManager.removeInstance(instanceId);
+ }
+
+ @override
void onProgressChanged(int instanceId, int webViewInstanceId, int progress) {
final WebChromeClient instance =
instanceManager.getInstance(instanceId) as WebChromeClient;
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 1877c1b..47bc420 100644
--- a/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart
+++ b/packages/webview_flutter/webview_flutter_android/pigeons/android_webview.dart
@@ -105,24 +105,24 @@
@HostApi(dartHostTestHandler: 'TestJavaScriptChannelHostApi')
abstract class JavaScriptChannelHostApi {
void create(int instanceId, String channelName);
-
- void dispose(int instanceId);
}
@FlutterApi()
abstract class JavaScriptChannelFlutterApi {
+ void dispose(int instanceId);
+
void postMessage(int instanceId, String message);
}
@HostApi(dartHostTestHandler: 'TestWebViewClientHostApi')
abstract class WebViewClientHostApi {
void create(int instanceId, bool shouldOverrideUrlLoading);
-
- void dispose(int instanceId);
}
@FlutterApi()
abstract class WebViewClientFlutterApi {
+ void dispose(int instanceId);
+
void onPageStarted(int instanceId, int webViewInstanceId, String url);
void onPageFinished(int instanceId, int webViewInstanceId, String url);
@@ -154,11 +154,12 @@
@HostApi(dartHostTestHandler: 'TestDownloadListenerHostApi')
abstract class DownloadListenerHostApi {
void create(int instanceId);
- void dispose(int instanceId);
}
@FlutterApi()
abstract class DownloadListenerFlutterApi {
+ void dispose(int instanceId);
+
void onDownloadStart(
int instanceId,
String url,
@@ -172,10 +173,11 @@
@HostApi(dartHostTestHandler: 'TestWebChromeClientHostApi')
abstract class WebChromeClientHostApi {
void create(int instanceId, int webViewClientInstanceId);
- void dispose(int instanceId);
}
@FlutterApi()
abstract class WebChromeClientFlutterApi {
+ void dispose(int instanceId);
+
void onProgressChanged(int instanceId, int webViewInstanceId, int progress);
}
diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml
index 9f9998e..2fe03c8 100644
--- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml
+++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml
@@ -22,10 +22,12 @@
webview_flutter_platform_interface: ^1.2.0
dev_dependencies:
+ build_runner: ^2.1.4
flutter_driver:
sdk: flutter
flutter_test:
sdk: flutter
- pigeon: 1.0.7
+ mockito: ^5.0.16
+ pigeon: 1.0.9
pedantic: ^1.10.0
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview.pigeon.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview.pigeon.dart
index 70aa53c..4173663 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview.pigeon.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview.pigeon.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.
-// Autogenerated from Pigeon (v1.0.7), do not edit directly.
+// Autogenerated from Pigeon (v1.0.9), 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, avoid_relative_lib_imports
// @dart = 2.12
@@ -43,10 +43,12 @@
void removeJavaScriptChannel(int instanceId, int javaScriptChannelInstanceId);
void setDownloadListener(int instanceId, int listenerInstanceId);
void setWebChromeClient(int instanceId, int clientInstanceId);
- static void setup(TestWebViewHostApi? api) {
+ static void setup(TestWebViewHostApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.create', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.create', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -54,10 +56,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.create was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.create was null, expected non-null int.');
- final bool? arg_useHybridComposition = args[1] as bool?;
+ final bool? arg_useHybridComposition = (args[1] as bool?);
assert(arg_useHybridComposition != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.create was null, expected non-null bool.');
api.create(arg_instanceId!, arg_useHybridComposition!);
@@ -66,8 +68,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.dispose', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.dispose', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -75,7 +78,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.dispose was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.dispose was null, expected non-null int.');
api.dispose(arg_instanceId!);
@@ -84,8 +87,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.loadUrl', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.loadUrl', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -93,14 +97,14 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.loadUrl was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.loadUrl was null, expected non-null int.');
- final String? arg_url = args[1] as String?;
+ final String? arg_url = (args[1] as String?);
assert(arg_url != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.loadUrl was null, expected non-null String.');
final Map<String?, String?>? arg_headers =
- args[2] as Map<String?, String?>?;
+ (args[2] as Map<Object?, Object?>?)?.cast<String?, String?>();
assert(arg_headers != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.loadUrl was null, expected non-null Map<String?, String?>.');
api.loadUrl(arg_instanceId!, arg_url!, arg_headers!);
@@ -109,8 +113,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.getUrl', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.getUrl', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -118,7 +123,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getUrl was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getUrl was null, expected non-null int.');
final String output = api.getUrl(arg_instanceId!);
@@ -127,8 +132,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.canGoBack', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.canGoBack', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -136,7 +142,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.canGoBack was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.canGoBack was null, expected non-null int.');
final bool output = api.canGoBack(arg_instanceId!);
@@ -145,8 +151,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.canGoForward', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.canGoForward', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -154,7 +161,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.canGoForward was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.canGoForward was null, expected non-null int.');
final bool output = api.canGoForward(arg_instanceId!);
@@ -163,8 +170,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.goBack', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.goBack', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -172,7 +180,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.goBack was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.goBack was null, expected non-null int.');
api.goBack(arg_instanceId!);
@@ -181,8 +189,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.goForward', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.goForward', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -190,7 +199,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.goForward was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.goForward was null, expected non-null int.');
api.goForward(arg_instanceId!);
@@ -199,8 +208,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.reload', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.reload', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -208,7 +218,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.reload was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.reload was null, expected non-null int.');
api.reload(arg_instanceId!);
@@ -217,8 +227,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.clearCache', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.clearCache', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -226,10 +237,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.clearCache was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.clearCache was null, expected non-null int.');
- final bool? arg_includeDiskFiles = args[1] as bool?;
+ final bool? arg_includeDiskFiles = (args[1] as bool?);
assert(arg_includeDiskFiles != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.clearCache was null, expected non-null bool.');
api.clearCache(arg_instanceId!, arg_includeDiskFiles!);
@@ -238,8 +249,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.evaluateJavascript', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.evaluateJavascript', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -247,10 +259,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.evaluateJavascript was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.evaluateJavascript was null, expected non-null int.');
- final String? arg_javascriptString = args[1] as String?;
+ final String? arg_javascriptString = (args[1] as String?);
assert(arg_javascriptString != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.evaluateJavascript was null, expected non-null String.');
final String output = await api.evaluateJavascript(
@@ -260,8 +272,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.getTitle', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.getTitle', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -269,7 +282,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getTitle was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getTitle was null, expected non-null int.');
final String output = api.getTitle(arg_instanceId!);
@@ -278,8 +291,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.scrollTo', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.scrollTo', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -287,13 +301,13 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollTo was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollTo was null, expected non-null int.');
- final int? arg_x = args[1] as int?;
+ final int? arg_x = (args[1] as int?);
assert(arg_x != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollTo was null, expected non-null int.');
- final int? arg_y = args[2] as int?;
+ final int? arg_y = (args[2] as int?);
assert(arg_y != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollTo was null, expected non-null int.');
api.scrollTo(arg_instanceId!, arg_x!, arg_y!);
@@ -302,8 +316,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.scrollBy', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.scrollBy', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -311,13 +326,13 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollBy was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollBy was null, expected non-null int.');
- final int? arg_x = args[1] as int?;
+ final int? arg_x = (args[1] as int?);
assert(arg_x != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollBy was null, expected non-null int.');
- final int? arg_y = args[2] as int?;
+ final int? arg_y = (args[2] as int?);
assert(arg_y != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.scrollBy was null, expected non-null int.');
api.scrollBy(arg_instanceId!, arg_x!, arg_y!);
@@ -326,8 +341,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.getScrollX', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.getScrollX', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -335,7 +351,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollX was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollX was null, expected non-null int.');
final int output = api.getScrollX(arg_instanceId!);
@@ -344,8 +360,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.getScrollY', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.getScrollY', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -353,7 +370,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollY was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollY was null, expected non-null int.');
final int output = api.getScrollY(arg_instanceId!);
@@ -362,9 +379,10 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebViewHostApi.setWebContentsDebuggingEnabled',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -372,7 +390,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebContentsDebuggingEnabled was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final bool? arg_enabled = args[0] as bool?;
+ final bool? arg_enabled = (args[0] as bool?);
assert(arg_enabled != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebContentsDebuggingEnabled was null, expected non-null bool.');
api.setWebContentsDebuggingEnabled(arg_enabled!);
@@ -381,8 +399,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.setWebViewClient', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.setWebViewClient', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -390,10 +409,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebViewClient was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebViewClient was null, expected non-null int.');
- final int? arg_webViewClientInstanceId = args[1] as int?;
+ final int? arg_webViewClientInstanceId = (args[1] as int?);
assert(arg_webViewClientInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebViewClient was null, expected non-null int.');
api.setWebViewClient(arg_instanceId!, arg_webViewClientInstanceId!);
@@ -402,8 +421,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -411,10 +431,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel was null, expected non-null int.');
- final int? arg_javaScriptChannelInstanceId = args[1] as int?;
+ final int? arg_javaScriptChannelInstanceId = (args[1] as int?);
assert(arg_javaScriptChannelInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel was null, expected non-null int.');
api.addJavaScriptChannel(
@@ -424,8 +444,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -433,10 +454,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel was null, expected non-null int.');
- final int? arg_javaScriptChannelInstanceId = args[1] as int?;
+ final int? arg_javaScriptChannelInstanceId = (args[1] as int?);
assert(arg_javaScriptChannelInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel was null, expected non-null int.');
api.removeJavaScriptChannel(
@@ -446,8 +467,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.setDownloadListener', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.setDownloadListener', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -455,10 +477,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setDownloadListener was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setDownloadListener was null, expected non-null int.');
- final int? arg_listenerInstanceId = args[1] as int?;
+ final int? arg_listenerInstanceId = (args[1] as int?);
assert(arg_listenerInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setDownloadListener was null, expected non-null int.');
api.setDownloadListener(arg_instanceId!, arg_listenerInstanceId!);
@@ -467,8 +489,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewHostApi.setWebChromeClient', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewHostApi.setWebChromeClient', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -476,10 +499,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebChromeClient was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebChromeClient was null, expected non-null int.');
- final int? arg_clientInstanceId = args[1] as int?;
+ final int? arg_clientInstanceId = (args[1] as int?);
assert(arg_clientInstanceId != null,
'Argument for dev.flutter.pigeon.WebViewHostApi.setWebChromeClient was null, expected non-null int.');
api.setWebChromeClient(arg_instanceId!, arg_clientInstanceId!);
@@ -510,10 +533,12 @@
void setUseWideViewPort(int instanceId, bool use);
void setDisplayZoomControls(int instanceId, bool enabled);
void setBuiltInZoomControls(int instanceId, bool enabled);
- static void setup(TestWebSettingsHostApi? api) {
+ static void setup(TestWebSettingsHostApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.create', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.create', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -521,10 +546,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.create was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.create was null, expected non-null int.');
- final int? arg_webViewInstanceId = args[1] as int?;
+ final int? arg_webViewInstanceId = (args[1] as int?);
assert(arg_webViewInstanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.create was null, expected non-null int.');
api.create(arg_instanceId!, arg_webViewInstanceId!);
@@ -533,8 +558,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.dispose', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.dispose', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -542,7 +568,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.dispose was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.dispose was null, expected non-null int.');
api.dispose(arg_instanceId!);
@@ -551,8 +577,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -560,10 +587,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled was null, expected non-null int.');
- final bool? arg_flag = args[1] as bool?;
+ final bool? arg_flag = (args[1] as bool?);
assert(arg_flag != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled was null, expected non-null bool.');
api.setDomStorageEnabled(arg_instanceId!, arg_flag!);
@@ -572,9 +599,10 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -582,10 +610,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null, expected non-null int.');
- final bool? arg_flag = args[1] as bool?;
+ final bool? arg_flag = (args[1] as bool?);
assert(arg_flag != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null, expected non-null bool.');
api.setJavaScriptCanOpenWindowsAutomatically(
@@ -595,9 +623,10 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebSettingsHostApi.setSupportMultipleWindows',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -605,10 +634,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportMultipleWindows was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportMultipleWindows was null, expected non-null int.');
- final bool? arg_support = args[1] as bool?;
+ final bool? arg_support = (args[1] as bool?);
assert(arg_support != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportMultipleWindows was null, expected non-null bool.');
api.setSupportMultipleWindows(arg_instanceId!, arg_support!);
@@ -617,8 +646,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -626,10 +656,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled was null, expected non-null int.');
- final bool? arg_flag = args[1] as bool?;
+ final bool? arg_flag = (args[1] as bool?);
assert(arg_flag != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled was null, expected non-null bool.');
api.setJavaScriptEnabled(arg_instanceId!, arg_flag!);
@@ -638,8 +668,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -647,10 +678,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString was null, expected non-null int.');
- final String? arg_userAgentString = args[1] as String?;
+ final String? arg_userAgentString = (args[1] as String?);
assert(arg_userAgentString != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString was null, expected non-null String.');
api.setUserAgentString(arg_instanceId!, arg_userAgentString!);
@@ -659,9 +690,10 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -669,10 +701,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null, expected non-null int.');
- final bool? arg_require = args[1] as bool?;
+ final bool? arg_require = (args[1] as bool?);
assert(arg_require != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null, expected non-null bool.');
api.setMediaPlaybackRequiresUserGesture(
@@ -682,8 +714,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -691,10 +724,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom was null, expected non-null int.');
- final bool? arg_support = args[1] as bool?;
+ final bool? arg_support = (args[1] as bool?);
assert(arg_support != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom was null, expected non-null bool.');
api.setSupportZoom(arg_instanceId!, arg_support!);
@@ -703,9 +736,10 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.WebSettingsHostApi.setLoadWithOverviewMode',
- codec);
+ codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -713,10 +747,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setLoadWithOverviewMode was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setLoadWithOverviewMode was null, expected non-null int.');
- final bool? arg_overview = args[1] as bool?;
+ final bool? arg_overview = (args[1] as bool?);
assert(arg_overview != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setLoadWithOverviewMode was null, expected non-null bool.');
api.setLoadWithOverviewMode(arg_instanceId!, arg_overview!);
@@ -725,8 +759,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -734,10 +769,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort was null, expected non-null int.');
- final bool? arg_use = args[1] as bool?;
+ final bool? arg_use = (args[1] as bool?);
assert(arg_use != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort was null, expected non-null bool.');
api.setUseWideViewPort(arg_instanceId!, arg_use!);
@@ -746,9 +781,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls',
- codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -756,10 +791,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls was null, expected non-null int.');
- final bool? arg_enabled = args[1] as bool?;
+ final bool? arg_enabled = (args[1] as bool?);
assert(arg_enabled != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls was null, expected non-null bool.');
api.setDisplayZoomControls(arg_instanceId!, arg_enabled!);
@@ -768,9 +803,9 @@
}
}
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls',
- codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -778,10 +813,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls was null, expected non-null int.');
- final bool? arg_enabled = args[1] as bool?;
+ final bool? arg_enabled = (args[1] as bool?);
assert(arg_enabled != null,
'Argument for dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls was null, expected non-null bool.');
api.setBuiltInZoomControls(arg_instanceId!, arg_enabled!);
@@ -801,11 +836,12 @@
_TestJavaScriptChannelHostApiCodec();
void create(int instanceId, String channelName);
- void dispose(int instanceId);
- static void setup(TestJavaScriptChannelHostApi? api) {
+ static void setup(TestJavaScriptChannelHostApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.JavaScriptChannelHostApi.create', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.JavaScriptChannelHostApi.create', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -813,10 +849,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.JavaScriptChannelHostApi.create was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.JavaScriptChannelHostApi.create was null, expected non-null int.');
- final String? arg_channelName = args[1] as String?;
+ final String? arg_channelName = (args[1] as String?);
assert(arg_channelName != null,
'Argument for dev.flutter.pigeon.JavaScriptChannelHostApi.create was null, expected non-null String.');
api.create(arg_instanceId!, arg_channelName!);
@@ -824,24 +860,6 @@
});
}
}
- {
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.JavaScriptChannelHostApi.dispose', codec);
- if (api == null) {
- channel.setMockMessageHandler(null);
- } else {
- channel.setMockMessageHandler((Object? message) async {
- assert(message != null,
- 'Argument for dev.flutter.pigeon.JavaScriptChannelHostApi.dispose was null.');
- final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
- assert(arg_instanceId != null,
- 'Argument for dev.flutter.pigeon.JavaScriptChannelHostApi.dispose was null, expected non-null int.');
- api.dispose(arg_instanceId!);
- return <Object?, Object?>{};
- });
- }
- }
}
}
@@ -853,11 +871,12 @@
static const MessageCodec<Object?> codec = _TestWebViewClientHostApiCodec();
void create(int instanceId, bool shouldOverrideUrlLoading);
- void dispose(int instanceId);
- static void setup(TestWebViewClientHostApi? api) {
+ static void setup(TestWebViewClientHostApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientHostApi.create', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebViewClientHostApi.create', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -865,10 +884,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebViewClientHostApi.create was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebViewClientHostApi.create was null, expected non-null int.');
- final bool? arg_shouldOverrideUrlLoading = args[1] as bool?;
+ final bool? arg_shouldOverrideUrlLoading = (args[1] as bool?);
assert(arg_shouldOverrideUrlLoading != null,
'Argument for dev.flutter.pigeon.WebViewClientHostApi.create was null, expected non-null bool.');
api.create(arg_instanceId!, arg_shouldOverrideUrlLoading!);
@@ -876,24 +895,6 @@
});
}
}
- {
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebViewClientHostApi.dispose', codec);
- if (api == null) {
- channel.setMockMessageHandler(null);
- } else {
- channel.setMockMessageHandler((Object? message) async {
- assert(message != null,
- 'Argument for dev.flutter.pigeon.WebViewClientHostApi.dispose was null.');
- final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
- assert(arg_instanceId != null,
- 'Argument for dev.flutter.pigeon.WebViewClientHostApi.dispose was null, expected non-null int.');
- api.dispose(arg_instanceId!);
- return <Object?, Object?>{};
- });
- }
- }
}
}
@@ -906,11 +907,12 @@
_TestDownloadListenerHostApiCodec();
void create(int instanceId);
- void dispose(int instanceId);
- static void setup(TestDownloadListenerHostApi? api) {
+ static void setup(TestDownloadListenerHostApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.DownloadListenerHostApi.create', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.DownloadListenerHostApi.create', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -918,7 +920,7 @@
assert(message != null,
'Argument for dev.flutter.pigeon.DownloadListenerHostApi.create was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.DownloadListenerHostApi.create was null, expected non-null int.');
api.create(arg_instanceId!);
@@ -926,24 +928,6 @@
});
}
}
- {
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.DownloadListenerHostApi.dispose', codec);
- if (api == null) {
- channel.setMockMessageHandler(null);
- } else {
- channel.setMockMessageHandler((Object? message) async {
- assert(message != null,
- 'Argument for dev.flutter.pigeon.DownloadListenerHostApi.dispose was null.');
- final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
- assert(arg_instanceId != null,
- 'Argument for dev.flutter.pigeon.DownloadListenerHostApi.dispose was null, expected non-null int.');
- api.dispose(arg_instanceId!);
- return <Object?, Object?>{};
- });
- }
- }
}
}
@@ -955,11 +939,12 @@
static const MessageCodec<Object?> codec = _TestWebChromeClientHostApiCodec();
void create(int instanceId, int webViewClientInstanceId);
- void dispose(int instanceId);
- static void setup(TestWebChromeClientHostApi? api) {
+ static void setup(TestWebChromeClientHostApi? api,
+ {BinaryMessenger? binaryMessenger}) {
{
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebChromeClientHostApi.create', codec);
+ final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
+ 'dev.flutter.pigeon.WebChromeClientHostApi.create', codec,
+ binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
@@ -967,10 +952,10 @@
assert(message != null,
'Argument for dev.flutter.pigeon.WebChromeClientHostApi.create was null.');
final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
+ final int? arg_instanceId = (args[0] as int?);
assert(arg_instanceId != null,
'Argument for dev.flutter.pigeon.WebChromeClientHostApi.create was null, expected non-null int.');
- final int? arg_webViewClientInstanceId = args[1] as int?;
+ final int? arg_webViewClientInstanceId = (args[1] as int?);
assert(arg_webViewClientInstanceId != null,
'Argument for dev.flutter.pigeon.WebChromeClientHostApi.create was null, expected non-null int.');
api.create(arg_instanceId!, arg_webViewClientInstanceId!);
@@ -978,23 +963,5 @@
});
}
}
- {
- const BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.WebChromeClientHostApi.dispose', codec);
- if (api == null) {
- channel.setMockMessageHandler(null);
- } else {
- channel.setMockMessageHandler((Object? message) async {
- assert(message != null,
- 'Argument for dev.flutter.pigeon.WebChromeClientHostApi.dispose was null.');
- final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_instanceId = args[0] as int?;
- assert(arg_instanceId != null,
- 'Argument for dev.flutter.pigeon.WebChromeClientHostApi.dispose was null, expected non-null int.');
- api.dispose(arg_instanceId!);
- return <Object?, Object?>{};
- });
- }
- }
}
}
diff --git a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
index 462670a..24cd35c 100644
--- a/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.dart
@@ -3,371 +3,592 @@
// found in the LICENSE file.
import 'package:flutter_test/flutter_test.dart';
+import 'package:mockito/annotations.dart';
+import 'package:mockito/mockito.dart';
import 'package:webview_flutter_android/src/android_webview.dart';
+import 'package:webview_flutter_android/src/android_webview.pigeon.dart';
import 'package:webview_flutter_android/src/android_webview_api_impls.dart';
import 'package:webview_flutter_android/src/instance_manager.dart';
import 'android_webview.pigeon.dart';
+import 'android_webview_test.mocks.dart';
+@GenerateMocks([
+ DownloadListener,
+ JavaScriptChannel,
+ TestDownloadListenerHostApi,
+ TestJavaScriptChannelHostApi,
+ TestWebChromeClientHostApi,
+ TestWebSettingsHostApi,
+ TestWebViewClientHostApi,
+ TestWebViewHostApi,
+ WebChromeClient,
+ WebView,
+ WebViewClient,
+])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
group('Android WebView', () {
group('$WebView', () {
- setUpAll(() {
- TestWebViewHostApi.setup(TestWebViewHostApiImpl());
- });
+ late MockTestWebViewHostApi mockPlatformHostApi;
+
+ late InstanceManager instanceManager;
+
+ late WebView webView;
+ late int webViewInstanceId;
setUp(() {
- WebView.api = WebViewHostApiImpl(instanceManager: InstanceManager());
+ mockPlatformHostApi = MockTestWebViewHostApi();
+ TestWebViewHostApi.setup(mockPlatformHostApi);
+
+ instanceManager = InstanceManager();
+ WebView.api = WebViewHostApiImpl(instanceManager: instanceManager);
+
+ webView = WebView();
+ webViewInstanceId = instanceManager.getInstanceId(webView)!;
});
test('create', () {
- final WebView webView = WebView();
- expect(WebView.api.instanceManager.getInstanceId(webView), isNotNull);
+ verify(mockPlatformHostApi.create(webViewInstanceId, false));
+ });
+
+ test('setWebContentsDebuggingEnabled', () {
+ WebView.setWebContentsDebuggingEnabled(true);
+ verify(mockPlatformHostApi.setWebContentsDebuggingEnabled(true));
+ });
+
+ test('loadUrl', () {
+ webView.loadUrl('hello', <String, String>{'a': 'header'});
+ verify(mockPlatformHostApi.loadUrl(
+ webViewInstanceId,
+ 'hello',
+ <String, String>{'a': 'header'},
+ ));
+ });
+
+ test('canGoBack', () {
+ when(mockPlatformHostApi.canGoBack(webViewInstanceId))
+ .thenReturn(false);
+ expect(webView.canGoBack(), completion(false));
+ });
+
+ test('canGoForward', () {
+ when(mockPlatformHostApi.canGoForward(webViewInstanceId))
+ .thenReturn(true);
+ expect(webView.canGoForward(), completion(true));
+ });
+
+ test('goBack', () {
+ webView.goBack();
+ verify(mockPlatformHostApi.goBack(webViewInstanceId));
+ });
+
+ test('goForward', () {
+ webView.goForward();
+ verify(mockPlatformHostApi.goForward(webViewInstanceId));
+ });
+
+ test('reload', () {
+ webView.reload();
+ verify(mockPlatformHostApi.reload(webViewInstanceId));
+ });
+
+ test('clearCache', () {
+ webView.clearCache(false);
+ verify(mockPlatformHostApi.clearCache(webViewInstanceId, false));
+ });
+
+ test('evaluateJavascript', () {
+ when(
+ mockPlatformHostApi.evaluateJavascript(
+ webViewInstanceId, 'runJavaScript'),
+ ).thenAnswer((_) => Future<String>.value('returnValue'));
+ expect(
+ webView.evaluateJavascript('runJavaScript'),
+ completion('returnValue'),
+ );
+ });
+
+ test('getTitle', () {
+ when(mockPlatformHostApi.getTitle(webViewInstanceId))
+ .thenReturn('aTitle');
+ expect(webView.getTitle(), completion('aTitle'));
+ });
+
+ test('scrollTo', () {
+ webView.scrollTo(12, 13);
+ verify(mockPlatformHostApi.scrollTo(webViewInstanceId, 12, 13));
+ });
+
+ test('scrollBy', () {
+ webView.scrollBy(12, 14);
+ verify(mockPlatformHostApi.scrollBy(webViewInstanceId, 12, 14));
+ });
+
+ test('getScrollX', () {
+ when(mockPlatformHostApi.getScrollX(webViewInstanceId)).thenReturn(67);
+ expect(webView.getScrollX(), completion(67));
+ });
+
+ test('getScrollY', () {
+ when(mockPlatformHostApi.getScrollY(webViewInstanceId)).thenReturn(56);
+ expect(webView.getScrollY(), completion(56));
+ });
+
+ test('setWebViewClient', () {
+ TestWebViewClientHostApi.setup(MockTestWebViewClientHostApi());
+ WebViewClient.api = WebViewClientHostApiImpl(
+ instanceManager: instanceManager,
+ );
+
+ final WebViewClient mockWebViewClient = MockWebViewClient();
+ when(mockWebViewClient.shouldOverrideUrlLoading).thenReturn(false);
+ webView.setWebViewClient(mockWebViewClient);
+
+ final int webViewClientInstanceId =
+ instanceManager.getInstanceId(mockWebViewClient)!;
+ verify(mockPlatformHostApi.setWebViewClient(
+ webViewInstanceId,
+ webViewClientInstanceId,
+ ));
+ });
+
+ test('addJavaScriptChannel', () {
+ TestJavaScriptChannelHostApi.setup(MockTestJavaScriptChannelHostApi());
+ JavaScriptChannel.api = JavaScriptChannelHostApiImpl(
+ instanceManager: instanceManager,
+ );
+
+ final JavaScriptChannel mockJavaScriptChannel = MockJavaScriptChannel();
+ when(mockJavaScriptChannel.channelName).thenReturn('aChannel');
+
+ webView.addJavaScriptChannel(mockJavaScriptChannel);
+
+ final int javaScriptChannelInstanceId =
+ instanceManager.getInstanceId(mockJavaScriptChannel)!;
+ verify(mockPlatformHostApi.addJavaScriptChannel(
+ webViewInstanceId,
+ javaScriptChannelInstanceId,
+ ));
+ });
+
+ test('removeJavaScriptChannel', () {
+ TestJavaScriptChannelHostApi.setup(MockTestJavaScriptChannelHostApi());
+ JavaScriptChannel.api = JavaScriptChannelHostApiImpl(
+ instanceManager: instanceManager,
+ );
+
+ final JavaScriptChannel mockJavaScriptChannel = MockJavaScriptChannel();
+ when(mockJavaScriptChannel.channelName).thenReturn('aChannel');
+
+ expect(
+ webView.removeJavaScriptChannel(mockJavaScriptChannel),
+ completes,
+ );
+
+ webView.addJavaScriptChannel(mockJavaScriptChannel);
+ webView.removeJavaScriptChannel(mockJavaScriptChannel);
+
+ final int javaScriptChannelInstanceId =
+ instanceManager.getInstanceId(mockJavaScriptChannel)!;
+ verify(mockPlatformHostApi.removeJavaScriptChannel(
+ webViewInstanceId,
+ javaScriptChannelInstanceId,
+ ));
+ });
+
+ test('setDownloadListener', () {
+ TestDownloadListenerHostApi.setup(MockTestDownloadListenerHostApi());
+ DownloadListener.api = DownloadListenerHostApiImpl(
+ instanceManager: instanceManager,
+ );
+
+ final DownloadListener mockDownloadListener = MockDownloadListener();
+ webView.setDownloadListener(mockDownloadListener);
+
+ final int downloadListenerInstanceId =
+ instanceManager.getInstanceId(mockDownloadListener)!;
+ verify(mockPlatformHostApi.setDownloadListener(
+ webViewInstanceId,
+ downloadListenerInstanceId,
+ ));
+ });
+
+ test('setWebChromeClient', () {
+ // Setting a WebChromeClient requires setting a WebViewClient first.
+ TestWebViewClientHostApi.setup(MockTestWebViewClientHostApi());
+ WebViewClient.api = WebViewClientHostApiImpl(
+ instanceManager: instanceManager,
+ );
+ final WebViewClient mockWebViewClient = MockWebViewClient();
+ when(mockWebViewClient.shouldOverrideUrlLoading).thenReturn(false);
+ webView.setWebViewClient(mockWebViewClient);
+
+ TestWebChromeClientHostApi.setup(MockTestWebChromeClientHostApi());
+ WebChromeClient.api = WebChromeClientHostApiImpl(
+ instanceManager: instanceManager,
+ );
+
+ final WebChromeClient mockWebChromeClient = MockWebChromeClient();
+ webView.setWebChromeClient(mockWebChromeClient);
+
+ final int webChromeClientInstanceId =
+ instanceManager.getInstanceId(mockWebChromeClient)!;
+ verify(mockPlatformHostApi.setWebChromeClient(
+ webViewInstanceId,
+ webChromeClientInstanceId,
+ ));
+ });
+
+ test('release', () {
+ final MockTestWebSettingsHostApi mockWebSettingsPlatformHostApi =
+ MockTestWebSettingsHostApi();
+ TestWebSettingsHostApi.setup(mockWebSettingsPlatformHostApi);
+
+ WebSettings.api =
+ WebSettingsHostApiImpl(instanceManager: instanceManager);
+ final int webSettingsInstanceId =
+ instanceManager.getInstanceId(webView.settings)!;
+
+ webView.release();
+ verify(mockWebSettingsPlatformHostApi.dispose(webSettingsInstanceId));
+ verify(mockPlatformHostApi.dispose(webViewInstanceId));
});
});
group('$WebSettings', () {
- setUpAll(() {
- TestWebViewHostApi.setup(TestWebViewHostApiImpl());
- TestWebSettingsHostApi.setup(TestWebSettingsHostApiImpl());
- });
+ late MockTestWebSettingsHostApi mockPlatformHostApi;
+
+ late InstanceManager instanceManager;
+
+ late WebSettings webSettings;
+ late int webSettingsInstanceId;
setUp(() {
- final InstanceManager instanceManager = InstanceManager();
+ instanceManager = InstanceManager();
+
+ TestWebViewHostApi.setup(MockTestWebViewHostApi());
WebView.api = WebViewHostApiImpl(instanceManager: instanceManager);
+
+ mockPlatformHostApi = MockTestWebSettingsHostApi();
+ TestWebSettingsHostApi.setup(mockPlatformHostApi);
+
WebSettings.api = WebSettingsHostApiImpl(
instanceManager: instanceManager,
);
+
+ webSettings = WebSettings(WebView());
+ webSettingsInstanceId = instanceManager.getInstanceId(webSettings)!;
});
test('create', () {
- final WebView webView = WebView();
- final WebSettings webSettings = WebSettings(webView);
- expect(
- WebSettings.api.instanceManager.getInstanceId(webSettings),
- isNotNull,
- );
+ verify(mockPlatformHostApi.create(webSettingsInstanceId, any));
+ });
+
+ test('setDomStorageEnabled', () {
+ webSettings.setDomStorageEnabled(false);
+ verify(mockPlatformHostApi.setDomStorageEnabled(
+ webSettingsInstanceId,
+ false,
+ ));
+ });
+
+ test('setJavaScriptCanOpenWindowsAutomatically', () {
+ webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
+ verify(mockPlatformHostApi.setJavaScriptCanOpenWindowsAutomatically(
+ webSettingsInstanceId,
+ true,
+ ));
+ });
+
+ test('setSupportMultipleWindows', () {
+ webSettings.setSupportMultipleWindows(false);
+ verify(mockPlatformHostApi.setSupportMultipleWindows(
+ webSettingsInstanceId,
+ false,
+ ));
+ });
+
+ test('setJavaScriptEnabled', () {
+ webSettings.setJavaScriptEnabled(true);
+ verify(mockPlatformHostApi.setJavaScriptEnabled(
+ webSettingsInstanceId,
+ true,
+ ));
+ });
+
+ test('setUserAgentString', () {
+ webSettings.setUserAgentString('hola');
+ verify(mockPlatformHostApi.setUserAgentString(
+ webSettingsInstanceId,
+ 'hola',
+ ));
+ });
+
+ test('setMediaPlaybackRequiresUserGesture', () {
+ webSettings.setMediaPlaybackRequiresUserGesture(false);
+ verify(mockPlatformHostApi.setMediaPlaybackRequiresUserGesture(
+ webSettingsInstanceId,
+ false,
+ ));
+ });
+
+ test('setSupportZoom', () {
+ webSettings.setSupportZoom(true);
+ verify(mockPlatformHostApi.setSupportZoom(
+ webSettingsInstanceId,
+ true,
+ ));
+ });
+
+ test('setLoadWithOverviewMode', () {
+ webSettings.setLoadWithOverviewMode(false);
+ verify(mockPlatformHostApi.setLoadWithOverviewMode(
+ webSettingsInstanceId,
+ false,
+ ));
+ });
+
+ test('setUseWideViewPort', () {
+ webSettings.setUseWideViewPort(true);
+ verify(mockPlatformHostApi.setUseWideViewPort(
+ webSettingsInstanceId,
+ true,
+ ));
+ });
+
+ test('setDisplayZoomControls', () {
+ webSettings.setDisplayZoomControls(false);
+ verify(mockPlatformHostApi.setDisplayZoomControls(
+ webSettingsInstanceId,
+ false,
+ ));
+ });
+
+ test('setBuiltInZoomControls', () {
+ webSettings.setBuiltInZoomControls(true);
+ verify(mockPlatformHostApi.setBuiltInZoomControls(
+ webSettingsInstanceId,
+ true,
+ ));
});
});
group('$JavaScriptChannel', () {
- setUpAll(() {
- TestWebViewHostApi.setup(TestWebViewHostApiImpl());
- TestJavaScriptChannelHostApi.setup(TestJavaScriptChannelHostApiImpl());
- });
+ late JavaScriptChannelFlutterApiImpl flutterApi;
+
+ late InstanceManager instanceManager;
+
+ late MockJavaScriptChannel mockJavaScriptChannel;
+ late int mockJavaScriptChannelInstanceId;
setUp(() {
- final InstanceManager instanceManager = InstanceManager();
- WebView.api = WebViewHostApiImpl(instanceManager: instanceManager);
- JavaScriptChannel.api = JavaScriptChannelHostApiImpl(
+ instanceManager = InstanceManager();
+ flutterApi = JavaScriptChannelFlutterApiImpl(
instanceManager: instanceManager,
);
+
+ mockJavaScriptChannel = MockJavaScriptChannel();
+ mockJavaScriptChannelInstanceId =
+ instanceManager.tryAddInstance(mockJavaScriptChannel)!;
});
- test('create', () {
- final WebView webView = WebView();
- final JavaScriptChannel channel = TestJavaScriptChannel('myChannel');
-
- webView.addJavaScriptChannel(channel);
- expect(
- JavaScriptChannel.api.instanceManager.getInstanceId(channel),
- isNotNull,
+ test('postMessage', () {
+ flutterApi.postMessage(
+ mockJavaScriptChannelInstanceId,
+ 'Hello, World!',
);
-
- webView.removeJavaScriptChannel(channel);
- expect(
- JavaScriptChannel.api.instanceManager.getInstanceId(channel),
- isNull,
- );
+ verify(mockJavaScriptChannel.postMessage('Hello, World!'));
});
});
group('$WebViewClient', () {
- setUpAll(() {
- TestWebViewHostApi.setup(TestWebViewHostApiImpl());
- TestWebViewClientHostApi.setup(TestWebViewClientHostApiImpl());
- });
+ late WebViewClientFlutterApiImpl flutterApi;
+
+ late InstanceManager instanceManager;
+
+ late MockWebViewClient mockWebViewClient;
+ late int mockWebViewClientInstanceId;
+
+ late MockWebView mockWebView;
+ late int mockWebViewInstanceId;
setUp(() {
- final InstanceManager instanceManager = InstanceManager();
- WebView.api = WebViewHostApiImpl(instanceManager: instanceManager);
- WebViewClient.api = WebViewClientHostApiImpl(
+ instanceManager = InstanceManager();
+ flutterApi = WebViewClientFlutterApiImpl(
instanceManager: instanceManager,
);
+
+ mockWebViewClient = MockWebViewClient();
+ mockWebViewClientInstanceId =
+ instanceManager.tryAddInstance(mockWebViewClient)!;
+
+ mockWebView = MockWebView();
+ mockWebViewInstanceId = instanceManager.tryAddInstance(mockWebView)!;
});
- test('create', () {
- final WebView webView = WebView();
- final WebViewClient webViewClient1 = TestWebViewClient();
- final WebViewClient webViewClient2 = TestWebViewClient();
+ test('onPageStarted', () {
+ flutterApi.onPageStarted(
+ mockWebViewClientInstanceId,
+ mockWebViewInstanceId,
+ 'https://www.google.com',
+ );
+ verify(mockWebViewClient.onPageStarted(
+ mockWebView,
+ 'https://www.google.com',
+ ));
+ });
- webView.setWebViewClient(webViewClient1);
- expect(
- WebViewClient.api.instanceManager.getInstanceId(webViewClient1),
- isNotNull,
+ test('onPageFinished', () {
+ flutterApi.onPageFinished(
+ mockWebViewClientInstanceId,
+ mockWebViewInstanceId,
+ 'https://www.google.com',
+ );
+ verify(mockWebViewClient.onPageFinished(
+ mockWebView,
+ 'https://www.google.com',
+ ));
+ });
+
+ test('onReceivedRequestError', () {
+ flutterApi.onReceivedRequestError(
+ mockWebViewClientInstanceId,
+ mockWebViewInstanceId,
+ WebResourceRequestData()
+ ..url = 'https://www.google.com'
+ ..isForMainFrame = true
+ ..hasGesture = true
+ ..method = 'POST',
+ WebResourceErrorData()
+ ..errorCode = 34
+ ..description = 'error description',
);
- webView.setWebViewClient(webViewClient2);
- expect(
- WebViewClient.api.instanceManager.getInstanceId(webViewClient1),
- isNull,
+ verify(mockWebViewClient.onReceivedRequestError(
+ mockWebView,
+ argThat(isNotNull),
+ argThat(isNotNull),
+ ));
+ });
+
+ test('onReceivedError', () {
+ flutterApi.onReceivedError(
+ mockWebViewClientInstanceId,
+ mockWebViewInstanceId,
+ 14,
+ 'desc',
+ 'https://www.google.com',
);
+
+ verify(mockWebViewClient.onReceivedError(
+ mockWebView,
+ 14,
+ 'desc',
+ 'https://www.google.com',
+ ));
+ });
+
+ test('requestLoading', () {
+ flutterApi.requestLoading(
+ mockWebViewClientInstanceId,
+ mockWebViewInstanceId,
+ WebResourceRequestData()
+ ..url = 'https://www.google.com'
+ ..isForMainFrame = true
+ ..hasGesture = true
+ ..method = 'POST',
+ );
+
+ verify(mockWebViewClient.requestLoading(
+ mockWebView,
+ argThat(isNotNull),
+ ));
+ });
+
+ test('urlLoading', () {
+ flutterApi.urlLoading(mockWebViewClientInstanceId,
+ mockWebViewInstanceId, 'https://www.google.com');
+
+ verify(mockWebViewClient.urlLoading(
+ mockWebView,
+ 'https://www.google.com',
+ ));
});
});
group('$DownloadListener', () {
- setUpAll(() {
- TestWebViewHostApi.setup(TestWebViewHostApiImpl());
- TestDownloadListenerHostApi.setup(TestDownloadListenerHostApiImpl());
- });
+ late DownloadListenerFlutterApiImpl flutterApi;
+
+ late InstanceManager instanceManager;
+
+ late MockDownloadListener mockDownloadListener;
+ late int mockDownloadListenerInstanceId;
setUp(() {
- final InstanceManager instanceManager = InstanceManager();
- WebView.api = WebViewHostApiImpl(instanceManager: instanceManager);
- DownloadListener.api = DownloadListenerHostApiImpl(
+ instanceManager = InstanceManager();
+ flutterApi = DownloadListenerFlutterApiImpl(
instanceManager: instanceManager,
);
+
+ mockDownloadListener = MockDownloadListener();
+ mockDownloadListenerInstanceId =
+ instanceManager.tryAddInstance(mockDownloadListener)!;
});
- test('create', () {
- final WebView webView = WebView();
- final DownloadListener downloadListener1 = TestDownloadListener();
- final DownloadListener downloadListener2 = TestDownloadListener();
-
- webView.setDownloadListener(downloadListener1);
- expect(
- DownloadListener.api.instanceManager.getInstanceId(downloadListener1),
- isNotNull,
+ test('onPageStarted', () {
+ flutterApi.onDownloadStart(
+ mockDownloadListenerInstanceId,
+ 'url',
+ 'userAgent',
+ 'contentDescription',
+ 'mimetype',
+ 45,
);
-
- webView.setDownloadListener(downloadListener2);
- expect(
- DownloadListener.api.instanceManager.getInstanceId(downloadListener1),
- isNull,
- );
+ verify(mockDownloadListener.onDownloadStart(
+ 'url',
+ 'userAgent',
+ 'contentDescription',
+ 'mimetype',
+ 45,
+ ));
});
});
group('$WebChromeClient', () {
- setUpAll(() {
- TestWebViewHostApi.setup(TestWebViewHostApiImpl());
- TestWebViewClientHostApi.setup(TestWebViewClientHostApiImpl());
- TestWebChromeClientHostApi.setup(TestWebChromeClientHostApiImpl());
- });
+ late WebChromeClientFlutterApiImpl flutterApi;
+
+ late InstanceManager instanceManager;
+
+ late MockWebChromeClient mockWebChromeClient;
+ late int mockWebChromeClientInstanceId;
+
+ late MockWebView mockWebView;
+ late int mockWebViewInstanceId;
setUp(() {
- final InstanceManager instanceManager = InstanceManager();
- WebView.api = WebViewHostApiImpl(instanceManager: instanceManager);
- WebViewClient.api = WebViewClientHostApiImpl(
+ instanceManager = InstanceManager();
+ flutterApi = WebChromeClientFlutterApiImpl(
instanceManager: instanceManager,
);
- WebChromeClient.api = WebChromeClientHostApiImpl(
- instanceManager: instanceManager,
- );
+
+ mockWebChromeClient = MockWebChromeClient();
+ mockWebChromeClientInstanceId =
+ instanceManager.tryAddInstance(mockWebChromeClient)!;
+
+ mockWebView = MockWebView();
+ mockWebViewInstanceId = instanceManager.tryAddInstance(mockWebView)!;
});
- test('create', () {
- final WebView webView = WebView();
- webView.setWebViewClient(TestWebViewClient());
-
- final WebChromeClient webChromeClient1 = TestWebChromeClient();
- final WebChromeClient webChromeClient2 = TestWebChromeClient();
-
- webView.setWebChromeClient(webChromeClient1);
- expect(
- WebChromeClient.api.instanceManager.getInstanceId(webChromeClient1),
- isNotNull,
+ test('onPageStarted', () {
+ flutterApi.onProgressChanged(
+ mockWebChromeClientInstanceId,
+ mockWebViewInstanceId,
+ 76,
);
-
- webView.setWebChromeClient(webChromeClient2);
- expect(
- WebChromeClient.api.instanceManager.getInstanceId(webChromeClient1),
- isNull,
- );
+ verify(mockWebChromeClient.onProgressChanged(mockWebView, 76));
});
});
});
}
-
-class TestJavaScriptChannel extends JavaScriptChannel {
- TestJavaScriptChannel(String channelName) : super(channelName);
-
- @override
- void postMessage(String message) {}
-}
-
-class TestWebViewClient extends WebViewClient {}
-
-class TestDownloadListener extends DownloadListener {
- @override
- void onDownloadStart(
- String url,
- String userAgent,
- String contentDisposition,
- String mimetype,
- int contentLength,
- ) {}
-}
-
-class TestWebChromeClient extends WebChromeClient {
- @override
- void onProgressChanged(WebView webView, int progress) {}
-}
-
-class TestWebViewHostApiImpl extends TestWebViewHostApi {
- @override
- void addJavaScriptChannel(int instanceId, int javaScriptChannelInstanceId) {}
-
- @override
- bool canGoBack(int instanceId) {
- throw UnimplementedError();
- }
-
- @override
- bool canGoForward(int instanceId) {
- throw UnimplementedError();
- }
-
- @override
- void clearCache(int instanceId, bool includeDiskFiles) {}
-
- @override
- void create(int instanceId, bool useHybridComposition) {}
-
- @override
- void dispose(int instanceId) {}
-
- @override
- Future<String> evaluateJavascript(int instanceId, String javascriptString) {
- throw UnimplementedError();
- }
-
- @override
- int getScrollX(int instanceId) {
- throw UnimplementedError();
- }
-
- @override
- int getScrollY(int instanceId) {
- throw UnimplementedError();
- }
-
- @override
- String getTitle(int instanceId) {
- throw UnimplementedError();
- }
-
- @override
- String getUrl(int instanceId) {
- throw UnimplementedError();
- }
-
- @override
- void goBack(int instanceId) {}
-
- @override
- void goForward(int instanceId) {}
-
- @override
- void loadUrl(int instanceId, String url, Map headers) {}
-
- @override
- void reload(int instanceId) {}
-
- @override
- void removeJavaScriptChannel(
- int instanceId, int javaScriptChannelInstanceId) {}
-
- @override
- void scrollBy(int instanceId, int x, int y) {}
-
- @override
- void scrollTo(int instanceId, int x, int y) {}
-
- @override
- void setDownloadListener(int instanceId, int listenerInstanceId) {}
-
- @override
- void setWebContentsDebuggingEnabled(bool enabled) {}
-
- @override
- void setWebViewClient(int instanceId, int webViewClientInstanceId) {}
-
- @override
- void setWebChromeClient(int instanceId, int clientInstanceId) {}
-}
-
-class TestWebSettingsHostApiImpl extends TestWebSettingsHostApi {
- @override
- void create(int instanceId, int webViewInstanceId) {}
-
- @override
- void dispose(int instanceId) {}
-
- @override
- void setBuiltInZoomControls(int instanceId, bool enabled) {}
-
- @override
- void setDisplayZoomControls(int instanceId, bool enabled) {}
-
- @override
- void setDomStorageEnabled(int instanceId, bool flag) {}
-
- @override
- void setJavaScriptCanOpenWindowsAutomatically(int instanceId, bool flag) {}
-
- @override
- void setJavaScriptEnabled(int instanceId, bool flag) {}
-
- @override
- void setLoadWithOverviewMode(int instanceId, bool overview) {}
-
- @override
- void setMediaPlaybackRequiresUserGesture(int instanceId, bool require) {}
-
- @override
- void setSupportMultipleWindows(int instanceId, bool support) {}
-
- @override
- void setSupportZoom(int instanceId, bool support) {}
-
- @override
- void setUseWideViewPort(int instanceId, bool use) {}
-
- @override
- void setUserAgentString(int instanceId, String userAgentString) {}
-}
-
-class TestJavaScriptChannelHostApiImpl extends TestJavaScriptChannelHostApi {
- @override
- void create(int instanceId, String channelName) {}
-
- @override
- void dispose(int instanceId) {}
-}
-
-class TestWebViewClientHostApiImpl extends TestWebViewClientHostApi {
- @override
- void create(int instanceId, bool shouldOverrideUrlLoading) {}
-
- @override
- void dispose(int instanceId) {}
-}
-
-class TestDownloadListenerHostApiImpl extends TestDownloadListenerHostApi {
- @override
- void create(int instanceId) {}
-
- @override
- void dispose(int instanceId) {}
-}
-
-class TestWebChromeClientHostApiImpl extends TestWebChromeClientHostApi {
- @override
- void create(int instanceId, int webViewClientInstanceId) {}
-
- @override
- void dispose(int instanceId) {}
-}
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
new file mode 100644
index 0000000..4378ed7
--- /dev/null
+++ b/packages/webview_flutter/webview_flutter_android/test/android_webview_test.mocks.dart
@@ -0,0 +1,505 @@
+// 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.
+
+// Mocks generated by Mockito 5.0.16 from annotations
+// in webview_flutter_android/test/android_webview_test.dart.
+// Do not manually edit this file.
+
+import 'dart:async' as _i4;
+
+import 'package:mockito/mockito.dart' as _i1;
+import 'package:webview_flutter_android/src/android_webview.dart' as _i2;
+
+import 'android_webview.pigeon.dart' as _i3;
+
+// ignore_for_file: avoid_redundant_argument_values
+// ignore_for_file: avoid_setters_without_getters
+// ignore_for_file: comment_references
+// ignore_for_file: implementation_imports
+// ignore_for_file: invalid_use_of_visible_for_testing_member
+// ignore_for_file: prefer_const_constructors
+// ignore_for_file: unnecessary_parenthesis
+// ignore_for_file: camel_case_types
+
+class _FakeWebSettings_0 extends _i1.Fake implements _i2.WebSettings {}
+
+/// A class which mocks [DownloadListener].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockDownloadListener extends _i1.Mock implements _i2.DownloadListener {
+ MockDownloadListener() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void onDownloadStart(String? url, String? userAgent,
+ String? contentDisposition, String? mimetype, int? contentLength) =>
+ super.noSuchMethod(
+ Invocation.method(#onDownloadStart,
+ [url, userAgent, contentDisposition, mimetype, contentLength]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [JavaScriptChannel].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockJavaScriptChannel extends _i1.Mock implements _i2.JavaScriptChannel {
+ MockJavaScriptChannel() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ String get channelName =>
+ (super.noSuchMethod(Invocation.getter(#channelName), returnValue: '')
+ as String);
+ @override
+ void postMessage(String? message) =>
+ super.noSuchMethod(Invocation.method(#postMessage, [message]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [TestDownloadListenerHostApi].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockTestDownloadListenerHostApi extends _i1.Mock
+ implements _i3.TestDownloadListenerHostApi {
+ MockTestDownloadListenerHostApi() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void create(int? instanceId) =>
+ super.noSuchMethod(Invocation.method(#create, [instanceId]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [TestJavaScriptChannelHostApi].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockTestJavaScriptChannelHostApi extends _i1.Mock
+ implements _i3.TestJavaScriptChannelHostApi {
+ MockTestJavaScriptChannelHostApi() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void create(int? instanceId, String? channelName) =>
+ super.noSuchMethod(Invocation.method(#create, [instanceId, channelName]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [TestWebChromeClientHostApi].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockTestWebChromeClientHostApi extends _i1.Mock
+ implements _i3.TestWebChromeClientHostApi {
+ MockTestWebChromeClientHostApi() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void create(int? instanceId, int? webViewClientInstanceId) =>
+ super.noSuchMethod(
+ Invocation.method(#create, [instanceId, webViewClientInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [TestWebSettingsHostApi].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockTestWebSettingsHostApi extends _i1.Mock
+ implements _i3.TestWebSettingsHostApi {
+ MockTestWebSettingsHostApi() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void create(int? instanceId, int? webViewInstanceId) => super.noSuchMethod(
+ Invocation.method(#create, [instanceId, webViewInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void dispose(int? instanceId) =>
+ super.noSuchMethod(Invocation.method(#dispose, [instanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void setDomStorageEnabled(int? instanceId, bool? flag) => super.noSuchMethod(
+ Invocation.method(#setDomStorageEnabled, [instanceId, flag]),
+ returnValueForMissingStub: null);
+ @override
+ void setJavaScriptCanOpenWindowsAutomatically(int? instanceId, bool? flag) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #setJavaScriptCanOpenWindowsAutomatically, [instanceId, flag]),
+ returnValueForMissingStub: null);
+ @override
+ void setSupportMultipleWindows(int? instanceId, bool? support) =>
+ super.noSuchMethod(
+ Invocation.method(#setSupportMultipleWindows, [instanceId, support]),
+ returnValueForMissingStub: null);
+ @override
+ void setJavaScriptEnabled(int? instanceId, bool? flag) => super.noSuchMethod(
+ Invocation.method(#setJavaScriptEnabled, [instanceId, flag]),
+ returnValueForMissingStub: null);
+ @override
+ void setUserAgentString(int? instanceId, String? userAgentString) =>
+ super.noSuchMethod(
+ Invocation.method(#setUserAgentString, [instanceId, userAgentString]),
+ returnValueForMissingStub: null);
+ @override
+ void setMediaPlaybackRequiresUserGesture(int? instanceId, bool? require) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #setMediaPlaybackRequiresUserGesture, [instanceId, require]),
+ returnValueForMissingStub: null);
+ @override
+ void setSupportZoom(int? instanceId, bool? support) => super.noSuchMethod(
+ Invocation.method(#setSupportZoom, [instanceId, support]),
+ returnValueForMissingStub: null);
+ @override
+ void setLoadWithOverviewMode(int? instanceId, bool? overview) =>
+ super.noSuchMethod(
+ Invocation.method(#setLoadWithOverviewMode, [instanceId, overview]),
+ returnValueForMissingStub: null);
+ @override
+ void setUseWideViewPort(int? instanceId, bool? use) => super.noSuchMethod(
+ Invocation.method(#setUseWideViewPort, [instanceId, use]),
+ returnValueForMissingStub: null);
+ @override
+ void setDisplayZoomControls(int? instanceId, bool? enabled) =>
+ super.noSuchMethod(
+ Invocation.method(#setDisplayZoomControls, [instanceId, enabled]),
+ returnValueForMissingStub: null);
+ @override
+ void setBuiltInZoomControls(int? instanceId, bool? enabled) =>
+ super.noSuchMethod(
+ Invocation.method(#setBuiltInZoomControls, [instanceId, enabled]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [TestWebViewClientHostApi].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockTestWebViewClientHostApi extends _i1.Mock
+ implements _i3.TestWebViewClientHostApi {
+ MockTestWebViewClientHostApi() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void create(int? instanceId, bool? shouldOverrideUrlLoading) =>
+ super.noSuchMethod(
+ Invocation.method(#create, [instanceId, shouldOverrideUrlLoading]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [TestWebViewHostApi].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockTestWebViewHostApi extends _i1.Mock
+ implements _i3.TestWebViewHostApi {
+ MockTestWebViewHostApi() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void create(int? instanceId, bool? useHybridComposition) =>
+ super.noSuchMethod(
+ Invocation.method(#create, [instanceId, useHybridComposition]),
+ returnValueForMissingStub: null);
+ @override
+ void dispose(int? instanceId) =>
+ super.noSuchMethod(Invocation.method(#dispose, [instanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void loadUrl(int? instanceId, String? url, Map<String?, String?>? headers) =>
+ super.noSuchMethod(
+ Invocation.method(#loadUrl, [instanceId, url, headers]),
+ returnValueForMissingStub: null);
+ @override
+ String getUrl(int? instanceId) =>
+ (super.noSuchMethod(Invocation.method(#getUrl, [instanceId]),
+ returnValue: '') as String);
+ @override
+ bool canGoBack(int? instanceId) =>
+ (super.noSuchMethod(Invocation.method(#canGoBack, [instanceId]),
+ returnValue: false) as bool);
+ @override
+ bool canGoForward(int? instanceId) =>
+ (super.noSuchMethod(Invocation.method(#canGoForward, [instanceId]),
+ returnValue: false) as bool);
+ @override
+ void goBack(int? instanceId) =>
+ super.noSuchMethod(Invocation.method(#goBack, [instanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void goForward(int? instanceId) =>
+ super.noSuchMethod(Invocation.method(#goForward, [instanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void reload(int? instanceId) =>
+ super.noSuchMethod(Invocation.method(#reload, [instanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void clearCache(int? instanceId, bool? includeDiskFiles) =>
+ super.noSuchMethod(
+ Invocation.method(#clearCache, [instanceId, includeDiskFiles]),
+ returnValueForMissingStub: null);
+ @override
+ _i4.Future<String> evaluateJavascript(
+ int? instanceId, String? javascriptString) =>
+ (super.noSuchMethod(
+ Invocation.method(
+ #evaluateJavascript, [instanceId, javascriptString]),
+ returnValue: Future<String>.value('')) as _i4.Future<String>);
+ @override
+ String getTitle(int? instanceId) =>
+ (super.noSuchMethod(Invocation.method(#getTitle, [instanceId]),
+ returnValue: '') as String);
+ @override
+ void scrollTo(int? instanceId, int? x, int? y) =>
+ super.noSuchMethod(Invocation.method(#scrollTo, [instanceId, x, y]),
+ returnValueForMissingStub: null);
+ @override
+ void scrollBy(int? instanceId, int? x, int? y) =>
+ super.noSuchMethod(Invocation.method(#scrollBy, [instanceId, x, y]),
+ returnValueForMissingStub: null);
+ @override
+ int getScrollX(int? instanceId) =>
+ (super.noSuchMethod(Invocation.method(#getScrollX, [instanceId]),
+ returnValue: 0) as int);
+ @override
+ int getScrollY(int? instanceId) =>
+ (super.noSuchMethod(Invocation.method(#getScrollY, [instanceId]),
+ returnValue: 0) as int);
+ @override
+ void setWebContentsDebuggingEnabled(bool? enabled) => super.noSuchMethod(
+ Invocation.method(#setWebContentsDebuggingEnabled, [enabled]),
+ returnValueForMissingStub: null);
+ @override
+ void setWebViewClient(int? instanceId, int? webViewClientInstanceId) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #setWebViewClient, [instanceId, webViewClientInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void addJavaScriptChannel(
+ int? instanceId, int? javaScriptChannelInstanceId) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #addJavaScriptChannel, [instanceId, javaScriptChannelInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void removeJavaScriptChannel(
+ int? instanceId, int? javaScriptChannelInstanceId) =>
+ super.noSuchMethod(
+ Invocation.method(#removeJavaScriptChannel,
+ [instanceId, javaScriptChannelInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void setDownloadListener(int? instanceId, int? listenerInstanceId) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #setDownloadListener, [instanceId, listenerInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ void setWebChromeClient(int? instanceId, int? clientInstanceId) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #setWebChromeClient, [instanceId, clientInstanceId]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [WebChromeClient].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockWebChromeClient extends _i1.Mock implements _i2.WebChromeClient {
+ MockWebChromeClient() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ void onProgressChanged(_i2.WebView? webView, int? progress) => super
+ .noSuchMethod(Invocation.method(#onProgressChanged, [webView, progress]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [WebView].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockWebView extends _i1.Mock implements _i2.WebView {
+ MockWebView() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ bool get useHybridComposition =>
+ (super.noSuchMethod(Invocation.getter(#useHybridComposition),
+ returnValue: false) as bool);
+ @override
+ _i2.WebSettings get settings =>
+ (super.noSuchMethod(Invocation.getter(#settings),
+ returnValue: _FakeWebSettings_0()) as _i2.WebSettings);
+ @override
+ _i4.Future<void> loadUrl(String? url, Map<String, String>? headers) =>
+ (super.noSuchMethod(Invocation.method(#loadUrl, [url, headers]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<String?> getUrl() =>
+ (super.noSuchMethod(Invocation.method(#getUrl, []),
+ returnValue: Future<String?>.value()) as _i4.Future<String?>);
+ @override
+ _i4.Future<bool> canGoBack() =>
+ (super.noSuchMethod(Invocation.method(#canGoBack, []),
+ returnValue: Future<bool>.value(false)) as _i4.Future<bool>);
+ @override
+ _i4.Future<bool> canGoForward() =>
+ (super.noSuchMethod(Invocation.method(#canGoForward, []),
+ returnValue: Future<bool>.value(false)) as _i4.Future<bool>);
+ @override
+ _i4.Future<void> goBack() =>
+ (super.noSuchMethod(Invocation.method(#goBack, []),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> goForward() =>
+ (super.noSuchMethod(Invocation.method(#goForward, []),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> reload() =>
+ (super.noSuchMethod(Invocation.method(#reload, []),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> clearCache(bool? includeDiskFiles) =>
+ (super.noSuchMethod(Invocation.method(#clearCache, [includeDiskFiles]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<String?> evaluateJavascript(String? javascriptString) => (super
+ .noSuchMethod(Invocation.method(#evaluateJavascript, [javascriptString]),
+ returnValue: Future<String?>.value()) as _i4.Future<String?>);
+ @override
+ _i4.Future<String?> getTitle() =>
+ (super.noSuchMethod(Invocation.method(#getTitle, []),
+ returnValue: Future<String?>.value()) as _i4.Future<String?>);
+ @override
+ _i4.Future<void> scrollTo(int? x, int? y) =>
+ (super.noSuchMethod(Invocation.method(#scrollTo, [x, y]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> scrollBy(int? x, int? y) =>
+ (super.noSuchMethod(Invocation.method(#scrollBy, [x, y]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<int> getScrollX() =>
+ (super.noSuchMethod(Invocation.method(#getScrollX, []),
+ returnValue: Future<int>.value(0)) as _i4.Future<int>);
+ @override
+ _i4.Future<int> getScrollY() =>
+ (super.noSuchMethod(Invocation.method(#getScrollY, []),
+ returnValue: Future<int>.value(0)) as _i4.Future<int>);
+ @override
+ _i4.Future<void> setWebViewClient(_i2.WebViewClient? webViewClient) =>
+ (super.noSuchMethod(Invocation.method(#setWebViewClient, [webViewClient]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> addJavaScriptChannel(
+ _i2.JavaScriptChannel? javaScriptChannel) =>
+ (super.noSuchMethod(
+ Invocation.method(#addJavaScriptChannel, [javaScriptChannel]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> removeJavaScriptChannel(
+ _i2.JavaScriptChannel? javaScriptChannel) =>
+ (super.noSuchMethod(
+ Invocation.method(#removeJavaScriptChannel, [javaScriptChannel]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> setDownloadListener(_i2.DownloadListener? listener) =>
+ (super.noSuchMethod(Invocation.method(#setDownloadListener, [listener]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> setWebChromeClient(_i2.WebChromeClient? client) =>
+ (super.noSuchMethod(Invocation.method(#setWebChromeClient, [client]),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ _i4.Future<void> release() =>
+ (super.noSuchMethod(Invocation.method(#release, []),
+ returnValue: Future<void>.value(),
+ returnValueForMissingStub: Future<void>.value()) as _i4.Future<void>);
+ @override
+ String toString() => super.toString();
+}
+
+/// A class which mocks [WebViewClient].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockWebViewClient extends _i1.Mock implements _i2.WebViewClient {
+ MockWebViewClient() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ bool get shouldOverrideUrlLoading =>
+ (super.noSuchMethod(Invocation.getter(#shouldOverrideUrlLoading),
+ returnValue: false) as bool);
+ @override
+ void onPageStarted(_i2.WebView? webView, String? url) =>
+ super.noSuchMethod(Invocation.method(#onPageStarted, [webView, url]),
+ returnValueForMissingStub: null);
+ @override
+ void onPageFinished(_i2.WebView? webView, String? url) =>
+ super.noSuchMethod(Invocation.method(#onPageFinished, [webView, url]),
+ returnValueForMissingStub: null);
+ @override
+ void onReceivedRequestError(_i2.WebView? webView,
+ _i2.WebResourceRequest? request, _i2.WebResourceError? error) =>
+ super.noSuchMethod(
+ Invocation.method(#onReceivedRequestError, [webView, request, error]),
+ returnValueForMissingStub: null);
+ @override
+ void onReceivedError(_i2.WebView? webView, int? errorCode,
+ String? description, String? failingUrl) =>
+ super.noSuchMethod(
+ Invocation.method(
+ #onReceivedError, [webView, errorCode, description, failingUrl]),
+ returnValueForMissingStub: null);
+ @override
+ void requestLoading(_i2.WebView? webView, _i2.WebResourceRequest? request) =>
+ super.noSuchMethod(Invocation.method(#requestLoading, [webView, request]),
+ returnValueForMissingStub: null);
+ @override
+ void urlLoading(_i2.WebView? webView, String? url) =>
+ super.noSuchMethod(Invocation.method(#urlLoading, [webView, url]),
+ returnValueForMissingStub: null);
+ @override
+ String toString() => super.toString();
+}