Provide CordovaPlugin with CordovaPreferences. Add new Plugin.initialize()

This adds CordovaPlugin.initialize() (no args) and deprecates
CordovaPlugin.initialize(app, webView). This will allow us to refactor
more easily by using the package-private privateInitialize() to set
fields.


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

Branch: refs/heads/4.0.x
Commit: 04ccb06e3f6297f3956d847507423c66006eae08
Parents: d31ee20
Author: Andrew Grieve <[email protected]>
Authored: Tue Jul 8 14:26:21 2014 -0400
Committer: Andrew Grieve <[email protected]>
Committed: Tue Jul 8 14:26:21 2014 -0400

----------------------------------------------------------------------
 framework/src/org/apache/cordova/App.java       |  8 ++------
 .../src/org/apache/cordova/CordovaActivity.java |  3 ++-
 .../src/org/apache/cordova/CordovaPlugin.java   | 21 +++++++++++++++-----
 .../src/org/apache/cordova/CordovaWebView.java  |  8 +++++++-
 .../src/org/apache/cordova/PluginEntry.java     |  2 +-
 5 files changed, 28 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-android/blob/04ccb06e/framework/src/org/apache/cordova/App.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/App.java 
b/framework/src/org/apache/cordova/App.java
index 2112519..c488f10 100755
--- a/framework/src/org/apache/cordova/App.java
+++ b/framework/src/org/apache/cordova/App.java
@@ -47,16 +47,12 @@ public class App extends CordovaPlugin {
     /**
      * Sets the context of the Command. This can then be used to do things like
      * get file paths associated with the Activity.
-     *
-     * @param cordova The context of the main Activity.
-     * @param webView The CordovaWebView Cordova is running in.
      */
-    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
-        super.initialize(cordova, webView);
+    @Override
+    public void initialize() {
         this.initTelephonyReceiver();
     }
 
-
     /**
      * Executes the request and returns PluginResult.
      *

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/04ccb06e/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 0d07957..371172c 100755
--- a/framework/src/org/apache/cordova/CordovaActivity.java
+++ b/framework/src/org/apache/cordova/CordovaActivity.java
@@ -227,7 +227,7 @@ public class CordovaActivity extends Activity implements 
CordovaInterface {
         }
 
         appView = makeWebView();
-        appView.init(this, makeWebViewClient(appView), 
makeChromeClient(appView), pluginEntries, whitelist);
+        appView.init(this, makeWebViewClient(appView), 
makeChromeClient(appView), pluginEntries, whitelist, preferences);
 
         // TODO: Have the views set this themselves.
         if (preferences.getBoolean("DisallowOverscroll", false)) {
@@ -240,6 +240,7 @@ public class CordovaActivity extends Activity implements 
CordovaInterface {
         setVolumeControlStream(AudioManager.STREAM_MUSIC);
     }
 
+    @SuppressWarnings("deprecation")
     protected void loadConfig() {
         ConfigXmlParser parser = new ConfigXmlParser();
         parser.parse(this);

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/04ccb06e/framework/src/org/apache/cordova/CordovaPlugin.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/CordovaPlugin.java 
b/framework/src/org/apache/cordova/CordovaPlugin.java
index 8111e7b..eff66c8 100644
--- a/framework/src/org/apache/cordova/CordovaPlugin.java
+++ b/framework/src/org/apache/cordova/CordovaPlugin.java
@@ -32,21 +32,32 @@ import android.net.Uri;
  * Plugins must extend this class and override one of the execute methods.
  */
 public class CordovaPlugin {
+    @Deprecated // This is never set.
     public String id;
     public CordovaWebView webView;                                     // 
WebView object
     public CordovaInterface cordova;
+    protected CordovaPreferences preferences;
 
-    /**
-     * @param cordova The context of the main Activity.
-     * @param webView The associated CordovaWebView.
-     */
-    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
+    void privateInitialize(CordovaInterface cordova, CordovaWebView webView, 
CordovaPreferences preferences) {
         assert this.cordova == null;
         this.cordova = cordova;
         this.webView = webView;
+        this.preferences = preferences;
+        initialize(cordova, webView);
+        initialize();
+    }
+
+    @Deprecated // Override initialize() instead.
+    public void initialize(CordovaInterface cordova, CordovaWebView webView) {
     }
 
     /**
+     * This is where you can do start-up logic with protected fields set.
+     */
+    protected void initialize() {
+    }
+    
+    /**
      * Executes the request.
      *
      * This method is called from the WebView thread. To do a non-trivial 
amount of work, use:

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/04ccb06e/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 fb442cc..7c1974c 100755
--- a/framework/src/org/apache/cordova/CordovaWebView.java
+++ b/framework/src/org/apache/cordova/CordovaWebView.java
@@ -92,6 +92,7 @@ public class CordovaWebView extends WebView {
     private Whitelist whitelist;
     // The URL passed to loadUrl(), not necessarily the URL of the current 
page.
     String loadedUrl;
+    private CordovaPreferences preferences;
 
     class ActivityResult {
         
@@ -135,7 +136,7 @@ public class CordovaWebView extends WebView {
 
     // Use two-phase init so that the control will work with XML layouts.
     public void init(CordovaInterface cordova, CordovaWebViewClient 
webViewClient, CordovaChromeClient webChromeClient,
-            List<PluginEntry> pluginEntries, Whitelist whitelist) {
+            List<PluginEntry> pluginEntries, Whitelist whitelist, 
CordovaPreferences preferences) {
         if (this.cordova != null) {
             throw new IllegalStateException();
         }
@@ -143,6 +144,7 @@ public class CordovaWebView extends WebView {
         this.viewClient = webViewClient;
         this.chromeClient = webChromeClient;
         this.whitelist = whitelist;
+        this.preferences = preferences;
         super.setWebChromeClient(webChromeClient);
         super.setWebViewClient(webViewClient);
 
@@ -903,4 +905,8 @@ public class CordovaWebView extends WebView {
     public CordovaResourceApi getResourceApi() {
         return resourceApi;
     }
+
+    public CordovaPreferences getPreferences() {
+        return preferences;
+    }
 }

http://git-wip-us.apache.org/repos/asf/cordova-android/blob/04ccb06e/framework/src/org/apache/cordova/PluginEntry.java
----------------------------------------------------------------------
diff --git a/framework/src/org/apache/cordova/PluginEntry.java 
b/framework/src/org/apache/cordova/PluginEntry.java
index c54f6cb..e94cf1c 100755
--- a/framework/src/org/apache/cordova/PluginEntry.java
+++ b/framework/src/org/apache/cordova/PluginEntry.java
@@ -98,7 +98,7 @@ public class PluginEntry {
             Class<?> c = getClassByName(this.pluginClass);
             if (isCordovaPlugin(c)) {
                 this.plugin = (CordovaPlugin) c.newInstance();
-                this.plugin.initialize(ctx, webView);
+                this.plugin.privateInitialize(ctx, webView, 
webView.getPreferences());
                 return plugin;
             }
         } catch (Exception e) {

Reply via email to