TickAdsLite v3.1版本的 MD5 值为:7ff5236e2d7beb37efeddcb8fe8d4660
以下内容为反编译后的 WebPlayerView.java 源代码,内容仅作参考
package com.unity3d.services.ads.webplayer;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.net.http.SslError;
import android.os.Build;
import android.os.Message;
import android.view.KeyEvent;
import android.view.View;
import android.webkit.ClientCertRequest;
import android.webkit.ConsoleMessage;
import android.webkit.DownloadListener;
import android.webkit.GeolocationPermissions;
import android.webkit.HttpAuthHandler;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.PermissionRequest;
import android.webkit.RenderProcessGoneDetail;
import android.webkit.SslErrorHandler;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import com.unity3d.services.core.log.DeviceLog;
import com.unity3d.services.core.misc.Utilities;
import com.unity3d.services.core.misc.ViewUtilities;
import com.unity3d.services.core.webview.WebViewApp;
import com.unity3d.services.core.webview.WebViewEventCategory;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class WebPlayerView extends WebView {
private Map<String, String> _erroredSettings;
private Method _evaluateJavascript;
private JSONObject _eventSettings;
private Runnable _unsubscribeLayoutChange;
private String viewId;
public WebPlayerView(Context context, String viewId, JSONObject webSettings, JSONObject webPlayerSettings) {
super(context);
this._evaluateJavascript = null;
this._unsubscribeLayoutChange = null;
this.viewId = viewId;
WebSettings settings = getSettings();
if (Build.VERSION.SDK_INT >= 16) {
settings.setAllowFileAccessFromFileURLs(false);
settings.setAllowUniversalAccessFromFileURLs(false);
}
if (Build.VERSION.SDK_INT >= 19) {
try {
this._evaluateJavascript = WebView.class.getMethod("evaluateJavascript", String.class, ValueCallback.class);
} catch (NoSuchMethodException e) {
DeviceLog.exception("Method evaluateJavascript not found", e);
this._evaluateJavascript = null;
}
}
settings.setCacheMode(2);
settings.setDatabaseEnabled(false);
settings.setDomStorageEnabled(false);
settings.setGeolocationEnabled(false);
settings.setJavaScriptEnabled(true);
settings.setLoadsImagesAutomatically(true);
settings.setPluginState(WebSettings.PluginState.OFF);
settings.setRenderPriority(WebSettings.RenderPriority.NORMAL);
settings.setSaveFormData(false);
settings.setSavePassword(false);
setHorizontalScrollBarEnabled(false);
setVerticalScrollBarEnabled(false);
setInitialScale(0);
setBackgroundColor(0);
ViewUtilities.setBackground(this, new ColorDrawable(0));
setBackgroundResource(0);
setSettings(webSettings, webPlayerSettings);
setWebViewClient(new WebPlayerClient());
setWebChromeClient(new WebPlayerChromeClient());
setDownloadListener(new WebPlayerDownloadListener());
addJavascriptInterface(new WebPlayerBridgeInterface(viewId), "webplayerbridge");
WebPlayerViewCache.getInstance().addWebPlayer(viewId, this);
subscribeOnLayoutChange();
}
private void subscribeOnLayoutChange() {
if (this._unsubscribeLayoutChange != null) {
this._unsubscribeLayoutChange.run();
}
if (Build.VERSION.SDK_INT >= 11) {
final View.OnLayoutChangeListener onLayoutChangeListener = new View.OnLayoutChangeListener() {
@Override
public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) {
WebPlayerView.this.onLayoutChange();
}
};
addOnLayoutChangeListener(onLayoutChangeListener);
this._unsubscribeLayoutChange = new Runnable() {
@Override
public void run() {
WebPlayerView.this.removeOnLayoutChangeListener(onLayoutChangeListener);
}
};
}
}
@Override
public void destroy() {
super.destroy();
WebPlayerViewCache.getInstance().removeWebPlayer(this.viewId);
if (this._unsubscribeLayoutChange != null) {
this._unsubscribeLayoutChange.run();
}
}
public void setEventSettings(JSONObject eventSettings) {
this._eventSettings = eventSettings;
}
public void setSettings(JSONObject webSettings, JSONObject webPlayerSettings) {
if (this._erroredSettings != null) {
this._erroredSettings.clear();
}
WebSettings settings = getSettings();
setTargetSettings(settings, webSettings);
setTargetSettings(this, webPlayerSettings);
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
super.onSizeChanged(w, h, oldw, oldh);
onLayoutChange();
}
public void onLayoutChange() {
int[] location = new int[2];
getLocationOnScreen(location);
int x = location[0];
int y = location[1];
int width = getWidth();
int height = getHeight();
float alpha = 1.0f;
if (Build.VERSION.SDK_INT >= 11) {
alpha = getAlpha();
}
WebPlayerEventBridge.sendFrameUpdate(this.viewId, x, y, width, height, alpha);
}
public Map<String, String> getErroredSettings() {
return this._erroredSettings;
}
private Object setTargetSettings(Object targetObj, JSONObject settings) {
if (settings != null) {
Iterator<String> keysIterator = settings.keys();
while (keysIterator.hasNext()) {
String key = keysIterator.next();
try {
JSONArray parameters = settings.getJSONArray(key);
Class<?>[] types = getTypes(parameters);
Method m = targetObj.getClass().getMethod(key, types);
m.invoke(targetObj, getValues(parameters));
} catch (Exception e) {
addErroredSetting(key, e.getMessage());
DeviceLog.exception("Setting errored", e);
}
}
}
return targetObj;
}
public void invokeJavascript(String data) {
Utilities.runOnUiThread(new JavaScriptInvocation(data, this));
}
public void sendEvent(JSONArray params) {
invokeJavascript("javascript:window.nativebridge.receiveEvent(" + params.toString() + ")");
}
public class JavaScriptInvocation implements Runnable {
private String _jsString;
private WebView _webView;
public JavaScriptInvocation(String jsString, WebView webView) {
this._jsString = null;
this._webView = null;
this._jsString = jsString;
this._webView = webView;
}
@Override
public void run() {
if (this._jsString != null) {
try {
if (Build.VERSION.SDK_INT >= 19) {
WebPlayerView.this._evaluateJavascript.invoke(this._webView, this._jsString, null);
} else {
WebPlayerView.this.loadUrl(this._jsString);
}
return;
} catch (Exception e) {
DeviceLog.exception("Error while processing JavaScriptString", e);
return;
}
}
DeviceLog.error("Could not process JavaScript, the string is NULL");
}
}
private Class<?>[] getTypes(JSONArray parameters) throws JSONException, ClassNotFoundException {
if (parameters == null) {
return null;
}
Class<?>[] types = new Class[parameters.length()];
if (parameters != null) {
for (int i = 0; i < parameters.length(); i++) {
if (parameters.get(i) instanceof JSONObject) {
JSONObject param = (JSONObject) parameters.get(i);
String className = param.getString("className");
Class<?> theClass = Class.forName(className);
if (theClass != null) {
types[i] = theClass;
}
} else {
Class<?> currentClass = parameters.get(i).getClass();
types[i] = getPrimitiveClass(currentClass);
}
}
return types;
}
return types;
}
public Class<?> getPrimitiveClass(Class<?> className) {
String typeName = className.getName();
if (typeName.equals("java.lang.Byte")) {
return Byte.TYPE;
}
if (typeName.equals("java.lang.Short")) {
return Short.TYPE;
}
if (typeName.equals("java.lang.Integer")) {
return Integer.TYPE;
}
if (typeName.equals("java.lang.Long")) {
return Long.TYPE;
}
if (typeName.equals("java.lang.Character")) {
return Character.TYPE;
}
if (typeName.equals("java.lang.Float")) {
return Float.TYPE;
}
if (typeName.equals("java.lang.Double")) {
return Double.TYPE;
}
if (typeName.equals("java.lang.Boolean")) {
return Boolean.TYPE;
}
if (typeName.equals("java.lang.Void")) {
return Void.TYPE;
}
return className;
}
private Object[] getValues(JSONArray parameters) throws JSONException, ClassNotFoundException, NoSuchMethodException {
Class<?> enumClass;
if (parameters == null) {
return null;
}
Object[] values = new Object[parameters.length()];
Object[] params = new Object[parameters.length()];
for (int i = 0; i < parameters.length(); i++) {
if (parameters.get(i) instanceof JSONObject) {
JSONObject param = (JSONObject) parameters.get(i);
Object value = param.get("value");
String type = param.getString("type");
String className = null;
if (param.has("className")) {
className = param.getString("className");
}
if (className != null && type.equals("Enum") && (enumClass = Class.forName(className)) != null) {
params[i] = Enum.valueOf(enumClass, (String) value);
}
} else {
params[i] = parameters.get(i);
}
}
if (parameters != null) {
System.arraycopy(params, 0, values, 0, parameters.length());
return values;
}
return values;
}
private void addErroredSetting(String key, String error) {
if (this._erroredSettings == null) {
this._erroredSettings = new HashMap();
}
this._erroredSettings.put(key, error);
}
public boolean shouldCallSuper(String event) {
try {
if (this._eventSettings != null && this._eventSettings.has(event) && this._eventSettings.getJSONObject(event).has("callSuper")) {
return this._eventSettings.getJSONObject(event).getBoolean("callSuper");
}
} catch (Exception e) {
DeviceLog.exception("Error getting super call status", e);
}
return true;
}
public boolean shouldSendEvent(String event) {
try {
if (this._eventSettings != null && this._eventSettings.has(event) && this._eventSettings.getJSONObject(event).has("sendEvent")) {
return this._eventSettings.getJSONObject(event).getBoolean("sendEvent");
}
} catch (Exception e) {
DeviceLog.exception("Error getting send event status", e);
}
return false;
}
public <T> T getReturnValue(String event, Class<T> type, T defaultValue) {
try {
if (this._eventSettings != null && this._eventSettings.has(event) && this._eventSettings.getJSONObject(event).has("returnValue")) {
return type.cast(this._eventSettings.getJSONObject(event).get("returnValue"));
}
return defaultValue;
} catch (Exception e) {
DeviceLog.exception("Error getting default return value", e);
return defaultValue;
}
}
public boolean hasReturnValue(String event) {
try {
if (this._eventSettings != null && this._eventSettings.has(event)) {
if (this._eventSettings.getJSONObject(event).has("returnValue")) {
return true;
}
}
} catch (Exception e) {
DeviceLog.exception("Error getting default return value", e);
}
return false;
}
private class WebPlayerClient extends WebViewClient {
private WebPlayerClient() {
}
@Override
public boolean onRenderProcessGone(final WebView view, RenderProcessGoneDetail detail) {
Utilities.runOnUiThread(new Runnable() {
@Override
public void run() {
ViewUtilities.removeViewFromParent(view);
view.destroy();
}
});
WebPlayerEventBridge.error(WebPlayerView.this.viewId, WebPlayerView.this.getUrl(), "UnityAds Sdk WebPlayer onRenderProcessGone : " + detail.toString());
DeviceLog.error("UnityAds Sdk WebPlayer onRenderProcessGone : " + detail.toString());
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (WebPlayerView.this.shouldCallSuper("onPageStarted")) {
super.onPageStarted(view, url, favicon);
}
if (WebPlayerView.this.shouldSendEvent("onPageStarted")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.PAGE_STARTED, url, WebPlayerView.this.viewId);
}
}
@Override
public void onPageFinished(WebView view, String url) {
if (WebPlayerView.this.shouldCallSuper("onPageFinished")) {
super.onPageFinished(view, url);
}
if (WebPlayerView.this.shouldSendEvent("onPageFinished")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.PAGE_FINISHED, url, WebPlayerView.this.viewId);
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
if (WebPlayerView.this.shouldCallSuper("onReceivedError")) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedError")) {
WebPlayerEventBridge.error(WebPlayerView.this.viewId, failingUrl, description);
}
}
@Override
@TargetApi(25)
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
if (WebPlayerView.this.shouldCallSuper("onReceivedError")) {
super.onReceivedError(view, request, error);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedError")) {
String description = "";
if (error != null && error.getDescription() != null) {
description = error.getDescription().toString();
}
String url = "";
if (request != null && request.getUrl() != null) {
url = request.getUrl().toString();
}
WebPlayerEventBridge.error(WebPlayerView.this.viewId, url, description);
}
}
@Override
public void onLoadResource(WebView view, String url) {
if (WebPlayerView.this.shouldCallSuper("onLoadResource")) {
super.onLoadResource(view, url);
}
if (WebPlayerView.this.shouldSendEvent("onLoadResource")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.LOAD_RESOUCE, url, WebPlayerView.this.viewId);
}
}
@Override
@TargetApi(14)
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
super.onReceivedSslError(view, handler, error);
DeviceLog.error("Received SSL error for '%s': %s", error.getUrl(), error.toString());
if (WebPlayerView.this.shouldSendEvent("onReceivedSslError")) {
String url = "";
if (error != null) {
url = error.getUrl();
}
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SSL_ERROR, url, WebPlayerView.this.viewId);
}
}
@Override
@TargetApi(21)
public void onReceivedClientCertRequest(WebView view, ClientCertRequest request) {
if (WebPlayerView.this.shouldCallSuper("onReceivedClientCertRequest")) {
super.onReceivedClientCertRequest(view, request);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedClientCertRequest")) {
String host = "";
int port = -1;
if (request != null) {
host = request.getHost();
port = request.getPort();
}
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.CLIENT_CERT_REQUEST, host, Integer.valueOf(port), WebPlayerView.this.viewId);
}
}
@Override
public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) {
if (WebPlayerView.this.shouldCallSuper("onReceivedHttpAuthRequest")) {
super.onReceivedHttpAuthRequest(view, handler, host, realm);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedHttpAuthRequest")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.HTTP_AUTH_REQUEST, host, realm, WebPlayerView.this.viewId);
}
}
@Override
public void onScaleChanged(WebView view, float oldScale, float newScale) {
if (WebPlayerView.this.shouldCallSuper("onScaleChanged")) {
super.onScaleChanged(view, oldScale, newScale);
}
if (WebPlayerView.this.shouldSendEvent("onScaleChanged")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SCALE_CHANGED, Float.valueOf(oldScale), Float.valueOf(newScale), WebPlayerView.this.viewId);
}
}
@Override
public void onReceivedLoginRequest(WebView view, String realm, String account, String args) {
if (WebPlayerView.this.shouldCallSuper("onReceivedLoginRequest")) {
super.onReceivedLoginRequest(view, realm, account, args);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedLoginRequest")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.LOGIN_REQUEST, realm, account, args, WebPlayerView.this.viewId);
}
}
@Override
@TargetApi(21)
public void onReceivedHttpError(WebView view, WebResourceRequest request, WebResourceResponse errorResponse) {
if (WebPlayerView.this.shouldCallSuper("onReceivedHttpError")) {
super.onReceivedHttpError(view, request, errorResponse);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedHttpError")) {
String url = "";
if (request != null && request.getUrl() != null) {
url = request.getUrl().toString();
}
int statusCode = -1;
String reasonPhrase = "";
if (errorResponse != null) {
statusCode = errorResponse.getStatusCode();
reasonPhrase = errorResponse.getReasonPhrase();
}
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.HTTP_ERROR, url, reasonPhrase, Integer.valueOf(statusCode), WebPlayerView.this.viewId);
}
}
@Override
@TargetApi(21)
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("shouldOverrideUrlLoading")) {
returnValue = Boolean.valueOf(super.shouldOverrideUrlLoading(view, request));
}
if (WebPlayerView.this.shouldSendEvent("shouldOverrideUrlLoading")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SHOULD_OVERRIDE_URL_LOADING, request.getUrl().toString(), request.getMethod(), WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("shouldOverrideUrlLoading")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("shouldOverrideUrlLoading", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("shouldOverrideUrlLoading")) {
returnValue = Boolean.valueOf(super.shouldOverrideUrlLoading(view, url));
}
if (WebPlayerView.this.shouldSendEvent("shouldOverrideUrlLoading")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SHOULD_OVERRIDE_URL_LOADING, url, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("shouldOverrideUrlLoading")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("shouldOverrideUrlLoading", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public void onPageCommitVisible(WebView view, String url) {
if (WebPlayerView.this.shouldCallSuper("onPageCommitVisible")) {
super.onPageCommitVisible(view, url);
}
if (WebPlayerView.this.shouldSendEvent("onPageCommitVisible")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.PAGE_COMMIT_VISIBLE, url, WebPlayerView.this.viewId);
}
}
@Override
@TargetApi(21)
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
WebResourceResponse returnValue = null;
if (WebPlayerView.this.shouldCallSuper("shouldInterceptRequest")) {
returnValue = super.shouldInterceptRequest(view, request);
}
if (WebPlayerView.this.shouldSendEvent("shouldInterceptRequest")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SHOULD_INTERCEPT_REQUEST, request.getUrl().toString(), WebPlayerView.this.viewId);
}
return returnValue;
}
@Override
public void onFormResubmission(WebView view, Message dontResend, Message resend) {
if (WebPlayerView.this.shouldCallSuper("onFormResubmission")) {
super.onFormResubmission(view, dontResend, resend);
}
if (WebPlayerView.this.shouldSendEvent("onFormResubmission")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.FORM_RESUBMISSION, WebPlayerView.this.viewId);
}
}
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("shouldOverrideKeyEvent")) {
returnValue = Boolean.valueOf(super.shouldOverrideKeyEvent(view, event));
}
if (WebPlayerView.this.shouldSendEvent("shouldOverrideKeyEvent")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SHOULD_OVERRIDE_KEY_EVENT, Integer.valueOf(event.getKeyCode()), Integer.valueOf(event.getAction()), WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("shouldOverrideKeyEvent")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("shouldOverrideKeyEvent", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public void onUnhandledKeyEvent(WebView view, KeyEvent event) {
if (WebPlayerView.this.shouldCallSuper("onUnhandledKeyEvent")) {
super.onUnhandledKeyEvent(view, event);
}
if (WebPlayerView.this.shouldSendEvent("onUnhandledKeyEvent")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.UNHANDLED_KEY_EVENT, Integer.valueOf(event.getKeyCode()), Integer.valueOf(event.getAction()), WebPlayerView.this.viewId);
}
}
}
@TargetApi(21)
private class WebPlayerChromeClient extends WebChromeClient {
private WebPlayerChromeClient() {
}
@Override
public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
if (WebPlayerView.this.shouldCallSuper("onGeolocationPermissionsShowPrompt")) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
}
if (WebPlayerView.this.shouldSendEvent("onGeolocationPermissionsShowPrompt")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.GEOLOCATION_PERMISSIONS_SHOW, origin, WebPlayerView.this.viewId);
}
}
@Override
public void onPermissionRequest(PermissionRequest request) {
if (WebPlayerView.this.shouldCallSuper("onPermissionRequest")) {
super.onPermissionRequest(request);
}
if (WebPlayerView.this.shouldSendEvent("onPermissionRequest")) {
String url = "";
if (request != null && request.getOrigin() != null) {
url = request.getOrigin().toString();
}
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.PERMISSION_REQUEST, url, WebPlayerView.this.viewId);
}
}
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (WebPlayerView.this.shouldCallSuper("onProgressChanged")) {
super.onProgressChanged(view, newProgress);
}
if (WebPlayerView.this.shouldSendEvent("onProgressChanged")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.PROGRESS_CHANGED, Integer.valueOf(newProgress), WebPlayerView.this.viewId);
}
}
@Override
public void onReceivedTitle(WebView view, String title) {
if (WebPlayerView.this.shouldCallSuper("onReceivedTitle")) {
super.onReceivedTitle(view, title);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedTitle")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.RECEIVED_TITLE, title, WebPlayerView.this.viewId);
}
}
@Override
public void onReceivedIcon(WebView view, Bitmap icon) {
if (WebPlayerView.this.shouldCallSuper("onReceivedIcon")) {
super.onReceivedIcon(view, icon);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedIcon")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.RECEIVED_ICON, WebPlayerView.this.viewId);
}
}
@Override
public void onReceivedTouchIconUrl(WebView view, String url, boolean precomposed) {
if (WebPlayerView.this.shouldCallSuper("onReceivedTouchIconUrl")) {
super.onReceivedTouchIconUrl(view, url, precomposed);
}
if (WebPlayerView.this.shouldSendEvent("onReceivedTouchIconUrl")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.RECEIVED_TOUCH_ICON_URL, url, Boolean.valueOf(precomposed), WebPlayerView.this.viewId);
}
}
@Override
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
if (WebPlayerView.this.shouldCallSuper("onShowCustomView")) {
super.onShowCustomView(view, callback);
}
if (WebPlayerView.this.shouldSendEvent("onShowCustomView")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SHOW_CUSTOM_VIEW, WebPlayerView.this.viewId);
}
}
@Override
public void onHideCustomView() {
if (WebPlayerView.this.shouldCallSuper("onHideCustomView")) {
super.onHideCustomView();
}
if (WebPlayerView.this.shouldSendEvent("onHideCustomView")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.HIDE_CUSTOM_VIEW, WebPlayerView.this.viewId);
}
}
@Override
public boolean onCreateWindow(WebView view, boolean isDialog, boolean isUserGesture, Message resultMsg) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("onCreateWindow")) {
returnValue = Boolean.valueOf(super.onCreateWindow(view, isDialog, isUserGesture, resultMsg));
}
if (WebPlayerView.this.shouldSendEvent("onCreateWindow")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.CREATE_WINDOW, Boolean.valueOf(isDialog), Boolean.valueOf(isUserGesture), resultMsg, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("onCreateWindow")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("onCreateWindow", Boolean.class, false);
}
return returnValue.booleanValue();
}
@Override
public void onRequestFocus(WebView view) {
if (WebPlayerView.this.shouldCallSuper("onRequestFocus")) {
super.onRequestFocus(view);
}
if (WebPlayerView.this.shouldSendEvent("onRequestFocus")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.REQUEST_FOCUS, WebPlayerView.this.viewId);
}
}
@Override
public void onCloseWindow(WebView window) {
if (WebPlayerView.this.shouldCallSuper("onCloseWindow")) {
super.onCloseWindow(window);
}
if (WebPlayerView.this.shouldSendEvent("onCloseWindow")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.CLOSE_WINDOW, WebPlayerView.this.viewId);
}
}
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("onJsAlert")) {
returnValue = Boolean.valueOf(super.onJsAlert(view, url, message, result));
}
if (WebPlayerView.this.shouldSendEvent("onJsAlert")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.JS_ALERT, url, message, result, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("onJsAlert")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("onJsAlert", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, JsResult result) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("onJsConfirm")) {
returnValue = Boolean.valueOf(super.onJsConfirm(view, url, message, result));
}
if (WebPlayerView.this.shouldSendEvent("onJsConfirm")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.JS_CONFIRM, url, message, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("onJsConfirm")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("onJsConfirm", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("onJsPrompt")) {
returnValue = Boolean.valueOf(super.onJsPrompt(view, url, message, defaultValue, result));
}
if (WebPlayerView.this.shouldSendEvent("onJsPrompt")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.JS_PROMPT, url, message, defaultValue, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("onJsPrompt")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("onJsPrompt", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public boolean onConsoleMessage(ConsoleMessage consoleMessage) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("onConsoleMessage")) {
returnValue = Boolean.valueOf(super.onConsoleMessage(consoleMessage));
}
if (WebPlayerView.this.shouldSendEvent("onConsoleMessage")) {
String message = "";
if (consoleMessage != null) {
message = consoleMessage.message();
}
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.CONSOLE_MESSAGE, message, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("onConsoleMessage")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("onConsoleMessage", Boolean.class, true);
}
return returnValue.booleanValue();
}
@Override
public boolean onShowFileChooser(WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
Boolean returnValue = false;
if (WebPlayerView.this.shouldCallSuper("onShowFileChooser")) {
returnValue = Boolean.valueOf(super.onShowFileChooser(webView, filePathCallback, fileChooserParams));
}
if (WebPlayerView.this.shouldSendEvent("onShowFileChooser")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.SHOW_FILE_CHOOSER, WebPlayerView.this.viewId);
}
if (WebPlayerView.this.hasReturnValue("onShowFileChooser")) {
returnValue = (Boolean) WebPlayerView.this.getReturnValue("onShowFileChooser", Boolean.class, true);
if (returnValue.booleanValue()) {
filePathCallback.onReceiveValue(null);
}
}
return returnValue.booleanValue();
}
}
private class WebPlayerDownloadListener implements DownloadListener {
private WebPlayerDownloadListener() {
}
@Override
public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
if (WebPlayerView.this.shouldSendEvent("onDownloadStart")) {
WebViewApp.getCurrentApp().sendEvent(WebViewEventCategory.WEBPLAYER, WebPlayerEvent.DOWNLOAD_START, url, userAgent, contentDisposition, mimetype, Long.valueOf(contentLength), WebPlayerView.this.viewId);
}
}
}
}