You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2015/03/13 16:32:58 UTC

android commit: CB-7747 When both allow-navigation and allow-external are set, navigate instead of opening external

Repository: cordova-android
Updated Branches:
  refs/heads/master f764448cc -> 679069729


CB-7747 When both allow-navigation and allow-external are set, navigate instead of opening external

Also: Move shouldOverrideUrlLoading logic into CordovaWebViewEngine.Client


Project: http://git-wip-us.apache.org/repos/asf/cordova-android/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-android/commit/67906972
Tree: http://git-wip-us.apache.org/repos/asf/cordova-android/tree/67906972
Diff: http://git-wip-us.apache.org/repos/asf/cordova-android/diff/67906972

Branch: refs/heads/master
Commit: 679069729cca68e55677c831f5ce9eaf4136ba36
Parents: f764448
Author: Andrew Grieve <ag...@chromium.org>
Authored: Fri Mar 13 11:31:16 2015 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Fri Mar 13 11:32:54 2015 -0400

----------------------------------------------------------------------
 .../src/org/apache/cordova/CordovaWebViewEngine.java |  1 +
 .../src/org/apache/cordova/CordovaWebViewImpl.java   | 15 +++++++++++++++
 .../apache/cordova/engine/SystemWebViewClient.java   | 14 +-------------
 3 files changed, 17 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/67906972/framework/src/org/apache/cordova/CordovaWebViewEngine.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebViewEngine.java b/framework/src/org/apache/cordova/CordovaWebViewEngine.java
index d996a1c..b31c888 100644
--- a/framework/src/org/apache/cordova/CordovaWebViewEngine.java
+++ b/framework/src/org/apache/cordova/CordovaWebViewEngine.java
@@ -77,5 +77,6 @@ public interface CordovaWebViewEngine {
         void onReceivedError(int errorCode, String description, String failingUrl);
         void onPageFinishedLoading(String url);
         void onScrollChanged(int l, int t, int oldl, int oldt);
+        boolean onNavigationAttempt(String url);
     }
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/67906972/framework/src/org/apache/cordova/CordovaWebViewImpl.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebViewImpl.java b/framework/src/org/apache/cordova/CordovaWebViewImpl.java
index 3b5aecd..ed9d9da 100644
--- a/framework/src/org/apache/cordova/CordovaWebViewImpl.java
+++ b/framework/src/org/apache/cordova/CordovaWebViewImpl.java
@@ -581,5 +581,20 @@ public class CordovaWebViewImpl implements CordovaWebView {
             ScrollEvent myEvent = new ScrollEvent(l, t, oldl, oldt, getView());
             pluginManager.postMessage("onScrollChanged", myEvent);
         }
+
+        @Override
+        public boolean onNavigationAttempt(String url) {
+            // Give plugins the chance to handle the url
+            if (pluginManager.onOverrideUrlLoading(url)) {
+                return true;
+            } else if (pluginManager.shouldAllowNavigation(url)) {
+                return false;
+            } else if (pluginManager.shouldOpenExternalUrl(url)) {
+                showWebPage(url, true, false, null);
+                return true;
+            }
+            LOG.w(TAG, "Blocked (possibly sub-frame) navigation to non-allowed URL: " + url);
+            return true;
+        }
     }
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/67906972/framework/src/org/apache/cordova/engine/SystemWebViewClient.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/engine/SystemWebViewClient.java b/framework/src/org/apache/cordova/engine/SystemWebViewClient.java
index 6aaac75..d176502 100755
--- a/framework/src/org/apache/cordova/engine/SystemWebViewClient.java
+++ b/framework/src/org/apache/cordova/engine/SystemWebViewClient.java
@@ -76,19 +76,7 @@ public class SystemWebViewClient extends WebViewClient {
      */
 	@Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
-        // Give plugins the chance to handle the url
-        if (parentEngine.pluginManager.onOverrideUrlLoading(url)) {
-            return true;
-        } else if (parentEngine.pluginManager.shouldOpenExternalUrl(url)) {
-            parentEngine.getCordovaWebView().showWebPage(url, true, false, null);
-            return true;
-        } else if (!parentEngine.pluginManager.shouldAllowNavigation(url)) {
-            // This blocks iframe navigations as well.
-            LOG.w(TAG, "Blocked (possibly sub-frame) navigation to non-allowed URL: " + url);
-            return true;
-        }
-
-        return false;
+        return parentEngine.client.onNavigationAttempt(url);
     }
 
     /**


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cordova.apache.org
For additional commands, e-mail: commits-help@cordova.apache.org