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/03 15:52:18 UTC

[1/2] android commit: CB-8510 Enforce that CordovaWebViewImpl is instantiated with an Engine

Repository: cordova-android
Updated Branches:
  refs/heads/master eccf48616 -> 62c081dc8


CB-8510 Enforce that CordovaWebViewImpl is instantiated with an Engine

No reason to not enforce this.


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

Branch: refs/heads/master
Commit: 023ad9ddf8b5a69ffe7f15fbcb83719aae77ffcc
Parents: eccf486
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Mar 3 09:51:03 2015 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Mar 3 09:51:03 2015 -0500

----------------------------------------------------------------------
 .../src/org/apache/cordova/CordovaActivity.java      |  4 +---
 .../src/org/apache/cordova/CordovaWebViewImpl.java   | 15 +++------------
 2 files changed, 4 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/023ad9dd/framework/src/org/apache/cordova/CordovaActivity.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaActivity.java b/framework/src/org/apache/cordova/CordovaActivity.java
index 7942626..5d0a586 100755
--- a/framework/src/org/apache/cordova/CordovaActivity.java
+++ b/framework/src/org/apache/cordova/CordovaActivity.java
@@ -21,7 +21,6 @@ package org.apache.cordova;
 import java.util.ArrayList;
 import java.util.Locale;
 
-import org.apache.cordova.engine.SystemWebViewEngine;
 import org.json.JSONException;
 import org.json.JSONObject;
 
@@ -189,8 +188,7 @@ public class CordovaActivity extends Activity {
     }
 
     protected CordovaWebViewEngine makeWebViewEngine() {
-        String className = preferences.getString("webview", SystemWebViewEngine.class.getCanonicalName());
-        return CordovaWebViewImpl.createEngine(className, this, preferences);
+        return CordovaWebViewImpl.createEngine(this, preferences);
     }
 
     protected CordovaInterfaceImpl makeCordovaInterface() {

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/023ad9dd/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 303f4e8..d600440 100644
--- a/framework/src/org/apache/cordova/CordovaWebViewImpl.java
+++ b/framework/src/org/apache/cordova/CordovaWebViewImpl.java
@@ -21,13 +21,11 @@ package org.apache.cordova;
 import android.content.Context;
 import android.content.Intent;
 import android.net.Uri;
-import android.os.Build;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.inputmethod.InputMethodManager;
 import android.webkit.WebChromeClient;
 import android.widget.FrameLayout;
 
@@ -53,7 +51,7 @@ public class CordovaWebViewImpl implements CordovaWebView {
     // Public for backwards-compatibility :(
     public PluginManager pluginManager;
 
-    protected CordovaWebViewEngine engine;
+    protected final CordovaWebViewEngine engine;
     private CordovaInterface cordova;
 
     // Flag to track that a loadUrl timeout occurred
@@ -75,7 +73,8 @@ public class CordovaWebViewImpl implements CordovaWebView {
 
     private Set<Integer> boundKeyCodes = new HashSet<Integer>();
 
-    public static CordovaWebViewEngine createEngine(String className, Context context, CordovaPreferences preferences) {
+    public static CordovaWebViewEngine createEngine(Context context, CordovaPreferences preferences) {
+        String className = preferences.getString("webview", SystemWebViewEngine.class.getCanonicalName());
         try {
             Class<?> webViewClass = Class.forName(className);
             Constructor<?> constructor = webViewClass.getConstructor(Context.class, CordovaPreferences.class);
@@ -85,9 +84,6 @@ public class CordovaWebViewImpl implements CordovaWebView {
         }
     }
 
-    public CordovaWebViewImpl(Context context) {
-        this(context, null);
-    }
     public CordovaWebViewImpl(Context context, CordovaWebViewEngine cordovaWebViewEngine) {
         this.context = context;
         this.engine = cordovaWebViewEngine;
@@ -102,11 +98,6 @@ public class CordovaWebViewImpl implements CordovaWebView {
         if (this.cordova != null) {
             throw new IllegalStateException();
         }
-        // Happens only when not using CordovaActivity. Usually, engine is set in the constructor.
-        if (engine == null) {
-            String className = preferences.getString("webView", SystemWebViewEngine.class.getCanonicalName());
-            engine = createEngine(className, context, preferences);
-        }
         this.cordova = cordova;
         this.preferences = preferences;
         pluginManager = new PluginManager(this, this.cordova, pluginEntries);


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


[2/2] android commit: CB-8592 Fix NPE if lifecycle events reach CordovaWebView before `init()` has been called

Posted by ag...@apache.org.
CB-8592 Fix NPE if lifecycle events reach CordovaWebView before `init()` has been called


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

Branch: refs/heads/master
Commit: 62c081dc85e297581811db2cacdf73eb5d49ea24
Parents: 023ad9d
Author: Andrew Grieve <ag...@chromium.org>
Authored: Tue Mar 3 09:51:39 2015 -0500
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Tue Mar 3 09:51:39 2015 -0500

----------------------------------------------------------------------
 .../org/apache/cordova/CordovaWebViewImpl.java  | 34 +++++++++-----------
 1 file changed, 15 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/62c081dc/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 d600440..3b5aecd 100644
--- a/framework/src/org/apache/cordova/CordovaWebViewImpl.java
+++ b/framework/src/org/apache/cordova/CordovaWebViewImpl.java
@@ -423,14 +423,12 @@ public class CordovaWebViewImpl implements CordovaWebView {
     }
     @Override
     public void handlePause(boolean keepRunning) {
+        if (!isInitialized()) {
+            return;
+        }
         LOG.d(TAG, "Handle the pause");
-        // Send pause event to JavaScript
         sendJavascriptEvent("pause");
-
-        // Forward to plugins
-        if (pluginManager != null) {
-            pluginManager.onPause(keepRunning);
-        }
+        pluginManager.onPause(keepRunning);
 
         // If app doesn't want to run in background
         if (!keepRunning) {
@@ -439,29 +437,27 @@ public class CordovaWebViewImpl implements CordovaWebView {
         }
     }
     @Override
-    public void handleResume(boolean keepRunning)
-    {
+    public void handleResume(boolean keepRunning) {
+        if (!isInitialized()) {
+            return;
+        }
+
         // Resume JavaScript timers. This affects all webviews within the app!
         engine.setPaused(false);
-
         sendJavascriptEvent("resume");
-
-        // Forward to plugins
-        if (this.pluginManager != null) {
-            this.pluginManager.onResume(keepRunning);
-        }
+        this.pluginManager.onResume(keepRunning);
     }
 
     @Override
-    public void handleDestroy()
-    {
+    public void handleDestroy() {
+        if (!isInitialized()) {
+            return;
+        }
         // Cancel pending timeout timer.
         loadUrlTimeout++;
 
         // Forward to plugins
-        if (this.pluginManager != null) {
-            this.pluginManager.onDestroy();
-        }
+        this.pluginManager.onDestroy();
 
         // Load blank page so that JavaScript onunload is called
         this.loadUrl("about:blank");


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