Potentially Call to dangerous WebView settings API

Description

List of all WebView methods used in the application.

Recommendation

If your application accesses sensitive data with a WebView, you may want to use the clearCache() method to delete any files stored locally.

Any URI received via an intent from outside a trust-boundary should be validated before rendering it with WebView

Technical details
[TAINT] Const '1' ==>>> Sink '['Landroid/webkit/WebSettings;', 'setJavaScriptEnabled', '(Z)V', '0', 'HTTP_NETWORKING_SINK']' [[('Lcom/ionicframework/cordova/webview/IonicWebViewEngine;', 'init', '(Lorg/apache/cordova/CordovaWebView; Lorg/apache/cordova/CordovaInterface; Lorg/apache/cordova/CordovaWebViewEngine$Client; Lorg/apache/cordova/CordovaResourceApi; Lorg/apache/cordova/PluginManager; Lorg/apache/cordova/NativeToJsMessageQueue;)V'), ('Lorg/apache/cordova/engine/SystemWebViewEngine;', 'init', '(Lorg/apache/cordova/CordovaWebView; Lorg/apache/cordova/CordovaInterface; Lorg/apache/cordova/CordovaWebViewEngine$Client; Lorg/apache/cordova/CordovaResourceApi; Lorg/apache/cordova/PluginManager; Lorg/apache/cordova/NativeToJsMessageQueue;)V'), ('Lorg/apache/cordova/engine/SystemWebViewEngine;', 'initWebViewSettings', '()V'), ('Landroid/webkit/WebSettings;', 'setJavaScriptEnabled', '(Z)V')]]

JavaScript in Webview is enabled. setJavaScriptEnabled is set to true:

Method com.ionicframework.cordova.webview.IonicWebViewEngine.init():


    public void init(org.apache.cordova.CordovaWebView p10, org.apache.cordova.CordovaInterface p11, org.apache.cordova.CordovaWebViewEngine$Client p12, org.apache.cordova.CordovaResourceApi p13, org.apache.cordova.PluginManager p14, org.apache.cordova.NativeToJsMessageQueue p15)
    {
        org.apache.cordova.ConfigXmlParser v1_1 = new org.apache.cordova.ConfigXmlParser();
        v1_1.parse(p11.getActivity());
        String v3 = this.preferences.getString("WKPort", "8080");
        this.CDV_LOCAL_SERVER = new StringBuilder().append("http://localhost:").append(v3).toString();
        this.localServer = new com.ionicframework.cordova.webview.WebViewLocalServer(p11.getActivity(), new StringBuilder().append("localhost:").append(v3).toString(), 1, v1_1);
        this.localServer.hostAssets("www");
        this.webView.setWebViewClient(new com.ionicframework.cordova.webview.IonicWebViewEngine$ServerClient(this, this, v1_1));
        void v9_1 = super.init(p10, p11, p12, p13, p14, p15);
        String v2 = p11.getActivity().getApplicationContext().getSharedPreferences("WebViewSettings", 0).getString("serverBasePath", 0);
        if ((!v9_1.isDeployDisabled()) && ((!v9_1.isNewBinary()) && ((v2 != null) && (!v2.isEmpty())))) {
            v9_1.setServerBasePath(v2);
        }
        return;
    }

Method org.apache.cordova.engine.SystemWebViewEngine.init():


    public void init(org.apache.cordova.CordovaWebView p3, org.apache.cordova.CordovaInterface p4, org.apache.cordova.CordovaWebViewEngine$Client p5, org.apache.cordova.CordovaResourceApi p6, org.apache.cordova.PluginManager p7, org.apache.cordova.NativeToJsMessageQueue p8)
    {
        if (this.cordova == null) {
            if (this.preferences == null) {
                this.preferences = p3.getPreferences();
            }
            this.parentWebView = p3;
            this.cordova = p4;
            this.client = p5;
            this.resourceApi = p6;
            this.pluginManager = p7;
            this.nativeToJsMessageQueue = p8;
            this.webView.init(this, p4);
            this.initWebViewSettings();
            p8.addBridgeMode(new org.apache.cordova.NativeToJsMessageQueue$OnlineEventsBridgeMode(new org.apache.cordova.engine.SystemWebViewEngine$1(this)));
            if (android.os.Build$VERSION.SDK_INT > 18) {
                p8.addBridgeMode(new org.apache.cordova.NativeToJsMessageQueue$EvalBridgeMode(this, p4));
            }
            this.bridge = new org.apache.cordova.CordovaBridge(p7, p8);
            org.apache.cordova.engine.SystemWebViewEngine.exposeJsInterface(this.webView, this.bridge);
            return;
        } else {
            throw new IllegalStateException();
        }
    }

Method org.apache.cordova.engine.SystemWebViewEngine.initWebViewSettings():


    private void initWebViewSettings()
    {
        this.webView.setInitialScale(0);
        this.webView.setVerticalScrollBarEnabled(0);
        android.webkit.WebSettings v9 = this.webView.getSettings();
        v9.setJavaScriptEnabled(1);
        v9.setJavaScriptCanOpenWindowsAutomatically(1);
        v9.setLayoutAlgorithm(android.webkit.WebSettings$LayoutAlgorithm.NORMAL);
        try {
            int v12_3 = new Class[1];
            v12_3[0] = Boolean.TYPE;
            reflect.Method v5 = android.webkit.WebSettings.getMethod("setNavDump", v12_3);
            org.apache.cordova.LOG.d("SystemWebViewEngine", new StringBuilder().append("CordovaWebView is running on device made by: ").append(android.os.Build.MANUFACTURER).toString());
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
            v9.setSaveFormData(0);
            v9.setSavePassword(0);
            if (android.os.Build$VERSION.SDK_INT >= 16) {
                v9.setAllowUniversalAccessFromFileURLs(1);
            }
            if (android.os.Build$VERSION.SDK_INT >= 17) {
                v9.setMediaPlaybackRequiresUserGesture(0);
            }
            String v2 = this.webView.getContext().getApplicationContext().getDir("database", 0).getPath();
            v9.setDatabaseEnabled(1);
            v9.setDatabasePath(v2);
            if (((this.webView.getContext().getApplicationContext().getApplicationInfo().flags & 2) != 0) && (android.os.Build$VERSION.SDK_INT >= 19)) {
                this.enableRemoteDebugging();
            }
            v9.setGeolocationDatabasePath(v2);
            v9.setDomStorageEnabled(1);
            v9.setGeolocationEnabled(1);
            v9.setAppCacheMaxSize(5242880);
            v9.setAppCachePath(v2);
            v9.setAppCacheEnabled(1);
            String v3 = v9.getUserAgentString();
            String v8 = this.preferences.getString("OverrideUserAgent", 0);
            if (v8 == null) {
                String v1 = this.preferences.getString("AppendUserAgent", 0);
                if (v1 != null) {
                    v9.setUserAgentString(new StringBuilder().append(v3).append(" ").append(v1).toString());
                }
            } else {
                v9.setUserAgentString(v8);
            }
            android.content.IntentFilter v6_1 = new android.content.IntentFilter();
            v6_1.addAction("android.intent.action.CONFIGURATION_CHANGED");
            if (this.receiver == null) {
                this.receiver = new org.apache.cordova.engine.SystemWebViewEngine$2(this, v9);
                this.webView.getContext().registerReceiver(this.receiver, v6_1);
            }
            return;
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "Doing the NavDump failed with bad arguments");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: IllegalAccessException means this isn\'t Android anymore");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: InvocationTargetException means this isn\'t Android anymore.");
        }
        if ((android.os.Build$VERSION.SDK_INT >= 11) || (!android.os.Build.MANUFACTURER.contains("HTC"))) {
        } else {
            android.content.Context v10_32 = new Object[1];
            v10_32[0] = Boolean.valueOf(1);
            v5.invoke(v9, v10_32);
        }
    }

Method android.webkit.WebSettings.setJavaScriptEnabled() not found.

[TAINT] Const '1' ==>>> Sink '['Landroid/webkit/WebSettings;', 'setJavaScriptEnabled', '(Z)V', '0', 'HTTP_NETWORKING_SINK']' [[('Lorg/apache/cordova/engine/SystemWebViewEngine;', 'init', '(Lorg/apache/cordova/CordovaWebView; Lorg/apache/cordova/CordovaInterface; Lorg/apache/cordova/CordovaWebViewEngine$Client; Lorg/apache/cordova/CordovaResourceApi; Lorg/apache/cordova/PluginManager; Lorg/apache/cordova/NativeToJsMessageQueue;)V'), ('Lorg/apache/cordova/engine/SystemWebViewEngine;', 'initWebViewSettings', '()V'), ('Landroid/webkit/WebSettings;', 'setJavaScriptEnabled', '(Z)V')]]

JavaScript in Webview is enabled. setJavaScriptEnabled is set to true:

Method org.apache.cordova.engine.SystemWebViewEngine.init():


    public void init(org.apache.cordova.CordovaWebView p3, org.apache.cordova.CordovaInterface p4, org.apache.cordova.CordovaWebViewEngine$Client p5, org.apache.cordova.CordovaResourceApi p6, org.apache.cordova.PluginManager p7, org.apache.cordova.NativeToJsMessageQueue p8)
    {
        if (this.cordova == null) {
            if (this.preferences == null) {
                this.preferences = p3.getPreferences();
            }
            this.parentWebView = p3;
            this.cordova = p4;
            this.client = p5;
            this.resourceApi = p6;
            this.pluginManager = p7;
            this.nativeToJsMessageQueue = p8;
            this.webView.init(this, p4);
            this.initWebViewSettings();
            p8.addBridgeMode(new org.apache.cordova.NativeToJsMessageQueue$OnlineEventsBridgeMode(new org.apache.cordova.engine.SystemWebViewEngine$1(this)));
            if (android.os.Build$VERSION.SDK_INT > 18) {
                p8.addBridgeMode(new org.apache.cordova.NativeToJsMessageQueue$EvalBridgeMode(this, p4));
            }
            this.bridge = new org.apache.cordova.CordovaBridge(p7, p8);
            org.apache.cordova.engine.SystemWebViewEngine.exposeJsInterface(this.webView, this.bridge);
            return;
        } else {
            throw new IllegalStateException();
        }
    }

Method org.apache.cordova.engine.SystemWebViewEngine.initWebViewSettings():


    private void initWebViewSettings()
    {
        this.webView.setInitialScale(0);
        this.webView.setVerticalScrollBarEnabled(0);
        android.webkit.WebSettings v9 = this.webView.getSettings();
        v9.setJavaScriptEnabled(1);
        v9.setJavaScriptCanOpenWindowsAutomatically(1);
        v9.setLayoutAlgorithm(android.webkit.WebSettings$LayoutAlgorithm.NORMAL);
        try {
            int v12_3 = new Class[1];
            v12_3[0] = Boolean.TYPE;
            reflect.Method v5 = android.webkit.WebSettings.getMethod("setNavDump", v12_3);
            org.apache.cordova.LOG.d("SystemWebViewEngine", new StringBuilder().append("CordovaWebView is running on device made by: ").append(android.os.Build.MANUFACTURER).toString());
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
            v9.setSaveFormData(0);
            v9.setSavePassword(0);
            if (android.os.Build$VERSION.SDK_INT >= 16) {
                v9.setAllowUniversalAccessFromFileURLs(1);
            }
            if (android.os.Build$VERSION.SDK_INT >= 17) {
                v9.setMediaPlaybackRequiresUserGesture(0);
            }
            String v2 = this.webView.getContext().getApplicationContext().getDir("database", 0).getPath();
            v9.setDatabaseEnabled(1);
            v9.setDatabasePath(v2);
            if (((this.webView.getContext().getApplicationContext().getApplicationInfo().flags & 2) != 0) && (android.os.Build$VERSION.SDK_INT >= 19)) {
                this.enableRemoteDebugging();
            }
            v9.setGeolocationDatabasePath(v2);
            v9.setDomStorageEnabled(1);
            v9.setGeolocationEnabled(1);
            v9.setAppCacheMaxSize(5242880);
            v9.setAppCachePath(v2);
            v9.setAppCacheEnabled(1);
            String v3 = v9.getUserAgentString();
            String v8 = this.preferences.getString("OverrideUserAgent", 0);
            if (v8 == null) {
                String v1 = this.preferences.getString("AppendUserAgent", 0);
                if (v1 != null) {
                    v9.setUserAgentString(new StringBuilder().append(v3).append(" ").append(v1).toString());
                }
            } else {
                v9.setUserAgentString(v8);
            }
            android.content.IntentFilter v6_1 = new android.content.IntentFilter();
            v6_1.addAction("android.intent.action.CONFIGURATION_CHANGED");
            if (this.receiver == null) {
                this.receiver = new org.apache.cordova.engine.SystemWebViewEngine$2(this, v9);
                this.webView.getContext().registerReceiver(this.receiver, v6_1);
            }
            return;
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "Doing the NavDump failed with bad arguments");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: IllegalAccessException means this isn\'t Android anymore");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: InvocationTargetException means this isn\'t Android anymore.");
        }
        if ((android.os.Build$VERSION.SDK_INT >= 11) || (!android.os.Build.MANUFACTURER.contains("HTC"))) {
        } else {
            android.content.Context v10_32 = new Object[1];
            v10_32[0] = Boolean.valueOf(1);
            v5.invoke(v9, v10_32);
        }
    }

Method android.webkit.WebSettings.setJavaScriptEnabled() not found.

[TAINT] Const '1' ==>>> Sink '['Landroid/webkit/WebSettings;', 'setJavaScriptEnabled', '(Z)V', '0', 'HTTP_NETWORKING_SINK']' [[('Lorg/apache/cordova/engine/SystemWebViewEngine;', 'initWebViewSettings', '()V'), ('Landroid/webkit/WebSettings;', 'setJavaScriptEnabled', '(Z)V')]]

JavaScript in Webview is enabled. setJavaScriptEnabled is set to true:

Method org.apache.cordova.engine.SystemWebViewEngine.initWebViewSettings():


    private void initWebViewSettings()
    {
        this.webView.setInitialScale(0);
        this.webView.setVerticalScrollBarEnabled(0);
        android.webkit.WebSettings v9 = this.webView.getSettings();
        v9.setJavaScriptEnabled(1);
        v9.setJavaScriptCanOpenWindowsAutomatically(1);
        v9.setLayoutAlgorithm(android.webkit.WebSettings$LayoutAlgorithm.NORMAL);
        try {
            int v12_3 = new Class[1];
            v12_3[0] = Boolean.TYPE;
            reflect.Method v5 = android.webkit.WebSettings.getMethod("setNavDump", v12_3);
            org.apache.cordova.LOG.d("SystemWebViewEngine", new StringBuilder().append("CordovaWebView is running on device made by: ").append(android.os.Build.MANUFACTURER).toString());
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
            v9.setSaveFormData(0);
            v9.setSavePassword(0);
            if (android.os.Build$VERSION.SDK_INT >= 16) {
                v9.setAllowUniversalAccessFromFileURLs(1);
            }
            if (android.os.Build$VERSION.SDK_INT >= 17) {
                v9.setMediaPlaybackRequiresUserGesture(0);
            }
            String v2 = this.webView.getContext().getApplicationContext().getDir("database", 0).getPath();
            v9.setDatabaseEnabled(1);
            v9.setDatabasePath(v2);
            if (((this.webView.getContext().getApplicationContext().getApplicationInfo().flags & 2) != 0) && (android.os.Build$VERSION.SDK_INT >= 19)) {
                this.enableRemoteDebugging();
            }
            v9.setGeolocationDatabasePath(v2);
            v9.setDomStorageEnabled(1);
            v9.setGeolocationEnabled(1);
            v9.setAppCacheMaxSize(5242880);
            v9.setAppCachePath(v2);
            v9.setAppCacheEnabled(1);
            String v3 = v9.getUserAgentString();
            String v8 = this.preferences.getString("OverrideUserAgent", 0);
            if (v8 == null) {
                String v1 = this.preferences.getString("AppendUserAgent", 0);
                if (v1 != null) {
                    v9.setUserAgentString(new StringBuilder().append(v3).append(" ").append(v1).toString());
                }
            } else {
                v9.setUserAgentString(v8);
            }
            android.content.IntentFilter v6_1 = new android.content.IntentFilter();
            v6_1.addAction("android.intent.action.CONFIGURATION_CHANGED");
            if (this.receiver == null) {
                this.receiver = new org.apache.cordova.engine.SystemWebViewEngine$2(this, v9);
                this.webView.getContext().registerReceiver(this.receiver, v6_1);
            }
            return;
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "Doing the NavDump failed with bad arguments");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: IllegalAccessException means this isn\'t Android anymore");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: InvocationTargetException means this isn\'t Android anymore.");
        }
        if ((android.os.Build$VERSION.SDK_INT >= 11) || (!android.os.Build.MANUFACTURER.contains("HTC"))) {
        } else {
            android.content.Context v10_32 = new Object[1];
            v10_32[0] = Boolean.valueOf(1);
            v5.invoke(v9, v10_32);
        }
    }

Method android.webkit.WebSettings.setJavaScriptEnabled() not found.

Method org.apache.cordova.engine.SystemWebViewEngine.initWebViewSettings() calling method android.webkit.WebSettings.setJavaScriptEnabled()


    private void initWebViewSettings()
    {
        this.webView.setInitialScale(0);
        this.webView.setVerticalScrollBarEnabled(0);
        android.webkit.WebSettings v9 = this.webView.getSettings();
        v9.setJavaScriptEnabled(1);
        v9.setJavaScriptCanOpenWindowsAutomatically(1);
        v9.setLayoutAlgorithm(android.webkit.WebSettings$LayoutAlgorithm.NORMAL);
        try {
            int v12_3 = new Class[1];
            v12_3[0] = Boolean.TYPE;
            reflect.Method v5 = android.webkit.WebSettings.getMethod("setNavDump", v12_3);
            org.apache.cordova.LOG.d("SystemWebViewEngine", new StringBuilder().append("CordovaWebView is running on device made by: ").append(android.os.Build.MANUFACTURER).toString());
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "We are on a modern version of Android, we will deprecate HTC 2.3 devices in 2.8");
            v9.setSaveFormData(0);
            v9.setSavePassword(0);
            if (android.os.Build$VERSION.SDK_INT >= 16) {
                v9.setAllowUniversalAccessFromFileURLs(1);
            }
            if (android.os.Build$VERSION.SDK_INT >= 17) {
                v9.setMediaPlaybackRequiresUserGesture(0);
            }
            String v2 = this.webView.getContext().getApplicationContext().getDir("database", 0).getPath();
            v9.setDatabaseEnabled(1);
            v9.setDatabasePath(v2);
            if (((this.webView.getContext().getApplicationContext().getApplicationInfo().flags & 2) != 0) && (android.os.Build$VERSION.SDK_INT >= 19)) {
                this.enableRemoteDebugging();
            }
            v9.setGeolocationDatabasePath(v2);
            v9.setDomStorageEnabled(1);
            v9.setGeolocationEnabled(1);
            v9.setAppCacheMaxSize(5242880);
            v9.setAppCachePath(v2);
            v9.setAppCacheEnabled(1);
            String v3 = v9.getUserAgentString();
            String v8 = this.preferences.getString("OverrideUserAgent", 0);
            if (v8 == null) {
                String v1 = this.preferences.getString("AppendUserAgent", 0);
                if (v1 != null) {
                    v9.setUserAgentString(new StringBuilder().append(v3).append(" ").append(v1).toString());
                }
            } else {
                v9.setUserAgentString(v8);
            }
            android.content.IntentFilter v6_1 = new android.content.IntentFilter();
            v6_1.addAction("android.intent.action.CONFIGURATION_CHANGED");
            if (this.receiver == null) {
                this.receiver = new org.apache.cordova.engine.SystemWebViewEngine$2(this, v9);
                this.webView.getContext().registerReceiver(this.receiver, v6_1);
            }
            return;
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "Doing the NavDump failed with bad arguments");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: IllegalAccessException means this isn\'t Android anymore");
        } catch (reflect.InvocationTargetException v4) {
            org.apache.cordova.LOG.d("SystemWebViewEngine", "This should never happen: InvocationTargetException means this isn\'t Android anymore.");
        }
        if ((android.os.Build$VERSION.SDK_INT >= 11) || (!android.os.Build.MANUFACTURER.contains("HTC"))) {
        } else {
            android.content.Context v10_32 = new Object[1];
            v10_32[0] = Boolean.valueOf(1);
            v5.invoke(v9, v10_32);
        }
    }

Method android.support.v4.widget.SimpleCursorAdapter.setViewImage() calling method android.net.Uri.parse()


    public void setViewImage(android.widget.ImageView p3, String p4)
    {
        try {
            p3.setImageResource(Integer.parseInt(p4));
        } catch (NumberFormatException v0) {
            p3.setImageURI(android.net.Uri.parse(p4));
        }
        return;
    }

Method com.google.android.gms.common.images.WebImage.zza() calling method android.net.Uri.parse()


    private static android.net.Uri zza(org.json.JSONObject p2)
    {
        android.net.Uri v0 = 0;
        if (p2.has("url")) {
            try {
                v0 = android.net.Uri.parse(p2.getString("url"));
            } catch (org.json.JSONException v1) {
            }
        }
        return v0;
    }

Method com.google.android.gms.common.data.DataHolder.parseUri() calling method android.net.Uri.parse()


    public final android.net.Uri parseUri(String p2, int p3, int p4)
    {
        android.net.Uri v0_1;
        android.net.Uri v0_0 = this.getString(p2, p3, p4);
        if (v0_0 != null) {
            v0_1 = android.net.Uri.parse(v0_0);
        } else {
            v0_1 = 0;
        }
        return v0_1;
    }

Method com.google.android.gms.auth.api.signin.GoogleSignInAccount.fromJsonString() calling method android.net.Uri.parse()


    public static com.google.android.gms.auth.api.signin.GoogleSignInAccount fromJsonString(String p14)
    {
        com.google.android.gms.auth.api.signin.GoogleSignInAccount v10 = 0;
        if (!android.text.TextUtils.isEmpty(p14)) {
            int v6;
            org.json.JSONObject v11_1 = new org.json.JSONObject(p14);
            com.google.android.gms.auth.api.signin.GoogleSignInAccount v0_9 = v11_1.optString("photoUrl", 0);
            if (android.text.TextUtils.isEmpty(v0_9)) {
                v6 = 0;
            } else {
                v6 = android.net.Uri.parse(v0_9);
            }
            long v12 = Long.parseLong(v11_1.getString("expirationTime"));
            java.util.HashSet v9_1 = new java.util.HashSet();
            String v1_1 = v11_1.getJSONArray("grantedScopes");
            String v2_0 = v1_1.length();
            com.google.android.gms.auth.api.signin.GoogleSignInAccount v0_4 = 0;
            while (v0_4 < v2_0) {
                v9_1.add(new com.google.android.gms.common.api.Scope(v1_1.getString(v0_4)));
                v0_4++;
            }
            v10 = com.google.android.gms.auth.api.signin.GoogleSignInAccount.create(v11_1.optString("id"), v11_1.optString("tokenId", 0), v11_1.optString("email", 0), v11_1.optString("displayName", 0), v11_1.optString("givenName", 0), v11_1.optString("familyName", 0), v6, Long.valueOf(v12), v11_1.getString("obfuscatedIdentifier"), v9_1).setServerAuthCode(v11_1.optString("serverAuthCode", 0));
        }
        return v10;
    }

Method plugin.google.maps.PluginEnvironment.isAvailable() calling method android.net.Uri.parse()


    public void isAvailable(org.json.JSONArray p9, org.apache.cordova.CallbackContext p10)
    {
        int v1 = com.google.android.gms.common.GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this.cordova.getActivity());
        if (v1 == 0) {
            try {
                Class.forName("com.google.android.gms.maps.GoogleMap");
                p10.success();
            } catch (Exception v2) {
                android.util.Log.e("GoogleMaps", "Error", v2);
                p10.error(v2.getMessage());
            }
        } else {
            p10.error(com.google.android.gms.common.GoogleApiAvailability.getInstance().getErrorString(v1));
            try {
                this.cordova.getActivity().startActivity(new android.content.Intent("android.intent.action.VIEW", android.net.Uri.parse("market://details?id=com.google.android.gms")));
            } catch (android.content.ActivityNotFoundException v0) {
                this.cordova.getActivity().startActivity(new android.content.Intent("android.intent.action.VIEW", android.net.Uri.parse("http://play.google.com/store/apps/details?id=com.google.android.gms")));
            }
            this.cordova.getActivity().finish();
        }
        return;
    }

Method org.apache.cordova.CordovaWebViewImpl.showWebPage() calling method android.net.Uri.parse()


    public void showWebPage(String p10, boolean p11, boolean p12, java.util.Map p13)
    {
        String v5_2 = new Object[3];
        v5_2[0] = p10;
        v5_2[1] = Boolean.valueOf(p11);
        v5_2[2] = Boolean.valueOf(p12);
        org.apache.cordova.LOG.d("CordovaWebViewImpl", "showWebPage(%s, %b, %b, HashMap)", v5_2);
        if (p12) {
            this.engine.clearHistory();
        }
        if (!p11) {
            if (!this.pluginManager.shouldAllowNavigation(p10)) {
                org.apache.cordova.LOG.w("CordovaWebViewImpl", new StringBuilder().append("showWebPage: Refusing to load URL into webview since it is not in the <allow-navigation> whitelist. URL=").append(p10).toString());
            } else {
                this.loadUrlIntoView(p10, 1);
            }
        }
        if (this.pluginManager.shouldOpenExternalUrl(p10).booleanValue()) {
            try {
                android.content.Intent v1_1 = new android.content.Intent("android.intent.action.VIEW");
                v1_1.addCategory("android.intent.category.BROWSABLE");
                android.net.Uri v2 = android.net.Uri.parse(p10);
            } catch (android.content.ActivityNotFoundException v0) {
                org.apache.cordova.LOG.e("CordovaWebViewImpl", new StringBuilder().append("Error loading url ").append(p10).toString(), v0);
            }
            if (!"file".equals(v2.getScheme())) {
                v1_1.setData(v2);
            } else {
                v1_1.setDataAndType(v2, this.resourceApi.getMimeType(v2));
            }
            this.cordova.getActivity().startActivity(v1_1);
        } else {
            org.apache.cordova.LOG.w("CordovaWebViewImpl", new StringBuilder().append("showWebPage: Refusing to send intent for URL since it is not in the <allow-intent> whitelist. URL=").append(p10).toString());
        }
        return;
    }

Method com.ionicframework.cordova.webview.IonicWebViewEngine$ServerClient.shouldInterceptRequest() calling method android.net.Uri.parse()


    public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView p3, String p4)
    {
        return com.ionicframework.cordova.webview.IonicWebViewEngine.access$000(this.this$0).shouldInterceptRequest(android.net.Uri.parse(p4));
    }

Method com.google.android.gms.internal.stable.zzg.<clinit>() calling method android.net.Uri.parse()


    static zzg()
    {
        com.google.android.gms.internal.stable.zzg.CONTENT_URI = android.net.Uri.parse("content://com.google.settings/partner");
        return;
    }

Method android.support.v4.app.ActivityCompat.getReferrer() calling method android.net.Uri.parse()


    public static android.net.Uri getReferrer(android.app.Activity p5)
    {
        int v1_0;
        if (android.os.Build$VERSION.SDK_INT < 22) {
            android.content.Intent v0 = p5.getIntent();
            v1_0 = ((android.net.Uri) v0.getParcelableExtra("android.intent.extra.REFERRER"));
            if (v1_0 == 0) {
                String v2 = v0.getStringExtra("android.intent.extra.REFERRER_NAME");
                if (v2 == null) {
                    v1_0 = 0;
                } else {
                    v1_0 = android.net.Uri.parse(v2);
                }
            }
        } else {
            v1_0 = p5.getReferrer();
        }
        return v1_0;
    }

Method plugin.google.maps.PluginUtil.getAbsolutePathFromCDVFilePath() calling method android.net.Uri.parse()


    public static String getAbsolutePathFromCDVFilePath(org.apache.cordova.CordovaResourceApi p5, String p6)
    {
        String v3 = 0;
        if (p6.indexOf("cdvfile://") == 0) {
            java.io.File v1 = p5.mapUriToFile(p5.remapUri(android.net.Uri.parse(p6)));
            if (v1 != null) {
                try {
                    v3 = v1.getCanonicalPath();
                } catch (Exception v0) {
                    v0.printStackTrace();
                }
            }
        }
        return v3;
    }

Method plugin.google.maps.CordovaGoogleMaps$1$1.onClick() calling method android.net.Uri.parse()


    public void onClick(android.content.DialogInterface p6, int p7)
    {
        p6.dismiss();
        if (this.val$finalIsNeedToUpdate) {
            try {
                plugin.google.maps.CordovaGoogleMaps.access$000(this.this$1.this$0).startActivity(new android.content.Intent("android.intent.action.VIEW", android.net.Uri.parse("market://details?id=com.google.android.gms")));
            } catch (android.content.ActivityNotFoundException v0) {
                plugin.google.maps.CordovaGoogleMaps.access$000(this.this$1.this$0).startActivity(new android.content.Intent("android.intent.action.VIEW", android.net.Uri.parse("http://play.google.com/store/apps/details?id=com.google.android.gms")));
            }
        }
        return;
    }

Method org.apache.cordova.engine.SystemWebViewClient.shouldInterceptRequest() calling method android.net.Uri.parse()


    public android.webkit.WebResourceResponse shouldInterceptRequest(android.webkit.WebView p11, String p12)
    {
        try {
            int v5_5;
            if (this.parentEngine.pluginManager.shouldAllowRequest(p12)) {
                org.apache.cordova.CordovaResourceApi v3 = this.parentEngine.resourceApi;
                android.net.Uri v1 = android.net.Uri.parse(p12);
                android.net.Uri v2 = v3.remapUri(v1);
                if ((v1.equals(v2)) && ((!org.apache.cordova.engine.SystemWebViewClient.needsSpecialsInAssetUrlFix(v1)) && (!org.apache.cordova.engine.SystemWebViewClient.needsKitKatContentUrlFix(v1)))) {
                    v5_5 = 0;
                } else {
                    org.apache.cordova.CordovaResourceApi$OpenForReadResult v4 = v3.openForRead(v2, 1);
                    v5_5 = new android.webkit.WebResourceResponse(v4.mimeType, "UTF-8", v4.inputStream);
                }
            } else {
                org.apache.cordova.LOG.w("SystemWebViewClient", new StringBuilder().append("URL blocked by whitelist: ").append(p12).toString());
                v5_5 = new android.webkit.WebResourceResponse("text/plain", "UTF-8", 0);
            }
        } catch (java.io.IOException v0) {
            if (!(v0 instanceof java.io.FileNotFoundException)) {
                org.apache.cordova.LOG.e("SystemWebViewClient", "Error occurred while loading a file (returning a 404).", v0);
            }
            v5_5 = new android.webkit.WebResourceResponse("text/plain", "UTF-8", 0);
        }
        return v5_5;
    }

Method org.apache.cordova.Whitelist.isUrlWhiteListed() calling method android.net.Uri.parse()


    public boolean isUrlWhiteListed(String p6)
    {
        int v3 = 1;
        if (this.whiteList != null) {
            android.net.Uri v1 = android.net.Uri.parse(p6);
            java.util.Iterator v2 = this.whiteList.iterator();
            while (v2.hasNext()) {
                if (((org.apache.cordova.Whitelist$URLPattern) v2.next()).matches(v1)) {
                }
            }
            v3 = 0;
        }
        return v3;
    }

Method org.apache.cordova.CordovaPlugin.fromPluginUri() calling method android.net.Uri.parse()


    protected android.net.Uri fromPluginUri(android.net.Uri p2)
    {
        return android.net.Uri.parse(p2.getQueryParameter("origUri"));
    }

Method com.ionicframework.cordova.webview.WebViewLocalServer.parseAndVerifyUrl() calling method android.net.Uri.parse()


    private static android.net.Uri parseAndVerifyUrl(String p6)
    {
        int v1;
        if (p6 != null) {
            v1 = android.net.Uri.parse(p6);
            if (v1 != 0) {
                String v0 = v1.getPath();
                if ((v0 == null) || (v0.length() == 0)) {
                    android.util.Log.e(com.ionicframework.cordova.webview.WebViewLocalServer.TAG, new StringBuilder().append("URL does not have a path: ").append(p6).toString());
                    v1 = 0;
                }
            } else {
                android.util.Log.e(com.ionicframework.cordova.webview.WebViewLocalServer.TAG, new StringBuilder().append("Malformed URL: ").append(p6).toString());
                v1 = 0;
            }
        } else {
            v1 = 0;
        }
        return v1;
    }

Method com.ionicframework.cordova.webview.AndroidProtocolHandler.openAsset() calling method android.net.Uri.parse()


    public java.io.InputStream openAsset(String p5, String p6)
    {
        java.io.FileInputStream v2_5;
        if (!p5.startsWith(new StringBuilder().append(p6).append("/_file_").toString())) {
            v2_5 = this.context.getAssets().open(p5, 2);
        } else {
            if (!p5.contains("content://")) {
                v2_5 = new java.io.FileInputStream(new java.io.File(p5.replace(new StringBuilder().append(p6).append("/_file_/").toString(), "")));
            } else {
                v2_5 = this.context.getContentResolver().openInputStream(android.net.Uri.parse(p5.replace(new StringBuilder().append(p6).append("/_file_/").toString(), "content://")));
            }
        }
        return v2_5;
    }

Method com.google.android.gms.internal.stable.zzi.<clinit>() calling method android.net.Uri.parse()


    static zzi()
    {
        com.google.android.gms.internal.stable.zzi.CONTENT_URI = android.net.Uri.parse("content://com.google.android.gsf.gservices");
        com.google.android.gms.internal.stable.zzi.zzagv = android.net.Uri.parse("content://com.google.android.gsf.gservices/prefix");
        com.google.android.gms.internal.stable.zzi.zzagw = java.util.regex.Pattern.compile("^(1|true|t|on|yes|y)$", 2);
        com.google.android.gms.internal.stable.zzi.zzagx = java.util.regex.Pattern.compile("^(0|false|f|off|no|n)$", 2);
        com.google.android.gms.internal.stable.zzi.zzagy = new java.util.concurrent.atomic.AtomicBoolean();
        com.google.android.gms.internal.stable.zzi.zzagz = new java.util.HashMap();
        com.google.android.gms.internal.stable.zzi.zzaha = new java.util.HashMap();
        com.google.android.gms.internal.stable.zzi.zzahb = new java.util.HashMap();
        com.google.android.gms.internal.stable.zzi.zzahc = new java.util.HashMap();
        String[] v0_16 = new String[0];
        com.google.android.gms.internal.stable.zzi.zzahf = v0_16;
        return;
    }

Method com.google.android.gms.dynamite.DynamiteModule.getQueryUri() calling method android.net.Uri.parse()


    public static android.net.Uri getQueryUri(String p3, boolean p4)
    {
        android.net.Uri v0_0;
        if (!p4) {
            v0_0 = "api";
        } else {
            v0_0 = "api_force_staging";
        }
        return android.net.Uri.parse(new StringBuilder(((String.valueOf(v0_0).length() + 42) + String.valueOf(p3).length())).append("content://com.google.android.gms.chimera/").append(v0_0).append("/").append(p3).toString());
    }

Method com.google.android.gms.common.internal.GmsIntents.getPlayStoreUri() calling method android.net.Uri.parse()


    public static android.net.Uri getPlayStoreUri(String p2)
    {
        return android.net.Uri.parse("https://play.google.com/store/apps/details").buildUpon().appendQueryParameter("id", p2).build();
    }

Method com.google.android.gms.common.internal.GmsIntents.createShowProfileIntent() calling method android.net.Uri.parse()


    public static android.content.Intent createShowProfileIntent(android.content.Context p3, String p4)
    {
        Object[] v1_1 = new Object[1];
        v1_1[0] = p4;
        return com.google.android.gms.common.internal.GmsIntents.zza(p3, android.net.Uri.parse(String.format("https://plus.google.com/%s/about", v1_1)));
    }

Method com.google.android.gms.common.internal.GmsIntents.createPlayStoreLightPurchaseFlowIntent() calling method android.net.Uri.parse()


    public static android.content.Intent createPlayStoreLightPurchaseFlowIntent(android.content.Context p6, String p7, String p8)
    {
        android.content.Intent v0_2 = new android.content.Intent("com.android.vending.billing.PURCHASE");
        v0_2.addCategory("android.intent.category.DEFAULT");
        v0_2.setPackage("com.android.vending");
        if (!android.text.TextUtils.isEmpty(p7)) {
            v0_2.putExtra("authAccount", p7);
        }
        v0_2.putExtra("backend", 3);
        v0_2.putExtra("document_type", 1);
        v0_2.putExtra("full_docid", p8);
        v0_2.putExtra("backend_docid", p8);
        v0_2.putExtra("offer_type", 1);
        if (!com.google.android.gms.common.internal.GmsIntents.isIntentResolvable(p6.getPackageManager(), v0_2)) {
            v0_2 = new android.content.Intent("android.intent.action.VIEW");
            Object[] v3_1 = new Object[2];
            v3_1[0] = p8;
            v3_1[1] = Integer.valueOf(1);
            v0_2.setData(android.net.Uri.parse(String.format(java.util.Locale.US, "https://play.google.com/store/apps/details?id=%1$s&rdid=%1$s&rdot=%2$d", v3_1)));
            v0_2.setPackage("com.android.vending");
            v0_2.putExtra("use_direct_purchase", 1);
        }
        return v0_2;
    }

Method com.google.android.gms.common.internal.GmsIntents.createPlayStoreIntent() calling method android.net.Uri.parse()


    public static android.content.Intent createPlayStoreIntent(String p3, String p4)
    {
        android.content.Intent v0_1 = new android.content.Intent("android.intent.action.VIEW");
        int v1_1 = android.net.Uri.parse("market://details").buildUpon().appendQueryParameter("id", p3);
        if (!android.text.TextUtils.isEmpty(p4)) {
            v1_1.appendQueryParameter("pcampaignid", p4);
        }
        v0_1.setData(v1_1.build());
        v0_1.setPackage("com.android.vending");
        v0_1.addFlags(524288);
        return v0_1;
    }

Method com.google.android.gms.common.internal.GmsIntents.createPlayStoreGamesIntent() calling method android.net.Uri.parse()


    public static android.content.Intent createPlayStoreGamesIntent(android.content.Context p4)
    {
        int v0_3;
        int v1_1 = new android.content.Intent("android.intent.action.VIEW");
        v1_1.setData(android.net.Uri.parse("http://play.google.com/store/apps/category/GAME"));
        v1_1.addFlags(524288);
        v1_1.setPackage("com.android.vending");
        if (p4.getPackageManager().resolveActivity(v1_1, 65536) != null) {
            v0_3 = v1_1;
        } else {
            v0_3 = new android.content.Intent(v1_1.getAction(), v1_1.getData());
            v0_3.setFlags(v1_1.getFlags());
        }
        return v0_3;
    }

Method com.google.android.gms.common.internal.GmsIntents.<clinit>() calling method android.net.Uri.parse()


    static GmsIntents()
    {
        android.net.Uri v0_3 = android.net.Uri.parse("https://plus.google.com/");
        com.google.android.gms.common.internal.GmsIntents.zztz = v0_3;
        com.google.android.gms.common.internal.GmsIntents.zzua = v0_3.buildUpon().appendPath("circles").appendPath("find").build();
        return;
    }

Method android.support.v4.media.MediaMetadataCompat.getDescription() calling method android.net.Uri.parse()


    public android.support.v4.media.MediaDescriptionCompat getDescription()
    {
        android.support.v4.media.MediaDescriptionCompat v19_17;
        if (this.mDescription == null) {
            String v12 = this.getString("android.media.metadata.MEDIA_ID");
            android.support.v4.media.MediaDescriptionCompat v0_4 = new CharSequence[3];
            CharSequence[] v16 = v0_4;
            CharSequence v8 = 0;
            android.net.Uri v9 = 0;
            CharSequence v6 = this.getText("android.media.metadata.DISPLAY_TITLE");
            if (android.text.TextUtils.isEmpty(v6)) {
                int v17 = 0;
                int v10 = 0;
                while ((v17 < v16.length) && (v10 < android.support.v4.media.MediaMetadataCompat.PREFERRED_DESCRIPTION_ORDER.length)) {
                    int v11 = (v10 + 1);
                    String v15_0 = this.getText(android.support.v4.media.MediaMetadataCompat.PREFERRED_DESCRIPTION_ORDER[v10]);
                    if (!android.text.TextUtils.isEmpty(v15_0)) {
                        int v18 = (v17 + 1);
                        v16[v17] = v15_0;
                        v17 = v18;
                    }
                    v10 = v11;
                }
            } else {
                v16[0] = v6;
                v16[1] = this.getText("android.media.metadata.DISPLAY_SUBTITLE");
                v16[2] = this.getText("android.media.metadata.DISPLAY_DESCRIPTION");
            }
            int v7_0 = 0;
            while (v7_0 < android.support.v4.media.MediaMetadataCompat.PREFERRED_BITMAP_ORDER.length) {
                String v15_1 = this.getBitmap(android.support.v4.media.MediaMetadataCompat.PREFERRED_BITMAP_ORDER[v7_0]);
                if (v15_1 == null) {
                    v7_0++;
                } else {
                    v8 = v15_1;
                    break;
                }
            }
            int v7_1 = 0;
            while (v7_1 < android.support.v4.media.MediaMetadataCompat.PREFERRED_URI_ORDER.length) {
                String v15_2 = this.getString(android.support.v4.media.MediaMetadataCompat.PREFERRED_URI_ORDER[v7_1]);
                if (android.text.TextUtils.isEmpty(v15_2)) {
                    v7_1++;
                } else {
                    v9 = android.net.Uri.parse(v15_2);
                    break;
                }
            }
            android.net.Uri v13 = 0;
            String v14 = this.getString("android.media.metadata.MEDIA_URI");
            if (!android.text.TextUtils.isEmpty(v14)) {
                v13 = android.net.Uri.parse(v14);
            }
            android.support.v4.media.MediaDescriptionCompat$Builder v4_1 = new android.support.v4.media.MediaDescriptionCompat$Builder();
            v4_1.setMediaId(v12);
            v4_1.setTitle(v16[0]);
            v4_1.setSubtitle(v16[1]);
            v4_1.setDescription(v16[2]);
            v4_1.setIconBitmap(v8);
            v4_1.setIconUri(v9);
            v4_1.setMediaUri(v13);
            android.os.Bundle v5_1 = new android.os.Bundle();
            if (this.mBundle.containsKey("android.media.metadata.BT_FOLDER_TYPE")) {
                v5_1.putLong("android.media.extra.BT_FOLDER_TYPE", this.getLong("android.media.metadata.BT_FOLDER_TYPE"));
            }
            if (this.mBundle.containsKey("android.media.metadata.DOWNLOAD_STATUS")) {
                v5_1.putLong("android.media.extra.DOWNLOAD_STATUS", this.getLong("android.media.metadata.DOWNLOAD_STATUS"));
            }
            if (!v5_1.isEmpty()) {
                v4_1.setExtras(v5_1);
            }
            this.mDescription = v4_1.build();
            v19_17 = this.mDescription;
        } else {
            v19_17 = this.mDescription;
        }
        return v19_17;
    }

Method android.support.v4.app.RemoteInput.getDataResultsFromIntent() calling method android.net.Uri.parse()


    public static java.util.Map getDataResultsFromIntent(android.content.Intent p10, String p11)
    {
        java.util.Map v7 = 0;
        if (android.os.Build$VERSION.SDK_INT < 26) {
            if (android.os.Build$VERSION.SDK_INT < 16) {
                android.util.Log.w("RemoteInput", "RemoteInput is only supported from API Level 16");
            } else {
                android.content.Intent v1 = android.support.v4.app.RemoteInput.getClipDataIntentFromIntent(p10);
                if (v1 != null) {
                    java.util.Map v5_1 = new java.util.HashMap();
                    boolean v8_2 = v1.getExtras().keySet().iterator();
                    while (v8_2.hasNext()) {
                        String v3_1 = ((String) v8_2.next());
                        if (v3_1.startsWith("android.remoteinput.dataTypeResultsData")) {
                            String v4 = v3_1.substring("android.remoteinput.dataTypeResultsData".length());
                            if (!v4.isEmpty()) {
                                String v6 = v1.getBundleExtra(v3_1).getString(p11);
                                if ((v6 != null) && (!v6.isEmpty())) {
                                    v5_1.put(v4, android.net.Uri.parse(v6));
                                }
                            }
                        }
                    }
                    if (v5_1.isEmpty()) {
                        v5_1 = 0;
                    }
                    v7 = v5_1;
                }
            }
        } else {
            v7 = android.app.RemoteInput.getDataResultsFromIntent(p10, p11);
        }
        return v7;
    }

Method org.apache.cordova.engine.SystemWebView.setWebViewClient() calling method android.webkit.WebView.setWebViewClient()


    public void setWebViewClient(android.webkit.WebViewClient p2)
    {
        this.viewClient = ((org.apache.cordova.engine.SystemWebViewClient) p2);
        super.setWebViewClient(p2);
        return;
    }

Method org.apache.cordova.engine.SystemWebViewEngine.exposeJsInterface() calling method android.webkit.WebView.addJavascriptInterface()


    private static void exposeJsInterface(android.webkit.WebView p3, org.apache.cordova.CordovaBridge p4)
    {
        if (android.os.Build$VERSION.SDK_INT >= 17) {
            p3.addJavascriptInterface(new org.apache.cordova.engine.SystemExposedJsApi(p4), "_cordovaNative");
        } else {
            org.apache.cordova.LOG.i("SystemWebViewEngine", "Disabled addJavascriptInterface() bridge since Android version is old.");
        }
        return;
    }

Method com.ionicframework.cordova.webview.IonicWebViewEngine$ServerClient.onPageStarted() calling method android.webkit.WebView.loadUrl()


    public void onPageStarted(android.webkit.WebView p3, String p4, android.graphics.Bitmap p5)
    {
        super.onPageStarted(p3, p4, p5);
        String v0 = this.parser.getLaunchUrl();
        if ((!v0.contains("http")) && (p4.equals(v0))) {
            p3.stopLoading();
            p3.loadUrl(com.ionicframework.cordova.webview.IonicWebViewEngine.access$100(this.this$0));
        }
        return;
    }

Method com.ionicframework.cordova.webview.IonicWebViewEngine$ServerClient.onPageFinished() calling method android.webkit.WebView.loadUrl()


    public void onPageFinished(android.webkit.WebView p3, String p4)
    {
        super.onPageFinished(p3, p4);
        p3.loadUrl(new StringBuilder().append("javascript:(function() { window.WEBVIEW_SERVER_URL = \'").append(com.ionicframework.cordova.webview.IonicWebViewEngine.access$100(this.this$0)).append("\'})()").toString());
        return;
    }