diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md index 56c4dd9e0bf2..4270e11ba090 100644 --- a/packages/webview_flutter/CHANGELOG.md +++ b/packages/webview_flutter/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.2 + +* Android Code Inspection and Clean up. + ## 1.0.1 * Add documentation for `WebViewPlatformCreatedCallback`. diff --git a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java index 9bec8fa0ef13..bfb79a39e8ba 100644 --- a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java +++ b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/FlutterWebView.java @@ -103,13 +103,16 @@ public boolean shouldOverrideUrlLoading(WebView view, String url) { methodChannel.setMethodCallHandler(this); flutterWebViewClient = new FlutterWebViewClient(methodChannel); - applySettings((Map) params.get("settings")); + Map settings = (Map) params.get("settings"); + if (settings != null) applySettings(settings); if (params.containsKey(JS_CHANNEL_NAMES_FIELD)) { - registerJavaScriptChannelNames((List) params.get(JS_CHANNEL_NAMES_FIELD)); + List names = (List) params.get(JS_CHANNEL_NAMES_FIELD); + if (names != null) registerJavaScriptChannelNames(names); } - updateAutoMediaPlaybackPolicy((Integer) params.get("autoMediaPlaybackPolicy")); + Integer autoMediaPlaybackPolicy = (Integer) params.get("autoMediaPlaybackPolicy"); + if (autoMediaPlaybackPolicy != null) updateAutoMediaPlaybackPolicy(autoMediaPlaybackPolicy); if (params.containsKey("userAgent")) { String userAgent = (String) params.get("userAgent"); updateUserAgent(userAgent); @@ -316,7 +319,7 @@ private void getTitle(Result result) { } private void scrollTo(MethodCall methodCall, Result result) { - Map request = (Map) methodCall.arguments; + Map request = methodCall.arguments(); int x = (int) request.get("x"); int y = (int) request.get("y"); @@ -326,7 +329,7 @@ private void scrollTo(MethodCall methodCall, Result result) { } private void scrollBy(MethodCall methodCall, Result result) { - Map request = (Map) methodCall.arguments; + Map request = methodCall.arguments(); int x = (int) request.get("x"); int y = (int) request.get("y"); @@ -346,7 +349,8 @@ private void applySettings(Map settings) { for (String key : settings.keySet()) { switch (key) { case "jsMode": - updateJsMode((Integer) settings.get(key)); + Integer mode = (Integer) settings.get(key); + if (mode != null) updateJsMode(mode); break; case "hasNavigationDelegate": final boolean hasNavigationDelegate = (boolean) settings.get(key); @@ -359,7 +363,9 @@ private void applySettings(Map settings) { case "debuggingEnabled": final boolean debuggingEnabled = (boolean) settings.get(key); - webView.setWebContentsDebuggingEnabled(debuggingEnabled); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + webView.setWebContentsDebuggingEnabled(debuggingEnabled); + } break; case "gestureNavigationEnabled": break; @@ -389,7 +395,9 @@ private void updateAutoMediaPlaybackPolicy(int mode) { // This is the index of the AutoMediaPlaybackPolicy enum, index 1 is always_allow, for all // other values we require a user gesture. boolean requireUserGesture = mode != 1; - webView.getSettings().setMediaPlaybackRequiresUserGesture(requireUserGesture); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { + webView.getSettings().setMediaPlaybackRequiresUserGesture(requireUserGesture); + } } private void registerJavaScriptChannelNames(List channelNames) { diff --git a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/InputAwareWebView.java b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/InputAwareWebView.java index 0aa2f58f743d..9b81a5b7cc6b 100644 --- a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/InputAwareWebView.java +++ b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/InputAwareWebView.java @@ -222,9 +222,9 @@ && isCalledFromListPopupWindowShow() private boolean isCalledFromListPopupWindowShow() { StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); - for (int i = 0; i < stackTraceElements.length; i++) { - if (stackTraceElements[i].getClassName().equals(ListPopupWindow.class.getCanonicalName()) - && stackTraceElements[i].getMethodName().equals("show")) { + for (StackTraceElement stackTraceElement : stackTraceElements) { + if (stackTraceElement.getClassName().equals(ListPopupWindow.class.getCanonicalName()) + && stackTraceElement.getMethodName().equals("show")) { return true; } } diff --git a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java index 5ed2da3046c3..2de8fdf94bc4 100644 --- a/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java +++ b/packages/webview_flutter/android/src/main/java/io/flutter/plugins/webviewflutter/WebViewFlutterPlugin.java @@ -54,9 +54,7 @@ public static void registerWith(io.flutter.plugin.common.PluginRegistry.Registra public void onAttachedToEngine(FlutterPluginBinding binding) { BinaryMessenger messenger = binding.getBinaryMessenger(); binding - .getFlutterEngine() - .getPlatformViewsController() - .getRegistry() + .getPlatformViewRegistry() .registerViewFactory( "plugins.flutter.io/webview", new WebViewFactory(messenger, /*containerView=*/ null)); flutterCookieManager = new FlutterCookieManager(messenger); diff --git a/packages/webview_flutter/pubspec.yaml b/packages/webview_flutter/pubspec.yaml index a38d328af680..ad1c356a67df 100644 --- a/packages/webview_flutter/pubspec.yaml +++ b/packages/webview_flutter/pubspec.yaml @@ -1,6 +1,6 @@ name: webview_flutter description: A Flutter plugin that provides a WebView widget on Android and iOS. -version: 1.0.1 +version: 1.0.2 homepage: https://github.com/flutter/plugins/tree/master/packages/webview_flutter environment: