public boolean execute()

in cordova-plugin-whitelist/src/android/WhitelistAPI.java [43:89]


    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
        if (action.equals("URLMatchesPatterns")) {
            String url = args.getString(0);
            JSONArray patterns = args.getJSONArray(1);
            Whitelist whitelist = new Whitelist();
            for (int i=0; i < patterns.length(); i++) {
                String pattern = patterns.getString(i);
                whitelist.addWhiteListEntry(pattern, false);
            }
            boolean isAllowed = whitelist.isUrlWhiteListed(url);
            callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, isAllowed));
            return true;
        } else if (action.equals("URLIsAllowed")) {
            String url = args.getString(0);
            /* This code exists for compatibility between 3.x and 4.x versions of Cordova.
             * Previously the CordovaWebView class had a method, getWhitelist, which would
             * return a Whitelist object. Since the fixed whitelist is removed in Cordova 4.x,
             * the correct call now is to shouldAllowRequest from the plugin manager.
             */
            Boolean isAllowed = null;
            try {
                Method isUrlWhiteListed = Config.class.getDeclaredMethod("isUrlWhitelisted", String.class);
                isAllowed = (Boolean)isUrlWhiteListed.invoke(url);
            } catch (NoSuchMethodException e) {
            } catch (IllegalAccessException e) {
            } catch (InvocationTargetException e) {
            }
            if (isAllowed == null) {
                try {
                    Method gpm = webView.getClass().getMethod("getPluginManager");
                    PluginManager pm = (PluginManager)gpm.invoke(webView);
                    Method isAllowedMethod = pm.getClass().getMethod("shouldAllowRequest", String.class);
                    isAllowed = (Boolean)isAllowedMethod.invoke(pm, url);
                    if (isAllowed == null) {
                        isAllowed = false;
                    }
                } catch (NoSuchMethodException e) {
                } catch (IllegalAccessException e) {
                } catch (InvocationTargetException e) {
                }
            }

            callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, isAllowed));
            return true;
        }
        return false;
    }