mirror of
https://github.com/apache/cordova-android.git
synced 2025-01-31 17:32:51 +08:00
Delegate making WebViewClient and ChromeClient to webview engine.
Revert the change of webview preference name.
This commit is contained in:
parent
dbfc292353
commit
7a5405d2ab
@ -166,7 +166,7 @@ public class AndroidWebView extends WebView implements CordovaWebView {
|
|||||||
{
|
{
|
||||||
Log.d(TAG, "Your activity must implement CordovaInterface to work");
|
Log.d(TAG, "Your activity must implement CordovaInterface to work");
|
||||||
}
|
}
|
||||||
this.setWebChromeClient((CordovaChromeClient) new AndroidChromeClient(this.cordova, this));
|
this.setWebChromeClient(this.makeChromeClient());
|
||||||
this.initWebViewClient(this.cordova);
|
this.initWebViewClient(this.cordova);
|
||||||
this.loadConfiguration();
|
this.loadConfiguration();
|
||||||
this.setup();
|
this.setup();
|
||||||
@ -190,7 +190,7 @@ public class AndroidWebView extends WebView implements CordovaWebView {
|
|||||||
{
|
{
|
||||||
Log.d(TAG, "Your activity must implement CordovaInterface to work");
|
Log.d(TAG, "Your activity must implement CordovaInterface to work");
|
||||||
}
|
}
|
||||||
this.setWebChromeClient((CordovaChromeClient) new AndroidChromeClient(this.cordova, this));
|
this.setWebChromeClient(this.makeChromeClient());
|
||||||
this.loadConfiguration();
|
this.loadConfiguration();
|
||||||
this.setup();
|
this.setup();
|
||||||
}
|
}
|
||||||
@ -214,7 +214,7 @@ public class AndroidWebView extends WebView implements CordovaWebView {
|
|||||||
{
|
{
|
||||||
Log.d(TAG, "Your activity must implement CordovaInterface to work");
|
Log.d(TAG, "Your activity must implement CordovaInterface to work");
|
||||||
}
|
}
|
||||||
this.setWebChromeClient((CordovaChromeClient) new AndroidChromeClient(this.cordova));
|
this.setWebChromeClient(this.makeChromeClient());
|
||||||
this.initWebViewClient(this.cordova);
|
this.initWebViewClient(this.cordova);
|
||||||
this.loadConfiguration();
|
this.loadConfiguration();
|
||||||
this.setup();
|
this.setup();
|
||||||
@ -224,15 +224,7 @@ public class AndroidWebView extends WebView implements CordovaWebView {
|
|||||||
* set the WebViewClient, but provide special case handling for IceCreamSandwich.
|
* set the WebViewClient, but provide special case handling for IceCreamSandwich.
|
||||||
*/
|
*/
|
||||||
private void initWebViewClient(CordovaInterface cordova) {
|
private void initWebViewClient(CordovaInterface cordova) {
|
||||||
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB ||
|
this.setWebViewClient(this.makeWebViewClient());
|
||||||
android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.JELLY_BEAN_MR1)
|
|
||||||
{
|
|
||||||
this.setWebViewClient((CordovaWebViewClient) new AndroidWebViewClient(this.cordova, this));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this.setWebViewClient((CordovaWebViewClient) new IceCreamCordovaWebViewClient(this.cordova, this));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1082,4 +1074,18 @@ public class AndroidWebView extends WebView implements CordovaWebView {
|
|||||||
public View getView() {
|
public View getView() {
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CordovaWebViewClient makeWebViewClient() {
|
||||||
|
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
|
||||||
|
return (CordovaWebViewClient) new AndroidWebViewClient(this.cordova, this);
|
||||||
|
} else {
|
||||||
|
return (CordovaWebViewClient) new IceCreamCordovaWebViewClient(this.cordova, this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CordovaChromeClient makeChromeClient() {
|
||||||
|
return (CordovaChromeClient) new AndroidChromeClient(this.cordova, this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -214,7 +214,7 @@ public class CordovaActivity extends Activity implements CordovaInterface {
|
|||||||
* require a more specialized web view.
|
* require a more specialized web view.
|
||||||
*/
|
*/
|
||||||
protected CordovaWebView makeWebView() {
|
protected CordovaWebView makeWebView() {
|
||||||
String r = this.getStringProperty("webView", "org.apache.cordova.Android").concat("WebView");
|
String r = this.getStringProperty("webView", "org.apache.cordova.AndroidWebView");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Class webViewClass = Class.forName(r);
|
Class webViewClass = Class.forName(r);
|
||||||
@ -222,8 +222,14 @@ public class CordovaActivity extends Activity implements CordovaInterface {
|
|||||||
|
|
||||||
|
|
||||||
if(CordovaWebView.class.isAssignableFrom(webViewClass)) {
|
if(CordovaWebView.class.isAssignableFrom(webViewClass)) {
|
||||||
CordovaWebView webView = (CordovaWebView) webViewConstructors[0].newInstance(this);
|
for (Constructor<CordovaWebView> constructor : webViewConstructors) {
|
||||||
|
try {
|
||||||
|
CordovaWebView webView = (CordovaWebView) constructor.newInstance(this);
|
||||||
return webView;
|
return webView;
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
LOG.e(TAG, "Illegal arguments, try next constructor.");
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -254,44 +260,7 @@ public class CordovaActivity extends Activity implements CordovaInterface {
|
|||||||
* @param webView the default constructed web view object
|
* @param webView the default constructed web view object
|
||||||
*/
|
*/
|
||||||
protected CordovaWebViewClient makeWebViewClient(CordovaWebView webView) {
|
protected CordovaWebViewClient makeWebViewClient(CordovaWebView webView) {
|
||||||
String r = this.getStringProperty("webView", "org.apache.cordova.Android").concat("WebViewClient");
|
return webView.makeWebViewClient();
|
||||||
|
|
||||||
try {
|
|
||||||
Class webViewClientClass = Class.forName(r);
|
|
||||||
Constructor<CordovaWebViewClient> [] webViewClientConstructors = webViewClientClass.getConstructors();
|
|
||||||
|
|
||||||
|
|
||||||
if(CordovaWebViewClient.class.isAssignableFrom(webViewClientClass)) {
|
|
||||||
for (Constructor<CordovaWebViewClient> constructor : webViewClientConstructors) {
|
|
||||||
try {
|
|
||||||
CordovaWebViewClient webViewClient = (CordovaWebViewClient) constructor.newInstance(this, webView);
|
|
||||||
return webViewClient;
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.e(TAG, "Illegal arguments, try next constructor.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG.e(TAG, "The WebView Engine is NOT a proper WebView, defaulting to system WebView");
|
|
||||||
}
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
LOG.e(TAG, "The WebView Engine was not found, defaulting to system WebView");
|
|
||||||
} catch (InstantiationException e) {
|
|
||||||
LOG.e(TAG, "Unable to instantiate the WebView, defaulting to system WebView");
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
LOG.e(TAG, "Illegal Access to Constructor. This should never happen, defaulting to system WebView");
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.e(TAG, "The WebView does not implement the default constructor, defaulting to system WebView");
|
|
||||||
} catch (InvocationTargetException e) {
|
|
||||||
LOG.e(TAG, "Invocation Target Exception! Reflection is hard, defaulting to system WebView");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) {
|
|
||||||
return (CordovaWebViewClient) new AndroidWebViewClient(this, webView);
|
|
||||||
} else {
|
|
||||||
return (CordovaWebViewClient) new IceCreamCordovaWebViewClient(this, webView);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -303,40 +272,7 @@ public class CordovaActivity extends Activity implements CordovaInterface {
|
|||||||
* @param webView the default constructed web view object
|
* @param webView the default constructed web view object
|
||||||
*/
|
*/
|
||||||
protected CordovaChromeClient makeChromeClient(CordovaWebView webView) {
|
protected CordovaChromeClient makeChromeClient(CordovaWebView webView) {
|
||||||
String r = this.getStringProperty("webView", "org.apache.cordova.Android").concat("ChromeClient");
|
return webView.makeChromeClient();
|
||||||
|
|
||||||
try {
|
|
||||||
Class chromeClientClass = Class.forName(r);
|
|
||||||
Constructor<CordovaChromeClient> [] chromeClientConstructors = chromeClientClass.getConstructors();
|
|
||||||
|
|
||||||
|
|
||||||
if(CordovaChromeClient.class.isAssignableFrom(chromeClientClass)) {
|
|
||||||
for (Constructor<CordovaChromeClient> constructor : chromeClientConstructors) {
|
|
||||||
try {
|
|
||||||
CordovaChromeClient chromeClient = (CordovaChromeClient) constructor.newInstance(this, webView);
|
|
||||||
return chromeClient;
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.e(TAG, "Illegal arguments, try next constructor.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
LOG.e(TAG, "The WebView Engine is NOT a proper WebView, defaulting to system WebView");
|
|
||||||
}
|
|
||||||
} catch (ClassNotFoundException e) {
|
|
||||||
LOG.e(TAG, "The WebView Engine was not found, defaulting to system WebView");
|
|
||||||
} catch (InstantiationException e) {
|
|
||||||
LOG.e(TAG, "Unable to instantiate the WebView, defaulting to system WebView");
|
|
||||||
} catch (IllegalAccessException e) {
|
|
||||||
LOG.e(TAG, "Illegal Access to Constructor. This should never happen, defaulting to system WebView");
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
LOG.e(TAG, "The WebView does not implement the default constructor, defaulting to system WebView");
|
|
||||||
} catch (InvocationTargetException e) {
|
|
||||||
LOG.e(TAG, "Invocation Target Exception! Reflection is hard, defaulting to system WebView");
|
|
||||||
}
|
|
||||||
|
|
||||||
return (CordovaChromeClient) new AndroidChromeClient(this, webView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,6 +19,10 @@ public interface CordovaWebView {
|
|||||||
|
|
||||||
View getView();
|
View getView();
|
||||||
|
|
||||||
|
CordovaWebViewClient makeWebViewClient();
|
||||||
|
|
||||||
|
CordovaChromeClient makeChromeClient();
|
||||||
|
|
||||||
void setWebViewClient(CordovaWebViewClient webViewClient);
|
void setWebViewClient(CordovaWebViewClient webViewClient);
|
||||||
|
|
||||||
void setWebChromeClient(CordovaChromeClient webChromeClient);
|
void setWebChromeClient(CordovaChromeClient webChromeClient);
|
||||||
|
Loading…
Reference in New Issue
Block a user