From bd5a6bbb3d6d606233460b649704661f02989bec Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 10:31:29 -0400 Subject: [PATCH 01/13] update pigeon and fix android lint errors --- .../CookieManagerHostApiImpl.java | 8 +- .../webviewflutter/DisplayListenerProxy.java | 5 +- .../DownloadListenerHostApiImpl.java | 2 +- .../webviewflutter/FlutterAssetManager.java | 1 + .../FlutterAssetManagerHostApiImpl.java | 7 +- .../webviewflutter/FlutterWebViewFactory.java | 12 +- .../GeneratedAndroidWebView.java | 966 +++++++----------- .../webviewflutter/JavaScriptChannel.java | 4 +- .../WebChromeClientHostApiImpl.java | 6 +- .../WebSettingsHostApiImpl.java | 61 +- .../webviewflutter/WebStorageHostApiImpl.java | 8 +- .../WebViewClientFlutterApiImpl.java | 3 + .../WebViewClientHostApiImpl.java | 8 - .../webviewflutter/WebViewHostApiImpl.java | 129 +-- .../CookieManagerHostApiImplTest.java | 3 +- .../plugins/webviewflutter/WebViewTest.java | 3 +- .../webviewflutter/utils/TestUtils.java | 41 +- .../lib/src/android_webview.g.dart | 2 +- .../webview_flutter_android/pubspec.yaml | 2 +- .../test/test_android_webview.g.dart | 386 +++++-- 20 files changed, 790 insertions(+), 867 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java index d9a647d67a3..9cd785fc33f 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java @@ -6,10 +6,12 @@ import android.os.Build; import android.webkit.CookieManager; +import androidx.annotation.NonNull; +import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.CookieManagerHostApi; -class CookieManagerHostApiImpl implements GeneratedAndroidWebView.CookieManagerHostApi { +class CookieManagerHostApiImpl implements CookieManagerHostApi { @Override - public void clearCookies(GeneratedAndroidWebView.Result result) { + public void clearCookies(@NonNull GeneratedAndroidWebView.Result result) { CookieManager cookieManager = CookieManager.getInstance(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { cookieManager.removeAllCookies(result::success); @@ -19,7 +21,7 @@ public void clearCookies(GeneratedAndroidWebView.Result result) { } @Override - public void setCookie(String url, String value) { + public void setCookie(@NonNull String url, @NonNull String value) { CookieManager.getInstance().setCookie(url, value); } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java index 31e3fe08c05..c04fb4a8f3e 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java @@ -6,7 +6,6 @@ import static android.hardware.display.DisplayManager.DisplayListener; -import android.annotation.TargetApi; import android.hardware.display.DisplayManager; import android.os.Build; import android.util.Log; @@ -39,7 +38,6 @@ * first initialization of a webview within the process the difference between the lists is the * webview's display listener. */ -@TargetApi(Build.VERSION_CODES.KITKAT) class DisplayListenerProxy { private static final String TAG = "DisplayListenerProxy"; @@ -118,9 +116,11 @@ private static ArrayList yoinkDisplayListeners(DisplayManager d return new ArrayList<>(); } try { + //noinspection JavaReflectionMemberAccess Field displayManagerGlobalField = DisplayManager.class.getDeclaredField("mGlobal"); displayManagerGlobalField.setAccessible(true); Object displayManagerGlobal = displayManagerGlobalField.get(displayManager); + //noinspection ConstantConditions Field displayListenersField = displayManagerGlobal.getClass().getDeclaredField("mDisplayListeners"); displayListenersField.setAccessible(true); @@ -129,6 +129,7 @@ private static ArrayList yoinkDisplayListeners(DisplayManager d Field listenerField = null; ArrayList listeners = new ArrayList<>(); + //noinspection ConstantConditions for (Object delegate : delegates) { if (listenerField == null) { listenerField = delegate.getClass().getField("mListener"); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java index a9cbcbdd410..df2d32a4f97 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java @@ -75,7 +75,7 @@ public DownloadListenerHostApiImpl( } @Override - public void create(Long instanceId) { + public void create(@NonNull Long instanceId) { final DownloadListener downloadListener = downloadListenerCreator.createDownloadListener(flutterApi); instanceManager.addDartCreatedInstance(downloadListener, instanceId); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManager.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManager.java index 1d484d8639a..f50b5bf7280 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManager.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManager.java @@ -11,6 +11,7 @@ import java.io.IOException; /** Provides access to the assets registered as part of the App bundle. */ +@SuppressWarnings({"deprecation", "DeprecatedIsStillUsed"}) abstract class FlutterAssetManager { final AssetManager assetManager; diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java index 791912adb81..da02ae53240 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java @@ -5,6 +5,7 @@ package io.flutter.plugins.webviewflutter; import android.webkit.WebView; +import androidx.annotation.NonNull; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.FlutterAssetManagerHostApi; import java.io.IOException; import java.util.ArrayList; @@ -24,8 +25,9 @@ public FlutterAssetManagerHostApiImpl(FlutterAssetManager flutterAssetManager) { this.flutterAssetManager = flutterAssetManager; } + @NonNull @Override - public List list(String path) { + public List list(@NonNull String path) { try { String[] paths = flutterAssetManager.list(path); @@ -39,8 +41,9 @@ public List list(String path) { } } + @NonNull @Override - public String getAssetFilePathByName(String name) { + public String getAssetFilePathByName(@NonNull String name) { return flutterAssetManager.getAssetFilePathByName(name); } } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java index 9b3cd471bb8..d1cd87034c9 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java @@ -5,6 +5,8 @@ package io.flutter.plugins.webviewflutter; import android.content.Context; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import io.flutter.plugin.common.StandardMessageCodec; import io.flutter.plugin.platform.PlatformView; import io.flutter.plugin.platform.PlatformViewFactory; @@ -17,9 +19,15 @@ class FlutterWebViewFactory extends PlatformViewFactory { this.instanceManager = instanceManager; } + @NonNull @Override - public PlatformView create(Context context, int id, Object args) { - final PlatformView view = (PlatformView) instanceManager.getInstance((Integer) args); + public PlatformView create(Context context, int viewId, @Nullable Object args) { + final Long identifier = (Long) args; + if (identifier == null) { + throw new IllegalStateException("An identifier is required to retrieve WebView instance."); + } + + final PlatformView view = instanceManager.getInstance(identifier); if (view == null) { throw new IllegalStateException("Unable to find WebView instance: " + args); } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java index 507c07a70bc..86d84ce37f9 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/GeneratedAndroidWebView.java @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v9.0.5), do not edit directly. +// Autogenerated from Pigeon (v9.2.4), do not edit directly. // See also: https://pub.dev/packages/pigeon package io.flutter.plugins.webviewflutter; @@ -22,15 +22,39 @@ import java.util.Map; /** Generated class from Pigeon. */ -@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"}) +@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression", "serial"}) public class GeneratedAndroidWebView { + + /** Error class for passing custom error details to Flutter via a thrown PlatformException. */ + public static class FlutterError extends RuntimeException { + + /** The error code. */ + public final String code; + + /** The error details. Must be a datatype supported by the api codec. */ + public final Object details; + + public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) { + super(message); + this.code = code; + this.details = details; + } + } + @NonNull - private static ArrayList wrapError(@NonNull Throwable exception) { + protected static ArrayList wrapError(@NonNull Throwable exception) { ArrayList errorList = new ArrayList(3); - errorList.add(exception.toString()); - errorList.add(exception.getClass().getSimpleName()); - errorList.add( - "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + if (exception instanceof FlutterError) { + FlutterError error = (FlutterError) exception; + errorList.add(error.code); + errorList.add(error.getMessage()); + errorList.add(error.details); + } else { + errorList.add(exception.toString()); + errorList.add(exception.getClass().getSimpleName()); + errorList.add( + "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception)); + } return errorList; } @@ -63,7 +87,7 @@ public enum FileChooserMode { */ SAVE(2); - private final int index; + final int index; private FileChooserMode(final int index) { this.index = index; @@ -85,8 +109,8 @@ public void setValue(@NonNull FileChooserMode setterArg) { this.value = setterArg; } - /** Constructor is private to enforce null safety; use Builder. */ - private FileChooserModeEnumData() {} + /** Constructor is non-public to enforce null safety; use Builder. */ + FileChooserModeEnumData() {} public static final class Builder { @@ -196,8 +220,8 @@ public void setRequestHeaders(@NonNull Map setterArg) { this.requestHeaders = setterArg; } - /** Constructor is private to enforce null safety; use Builder. */ - private WebResourceRequestData() {} + /** Constructor is non-public to enforce null safety; use Builder. */ + WebResourceRequestData() {} public static final class Builder { @@ -313,8 +337,8 @@ public void setDescription(@NonNull String setterArg) { this.description = setterArg; } - /** Constructor is private to enforce null safety; use Builder. */ - private WebResourceErrorData() {} + /** Constructor is non-public to enforce null safety; use Builder. */ + WebResourceErrorData() {} public static final class Builder { @@ -389,8 +413,8 @@ public void setY(@NonNull Long setterArg) { this.y = setterArg; } - /** Constructor is private to enforce null safety; use Builder. */ - private WebViewPoint() {} + /** Constructor is non-public to enforce null safety; use Builder. */ + WebViewPoint() {} public static final class Builder { @@ -435,9 +459,10 @@ ArrayList toList() { } public interface Result { + @SuppressWarnings("UnknownNullness") void success(T result); - void error(Throwable error); + void error(@NonNull Throwable error); } /** * Host API for managing the native `InstanceManager`. @@ -453,14 +478,15 @@ public interface InstanceManagerHostApi { void clear(); /** The codec used by InstanceManagerHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `InstanceManagerHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, InstanceManagerHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable InstanceManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -472,7 +498,7 @@ static void setup(BinaryMessenger binaryMessenger, InstanceManagerHostApi api) { try { api.clear(); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -498,13 +524,13 @@ public interface JavaObjectHostApi { void dispose(@NonNull Long identifier); /** The codec used by JavaObjectHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `JavaObjectHostApi` to handle messages through the `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, JavaObjectHostApi api) { + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable JavaObjectHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -513,16 +539,12 @@ static void setup(BinaryMessenger binaryMessenger, JavaObjectHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number identifierArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number identifierArg = (Number) args.get(0); - if (identifierArg == null) { - throw new NullPointerException("identifierArg unexpectedly null."); - } api.dispose((identifierArg == null) ? null : identifierArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -542,22 +564,23 @@ static void setup(BinaryMessenger binaryMessenger, JavaObjectHostApi api) { *

Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class JavaObjectFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public JavaObjectFlutterApi(BinaryMessenger argBinaryMessenger) { + public JavaObjectFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by JavaObjectFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } - public void dispose(@NonNull Long identifierArg, Reply callback) { + public void dispose(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, "dev.flutter.pigeon.JavaObjectFlutterApi.dispose", getCodec()); @@ -569,19 +592,20 @@ public void dispose(@NonNull Long identifierArg, Reply callback) { /** Generated interface from Pigeon that represents a handler of messages from Flutter. */ public interface CookieManagerHostApi { - void clearCookies(Result result); + void clearCookies(@NonNull Result result); void setCookie(@NonNull String url, @NonNull String value); /** The codec used by CookieManagerHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `CookieManagerHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, CookieManagerHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable CookieManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -592,25 +616,20 @@ static void setup(BinaryMessenger binaryMessenger, CookieManagerHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); - try { - Result resultCallback = - new Result() { - public void success(Boolean result) { - wrapped.add(0, result); - reply.reply(wrapped); - } - - public void error(Throwable error) { - ArrayList wrappedError = wrapError(error); - reply.reply(wrappedError); - } - }; - - api.clearCookies(resultCallback); - } catch (Error | RuntimeException exception) { - ArrayList wrappedError = wrapError(exception); - reply.reply(wrappedError); - } + Result resultCallback = + new Result() { + public void success(Boolean result) { + wrapped.add(0, result); + reply.reply(wrapped); + } + + public void error(Throwable error) { + ArrayList wrappedError = wrapError(error); + reply.reply(wrappedError); + } + }; + + api.clearCookies(resultCallback); }); } else { channel.setMessageHandler(null); @@ -624,20 +643,13 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + String urlArg = (String) args.get(0); + String valueArg = (String) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - String urlArg = (String) args.get(0); - if (urlArg == null) { - throw new NullPointerException("urlArg unexpectedly null."); - } - String valueArg = (String) args.get(1); - if (valueArg == null) { - throw new NullPointerException("valueArg unexpectedly null."); - } api.setCookie(urlArg, valueArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -718,7 +730,7 @@ void loadUrl( void clearCache(@NonNull Long instanceId, @NonNull Boolean includeDiskFiles); void evaluateJavascript( - @NonNull Long instanceId, @NonNull String javascriptString, Result result); + @NonNull Long instanceId, @NonNull String javascriptString, @NonNull Result result); @Nullable String getTitle(@NonNull Long instanceId); @@ -752,11 +764,11 @@ void removeJavaScriptChannel( void setBackgroundColor(@NonNull Long instanceId, @NonNull Long color); /** The codec used by WebViewHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return WebViewHostApiCodec.INSTANCE; } /** Sets up an instance of `WebViewHostApi` to handle messages through the `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebViewHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -765,16 +777,12 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -792,26 +800,19 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String dataArg = (String) args.get(1); + String mimeTypeArg = (String) args.get(2); + String encodingArg = (String) args.get(3); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String dataArg = (String) args.get(1); - if (dataArg == null) { - throw new NullPointerException("dataArg unexpectedly null."); - } - String mimeTypeArg = (String) args.get(2); - String encodingArg = (String) args.get(3); api.loadData( (instanceIdArg == null) ? null : instanceIdArg.longValue(), dataArg, mimeTypeArg, encodingArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -831,21 +832,14 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String baseUrlArg = (String) args.get(1); + String dataArg = (String) args.get(2); + String mimeTypeArg = (String) args.get(3); + String encodingArg = (String) args.get(4); + String historyUrlArg = (String) args.get(5); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String baseUrlArg = (String) args.get(1); - String dataArg = (String) args.get(2); - if (dataArg == null) { - throw new NullPointerException("dataArg unexpectedly null."); - } - String mimeTypeArg = (String) args.get(3); - String encodingArg = (String) args.get(4); - String historyUrlArg = (String) args.get(5); api.loadDataWithBaseUrl( (instanceIdArg == null) ? null : instanceIdArg.longValue(), baseUrlArg, @@ -854,7 +848,7 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { encodingArg, historyUrlArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -872,27 +866,17 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String urlArg = (String) args.get(1); + Map headersArg = (Map) args.get(2); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String urlArg = (String) args.get(1); - if (urlArg == null) { - throw new NullPointerException("urlArg unexpectedly null."); - } - Map headersArg = (Map) args.get(2); - if (headersArg == null) { - throw new NullPointerException("headersArg unexpectedly null."); - } api.loadUrl( (instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, headersArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -910,25 +894,15 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String urlArg = (String) args.get(1); + byte[] dataArg = (byte[]) args.get(2); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String urlArg = (String) args.get(1); - if (urlArg == null) { - throw new NullPointerException("urlArg unexpectedly null."); - } - byte[] dataArg = (byte[]) args.get(2); - if (dataArg == null) { - throw new NullPointerException("dataArg unexpectedly null."); - } api.postUrl( (instanceIdArg == null) ? null : instanceIdArg.longValue(), urlArg, dataArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -946,17 +920,13 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } String output = api.getUrl((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -974,17 +944,13 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } Boolean output = api.canGoBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1002,17 +968,13 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } Boolean output = api.canGoForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1030,16 +992,12 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.goBack((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1057,16 +1015,12 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.goForward((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1084,16 +1038,12 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.reload((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1111,22 +1061,15 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean includeDiskFilesArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean includeDiskFilesArg = (Boolean) args.get(1); - if (includeDiskFilesArg == null) { - throw new NullPointerException("includeDiskFilesArg unexpectedly null."); - } api.clearCache( (instanceIdArg == null) ? null : instanceIdArg.longValue(), includeDiskFilesArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1146,38 +1089,26 @@ static void setup(BinaryMessenger binaryMessenger, WebViewHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); - try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String javascriptStringArg = (String) args.get(1); - if (javascriptStringArg == null) { - throw new NullPointerException("javascriptStringArg unexpectedly null."); - } - Result resultCallback = - new Result() { - public void success(String result) { - wrapped.add(0, result); - reply.reply(wrapped); - } - - public void error(Throwable error) { - ArrayList wrappedError = wrapError(error); - reply.reply(wrappedError); - } - }; - - api.evaluateJavascript( - (instanceIdArg == null) ? null : instanceIdArg.longValue(), - javascriptStringArg, - resultCallback); - } catch (Error | RuntimeException exception) { - ArrayList wrappedError = wrapError(exception); - reply.reply(wrappedError); - } + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String javascriptStringArg = (String) args.get(1); + Result resultCallback = + new Result() { + public void success(String result) { + wrapped.add(0, result); + reply.reply(wrapped); + } + + public void error(Throwable error) { + ArrayList wrappedError = wrapError(error); + reply.reply(wrappedError); + } + }; + + api.evaluateJavascript( + (instanceIdArg == null) ? null : instanceIdArg.longValue(), + javascriptStringArg, + resultCallback); }); } else { channel.setMessageHandler(null); @@ -1191,17 +1122,13 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } String output = api.getTitle((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1219,27 +1146,17 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number xArg = (Number) args.get(1); + Number yArg = (Number) args.get(2); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number xArg = (Number) args.get(1); - if (xArg == null) { - throw new NullPointerException("xArg unexpectedly null."); - } - Number yArg = (Number) args.get(2); - if (yArg == null) { - throw new NullPointerException("yArg unexpectedly null."); - } api.scrollTo( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (xArg == null) ? null : xArg.longValue(), (yArg == null) ? null : yArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1257,27 +1174,17 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number xArg = (Number) args.get(1); + Number yArg = (Number) args.get(2); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number xArg = (Number) args.get(1); - if (xArg == null) { - throw new NullPointerException("xArg unexpectedly null."); - } - Number yArg = (Number) args.get(2); - if (yArg == null) { - throw new NullPointerException("yArg unexpectedly null."); - } api.scrollBy( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (xArg == null) ? null : xArg.longValue(), (yArg == null) ? null : yArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1295,17 +1202,13 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } Long output = api.getScrollX((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1323,17 +1226,13 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } Long output = api.getScrollY((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1351,18 +1250,14 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } WebViewPoint output = api.getScrollPosition( (instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1382,16 +1277,12 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Boolean enabledArg = (Boolean) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Boolean enabledArg = (Boolean) args.get(0); - if (enabledArg == null) { - throw new NullPointerException("enabledArg unexpectedly null."); - } api.setWebContentsDebuggingEnabled(enabledArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1409,24 +1300,17 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number webViewClientInstanceIdArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number webViewClientInstanceIdArg = (Number) args.get(1); - if (webViewClientInstanceIdArg == null) { - throw new NullPointerException("webViewClientInstanceIdArg unexpectedly null."); - } api.setWebViewClient( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (webViewClientInstanceIdArg == null) ? null : webViewClientInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1446,25 +1330,17 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number javaScriptChannelInstanceIdArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number javaScriptChannelInstanceIdArg = (Number) args.get(1); - if (javaScriptChannelInstanceIdArg == null) { - throw new NullPointerException( - "javaScriptChannelInstanceIdArg unexpectedly null."); - } api.addJavaScriptChannel( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (javaScriptChannelInstanceIdArg == null) ? null : javaScriptChannelInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1484,25 +1360,17 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number javaScriptChannelInstanceIdArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number javaScriptChannelInstanceIdArg = (Number) args.get(1); - if (javaScriptChannelInstanceIdArg == null) { - throw new NullPointerException( - "javaScriptChannelInstanceIdArg unexpectedly null."); - } api.removeJavaScriptChannel( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (javaScriptChannelInstanceIdArg == null) ? null : javaScriptChannelInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1522,19 +1390,15 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number listenerInstanceIdArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number listenerInstanceIdArg = (Number) args.get(1); api.setDownloadListener( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (listenerInstanceIdArg == null) ? null : listenerInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1554,19 +1418,15 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number clientInstanceIdArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number clientInstanceIdArg = (Number) args.get(1); api.setWebChromeClient( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (clientInstanceIdArg == null) ? null : clientInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1586,22 +1446,15 @@ public void error(Throwable error) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number colorArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number colorArg = (Number) args.get(1); - if (colorArg == null) { - throw new NullPointerException("colorArg unexpectedly null."); - } api.setBackgroundColor( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (colorArg == null) ? null : colorArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1624,22 +1477,23 @@ public void error(Throwable error) { *

Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class WebViewFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public WebViewFlutterApi(BinaryMessenger argBinaryMessenger) { + public WebViewFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by WebViewFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** Create a new Dart instance and add it to the `InstanceManager`. */ - public void create(@NonNull Long identifierArg, Reply callback) { + public void create(@NonNull Long identifierArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, "dev.flutter.pigeon.WebViewFlutterApi.create", getCodec()); @@ -1680,13 +1534,13 @@ public interface WebSettingsHostApi { void setTextZoom(@NonNull Long instanceId, @NonNull Long textZoom); /** The codec used by WebSettingsHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `WebSettingsHostApi` to handle messages through the `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebSettingsHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -1695,22 +1549,15 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number webViewInstanceIdArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number webViewInstanceIdArg = (Number) args.get(1); - if (webViewInstanceIdArg == null) { - throw new NullPointerException("webViewInstanceIdArg unexpectedly null."); - } api.create( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (webViewInstanceIdArg == null) ? null : webViewInstanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1730,21 +1577,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean flagArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean flagArg = (Boolean) args.get(1); - if (flagArg == null) { - throw new NullPointerException("flagArg unexpectedly null."); - } api.setDomStorageEnabled( (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1764,21 +1604,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean flagArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean flagArg = (Boolean) args.get(1); - if (flagArg == null) { - throw new NullPointerException("flagArg unexpectedly null."); - } api.setJavaScriptCanOpenWindowsAutomatically( (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1798,21 +1631,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean supportArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean supportArg = (Boolean) args.get(1); - if (supportArg == null) { - throw new NullPointerException("supportArg unexpectedly null."); - } api.setSupportMultipleWindows( (instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1832,21 +1658,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean flagArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean flagArg = (Boolean) args.get(1); - if (flagArg == null) { - throw new NullPointerException("flagArg unexpectedly null."); - } api.setJavaScriptEnabled( (instanceIdArg == null) ? null : instanceIdArg.longValue(), flagArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1866,19 +1685,15 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String userAgentStringArg = (String) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String userAgentStringArg = (String) args.get(1); api.setUserAgentString( (instanceIdArg == null) ? null : instanceIdArg.longValue(), userAgentStringArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1898,21 +1713,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean requireArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean requireArg = (Boolean) args.get(1); - if (requireArg == null) { - throw new NullPointerException("requireArg unexpectedly null."); - } api.setMediaPlaybackRequiresUserGesture( (instanceIdArg == null) ? null : instanceIdArg.longValue(), requireArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1932,21 +1740,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean supportArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean supportArg = (Boolean) args.get(1); - if (supportArg == null) { - throw new NullPointerException("supportArg unexpectedly null."); - } api.setSupportZoom( (instanceIdArg == null) ? null : instanceIdArg.longValue(), supportArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -1966,21 +1767,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean overviewArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean overviewArg = (Boolean) args.get(1); - if (overviewArg == null) { - throw new NullPointerException("overviewArg unexpectedly null."); - } api.setLoadWithOverviewMode( (instanceIdArg == null) ? null : instanceIdArg.longValue(), overviewArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2000,21 +1794,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean useArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean useArg = (Boolean) args.get(1); - if (useArg == null) { - throw new NullPointerException("useArg unexpectedly null."); - } api.setUseWideViewPort( (instanceIdArg == null) ? null : instanceIdArg.longValue(), useArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2034,21 +1821,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean enabledArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean enabledArg = (Boolean) args.get(1); - if (enabledArg == null) { - throw new NullPointerException("enabledArg unexpectedly null."); - } api.setDisplayZoomControls( (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2068,21 +1848,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean enabledArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean enabledArg = (Boolean) args.get(1); - if (enabledArg == null) { - throw new NullPointerException("enabledArg unexpectedly null."); - } api.setBuiltInZoomControls( (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2102,21 +1875,14 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean enabledArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean enabledArg = (Boolean) args.get(1); - if (enabledArg == null) { - throw new NullPointerException("enabledArg unexpectedly null."); - } api.setAllowFileAccess( (instanceIdArg == null) ? null : instanceIdArg.longValue(), enabledArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2134,22 +1900,15 @@ static void setup(BinaryMessenger binaryMessenger, WebSettingsHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Number textZoomArg = (Number) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Number textZoomArg = (Number) args.get(1); - if (textZoomArg == null) { - throw new NullPointerException("textZoomArg unexpectedly null."); - } api.setTextZoom( (instanceIdArg == null) ? null : instanceIdArg.longValue(), (textZoomArg == null) ? null : textZoomArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2167,14 +1926,15 @@ public interface JavaScriptChannelHostApi { void create(@NonNull Long instanceId, @NonNull String channelName); /** The codec used by JavaScriptChannelHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `JavaScriptChannelHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, JavaScriptChannelHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable JavaScriptChannelHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -2183,21 +1943,14 @@ static void setup(BinaryMessenger binaryMessenger, JavaScriptChannelHostApi api) channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + String channelNameArg = (String) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - String channelNameArg = (String) args.get(1); - if (channelNameArg == null) { - throw new NullPointerException("channelNameArg unexpectedly null."); - } api.create( (instanceIdArg == null) ? null : instanceIdArg.longValue(), channelNameArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2211,23 +1964,24 @@ static void setup(BinaryMessenger binaryMessenger, JavaScriptChannelHostApi api) } /** Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class JavaScriptChannelFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public JavaScriptChannelFlutterApi(BinaryMessenger argBinaryMessenger) { + public JavaScriptChannelFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by JavaScriptChannelFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } public void postMessage( - @NonNull Long instanceIdArg, @NonNull String messageArg, Reply callback) { + @NonNull Long instanceIdArg, @NonNull String messageArg, @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2247,14 +2001,15 @@ void setSynchronousReturnValueForShouldOverrideUrlLoading( @NonNull Long instanceId, @NonNull Boolean value); /** The codec used by WebViewClientHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `WebViewClientHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, WebViewClientHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable WebViewClientHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -2263,16 +2018,12 @@ static void setup(BinaryMessenger binaryMessenger, WebViewClientHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2292,21 +2043,14 @@ static void setup(BinaryMessenger binaryMessenger, WebViewClientHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean valueArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean valueArg = (Boolean) args.get(1); - if (valueArg == null) { - throw new NullPointerException("valueArg unexpectedly null."); - } api.setSynchronousReturnValueForShouldOverrideUrlLoading( (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2352,18 +2096,19 @@ protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { /** Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class WebViewClientFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public WebViewClientFlutterApi(BinaryMessenger argBinaryMessenger) { + public WebViewClientFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by WebViewClientFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return WebViewClientFlutterApiCodec.INSTANCE; } @@ -2371,7 +2116,7 @@ public void onPageStarted( @NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2386,7 +2131,7 @@ public void onPageFinished( @NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2402,7 +2147,7 @@ public void onReceivedRequestError( @NonNull Long webViewInstanceIdArg, @NonNull WebResourceRequestData requestArg, @NonNull WebResourceErrorData errorArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2420,7 +2165,7 @@ public void onReceivedError( @NonNull Long errorCodeArg, @NonNull String descriptionArg, @NonNull String failingUrlArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2441,7 +2186,7 @@ public void requestLoading( @NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull WebResourceRequestData requestArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2456,7 +2201,7 @@ public void urlLoading( @NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull String urlArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, "dev.flutter.pigeon.WebViewClientFlutterApi.urlLoading", getCodec()); @@ -2471,14 +2216,15 @@ public interface DownloadListenerHostApi { void create(@NonNull Long instanceId); /** The codec used by DownloadListenerHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `DownloadListenerHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, DownloadListenerHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable DownloadListenerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -2487,16 +2233,12 @@ static void setup(BinaryMessenger binaryMessenger, DownloadListenerHostApi api) channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2510,18 +2252,19 @@ static void setup(BinaryMessenger binaryMessenger, DownloadListenerHostApi api) } /** Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class DownloadListenerFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public DownloadListenerFlutterApi(BinaryMessenger argBinaryMessenger) { + public DownloadListenerFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by DownloadListenerFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } @@ -2532,7 +2275,7 @@ public void onDownloadStart( @NonNull String contentDispositionArg, @NonNull String mimetypeArg, @NonNull Long contentLengthArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2559,14 +2302,15 @@ void setSynchronousReturnValueForOnShowFileChooser( @NonNull Long instanceId, @NonNull Boolean value); /** The codec used by WebChromeClientHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `WebChromeClientHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, WebChromeClientHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable WebChromeClientHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -2575,16 +2319,12 @@ static void setup(BinaryMessenger binaryMessenger, WebChromeClientHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2604,21 +2344,14 @@ static void setup(BinaryMessenger binaryMessenger, WebChromeClientHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); + Boolean valueArg = (Boolean) args.get(1); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } - Boolean valueArg = (Boolean) args.get(1); - if (valueArg == null) { - throw new NullPointerException("valueArg unexpectedly null."); - } api.setSynchronousReturnValueForOnShowFileChooser( (instanceIdArg == null) ? null : instanceIdArg.longValue(), valueArg); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2640,14 +2373,15 @@ public interface FlutterAssetManagerHostApi { String getAssetFilePathByName(@NonNull String name); /** The codec used by FlutterAssetManagerHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `FlutterAssetManagerHostApi` to handle messages through the * `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, FlutterAssetManagerHostApi api) { + static void setup( + @NonNull BinaryMessenger binaryMessenger, @Nullable FlutterAssetManagerHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -2656,16 +2390,12 @@ static void setup(BinaryMessenger binaryMessenger, FlutterAssetManagerHostApi ap channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + String pathArg = (String) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - String pathArg = (String) args.get(0); - if (pathArg == null) { - throw new NullPointerException("pathArg unexpectedly null."); - } List output = api.list(pathArg); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2685,16 +2415,12 @@ static void setup(BinaryMessenger binaryMessenger, FlutterAssetManagerHostApi ap channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + String nameArg = (String) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - String nameArg = (String) args.get(0); - if (nameArg == null) { - throw new NullPointerException("nameArg unexpectedly null."); - } String output = api.getAssetFilePathByName(nameArg); wrapped.add(0, output); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2708,18 +2434,19 @@ static void setup(BinaryMessenger binaryMessenger, FlutterAssetManagerHostApi ap } /** Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class WebChromeClientFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public WebChromeClientFlutterApi(BinaryMessenger argBinaryMessenger) { + public WebChromeClientFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by WebChromeClientFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } @@ -2727,7 +2454,7 @@ public void onProgressChanged( @NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long progressArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2742,7 +2469,7 @@ public void onShowFileChooser( @NonNull Long instanceIdArg, @NonNull Long webViewInstanceIdArg, @NonNull Long paramsInstanceIdArg, - Reply> callback) { + @NonNull Reply> callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, @@ -2766,13 +2493,13 @@ public interface WebStorageHostApi { void deleteAllData(@NonNull Long instanceId); /** The codec used by WebStorageHostApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return new StandardMessageCodec(); } /** * Sets up an instance of `WebStorageHostApi` to handle messages through the `binaryMessenger`. */ - static void setup(BinaryMessenger binaryMessenger, WebStorageHostApi api) { + static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable WebStorageHostApi api) { { BasicMessageChannel channel = new BasicMessageChannel<>( @@ -2781,16 +2508,12 @@ static void setup(BinaryMessenger binaryMessenger, WebStorageHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.create((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2808,16 +2531,12 @@ static void setup(BinaryMessenger binaryMessenger, WebStorageHostApi api) { channel.setMessageHandler( (message, reply) -> { ArrayList wrapped = new ArrayList(); + ArrayList args = (ArrayList) message; + Number instanceIdArg = (Number) args.get(0); try { - ArrayList args = (ArrayList) message; - assert args != null; - Number instanceIdArg = (Number) args.get(0); - if (instanceIdArg == null) { - throw new NullPointerException("instanceIdArg unexpectedly null."); - } api.deleteAllData((instanceIdArg == null) ? null : instanceIdArg.longValue()); wrapped.add(0, null); - } catch (Error | RuntimeException exception) { + } catch (Throwable exception) { ArrayList wrappedError = wrapError(exception); wrapped = wrappedError; } @@ -2866,18 +2585,19 @@ protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) { *

Generated class from Pigeon that represents Flutter messages that can be called from Java. */ public static class FileChooserParamsFlutterApi { - private final BinaryMessenger binaryMessenger; + private final @NonNull BinaryMessenger binaryMessenger; - public FileChooserParamsFlutterApi(BinaryMessenger argBinaryMessenger) { + public FileChooserParamsFlutterApi(@NonNull BinaryMessenger argBinaryMessenger) { this.binaryMessenger = argBinaryMessenger; } /** Public interface for sending reply. */ + @SuppressWarnings("UnknownNullness") public interface Reply { void reply(T reply); } /** The codec used by FileChooserParamsFlutterApi. */ - static MessageCodec getCodec() { + static @NonNull MessageCodec getCodec() { return FileChooserParamsFlutterApiCodec.INSTANCE; } @@ -2887,7 +2607,7 @@ public void create( @NonNull List acceptTypesArg, @NonNull FileChooserModeEnumData modeArg, @Nullable String filenameHintArg, - Reply callback) { + @NonNull Reply callback) { BasicMessageChannel channel = new BasicMessageChannel<>( binaryMessenger, "dev.flutter.pigeon.FileChooserParamsFlutterApi.create", getCodec()); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java index cf2c2629989..49421b75bdc 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java @@ -42,9 +42,7 @@ public JavaScriptChannel( @JavascriptInterface public void postMessage(final String message) { final Runnable postMessageRunnable = - () -> { - flutterApi.postMessage(JavaScriptChannel.this, message, reply -> {}); - }; + () -> flutterApi.postMessage(JavaScriptChannel.this, message, reply -> {}); if (platformThreadHandler.getLooper() == Looper.myLooper()) { postMessageRunnable.run(); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java index 5bc40e63729..f7564fbe5f7 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java @@ -130,8 +130,6 @@ public boolean shouldOverrideUrlLoading( return true; } - // Legacy codepath for < N. - @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView windowWebView, String url) { if (!webViewClient.shouldOverrideUrlLoading(view, url)) { @@ -167,7 +165,7 @@ public void setWebViewClient(@NonNull WebViewClient webViewClient) { /** Handles creating {@link WebChromeClient}s for a {@link WebChromeClientHostApiImpl}. */ public static class WebChromeClientCreator { /** - * Creates a {@link DownloadListenerHostApiImpl.DownloadListenerImpl}. + * Creates a {@link WebChromeClientHostApiImpl.WebChromeClientImpl}. * * @param flutterApi handles sending messages to Dart * @return the created {@link WebChromeClientHostApiImpl.WebChromeClientImpl} @@ -194,7 +192,7 @@ public WebChromeClientHostApiImpl( } @Override - public void create(Long instanceId) { + public void create(@NonNull Long instanceId) { final WebChromeClient webChromeClient = webChromeClientCreator.createWebChromeClient(flutterApi); instanceManager.addDartCreatedInstance(webChromeClient, instanceId); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java index 2215320e6af..2cba3fbd356 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java @@ -6,7 +6,10 @@ import android.webkit.WebSettings; import android.webkit.WebView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.WebSettingsHostApi; +import java.util.Objects; /** * Host api implementation for {@link WebSettings}. @@ -43,87 +46,89 @@ public WebSettingsHostApiImpl( } @Override - public void create(Long instanceId, Long webViewInstanceId) { - final WebView webView = (WebView) instanceManager.getInstance(webViewInstanceId); + public void create(@NonNull Long instanceId, @NonNull Long webViewInstanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(webViewInstanceId)); instanceManager.addDartCreatedInstance( webSettingsCreator.createWebSettings(webView), instanceId); } @Override - public void setDomStorageEnabled(Long instanceId, Boolean flag) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setDomStorageEnabled(@NonNull Long instanceId, @NonNull Boolean flag) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setDomStorageEnabled(flag); } @Override - public void setJavaScriptCanOpenWindowsAutomatically(Long instanceId, Boolean flag) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setJavaScriptCanOpenWindowsAutomatically( + @NonNull Long instanceId, @NonNull Boolean flag) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setJavaScriptCanOpenWindowsAutomatically(flag); } @Override - public void setSupportMultipleWindows(Long instanceId, Boolean support) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setSupportMultipleWindows(@NonNull Long instanceId, @NonNull Boolean support) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setSupportMultipleWindows(support); } @Override - public void setJavaScriptEnabled(Long instanceId, Boolean flag) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setJavaScriptEnabled(@NonNull Long instanceId, @NonNull Boolean flag) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setJavaScriptEnabled(flag); } @Override - public void setUserAgentString(Long instanceId, String userAgentString) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setUserAgentString(@NonNull Long instanceId, @Nullable String userAgentString) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setUserAgentString(userAgentString); } @Override - public void setMediaPlaybackRequiresUserGesture(Long instanceId, Boolean require) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setMediaPlaybackRequiresUserGesture( + @NonNull Long instanceId, @NonNull Boolean require) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setMediaPlaybackRequiresUserGesture(require); } @Override - public void setSupportZoom(Long instanceId, Boolean support) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setSupportZoom(@NonNull Long instanceId, @NonNull Boolean support) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setSupportZoom(support); } @Override - public void setLoadWithOverviewMode(Long instanceId, Boolean overview) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setLoadWithOverviewMode(@NonNull Long instanceId, @NonNull Boolean overview) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setLoadWithOverviewMode(overview); } @Override - public void setUseWideViewPort(Long instanceId, Boolean use) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setUseWideViewPort(@NonNull Long instanceId, @NonNull Boolean use) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setUseWideViewPort(use); } @Override - public void setDisplayZoomControls(Long instanceId, Boolean enabled) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setDisplayZoomControls(@NonNull Long instanceId, @NonNull Boolean enabled) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setDisplayZoomControls(enabled); } @Override - public void setBuiltInZoomControls(Long instanceId, Boolean enabled) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setBuiltInZoomControls(@NonNull Long instanceId, @NonNull Boolean enabled) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setBuiltInZoomControls(enabled); } @Override - public void setAllowFileAccess(Long instanceId, Boolean enabled) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setAllowFileAccess(@NonNull Long instanceId, @NonNull Boolean enabled) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setAllowFileAccess(enabled); } @Override - public void setTextZoom(Long instanceId, Long textZoom) { - final WebSettings webSettings = (WebSettings) instanceManager.getInstance(instanceId); + public void setTextZoom(@NonNull Long instanceId, @NonNull Long textZoom) { + final WebSettings webSettings = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webSettings.setTextZoom(textZoom.intValue()); } } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java index c06f2bc5796..ceaa7679750 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java @@ -5,7 +5,9 @@ package io.flutter.plugins.webviewflutter; import android.webkit.WebStorage; +import androidx.annotation.NonNull; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.WebStorageHostApi; +import java.util.Objects; /** * Host api implementation for {@link WebStorage}. @@ -41,13 +43,13 @@ public WebStorageHostApiImpl( } @Override - public void create(Long instanceId) { + public void create(@NonNull Long instanceId) { instanceManager.addDartCreatedInstance(webStorageCreator.createWebStorage(), instanceId); } @Override - public void deleteAllData(Long instanceId) { - final WebStorage webStorage = (WebStorage) instanceManager.getInstance(instanceId); + public void deleteAllData(@NonNull Long instanceId) { + final WebStorage webStorage = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webStorage.deleteAllData(); } } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java index aad569dc47c..2a3a44e20bf 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java @@ -23,7 +23,10 @@ *

Passes arguments of callbacks methods from a {@link WebViewClient} to Dart. */ public class WebViewClientFlutterApiImpl extends WebViewClientFlutterApi { + // To ease adding additional methods, this value is added prematurely. + @SuppressWarnings({"unused", "FieldCanBeLocal"}) private final BinaryMessenger binaryMessenger; + private final InstanceManager instanceManager; private final WebViewFlutterApiImpl webViewFlutterApi; diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 79c0210ec56..09a34f2d4a8 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -59,8 +59,6 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc flutterApi.onReceivedRequestError(this, view, request, error, reply -> {}); } - // Legacy codepath for < 23; newer versions use the variant above. - @SuppressWarnings("deprecation") @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { @@ -74,8 +72,6 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request return returnValueForShouldOverrideUrlLoading; } - // Legacy codepath for < 24; newer versions use the variant above. - @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); @@ -129,8 +125,6 @@ public void onReceivedError( flutterApi.onReceivedRequestError(this, view, request, error, reply -> {}); } - // Legacy codepath for versions that don't support the variant above. - @SuppressWarnings("deprecation") @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { @@ -146,8 +140,6 @@ public boolean shouldOverrideUrlLoading( return returnValueForShouldOverrideUrlLoading; } - // Legacy codepath for < Lollipop; newer versions use the variant above. - @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java index 9f41a4dcb73..b4e813a2137 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java @@ -10,7 +10,6 @@ import android.os.Build; import android.view.View; import android.view.ViewParent; -import android.webkit.DownloadListener; import android.webkit.WebChromeClient; import android.webkit.WebView; import android.webkit.WebViewClient; @@ -205,111 +204,122 @@ public void create(@NonNull Long instanceId) { } @Override - public void loadData(Long instanceId, String data, String mimeType, String encoding) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void loadData( + @NonNull Long instanceId, + @NonNull String data, + @Nullable String mimeType, + @Nullable String encoding) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.loadData(data, mimeType, encoding); } @Override public void loadDataWithBaseUrl( - Long instanceId, - String baseUrl, - String data, - String mimeType, - String encoding, - String historyUrl) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + @NonNull Long instanceId, + @Nullable String baseUrl, + @NonNull String data, + @Nullable String mimeType, + @Nullable String encoding, + @Nullable String historyUrl) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); } @Override - public void loadUrl(Long instanceId, String url, Map headers) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void loadUrl( + @NonNull Long instanceId, @NonNull String url, @NonNull Map headers) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.loadUrl(url, headers); } @Override - public void postUrl(Long instanceId, String url, byte[] data) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void postUrl(@NonNull Long instanceId, @NonNull String url, @NonNull byte[] data) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.postUrl(url, data); } @Override - public String getUrl(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public String getUrl(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); return webView.getUrl(); } + @NonNull @Override - public Boolean canGoBack(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public Boolean canGoBack(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); return webView.canGoBack(); } + @NonNull @Override - public Boolean canGoForward(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public Boolean canGoForward(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); return webView.canGoForward(); } @Override - public void goBack(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void goBack(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.goBack(); } @Override - public void goForward(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void goForward(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.goForward(); } @Override - public void reload(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void reload(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.reload(); } @Override - public void clearCache(Long instanceId, Boolean includeDiskFiles) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void clearCache(@NonNull Long instanceId, @NonNull Boolean includeDiskFiles) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.clearCache(includeDiskFiles); } @Override public void evaluateJavascript( - Long instanceId, String javascriptString, GeneratedAndroidWebView.Result result) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + @NonNull Long instanceId, + @NonNull String javascriptString, + @NonNull GeneratedAndroidWebView.Result result) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.evaluateJavascript(javascriptString, result::success); } @Override - public String getTitle(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public String getTitle(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); return webView.getTitle(); } @Override - public void scrollTo(Long instanceId, Long x, Long y) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void scrollTo(@NonNull Long instanceId, Long x, Long y) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.scrollTo(x.intValue(), y.intValue()); } @Override - public void scrollBy(Long instanceId, Long x, Long y) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void scrollBy(@NonNull Long instanceId, Long x, Long y) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.scrollBy(x.intValue(), y.intValue()); } + @NonNull @Override - public Long getScrollX(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public Long getScrollX(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); return (long) webView.getScrollX(); } + @NonNull @Override - public Long getScrollY(Long instanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public Long getScrollY(@NonNull Long instanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); return (long) webView.getScrollY(); } @@ -324,47 +334,50 @@ public GeneratedAndroidWebView.WebViewPoint getScrollPosition(@NonNull Long inst } @Override - public void setWebContentsDebuggingEnabled(Boolean enabled) { + public void setWebContentsDebuggingEnabled(@NonNull Boolean enabled) { webViewProxy.setWebContentsDebuggingEnabled(enabled); } @Override - public void setWebViewClient(Long instanceId, Long webViewClientInstanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); - webView.setWebViewClient((WebViewClient) instanceManager.getInstance(webViewClientInstanceId)); + public void setWebViewClient(@NonNull Long instanceId, @NonNull Long webViewClientInstanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); + webView.setWebViewClient(instanceManager.getInstance(webViewClientInstanceId)); } + @SuppressLint("JavascriptInterface") @Override - public void addJavaScriptChannel(Long instanceId, Long javaScriptChannelInstanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void addJavaScriptChannel( + @NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); final JavaScriptChannel javaScriptChannel = - (JavaScriptChannel) instanceManager.getInstance(javaScriptChannelInstanceId); + Objects.requireNonNull(instanceManager.getInstance(javaScriptChannelInstanceId)); webView.addJavascriptInterface(javaScriptChannel, javaScriptChannel.javaScriptChannelName); } @Override - public void removeJavaScriptChannel(Long instanceId, Long javaScriptChannelInstanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void removeJavaScriptChannel( + @NonNull Long instanceId, @NonNull Long javaScriptChannelInstanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); final JavaScriptChannel javaScriptChannel = - (JavaScriptChannel) instanceManager.getInstance(javaScriptChannelInstanceId); + Objects.requireNonNull((instanceManager.getInstance(javaScriptChannelInstanceId))); webView.removeJavascriptInterface(javaScriptChannel.javaScriptChannelName); } @Override - public void setDownloadListener(Long instanceId, Long listenerInstanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); - webView.setDownloadListener((DownloadListener) instanceManager.getInstance(listenerInstanceId)); + public void setDownloadListener(@NonNull Long instanceId, Long listenerInstanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); + webView.setDownloadListener(instanceManager.getInstance(listenerInstanceId)); } @Override - public void setWebChromeClient(Long instanceId, Long clientInstanceId) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); - webView.setWebChromeClient((WebChromeClient) instanceManager.getInstance(clientInstanceId)); + public void setWebChromeClient(@NonNull Long instanceId, Long clientInstanceId) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); + webView.setWebChromeClient(instanceManager.getInstance(clientInstanceId)); } @Override - public void setBackgroundColor(Long instanceId, Long color) { - final WebView webView = (WebView) instanceManager.getInstance(instanceId); + public void setBackgroundColor(@NonNull Long instanceId, Long color) { + final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.setBackgroundColor(color.intValue()); } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java index 79edf9c06f2..11cdddfd333 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java @@ -33,8 +33,7 @@ public void setup() { when(cookieManager.hasCookies()).thenReturn(true); doAnswer( answer -> { - @SuppressWarnings("unchecked") - ValueCallback callback = (ValueCallback) answer.getArgument(0); + ValueCallback callback = answer.getArgument(0); (callback).onReceiveValue(true); return null; }) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewTest.java index b57cd7867ef..e0e641ac35a 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewTest.java @@ -21,6 +21,7 @@ import android.webkit.ValueCallback; import android.webkit.WebChromeClient; import android.webkit.WebViewClient; +import androidx.annotation.NonNull; import io.flutter.embedding.android.FlutterView; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.WebViewFlutterApi; @@ -175,7 +176,7 @@ public void success(String result) { } @Override - public void error(Throwable error) {} + public void error(@NonNull Throwable error) {} }); @SuppressWarnings("unchecked") diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java index 31e7d58ee13..7d455dc7af1 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java @@ -14,6 +14,7 @@ public static void setFinalStatic(Class classToModify, String fieldName, Field field = classToModify.getField(fieldName); field.setAccessible(true); + //noinspection JavaReflectionMemberAccess Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); @@ -24,24 +25,24 @@ public static void setFinalStatic(Class classToModify, String fieldName, } } - public static void setPrivateField(T instance, String fieldName, Object newValue) { - try { - Field field = instance.getClass().getDeclaredField(fieldName); - field.setAccessible(true); - field.set(instance, newValue); - } catch (Exception e) { - Assert.fail("Unable to mock private field: " + fieldName); - } - } - - public static Object getPrivateField(T instance, String fieldName) { - try { - Field field = instance.getClass().getDeclaredField(fieldName); - field.setAccessible(true); - return field.get(instance); - } catch (Exception e) { - Assert.fail("Unable to mock private field: " + fieldName); - return null; - } - } + // public static void setPrivateField(T instance, String fieldName, Object newValue) { + // try { + // Field field = instance.getClass().getDeclaredField(fieldName); + // field.setAccessible(true); + // field.set(instance, newValue); + // } catch (Exception e) { + // Assert.fail("Unable to mock private field: " + fieldName); + // } + // } + // + // public static Object getPrivateField(T instance, String fieldName) { + // try { + // Field field = instance.getClass().getDeclaredField(fieldName); + // field.setAccessible(true); + // return field.get(instance); + // } catch (Exception e) { + // Assert.fail("Unable to mock private field: " + fieldName); + // return null; + // } + // } } diff --git a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart index d2976a86a8e..bfcb81c0367 100644 --- a/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/lib/src/android_webview.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v9.0.5), do not edit directly. +// Autogenerated from Pigeon (v9.2.4), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index 37b38268374..ac696aac8e4 100644 --- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml @@ -29,4 +29,4 @@ dev_dependencies: flutter_test: sdk: flutter mockito: 5.4.0 - pigeon: ^9.0.4 + pigeon: ^9.2.4 diff --git a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart index 33ab0ecabca..6b0c31ab1c1 100644 --- a/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart +++ b/packages/webview_flutter/webview_flutter_android/test/test_android_webview.g.dart @@ -1,7 +1,7 @@ // Copyright 2013 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -// Autogenerated from Pigeon (v9.0.5), do not edit directly. +// Autogenerated from Pigeon (v9.2.4), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, unnecessary_import // ignore_for_file: avoid_relative_lib_imports @@ -15,6 +15,8 @@ import 'package:webview_flutter_android/src/android_webview.g.dart'; /// Host API for managing the native `InstanceManager`. abstract class TestInstanceManagerHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); /// Clear the native `InstanceManager`. @@ -29,9 +31,12 @@ abstract class TestInstanceManagerHostApi { 'dev.flutter.pigeon.InstanceManagerHostApi.clear', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { // ignore message api.clear(); return []; @@ -47,6 +52,8 @@ abstract class TestInstanceManagerHostApi { /// /// See https://docs.oracle.com/javase/7/docs/api/java/lang/Object.html. abstract class TestJavaObjectHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void dispose(int identifier); @@ -58,9 +65,12 @@ abstract class TestJavaObjectHostApi { 'dev.flutter.pigeon.JavaObjectHostApi.dispose', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.JavaObjectHostApi.dispose was null.'); final List args = (message as List?)!; @@ -99,6 +109,8 @@ class _TestWebViewHostApiCodec extends StandardMessageCodec { } abstract class TestWebViewHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = _TestWebViewHostApiCodec(); void create(int instanceId); @@ -162,9 +174,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.create was null.'); final List args = (message as List?)!; @@ -181,9 +196,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.loadData', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.loadData was null.'); final List args = (message as List?)!; @@ -205,9 +223,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.loadDataWithBaseUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.loadDataWithBaseUrl was null.'); final List args = (message as List?)!; @@ -232,9 +253,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.loadUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.loadUrl was null.'); final List args = (message as List?)!; @@ -258,9 +282,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.postUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.postUrl was null.'); final List args = (message as List?)!; @@ -283,9 +310,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.getUrl', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.getUrl was null.'); final List args = (message as List?)!; @@ -302,9 +332,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.canGoBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.canGoBack was null.'); final List args = (message as List?)!; @@ -321,9 +354,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.canGoForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.canGoForward was null.'); final List args = (message as List?)!; @@ -340,9 +376,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.goBack', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.goBack was null.'); final List args = (message as List?)!; @@ -359,9 +398,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.goForward', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.goForward was null.'); final List args = (message as List?)!; @@ -378,9 +420,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.reload', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.reload was null.'); final List args = (message as List?)!; @@ -397,9 +442,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.clearCache', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.clearCache was null.'); final List args = (message as List?)!; @@ -419,9 +467,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.evaluateJavascript', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.evaluateJavascript was null.'); final List args = (message as List?)!; @@ -442,9 +493,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.getTitle', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.getTitle was null.'); final List args = (message as List?)!; @@ -461,9 +515,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.scrollTo', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.scrollTo was null.'); final List args = (message as List?)!; @@ -486,9 +543,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.scrollBy', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.scrollBy was null.'); final List args = (message as List?)!; @@ -511,9 +571,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.getScrollX', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollX was null.'); final List args = (message as List?)!; @@ -530,9 +593,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.getScrollY', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollY was null.'); final List args = (message as List?)!; @@ -549,9 +615,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.getScrollPosition', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.getScrollPosition was null.'); final List args = (message as List?)!; @@ -569,9 +638,12 @@ abstract class TestWebViewHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.setWebContentsDebuggingEnabled was null.'); final List args = (message as List?)!; @@ -588,9 +660,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.setWebViewClient', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.setWebViewClient was null.'); final List args = (message as List?)!; @@ -610,9 +685,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.addJavaScriptChannel was null.'); final List args = (message as List?)!; @@ -633,9 +711,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.removeJavaScriptChannel was null.'); final List args = (message as List?)!; @@ -656,9 +737,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.setDownloadListener', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.setDownloadListener was null.'); final List args = (message as List?)!; @@ -676,9 +760,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.setWebChromeClient', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.setWebChromeClient was null.'); final List args = (message as List?)!; @@ -696,9 +783,12 @@ abstract class TestWebViewHostApi { 'dev.flutter.pigeon.WebViewHostApi.setBackgroundColor', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewHostApi.setBackgroundColor was null.'); final List args = (message as List?)!; @@ -717,6 +807,8 @@ abstract class TestWebViewHostApi { } abstract class TestWebSettingsHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId, int webViewInstanceId); @@ -754,9 +846,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.create was null.'); final List args = (message as List?)!; @@ -776,9 +871,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDomStorageEnabled was null.'); final List args = (message as List?)!; @@ -799,9 +897,12 @@ abstract class TestWebSettingsHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptCanOpenWindowsAutomatically was null.'); final List args = (message as List?)!; @@ -823,9 +924,12 @@ abstract class TestWebSettingsHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportMultipleWindows was null.'); final List args = (message as List?)!; @@ -845,9 +949,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setJavaScriptEnabled was null.'); final List args = (message as List?)!; @@ -867,9 +974,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUserAgentString was null.'); final List args = (message as List?)!; @@ -888,9 +998,12 @@ abstract class TestWebSettingsHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setMediaPlaybackRequiresUserGesture was null.'); final List args = (message as List?)!; @@ -911,9 +1024,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setSupportZoom was null.'); final List args = (message as List?)!; @@ -934,9 +1050,12 @@ abstract class TestWebSettingsHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setLoadWithOverviewMode was null.'); final List args = (message as List?)!; @@ -956,9 +1075,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setUseWideViewPort was null.'); final List args = (message as List?)!; @@ -978,9 +1100,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setDisplayZoomControls was null.'); final List args = (message as List?)!; @@ -1000,9 +1125,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setBuiltInZoomControls was null.'); final List args = (message as List?)!; @@ -1022,9 +1150,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setAllowFileAccess', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setAllowFileAccess was null.'); final List args = (message as List?)!; @@ -1044,9 +1175,12 @@ abstract class TestWebSettingsHostApi { 'dev.flutter.pigeon.WebSettingsHostApi.setTextZoom', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebSettingsHostApi.setTextZoom was null.'); final List args = (message as List?)!; @@ -1065,6 +1199,8 @@ abstract class TestWebSettingsHostApi { } abstract class TestJavaScriptChannelHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId, String channelName); @@ -1076,9 +1212,12 @@ abstract class TestJavaScriptChannelHostApi { 'dev.flutter.pigeon.JavaScriptChannelHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.JavaScriptChannelHostApi.create was null.'); final List args = (message as List?)!; @@ -1097,6 +1236,8 @@ abstract class TestJavaScriptChannelHostApi { } abstract class TestWebViewClientHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); @@ -1111,9 +1252,12 @@ abstract class TestWebViewClientHostApi { 'dev.flutter.pigeon.WebViewClientHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewClientHostApi.create was null.'); final List args = (message as List?)!; @@ -1131,9 +1275,12 @@ abstract class TestWebViewClientHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebViewClientHostApi.setSynchronousReturnValueForShouldOverrideUrlLoading was null.'); final List args = (message as List?)!; @@ -1153,6 +1300,8 @@ abstract class TestWebViewClientHostApi { } abstract class TestDownloadListenerHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); @@ -1164,9 +1313,12 @@ abstract class TestDownloadListenerHostApi { 'dev.flutter.pigeon.DownloadListenerHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.DownloadListenerHostApi.create was null.'); final List args = (message as List?)!; @@ -1182,6 +1334,8 @@ abstract class TestDownloadListenerHostApi { } abstract class TestWebChromeClientHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); @@ -1196,9 +1350,12 @@ abstract class TestWebChromeClientHostApi { 'dev.flutter.pigeon.WebChromeClientHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebChromeClientHostApi.create was null.'); final List args = (message as List?)!; @@ -1216,9 +1373,12 @@ abstract class TestWebChromeClientHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebChromeClientHostApi.setSynchronousReturnValueForOnShowFileChooser was null.'); final List args = (message as List?)!; @@ -1238,6 +1398,8 @@ abstract class TestWebChromeClientHostApi { } abstract class TestAssetManagerHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); List list(String path); @@ -1251,9 +1413,12 @@ abstract class TestAssetManagerHostApi { 'dev.flutter.pigeon.FlutterAssetManagerHostApi.list', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.FlutterAssetManagerHostApi.list was null.'); final List args = (message as List?)!; @@ -1271,9 +1436,12 @@ abstract class TestAssetManagerHostApi { codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.FlutterAssetManagerHostApi.getAssetFilePathByName was null.'); final List args = (message as List?)!; @@ -1289,6 +1457,8 @@ abstract class TestAssetManagerHostApi { } abstract class TestWebStorageHostApi { + static TestDefaultBinaryMessengerBinding? get _testBinaryMessengerBinding => + TestDefaultBinaryMessengerBinding.instance; static const MessageCodec codec = StandardMessageCodec(); void create(int instanceId); @@ -1302,9 +1472,12 @@ abstract class TestWebStorageHostApi { 'dev.flutter.pigeon.WebStorageHostApi.create', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebStorageHostApi.create was null.'); final List args = (message as List?)!; @@ -1321,9 +1494,12 @@ abstract class TestWebStorageHostApi { 'dev.flutter.pigeon.WebStorageHostApi.deleteAllData', codec, binaryMessenger: binaryMessenger); if (api == null) { - channel.setMockMessageHandler(null); + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, null); } else { - channel.setMockMessageHandler((Object? message) async { + _testBinaryMessengerBinding!.defaultBinaryMessenger + .setMockDecodedMessageHandler(channel, + (Object? message) async { assert(message != null, 'Argument for dev.flutter.pigeon.WebStorageHostApi.deleteAllData was null.'); final List args = (message as List?)!; From b1b67574ea5a113e1e54123bda63410b770a955c Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 10:37:12 -0400 Subject: [PATCH 02/13] Fix warning maybe --- .../plugins/webviewflutter/CookieManagerHostApiImpl.java | 2 +- .../plugins/webviewflutter/WebChromeClientHostApiImpl.java | 1 + .../plugins/webviewflutter/WebViewClientHostApiImpl.java | 4 ++++ .../plugins/webviewflutter/CookieManagerHostApiImplTest.java | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java index 9cd785fc33f..c82e19c0706 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java @@ -32,7 +32,7 @@ public void setCookie(@NonNull String url, @NonNull String value) { * @param cookieManager The cookie manager to clear all cookies from. * @return Whether any cookies were removed. */ - @SuppressWarnings("deprecation") + @SuppressWarnings({"deprecation", "RedundantSuppression"}) private boolean removeCookiesPreL(CookieManager cookieManager) { final boolean hasCookies = cookieManager.hasCookies(); if (hasCookies) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java index f7564fbe5f7..014abeca741 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java @@ -131,6 +131,7 @@ public boolean shouldOverrideUrlLoading( } @Override + @SuppressWarnings({"deprecation", "RedundantSuppression"}) public boolean shouldOverrideUrlLoading(WebView windowWebView, String url) { if (!webViewClient.shouldOverrideUrlLoading(view, url)) { view.loadUrl(url); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 09a34f2d4a8..d01c8258312 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -60,6 +60,7 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc } @Override + @SuppressWarnings({"deprecation", "RedundantSuppression"}) public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { flutterApi.onReceivedError( @@ -73,6 +74,7 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request } @Override + @SuppressWarnings({"deprecation", "RedundantSuppression"}) public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; @@ -126,6 +128,7 @@ public void onReceivedError( } @Override + @SuppressWarnings({"deprecation", "RedundantSuppression"}) public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { flutterApi.onReceivedError( @@ -141,6 +144,7 @@ public boolean shouldOverrideUrlLoading( } @Override + @SuppressWarnings({"deprecation", "RedundantSuppression"}) public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java index 11cdddfd333..fa3d3932015 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java @@ -71,7 +71,7 @@ public void clearCookiesShouldCallRemoveAllCookiesOnAndroidLAbove() { } @Test - @SuppressWarnings("deprecation") + @SuppressWarnings({"deprecation", "RedundantSuppression"}) public void clearCookiesShouldCallRemoveAllCookieBelowAndroidL() { // Setup TestUtils.setFinalStatic(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.KITKAT_WATCH); From b3c64bdd4be855d8f5e5a7bea58a0918d103ab2d Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 10:38:00 -0400 Subject: [PATCH 03/13] version bump --- packages/webview_flutter/webview_flutter_android/CHANGELOG.md | 3 ++- packages/webview_flutter/webview_flutter_android/pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 953ec4dbfce..9e6fa3edcb6 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -1,7 +1,8 @@ -## NEXT +## 3.4.6 * Bumps androidx.webkit:webkit from 1.6.0 to 1.6.1. * Fixes common typos in tests and documentation. +* Fixes Android lint warnings. ## 3.4.5 diff --git a/packages/webview_flutter/webview_flutter_android/pubspec.yaml b/packages/webview_flutter/webview_flutter_android/pubspec.yaml index ac696aac8e4..cfdbd0d8c96 100644 --- a/packages/webview_flutter/webview_flutter_android/pubspec.yaml +++ b/packages/webview_flutter/webview_flutter_android/pubspec.yaml @@ -2,7 +2,7 @@ name: webview_flutter_android description: A Flutter plugin that provides a WebView widget on Android. repository: https://github.com/flutter/packages/tree/main/packages/webview_flutter/webview_flutter_android issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+webview%22 -version: 3.4.5 +version: 3.4.6 environment: sdk: ">=2.18.0 <4.0.0" From 0501ea2f47492170c926c9c2b2637eadc6a48ef6 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 10:39:16 -0400 Subject: [PATCH 04/13] add pigeon update --- packages/webview_flutter/webview_flutter_android/CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 9e6fa3edcb6..2d168a6053c 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -2,6 +2,7 @@ * Bumps androidx.webkit:webkit from 1.6.0 to 1.6.1. * Fixes common typos in tests and documentation. +* Updates pigeon dev dependency to `9.2.4`. * Fixes Android lint warnings. ## 3.4.5 From fb85d08f3e97ed97a200c15d244c16c53a9a3a8f Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 10:41:38 -0400 Subject: [PATCH 05/13] remove unused code --- .../webviewflutter/utils/TestUtils.java | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java index 7d455dc7af1..122e616ebdc 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java @@ -24,25 +24,4 @@ public static void setFinalStatic(Class classToModify, String fieldName, Assert.fail("Unable to mock static field: " + fieldName); } } - - // public static void setPrivateField(T instance, String fieldName, Object newValue) { - // try { - // Field field = instance.getClass().getDeclaredField(fieldName); - // field.setAccessible(true); - // field.set(instance, newValue); - // } catch (Exception e) { - // Assert.fail("Unable to mock private field: " + fieldName); - // } - // } - // - // public static Object getPrivateField(T instance, String fieldName) { - // try { - // Field field = instance.getClass().getDeclaredField(fieldName); - // field.setAccessible(true); - // return field.get(instance); - // } catch (Exception e) { - // Assert.fail("Unable to mock private field: " + fieldName); - // return null; - // } - // } } From 12dd7a721d07738a7c417c1c9365fd7bc233a660 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 11:08:39 -0400 Subject: [PATCH 06/13] fix tests --- .../io/flutter/plugins/webviewflutter/WebSettingsTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebSettingsTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebSettingsTest.java index 3abb4247c18..5c7c7a6f470 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebSettingsTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebSettingsTest.java @@ -5,10 +5,12 @@ package io.flutter.plugins.webviewflutter; import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import android.webkit.WebSettings; +import android.webkit.WebView; import io.flutter.plugins.webviewflutter.WebSettingsHostApiImpl.WebSettingsCreator; import org.junit.After; import org.junit.Before; @@ -34,7 +36,9 @@ public void setUp() { when(mockWebSettingsCreator.createWebSettings(any())).thenReturn(mockWebSettings); testHostApiImpl = new WebSettingsHostApiImpl(testInstanceManager, mockWebSettingsCreator); - testHostApiImpl.create(0L, 0L); + + testInstanceManager.addDartCreatedInstance(mock(WebView.class), 1); + testHostApiImpl.create(0L, 1L); } @After From e19410cb339e851313cd6a256db74f8cca431cde Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Mon, 10 Apr 2023 14:32:47 -0400 Subject: [PATCH 07/13] fix casting --- .../flutter/plugins/webviewflutter/FlutterWebViewFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java index d1cd87034c9..ec99e996ae0 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebViewFactory.java @@ -22,7 +22,7 @@ class FlutterWebViewFactory extends PlatformViewFactory { @NonNull @Override public PlatformView create(Context context, int viewId, @Nullable Object args) { - final Long identifier = (Long) args; + final Integer identifier = (Integer) args; if (identifier == null) { throw new IllegalStateException("An identifier is required to retrieve WebView instance."); } From a3cd5a19b1e40feff7e02b5abf3cd24573c74406 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 11 Apr 2023 14:43:01 -0400 Subject: [PATCH 08/13] remove redundant suppressions and non-linter suppressions --- .../webviewflutter/CookieManagerHostApiImpl.java | 2 +- .../plugins/webviewflutter/DisplayListenerProxy.java | 3 --- .../webviewflutter/WebViewClientHostApiImpl.java | 12 ++++++++---- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java index c82e19c0706..9cd785fc33f 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImpl.java @@ -32,7 +32,7 @@ public void setCookie(@NonNull String url, @NonNull String value) { * @param cookieManager The cookie manager to clear all cookies from. * @return Whether any cookies were removed. */ - @SuppressWarnings({"deprecation", "RedundantSuppression"}) + @SuppressWarnings("deprecation") private boolean removeCookiesPreL(CookieManager cookieManager) { final boolean hasCookies = cookieManager.hasCookies(); if (hasCookies) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java index c04fb4a8f3e..d33a4bd4c12 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DisplayListenerProxy.java @@ -116,11 +116,9 @@ private static ArrayList yoinkDisplayListeners(DisplayManager d return new ArrayList<>(); } try { - //noinspection JavaReflectionMemberAccess Field displayManagerGlobalField = DisplayManager.class.getDeclaredField("mGlobal"); displayManagerGlobalField.setAccessible(true); Object displayManagerGlobal = displayManagerGlobalField.get(displayManager); - //noinspection ConstantConditions Field displayListenersField = displayManagerGlobal.getClass().getDeclaredField("mDisplayListeners"); displayListenersField.setAccessible(true); @@ -129,7 +127,6 @@ private static ArrayList yoinkDisplayListeners(DisplayManager d Field listenerField = null; ArrayList listeners = new ArrayList<>(); - //noinspection ConstantConditions for (Object delegate : delegates) { if (listenerField == null) { listenerField = delegate.getClass().getField("mListener"); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index d01c8258312..502e127c8ab 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -59,8 +59,9 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc flutterApi.onReceivedRequestError(this, view, request, error, reply -> {}); } + // Legacy codepath for < 23; newer versions use the variant above. @Override - @SuppressWarnings({"deprecation", "RedundantSuppression"}) + @SuppressWarnings("deprecation") public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { flutterApi.onReceivedError( @@ -73,8 +74,9 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request return returnValueForShouldOverrideUrlLoading; } + // Legacy codepath for < 23; newer versions use the variant above. @Override - @SuppressWarnings({"deprecation", "RedundantSuppression"}) + @SuppressWarnings("deprecation") public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; @@ -127,8 +129,9 @@ public void onReceivedError( flutterApi.onReceivedRequestError(this, view, request, error, reply -> {}); } + // Legacy codepath for < 23; newer versions use the variant above. @Override - @SuppressWarnings({"deprecation", "RedundantSuppression"}) + @SuppressWarnings("deprecation") public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { flutterApi.onReceivedError( @@ -143,8 +146,9 @@ public boolean shouldOverrideUrlLoading( return returnValueForShouldOverrideUrlLoading; } + // Legacy codepath for < 23; newer versions use the variant above. @Override - @SuppressWarnings({"deprecation", "RedundantSuppression"}) + @SuppressWarnings("deprecation") public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; From ed2b59b641925ecc095ea536034ae60cd8d82e50 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 11 Apr 2023 14:49:25 -0400 Subject: [PATCH 09/13] change annotation order --- .../plugins/webviewflutter/WebViewClientHostApiImpl.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 502e127c8ab..9a4df759f23 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -60,8 +60,8 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc } // Legacy codepath for < 23; newer versions use the variant above. - @Override @SuppressWarnings("deprecation") + @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { flutterApi.onReceivedError( @@ -75,8 +75,8 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request } // Legacy codepath for < 23; newer versions use the variant above. - @Override @SuppressWarnings("deprecation") + @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; @@ -130,8 +130,8 @@ public void onReceivedError( } // Legacy codepath for < 23; newer versions use the variant above. - @Override @SuppressWarnings("deprecation") + @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { flutterApi.onReceivedError( @@ -147,8 +147,8 @@ public boolean shouldOverrideUrlLoading( } // Legacy codepath for < 23; newer versions use the variant above. - @Override @SuppressWarnings("deprecation") + @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; From becc5d1a102147536c71af9622dcf85d04eb7234 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Tue, 11 Apr 2023 15:05:42 -0400 Subject: [PATCH 10/13] some annotation changes --- .../plugins/webviewflutter/WebViewClientHostApiImpl.java | 6 +++--- .../webviewflutter/CookieManagerHostApiImplTest.java | 2 +- .../io/flutter/plugins/webviewflutter/utils/TestUtils.java | 1 - 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 9a4df759f23..79c0210ec56 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -74,7 +74,7 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request return returnValueForShouldOverrideUrlLoading; } - // Legacy codepath for < 23; newer versions use the variant above. + // Legacy codepath for < 24; newer versions use the variant above. @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { @@ -129,7 +129,7 @@ public void onReceivedError( flutterApi.onReceivedRequestError(this, view, request, error, reply -> {}); } - // Legacy codepath for < 23; newer versions use the variant above. + // Legacy codepath for versions that don't support the variant above. @SuppressWarnings("deprecation") @Override public void onReceivedError( @@ -146,7 +146,7 @@ public boolean shouldOverrideUrlLoading( return returnValueForShouldOverrideUrlLoading; } - // Legacy codepath for < 23; newer versions use the variant above. + // Legacy codepath for < Lollipop; newer versions use the variant above. @SuppressWarnings("deprecation") @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java index fa3d3932015..11cdddfd333 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/CookieManagerHostApiImplTest.java @@ -71,7 +71,7 @@ public void clearCookiesShouldCallRemoveAllCookiesOnAndroidLAbove() { } @Test - @SuppressWarnings({"deprecation", "RedundantSuppression"}) + @SuppressWarnings("deprecation") public void clearCookiesShouldCallRemoveAllCookieBelowAndroidL() { // Setup TestUtils.setFinalStatic(Build.VERSION.class, "SDK_INT", Build.VERSION_CODES.KITKAT_WATCH); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java index 122e616ebdc..deebc417564 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/utils/TestUtils.java @@ -14,7 +14,6 @@ public static void setFinalStatic(Class classToModify, String fieldName, Field field = classToModify.getField(fieldName); field.setAccessible(true); - //noinspection JavaReflectionMemberAccess Field modifiersField = Field.class.getDeclaredField("modifiers"); modifiersField.setAccessible(true); modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL); From 5b96a1ae7a0f25938f5d34618a875ce2e578fe68 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:16:45 -0400 Subject: [PATCH 11/13] remove baseline --- .../android/build.gradle | 1 - .../android/lint-baseline.xml | 4107 ----------------- 2 files changed, 4108 deletions(-) delete mode 100644 packages/webview_flutter/webview_flutter_android/android/lint-baseline.xml diff --git a/packages/webview_flutter/webview_flutter_android/android/build.gradle b/packages/webview_flutter/webview_flutter_android/android/build.gradle index 540c208a189..92b34660863 100644 --- a/packages/webview_flutter/webview_flutter_android/android/build.gradle +++ b/packages/webview_flutter/webview_flutter_android/android/build.gradle @@ -33,7 +33,6 @@ android { checkAllWarnings true warningsAsErrors true disable 'AndroidGradlePluginVersion', 'InvalidPackage', 'GradleDependency' - baseline file("lint-baseline.xml") } dependencies { diff --git a/packages/webview_flutter/webview_flutter_android/android/lint-baseline.xml b/packages/webview_flutter/webview_flutter_android/android/lint-baseline.xml deleted file mode 100644 index 10821e05e8b..00000000000 --- a/packages/webview_flutter/webview_flutter_android/android/lint-baseline.xml +++ /dev/null @@ -1,4107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - From 3704cc041e9a9a457a667d0857df74a1734fc3ec Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Wed, 12 Apr 2023 14:54:57 -0400 Subject: [PATCH 12/13] fix rest of lint errors --- .../DownloadListenerFlutterApiImpl.java | 15 ++--- .../DownloadListenerHostApiImpl.java | 18 +++--- .../FileChooserParamsFlutterApiImpl.java | 6 +- .../FlutterAssetManagerHostApiImpl.java | 2 +- .../webviewflutter/InstanceManager.java | 12 ++-- .../webviewflutter/JavaObjectHostApiImpl.java | 2 +- .../webviewflutter/JavaScriptChannel.java | 6 +- .../JavaScriptChannelFlutterApiImpl.java | 7 ++- .../JavaScriptChannelHostApiImpl.java | 20 ++++--- .../WebChromeClientFlutterApiImpl.java | 16 +++-- .../WebChromeClientHostApiImpl.java | 30 ++++++---- .../WebSettingsHostApiImpl.java | 5 +- .../webviewflutter/WebStorageHostApiImpl.java | 3 +- .../WebViewClientFlutterApiImpl.java | 58 +++++++++++-------- .../WebViewClientHostApiImpl.java | 43 +++++++++----- .../WebViewFlutterAndroidExternalApi.java | 3 +- .../webviewflutter/WebViewFlutterPlugin.java | 3 +- .../webviewflutter/WebViewHostApiImpl.java | 43 +++++++++----- .../webviewflutter/WebChromeClientTest.java | 4 +- .../webviewflutter/WebViewClientTest.java | 9 ++- 20 files changed, 186 insertions(+), 119 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerFlutterApiImpl.java index 0d4797e9a1b..f1ddb3a4817 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerFlutterApiImpl.java @@ -5,6 +5,7 @@ package io.flutter.plugins.webviewflutter; import android.webkit.DownloadListener; +import androidx.annotation.NonNull; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.DownloadListenerFlutterApi; @@ -23,20 +24,20 @@ public class DownloadListenerFlutterApiImpl extends DownloadListenerFlutterApi { * @param instanceManager maintains instances stored to communicate with Dart objects */ public DownloadListenerFlutterApiImpl( - BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { super(binaryMessenger); this.instanceManager = instanceManager; } /** Passes arguments from {@link DownloadListener#onDownloadStart} to Dart. */ public void onDownloadStart( - DownloadListener downloadListener, - String url, - String userAgent, - String contentDisposition, - String mimetype, + @NonNull DownloadListener downloadListener, + @NonNull String url, + @NonNull String userAgent, + @NonNull String contentDisposition, + @NonNull String mimetype, long contentLength, - Reply callback) { + @NonNull Reply callback) { onDownloadStart( getIdentifierForListener(downloadListener), url, diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java index df2d32a4f97..09fffe0b8c1 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/DownloadListenerHostApiImpl.java @@ -35,10 +35,10 @@ public DownloadListenerImpl(@NonNull DownloadListenerFlutterApiImpl flutterApi) @Override public void onDownloadStart( - String url, - String userAgent, - String contentDisposition, - String mimetype, + @NonNull String url, + @NonNull String userAgent, + @NonNull String contentDisposition, + @NonNull String mimetype, long contentLength) { flutterApi.onDownloadStart( this, url, userAgent, contentDisposition, mimetype, contentLength, reply -> {}); @@ -53,7 +53,9 @@ public static class DownloadListenerCreator { * @param flutterApi handles sending messages to Dart * @return the created {@link DownloadListenerImpl} */ - public DownloadListenerImpl createDownloadListener(DownloadListenerFlutterApiImpl flutterApi) { + @NonNull + public DownloadListenerImpl createDownloadListener( + @NonNull DownloadListenerFlutterApiImpl flutterApi) { return new DownloadListenerImpl(flutterApi); } } @@ -66,9 +68,9 @@ public DownloadListenerImpl createDownloadListener(DownloadListenerFlutterApiImp * @param flutterApi handles sending messages to Dart */ public DownloadListenerHostApiImpl( - InstanceManager instanceManager, - DownloadListenerCreator downloadListenerCreator, - DownloadListenerFlutterApiImpl flutterApi) { + @NonNull InstanceManager instanceManager, + @NonNull DownloadListenerCreator downloadListenerCreator, + @NonNull DownloadListenerFlutterApiImpl flutterApi) { this.instanceManager = instanceManager; this.downloadListenerCreator = downloadListenerCreator; this.flutterApi = flutterApi; diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FileChooserParamsFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FileChooserParamsFlutterApiImpl.java index cacf3642c3e..626d868c69d 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FileChooserParamsFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FileChooserParamsFlutterApiImpl.java @@ -6,6 +6,7 @@ import android.os.Build; import android.webkit.WebChromeClient; +import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import io.flutter.plugin.common.BinaryMessenger; import java.util.Arrays; @@ -28,7 +29,7 @@ public class FileChooserParamsFlutterApiImpl * @param instanceManager maintains instances stored to communicate with Dart objects */ public FileChooserParamsFlutterApiImpl( - BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { super(binaryMessenger); this.instanceManager = instanceManager; } @@ -58,7 +59,8 @@ private static GeneratedAndroidWebView.FileChooserModeEnumData toFileChooserEnum * Stores the FileChooserParams instance and notifies Dart to create a new FileChooserParams * instance that is attached to this one. */ - public void create(WebChromeClient.FileChooserParams instance, Reply callback) { + public void create( + @NonNull WebChromeClient.FileChooserParams instance, @NonNull Reply callback) { if (!instanceManager.containsInstance(instance)) { create( instanceManager.addHostCreatedInstance(instance), diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java index da02ae53240..ba6d1e5fd57 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterAssetManagerHostApiImpl.java @@ -21,7 +21,7 @@ public class FlutterAssetManagerHostApiImpl implements FlutterAssetManagerHostAp final FlutterAssetManager flutterAssetManager; /** Constructs a new instance of {@link FlutterAssetManagerHostApiImpl}. */ - public FlutterAssetManagerHostApiImpl(FlutterAssetManager flutterAssetManager) { + public FlutterAssetManagerHostApiImpl(@NonNull FlutterAssetManager flutterAssetManager) { this.flutterAssetManager = flutterAssetManager; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/InstanceManager.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/InstanceManager.java index de51ebd0482..5fa19d21ce2 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/InstanceManager.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/InstanceManager.java @@ -7,6 +7,7 @@ import android.os.Handler; import android.os.Looper; import android.util.Log; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import java.lang.ref.ReferenceQueue; import java.lang.ref.WeakReference; @@ -69,7 +70,8 @@ public interface FinalizationListener { * @param finalizationListener the listener for garbage collected weak references. * @return a new `InstanceManager`. */ - public static InstanceManager open(FinalizationListener finalizationListener) { + @NonNull + public static InstanceManager open(@NonNull FinalizationListener finalizationListener) { return new InstanceManager(finalizationListener); } @@ -113,7 +115,7 @@ public T remove(long identifier) { * null if the manager doesn't contain the value or the manager is closed. */ @Nullable - public Long getIdentifierForStrongReference(Object instance) { + public Long getIdentifierForStrongReference(@Nullable Object instance) { if (assertNotClosed()) { return null; } @@ -137,7 +139,7 @@ public Long getIdentifierForStrongReference(Object instance) { * @param identifier the identifier to be paired with instance. This value must be >= 0 and * unique. */ - public void addDartCreatedInstance(Object instance, long identifier) { + public void addDartCreatedInstance(@NonNull Object instance, long identifier) { if (assertNotClosed()) { return; } @@ -151,7 +153,7 @@ public void addDartCreatedInstance(Object instance, long identifier) { * @return the unique identifier stored with instance. If the manager is closed, returns -1. * Otherwise, returns a value >= 0. */ - public long addHostCreatedInstance(Object instance) { + public long addHostCreatedInstance(@NonNull Object instance) { if (assertNotClosed()) { return INSTANCE_CLOSED; } @@ -193,7 +195,7 @@ public T getInstance(long identifier) { * @return whether this manager contains the given `instance`. If the manager is closed, returns * `false`. */ - public boolean containsInstance(Object instance) { + public boolean containsInstance(@Nullable Object instance) { if (assertNotClosed()) { return false; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaObjectHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaObjectHostApiImpl.java index 9cbf65b4c61..a10cd77852d 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaObjectHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaObjectHostApiImpl.java @@ -21,7 +21,7 @@ public class JavaObjectHostApiImpl implements GeneratedAndroidWebView.JavaObject * * @param instanceManager maintains instances stored to communicate with Dart objects */ - public JavaObjectHostApiImpl(InstanceManager instanceManager) { + public JavaObjectHostApiImpl(@NonNull InstanceManager instanceManager) { this.instanceManager = instanceManager; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java index 49421b75bdc..09dbfc9ab5d 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannel.java @@ -30,8 +30,8 @@ public class JavaScriptChannel { */ public JavaScriptChannel( @NonNull JavaScriptChannelFlutterApiImpl flutterApi, - String channelName, - Handler platformThreadHandler) { + @NonNull String channelName, + @NonNull Handler platformThreadHandler) { this.flutterApi = flutterApi; this.javaScriptChannelName = channelName; this.platformThreadHandler = platformThreadHandler; @@ -40,7 +40,7 @@ public JavaScriptChannel( // Suppressing unused warning as this is invoked from JavaScript. @SuppressWarnings("unused") @JavascriptInterface - public void postMessage(final String message) { + public void postMessage(@NonNull final String message) { final Runnable postMessageRunnable = () -> flutterApi.postMessage(JavaScriptChannel.this, message, reply -> {}); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelFlutterApiImpl.java index ca089269963..cd78f19a934 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelFlutterApiImpl.java @@ -4,6 +4,7 @@ package io.flutter.plugins.webviewflutter; +import androidx.annotation.NonNull; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaScriptChannelFlutterApi; @@ -22,14 +23,16 @@ public class JavaScriptChannelFlutterApiImpl extends JavaScriptChannelFlutterApi * @param instanceManager Maintains instances stored to communicate with Dart objects. */ public JavaScriptChannelFlutterApiImpl( - BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { super(binaryMessenger); this.instanceManager = instanceManager; } /** Passes arguments from {@link JavaScriptChannel#postMessage} to Dart. */ public void postMessage( - JavaScriptChannel javaScriptChannel, String messageArg, Reply callback) { + @NonNull JavaScriptChannel javaScriptChannel, + @NonNull String messageArg, + @NonNull Reply callback) { super.postMessage(getIdentifierForJavaScriptChannel(javaScriptChannel), messageArg, callback); } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelHostApiImpl.java index 44e3b8aa5a2..d4509338c78 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/JavaScriptChannelHostApiImpl.java @@ -5,6 +5,7 @@ package io.flutter.plugins.webviewflutter; import android.os.Handler; +import androidx.annotation.NonNull; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.JavaScriptChannelHostApi; /** @@ -29,10 +30,11 @@ public static class JavaScriptChannelCreator { * @param platformThreadHandler handles making callbacks on the desired thread * @return the created {@link JavaScriptChannel} */ + @NonNull public JavaScriptChannel createJavaScriptChannel( - JavaScriptChannelFlutterApiImpl flutterApi, - String channelName, - Handler platformThreadHandler) { + @NonNull JavaScriptChannelFlutterApiImpl flutterApi, + @NonNull String channelName, + @NonNull Handler platformThreadHandler) { return new JavaScriptChannel(flutterApi, channelName, platformThreadHandler); } } @@ -46,10 +48,10 @@ public JavaScriptChannel createJavaScriptChannel( * @param platformThreadHandler handles making callbacks on the desired thread */ public JavaScriptChannelHostApiImpl( - InstanceManager instanceManager, - JavaScriptChannelCreator javaScriptChannelCreator, - JavaScriptChannelFlutterApiImpl flutterApi, - Handler platformThreadHandler) { + @NonNull InstanceManager instanceManager, + @NonNull JavaScriptChannelCreator javaScriptChannelCreator, + @NonNull JavaScriptChannelFlutterApiImpl flutterApi, + @NonNull Handler platformThreadHandler) { this.instanceManager = instanceManager; this.javaScriptChannelCreator = javaScriptChannelCreator; this.flutterApi = flutterApi; @@ -61,12 +63,12 @@ public JavaScriptChannelHostApiImpl( * * @param platformThreadHandler the new thread handler */ - public void setPlatformThreadHandler(Handler platformThreadHandler) { + public void setPlatformThreadHandler(@NonNull Handler platformThreadHandler) { this.platformThreadHandler = platformThreadHandler; } @Override - public void create(Long instanceId, String channelName) { + public void create(@NonNull Long instanceId, @NonNull String channelName) { final JavaScriptChannel javaScriptChannel = javaScriptChannelCreator.createJavaScriptChannel( flutterApi, channelName, platformThreadHandler); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientFlutterApiImpl.java index ece8e62e8b9..c13e4ae6a46 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientFlutterApiImpl.java @@ -7,6 +7,7 @@ import android.os.Build; import android.webkit.WebChromeClient; import android.webkit.WebView; +import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import io.flutter.plugin.common.BinaryMessenger; import io.flutter.plugins.webviewflutter.GeneratedAndroidWebView.WebChromeClientFlutterApi; @@ -30,7 +31,7 @@ public class WebChromeClientFlutterApiImpl extends WebChromeClientFlutterApi { * @param instanceManager maintains instances stored to communicate with Dart objects */ public WebChromeClientFlutterApiImpl( - BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { super(binaryMessenger); this.binaryMessenger = binaryMessenger; this.instanceManager = instanceManager; @@ -39,7 +40,10 @@ public WebChromeClientFlutterApiImpl( /** Passes arguments from {@link WebChromeClient#onProgressChanged} to Dart. */ public void onProgressChanged( - WebChromeClient webChromeClient, WebView webView, Long progress, Reply callback) { + @NonNull WebChromeClient webChromeClient, + @NonNull WebView webView, + @NonNull Long progress, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -51,10 +55,10 @@ public void onProgressChanged( /** Passes arguments from {@link WebChromeClient#onShowFileChooser} to Dart. */ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void onShowFileChooser( - WebChromeClient webChromeClient, - WebView webView, - WebChromeClient.FileChooserParams fileChooserParams, - Reply> callback) { + @NonNull WebChromeClient webChromeClient, + @NonNull WebView webView, + @NonNull WebChromeClient.FileChooserParams fileChooserParams, + @NonNull Reply> callback) { webViewFlutterApi.create(webView, reply -> {}); new FileChooserParamsFlutterApiImpl(binaryMessenger, instanceManager) diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java index 014abeca741..8c35581ddc9 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebChromeClientHostApiImpl.java @@ -46,16 +46,17 @@ public WebChromeClientImpl(@NonNull WebChromeClientFlutterApiImpl flutterApi) { } @Override - public void onProgressChanged(WebView view, int progress) { + public void onProgressChanged(@NonNull WebView view, int progress) { flutterApi.onProgressChanged(this, view, (long) progress, reply -> {}); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) + @SuppressWarnings("LambdaLast") @Override public boolean onShowFileChooser( - WebView webView, - ValueCallback filePathCallback, - FileChooserParams fileChooserParams) { + @NonNull WebView webView, + @NonNull ValueCallback filePathCallback, + @NonNull FileChooserParams fileChooserParams) { final boolean currentReturnValueForOnShowFileChooser = returnValueForOnShowFileChooser; flutterApi.onShowFileChooser( this, @@ -86,11 +87,14 @@ public void setReturnValueForOnShowFileChooser(boolean value) { * window. */ public static class SecureWebChromeClient extends WebChromeClient { - @Nullable private WebViewClient webViewClient; + @Nullable WebViewClient webViewClient; @Override public boolean onCreateWindow( - final WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) { + @NonNull final WebView view, + boolean isDialog, + boolean isUserGesture, + @NonNull Message resultMsg) { return onCreateWindow(view, resultMsg, new WebView(view.getContext())); } @@ -109,7 +113,9 @@ public boolean onCreateWindow( */ @VisibleForTesting boolean onCreateWindow( - final WebView view, Message resultMsg, @Nullable WebView onCreateWindowWebView) { + @NonNull final WebView view, + @NonNull Message resultMsg, + @Nullable WebView onCreateWindowWebView) { // WebChromeClient 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 @@ -171,7 +177,9 @@ public static class WebChromeClientCreator { * @param flutterApi handles sending messages to Dart * @return the created {@link WebChromeClientHostApiImpl.WebChromeClientImpl} */ - public WebChromeClientImpl createWebChromeClient(WebChromeClientFlutterApiImpl flutterApi) { + @NonNull + public WebChromeClientImpl createWebChromeClient( + @NonNull WebChromeClientFlutterApiImpl flutterApi) { return new WebChromeClientImpl(flutterApi); } } @@ -184,9 +192,9 @@ public WebChromeClientImpl createWebChromeClient(WebChromeClientFlutterApiImpl f * @param flutterApi handles sending messages to Dart */ public WebChromeClientHostApiImpl( - InstanceManager instanceManager, - WebChromeClientCreator webChromeClientCreator, - WebChromeClientFlutterApiImpl flutterApi) { + @NonNull InstanceManager instanceManager, + @NonNull WebChromeClientCreator webChromeClientCreator, + @NonNull WebChromeClientFlutterApiImpl flutterApi) { this.instanceManager = instanceManager; this.webChromeClientCreator = webChromeClientCreator; this.flutterApi = flutterApi; diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java index 2cba3fbd356..3a6b151fa71 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebSettingsHostApiImpl.java @@ -28,7 +28,8 @@ public static class WebSettingsCreator { * @param webView the {@link WebView} which the settings affect * @return the created {@link WebSettings} */ - public WebSettings createWebSettings(WebView webView) { + @NonNull + public WebSettings createWebSettings(@NonNull WebView webView) { return webView.getSettings(); } } @@ -40,7 +41,7 @@ public WebSettings createWebSettings(WebView webView) { * @param webSettingsCreator handles creating {@link WebSettings}s */ public WebSettingsHostApiImpl( - InstanceManager instanceManager, WebSettingsCreator webSettingsCreator) { + @NonNull InstanceManager instanceManager, @NonNull WebSettingsCreator webSettingsCreator) { this.instanceManager = instanceManager; this.webSettingsCreator = webSettingsCreator; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java index ceaa7679750..036a395eaa5 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebStorageHostApiImpl.java @@ -25,6 +25,7 @@ public static class WebStorageCreator { * * @return the created {@link WebStorage}. Defaults to {@link WebStorage#getInstance} */ + @NonNull public WebStorage createWebStorage() { return WebStorage.getInstance(); } @@ -37,7 +38,7 @@ public WebStorage createWebStorage() { * @param webStorageCreator handles creating {@link WebStorage}s */ public WebStorageHostApiImpl( - InstanceManager instanceManager, WebStorageCreator webStorageCreator) { + @NonNull InstanceManager instanceManager, @NonNull WebStorageCreator webStorageCreator) { this.instanceManager = instanceManager; this.webStorageCreator = webStorageCreator; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java index 2a3a44e20bf..789b438c2ae 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientFlutterApiImpl.java @@ -10,6 +10,7 @@ import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient; +import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; import androidx.webkit.WebResourceErrorCompat; import io.flutter.plugin.common.BinaryMessenger; @@ -75,7 +76,7 @@ static GeneratedAndroidWebView.WebResourceRequestData createWebResourceRequestDa * @param instanceManager maintains instances stored to communicate with Dart objects */ public WebViewClientFlutterApiImpl( - BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull BinaryMessenger binaryMessenger, @NonNull InstanceManager instanceManager) { super(binaryMessenger); this.binaryMessenger = binaryMessenger; this.instanceManager = instanceManager; @@ -84,7 +85,10 @@ public WebViewClientFlutterApiImpl( /** Passes arguments from {@link WebViewClient#onPageStarted} to Dart. */ public void onPageStarted( - WebViewClient webViewClient, WebView webView, String urlArg, Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull String urlArg, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -94,7 +98,10 @@ public void onPageStarted( /** Passes arguments from {@link WebViewClient#onPageFinished} to Dart. */ public void onPageFinished( - WebViewClient webViewClient, WebView webView, String urlArg, Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull String urlArg, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -108,11 +115,11 @@ public void onPageFinished( */ @RequiresApi(api = Build.VERSION_CODES.M) public void onReceivedRequestError( - WebViewClient webViewClient, - WebView webView, - WebResourceRequest request, - WebResourceError error, - Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull WebResourceRequest request, + @NonNull WebResourceError error, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -131,11 +138,11 @@ public void onReceivedRequestError( */ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void onReceivedRequestError( - WebViewClient webViewClient, - WebView webView, - WebResourceRequest request, - WebResourceErrorCompat error, - Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull WebResourceRequest request, + @NonNull WebResourceErrorCompat error, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -153,12 +160,12 @@ public void onReceivedRequestError( * Dart. */ public void onReceivedError( - WebViewClient webViewClient, - WebView webView, - Long errorCodeArg, - String descriptionArg, - String failingUrlArg, - Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull Long errorCodeArg, + @NonNull String descriptionArg, + @NonNull String failingUrlArg, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -178,10 +185,10 @@ public void onReceivedError( */ @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public void requestLoading( - WebViewClient webViewClient, - WebView webView, - WebResourceRequest request, - Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull WebResourceRequest request, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = @@ -197,7 +204,10 @@ public void requestLoading( * Passes arguments from {@link WebViewClient#shouldOverrideUrlLoading(WebView, String)} to Dart. */ public void urlLoading( - WebViewClient webViewClient, WebView webView, String urlArg, Reply callback) { + @NonNull WebViewClient webViewClient, + @NonNull WebView webView, + @NonNull String urlArg, + @NonNull Reply callback) { webViewFlutterApi.create(webView, reply -> {}); final Long webViewIdentifier = diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java index 79c0210ec56..d491b549f1d 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewClientHostApiImpl.java @@ -45,17 +45,20 @@ public WebViewClientImpl(@NonNull WebViewClientFlutterApiImpl flutterApi) { } @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { + public void onPageStarted(@NonNull WebView view, @NonNull String url, @NonNull Bitmap favicon) { flutterApi.onPageStarted(this, view, url, reply -> {}); } @Override - public void onPageFinished(WebView view, String url) { + public void onPageFinished(@NonNull WebView view, @NonNull String url) { flutterApi.onPageFinished(this, view, url, reply -> {}); } @Override - public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) { + public void onReceivedError( + @NonNull WebView view, + @NonNull WebResourceRequest request, + @NonNull WebResourceError error) { flutterApi.onReceivedRequestError(this, view, request, error, reply -> {}); } @@ -63,13 +66,17 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc @SuppressWarnings("deprecation") @Override public void onReceivedError( - WebView view, int errorCode, String description, String failingUrl) { + @NonNull WebView view, + int errorCode, + @NonNull String description, + @NonNull String failingUrl) { flutterApi.onReceivedError( this, view, (long) errorCode, description, failingUrl, reply -> {}); } @Override - public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { + public boolean shouldOverrideUrlLoading( + @NonNull WebView view, @NonNull WebResourceRequest request) { flutterApi.requestLoading(this, view, request, reply -> {}); return returnValueForShouldOverrideUrlLoading; } @@ -77,13 +84,13 @@ public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request // Legacy codepath for < 24; newer versions use the variant above. @SuppressWarnings("deprecation") @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { + public boolean shouldOverrideUrlLoading(@NonNull WebView view, @NonNull String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; } @Override - public void onUnhandledKeyEvent(WebView view, KeyEvent event) { + public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be // handled even though they were handled. We don't want to propagate those as they're not // truly lost. @@ -108,12 +115,12 @@ public WebViewClientCompatImpl(@NonNull WebViewClientFlutterApiImpl flutterApi) } @Override - public void onPageStarted(WebView view, String url, Bitmap favicon) { + public void onPageStarted(@NonNull WebView view, @NonNull String url, @NonNull Bitmap favicon) { flutterApi.onPageStarted(this, view, url, reply -> {}); } @Override - public void onPageFinished(WebView view, String url) { + public void onPageFinished(@NonNull WebView view, @NonNull String url) { flutterApi.onPageFinished(this, view, url, reply -> {}); } @@ -133,7 +140,10 @@ public void onReceivedError( @SuppressWarnings("deprecation") @Override public void onReceivedError( - WebView view, int errorCode, String description, String failingUrl) { + @NonNull WebView view, + int errorCode, + @NonNull String description, + @NonNull String failingUrl) { flutterApi.onReceivedError( this, view, (long) errorCode, description, failingUrl, reply -> {}); } @@ -149,13 +159,13 @@ public boolean shouldOverrideUrlLoading( // Legacy codepath for < Lollipop; newer versions use the variant above. @SuppressWarnings("deprecation") @Override - public boolean shouldOverrideUrlLoading(WebView view, String url) { + public boolean shouldOverrideUrlLoading(@NonNull WebView view, @NonNull String url) { flutterApi.urlLoading(this, view, url, reply -> {}); return returnValueForShouldOverrideUrlLoading; } @Override - public void onUnhandledKeyEvent(WebView view, KeyEvent event) { + public void onUnhandledKeyEvent(@NonNull WebView view, @NonNull KeyEvent event) { // Deliberately empty. Occasionally the webview will mark events as having failed to be // handled even though they were handled. We don't want to propagate those as they're not // truly lost. @@ -175,7 +185,8 @@ public static class WebViewClientCreator { * @param flutterApi handles sending messages to Dart * @return the created {@link WebViewClient} */ - public WebViewClient createWebViewClient(WebViewClientFlutterApiImpl flutterApi) { + @NonNull + public WebViewClient createWebViewClient(@NonNull WebViewClientFlutterApiImpl flutterApi) { // WebViewClientCompat is used to get // shouldOverrideUrlLoading(WebView view, WebResourceRequest request) // invoked by the webview on older Android devices, without it pages that use iframes will @@ -200,9 +211,9 @@ public WebViewClient createWebViewClient(WebViewClientFlutterApiImpl flutterApi) * @param flutterApi handles sending messages to Dart */ public WebViewClientHostApiImpl( - InstanceManager instanceManager, - WebViewClientCreator webViewClientCreator, - WebViewClientFlutterApiImpl flutterApi) { + @NonNull InstanceManager instanceManager, + @NonNull WebViewClientCreator webViewClientCreator, + @NonNull WebViewClientFlutterApiImpl flutterApi) { this.instanceManager = instanceManager; this.webViewClientCreator = webViewClientCreator; this.flutterApi = flutterApi; diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterAndroidExternalApi.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterAndroidExternalApi.java index 3819d7b26f6..9542e3d3dca 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterAndroidExternalApi.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterAndroidExternalApi.java @@ -5,6 +5,7 @@ package io.flutter.plugins.webviewflutter; import android.webkit.WebView; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import io.flutter.embedding.engine.FlutterEngine; @@ -34,7 +35,7 @@ public interface WebViewFlutterAndroidExternalApi { * with `identifier` could not be found. */ @Nullable - static WebView getWebView(FlutterEngine engine, long identifier) { + static WebView getWebView(@NonNull FlutterEngine engine, long identifier) { final WebViewFlutterPlugin webViewPlugin = (WebViewFlutterPlugin) engine.getPlugins().get(WebViewFlutterPlugin.class); diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java index 8067f895bca..d1c239c3636 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java @@ -61,7 +61,8 @@ public WebViewFlutterPlugin() {} * won't react to changes in activity or context, unlike {@link WebViewFlutterPlugin}. */ @SuppressWarnings({"unused", "deprecation"}) - public static void registerWith(io.flutter.plugin.common.PluginRegistry.Registrar registrar) { + public static void registerWith( + @NonNull io.flutter.plugin.common.PluginRegistry.Registrar registrar) { new WebViewFlutterPlugin() .setUp( registrar.messenger(), diff --git a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java index b4e813a2137..14c2b3db5d6 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewHostApiImpl.java @@ -46,8 +46,11 @@ public static class WebViewProxy { * in Dart * @return the created {@link WebViewPlatformView} */ + @NonNull public WebViewPlatformView createWebView( - Context context, BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull Context context, + @NonNull BinaryMessenger binaryMessenger, + @NonNull InstanceManager instanceManager) { return new WebViewPlatformView(context, binaryMessenger, instanceManager); } @@ -77,7 +80,9 @@ public static class WebViewPlatformView extends WebView implements PlatformView * @param context an Activity Context to access application assets. This value cannot be null. */ public WebViewPlatformView( - Context context, BinaryMessenger binaryMessenger, InstanceManager instanceManager) { + @NonNull Context context, + @NonNull BinaryMessenger binaryMessenger, + @NonNull InstanceManager instanceManager) { super(context); currentWebViewClient = new WebViewClient(); currentWebChromeClient = new WebChromeClientHostApiImpl.SecureWebChromeClient(); @@ -87,6 +92,7 @@ public WebViewPlatformView( setWebChromeClient(currentWebChromeClient); } + @Nullable @Override public View getView() { return this; @@ -125,14 +131,14 @@ private FlutterView tryFindFlutterView() { } @Override - public void setWebViewClient(WebViewClient webViewClient) { + public void setWebViewClient(@NonNull WebViewClient webViewClient) { super.setWebViewClient(webViewClient); currentWebViewClient = webViewClient; currentWebChromeClient.setWebViewClient(webViewClient); } @Override - public void setWebChromeClient(WebChromeClient client) { + public void setWebChromeClient(@Nullable WebChromeClient client) { super.setWebChromeClient(client); if (!(client instanceof WebChromeClientHostApiImpl.SecureWebChromeClient)) { throw new AssertionError("Client must be a SecureWebChromeClient."); @@ -171,10 +177,10 @@ void setApi(WebViewFlutterApiImpl api) { * @param context an Activity Context to access application assets. This value cannot be null. */ public WebViewHostApiImpl( - InstanceManager instanceManager, - BinaryMessenger binaryMessenger, - WebViewProxy webViewProxy, - Context context) { + @NonNull InstanceManager instanceManager, + @NonNull BinaryMessenger binaryMessenger, + @NonNull WebViewProxy webViewProxy, + @Nullable Context context) { this.instanceManager = instanceManager; this.binaryMessenger = binaryMessenger; this.webViewProxy = webViewProxy; @@ -186,7 +192,7 @@ public WebViewHostApiImpl( * * @param context the new context. */ - public void setContext(Context context) { + public void setContext(@Nullable Context context) { this.context = context; } @@ -238,6 +244,7 @@ public void postUrl(@NonNull Long instanceId, @NonNull String url, @NonNull byte webView.postUrl(url, data); } + @Nullable @Override public String getUrl(@NonNull Long instanceId) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); @@ -291,6 +298,7 @@ public void evaluateJavascript( webView.evaluateJavascript(javascriptString, result::success); } + @Nullable @Override public String getTitle(@NonNull Long instanceId) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); @@ -298,13 +306,13 @@ public String getTitle(@NonNull Long instanceId) { } @Override - public void scrollTo(@NonNull Long instanceId, Long x, Long y) { + public void scrollTo(@NonNull Long instanceId, @NonNull Long x, @NonNull Long y) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.scrollTo(x.intValue(), y.intValue()); } @Override - public void scrollBy(@NonNull Long instanceId, Long x, Long y) { + public void scrollBy(@NonNull Long instanceId, @NonNull Long x, @NonNull Long y) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.scrollBy(x.intValue(), y.intValue()); } @@ -364,24 +372,27 @@ public void removeJavaScriptChannel( } @Override - public void setDownloadListener(@NonNull Long instanceId, Long listenerInstanceId) { + public void setDownloadListener(@NonNull Long instanceId, @Nullable Long listenerInstanceId) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); - webView.setDownloadListener(instanceManager.getInstance(listenerInstanceId)); + webView.setDownloadListener( + instanceManager.getInstance(Objects.requireNonNull(listenerInstanceId))); } @Override - public void setWebChromeClient(@NonNull Long instanceId, Long clientInstanceId) { + public void setWebChromeClient(@NonNull Long instanceId, @Nullable Long clientInstanceId) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); - webView.setWebChromeClient(instanceManager.getInstance(clientInstanceId)); + webView.setWebChromeClient( + instanceManager.getInstance(Objects.requireNonNull(clientInstanceId))); } @Override - public void setBackgroundColor(@NonNull Long instanceId, Long color) { + public void setBackgroundColor(@NonNull Long instanceId, @NonNull Long color) { final WebView webView = Objects.requireNonNull(instanceManager.getInstance(instanceId)); webView.setBackgroundColor(color.intValue()); } /** Maintains instances used to communicate with the corresponding WebView Dart object. */ + @NonNull public InstanceManager getInstanceManager() { return instanceManager; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java index be301fa49ea..f7a174091a9 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebChromeClientTest.java @@ -19,6 +19,7 @@ import android.webkit.WebView; import android.webkit.WebView.WebViewTransport; import android.webkit.WebViewClient; +import androidx.annotation.NonNull; import io.flutter.plugins.webviewflutter.WebChromeClientHostApiImpl.WebChromeClientCreator; import io.flutter.plugins.webviewflutter.WebChromeClientHostApiImpl.WebChromeClientImpl; import org.junit.After; @@ -50,8 +51,9 @@ public void setUp() { final WebChromeClientCreator webChromeClientCreator = new WebChromeClientCreator() { @Override + @NonNull public WebChromeClientImpl createWebChromeClient( - WebChromeClientFlutterApiImpl flutterApi) { + @NonNull WebChromeClientFlutterApiImpl flutterApi) { webChromeClient = super.createWebChromeClient(flutterApi); return webChromeClient; } diff --git a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewClientTest.java b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewClientTest.java index f9e836e4510..359487e17c6 100644 --- a/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewClientTest.java +++ b/packages/webview_flutter/webview_flutter_android/android/src/test/java/io/flutter/plugins/webviewflutter/WebViewClientTest.java @@ -15,6 +15,7 @@ import android.webkit.WebResourceRequest; import android.webkit.WebView; import android.webkit.WebViewClient; +import androidx.annotation.NonNull; import io.flutter.plugins.webviewflutter.WebViewClientHostApiImpl.WebViewClientCompatImpl; import io.flutter.plugins.webviewflutter.WebViewClientHostApiImpl.WebViewClientCreator; import java.util.HashMap; @@ -46,7 +47,9 @@ public void setUp() { final WebViewClientCreator webViewClientCreator = new WebViewClientCreator() { @Override - public WebViewClient createWebViewClient(WebViewClientFlutterApiImpl flutterApi) { + @NonNull + public WebViewClient createWebViewClient( + @NonNull WebViewClientFlutterApiImpl flutterApi) { webViewClient = (WebViewClientCompatImpl) super.createWebViewClient(flutterApi); return webViewClient; } @@ -111,8 +114,10 @@ public void setReturnValueForShouldOverrideUrlLoading() { new WebViewClientHostApiImpl( instanceManager, new WebViewClientCreator() { + @NonNull @Override - public WebViewClient createWebViewClient(WebViewClientFlutterApiImpl flutterApi) { + public WebViewClient createWebViewClient( + @NonNull WebViewClientFlutterApiImpl flutterApi) { return mockWebViewClient; } }, From 29d5fe97cfa6ed5600bfaff9b058f183b4e07a50 Mon Sep 17 00:00:00 2001 From: Maurice Parrish <10687576+bparrishMines@users.noreply.github.com> Date: Thu, 13 Apr 2023 12:07:28 -0400 Subject: [PATCH 13/13] remove pubspec error --- packages/webview_flutter/webview_flutter_android/CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md index 454df3fbc28..1e1796de73b 100644 --- a/packages/webview_flutter/webview_flutter_android/CHANGELOG.md +++ b/packages/webview_flutter/webview_flutter_android/CHANGELOG.md @@ -8,8 +8,6 @@ * Adds support for `PlatformNavigationDelegate.onUrlChange`. * Bumps androidx.webkit:webkit from 1.6.0 to 1.6.1. * Fixes common typos in tests and documentation. -* Updates pigeon dev dependency to `9.2.4`. -* Fixes Android lint warnings. ## 3.4.5