You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ia...@apache.org on 2015/02/18 22:59:43 UTC
spec commit: Android: Update whitelist tests to work with
Cordova-Android 4.0
Repository: cordova-mobile-spec
Updated Branches:
refs/heads/master b0fa40051 -> 420e330ee
Android: Update whitelist tests to work with Cordova-Android 4.0
Project: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/commit/420e330e
Tree: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/tree/420e330e
Diff: http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/diff/420e330e
Branch: refs/heads/master
Commit: 420e330eeb8f73f8599f6feb8e6a8b4be67dd3c0
Parents: b0fa400
Author: Ian Clelland <ic...@chromium.org>
Authored: Wed Feb 18 16:59:06 2015 -0500
Committer: Ian Clelland <ic...@chromium.org>
Committed: Wed Feb 18 16:59:27 2015 -0500
----------------------------------------------------------------------
.../src/android/WhitelistAPI.java | 33 +++++++++++++++++++-
1 file changed, 32 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-mobile-spec/blob/420e330e/cordova-plugin-whitelist/src/android/WhitelistAPI.java
----------------------------------------------------------------------
diff --git a/cordova-plugin-whitelist/src/android/WhitelistAPI.java b/cordova-plugin-whitelist/src/android/WhitelistAPI.java
index 1d67992..934ffb9 100644
--- a/cordova-plugin-whitelist/src/android/WhitelistAPI.java
+++ b/cordova-plugin-whitelist/src/android/WhitelistAPI.java
@@ -27,6 +27,10 @@ import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
+import org.apache.cordova.PluginManager;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
public class WhitelistAPI extends CordovaPlugin {
/**
* Executes the request and returns PluginResult.
@@ -50,7 +54,34 @@ public class WhitelistAPI extends CordovaPlugin {
return true;
} else if (action.equals("URLIsAllowed")) {
String url = args.getString(0);
- boolean isAllowed = Config.isUrlWhiteListed(url);
+ /* 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;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org