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 2014/02/04 06:13:48 UTC

android commit: Ignore multiple onPageFinished() callbacks & onReceivedError due to stopLoading()

Updated Branches:
  refs/heads/master dfae37421 -> a5c8472a3


Ignore multiple onPageFinished() callbacks & onReceivedError due to stopLoading()

I believe this happens only when using custom schemes.


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

Branch: refs/heads/master
Commit: a5c8472a374c1c2b2026fa9dbb39235e198768ef
Parents: dfae374
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Feb 4 00:12:11 2014 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Feb 4 00:12:11 2014 -0500

----------------------------------------------------------------------
 framework/src/org/apache/cordova/CordovaWebView.java  |  5 +++++
 .../src/org/apache/cordova/CordovaWebViewClient.java  | 14 +++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/a5c8472a/framework/src/org/apache/cordova/CordovaWebView.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java
index b30ea78..b0e3d43 100755
--- a/framework/src/org/apache/cordova/CordovaWebView.java
+++ b/framework/src/org/apache/cordova/CordovaWebView.java
@@ -541,6 +541,11 @@ public class CordovaWebView extends WebView {
         this.loadUrlIntoView(url);
     }
     
+    @Override
+    public void stopLoading() {
+        viewClient.isCurrentlyLoading = false;
+        super.stopLoading();
+    }
     
     public void onScrollChanged(int l, int t, int oldl, int oldt)
     {

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/a5c8472a/framework/src/org/apache/cordova/CordovaWebViewClient.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaWebViewClient.java b/framework/src/org/apache/cordova/CordovaWebViewClient.java
index e465ffa..0b7b800 100755
--- a/framework/src/org/apache/cordova/CordovaWebViewClient.java
+++ b/framework/src/org/apache/cordova/CordovaWebViewClient.java
@@ -62,6 +62,7 @@ public class CordovaWebViewClient extends WebViewClient {
     CordovaInterface cordova;
     CordovaWebView appView;
     private boolean doClearHistory = false;
+    private boolean isCurrentlyLoading;
 
     /** The authorization tokens. */
     private Hashtable<String, AuthenticationToken> authenticationTokens = new Hashtable<String, AuthenticationToken>();
@@ -266,7 +267,9 @@ public class CordovaWebViewClient extends WebViewClient {
      */
     @Override
     public void onPageStarted(WebView view, String url, Bitmap favicon) {
-
+        super.onPageStarted(view, url, favicon);
+        isCurrentlyLoading = true;
+        LOG.d(TAG, "onPageStarted(" + url + ")");
         // Flush stale messages.
         this.appView.jsMessageQueue.reset();
 
@@ -290,6 +293,11 @@ public class CordovaWebViewClient extends WebViewClient {
     @Override
     public void onPageFinished(WebView view, String url) {
         super.onPageFinished(view, url);
+        // Ignore excessive calls.
+        if (!isCurrentlyLoading) {
+            return;
+        }
+        isCurrentlyLoading = false;
         LOG.d(TAG, "onPageFinished(" + url + ")");
 
         /**
@@ -344,6 +352,10 @@ public class CordovaWebViewClient extends WebViewClient {
      */
     @Override
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+        // Ignore error due to stopLoading().
+        if (!isCurrentlyLoading) {
+            return;
+        }
         LOG.d(TAG, "CordovaWebViewClient.onReceivedError: Error code=%s Description=%s URL=%s", errorCode, description, failingUrl);
 
         // Clear timeout flag