From 2818e05e71e6774427692ca60a4ab7cf655b5c53 Mon Sep 17 00:00:00 2001 From: Joe Bowser Date: Fri, 30 Mar 2012 13:28:19 -0700 Subject: [PATCH] Move the callback server into the View, preparing to start CordovaWebView testing --- .../org/apache/cordova/CordovaWebView.java | 31 ++++++++++++++++++- .../src/org/apache/cordova/DroidGap.java | 13 ++++---- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/framework/src/org/apache/cordova/CordovaWebView.java b/framework/src/org/apache/cordova/CordovaWebView.java index 461bbe44..fad4ffea 100644 --- a/framework/src/org/apache/cordova/CordovaWebView.java +++ b/framework/src/org/apache/cordova/CordovaWebView.java @@ -15,9 +15,11 @@ import org.xmlpull.v1.XmlPullParserException; import android.content.Context; import android.content.res.XmlResourceParser; import android.util.AttributeSet; +import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebSettings.LayoutAlgorithm; +import android.webkit.WebViewClient; public class CordovaWebView extends WebView { @@ -30,9 +32,12 @@ public class CordovaWebView extends WebView { private ArrayList whiteList = new ArrayList(); private HashMap whiteListCache = new HashMap(); protected PluginManager pluginManager; - + public CallbackServer callbackServer; + /** Actvities and other important classes **/ private Context mCtx; + private CordovaWebViewClient viewClient; + private CordovaChromeClient chromeClient; public CordovaWebView(Context context) { super(context); @@ -241,4 +246,28 @@ public class CordovaWebView extends WebView { return false; } + @Override + public void setWebViewClient(WebViewClient client) { + if(client.getClass().equals(CordovaWebView.class)) { + viewClient = (CordovaWebViewClient) client; + super.setWebViewClient(viewClient); + } + else + { + //This should throw an exception! + } + } + + @Override + public void setWebChromeClient(WebChromeClient client) { + if(client.getClass().equals(CordovaWebView.class)) { + chromeClient = (CordovaChromeClient) client; + super.setWebChromeClient(chromeClient); + } + else + { + //This should throw an exception! + } + } + } diff --git a/framework/src/org/apache/cordova/DroidGap.java b/framework/src/org/apache/cordova/DroidGap.java index 35d31b36..d6e64cdb 100755 --- a/framework/src/org/apache/cordova/DroidGap.java +++ b/framework/src/org/apache/cordova/DroidGap.java @@ -155,7 +155,6 @@ public class DroidGap extends Activity implements CordovaInterface { protected LinearLayout root; public boolean bound = false; - public CallbackServer callbackServer; protected boolean cancelLoadUrl = false; protected ProgressDialog spinnerDialog = null; @@ -380,12 +379,12 @@ public class DroidGap extends Activity implements CordovaInterface { me.appView.clearHistory(); // Create callback server and plugin manager - if (me.callbackServer == null) { - me.callbackServer = new CallbackServer(); - me.callbackServer.init(url); + if (me.appView.callbackServer == null) { + me.appView.callbackServer = new CallbackServer(); + me.appView.callbackServer.init(url); } else { - me.callbackServer.reinit(url); + me.appView.callbackServer.reinit(url); } appView.pluginManager.init(); @@ -833,8 +832,8 @@ public class DroidGap extends Activity implements CordovaInterface { */ public void sendJavascript(String statement) { //We need to check for the null case on the Kindle Fire beacuse it changes the width and height on load - if(this.callbackServer != null) - this.callbackServer.sendJavascript(statement); + if(this.appView.callbackServer != null) + this.appView.callbackServer.sendJavascript(statement); } /**