Android Code Inspection and Clean up (#3117)

diff --git a/packages/webview_flutter/CHANGELOG.md b/packages/webview_flutter/CHANGELOG.md
index 56c4dd9..4270e11 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 9bec8fa..bfb79a3 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 @@
     methodChannel.setMethodCallHandler(this);
 
     flutterWebViewClient = new FlutterWebViewClient(methodChannel);
-    applySettings((Map<String, Object>) params.get("settings"));
+    Map<String, Object> settings = (Map<String, Object>) params.get("settings");
+    if (settings != null) applySettings(settings);
 
     if (params.containsKey(JS_CHANNEL_NAMES_FIELD)) {
-      registerJavaScriptChannelNames((List<String>) params.get(JS_CHANNEL_NAMES_FIELD));
+      List<String> names = (List<String>) 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 scrollTo(MethodCall methodCall, Result result) {
-    Map<String, Object> request = (Map<String, Object>) methodCall.arguments;
+    Map<String, Object> request = methodCall.arguments();
     int x = (int) request.get("x");
     int y = (int) request.get("y");
 
@@ -326,7 +329,7 @@
   }
 
   private void scrollBy(MethodCall methodCall, Result result) {
-    Map<String, Object> request = (Map<String, Object>) methodCall.arguments;
+    Map<String, Object> request = methodCall.arguments();
     int x = (int) request.get("x");
     int y = (int) request.get("y");
 
@@ -346,7 +349,8 @@
     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 @@
         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 @@
     // 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<String> 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 0aa2f58..9b81a5b 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 @@
 
   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 5ed2da3..2de8fdf 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 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 a38d328..ad1c356 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: