package com.gzsll.hupu.components.jockeyjs.util; import android.annotation.TargetApi; import android.graphics.Bitmap; import android.net.http.SslError; import android.os.Build; import android.os.Message; import android.view.KeyEvent; import android.webkit.HttpAuthHandler; import android.webkit.SslErrorHandler; import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; public abstract class ForwardingWebViewClient extends WebViewClient { protected abstract WebViewClient delegate(); protected boolean hasDelegate() { return delegate() != null; } @Override public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) { if (hasDelegate()) { delegate().doUpdateVisitedHistory(view, url, isReload); } else { super.doUpdateVisitedHistory(view, url, isReload); } } @Override public void onFormResubmission(WebView view, Message dontResend, Message resend) { if (hasDelegate()) { delegate().onFormResubmission(view, dontResend, resend); } else { super.onFormResubmission(view, dontResend, resend); } } @Override public void onLoadResource(WebView view, String url) { if (hasDelegate()) { delegate().onLoadResource(view, url); } else { super.onLoadResource(view, url); } } @Override public void onPageFinished(WebView view, String url) { if (hasDelegate()) { delegate().onPageFinished(view, url); } else { super.onPageFinished(view, url); } } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { if (hasDelegate()) { delegate().onPageStarted(view, url, favicon); } else { super.onPageStarted(view, url, favicon); } } @Override public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { if (hasDelegate()) { delegate().onReceivedError(view, errorCode, description, failingUrl); } else { super.onReceivedError(view, errorCode, description, failingUrl); } } @Override public void onReceivedHttpAuthRequest(WebView view, HttpAuthHandler handler, String host, String realm) { if (hasDelegate()) { delegate().onReceivedHttpAuthRequest(view, handler, host, realm); } else { super.onReceivedHttpAuthRequest(view, handler, host, realm); } } @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR1) @Override public void onReceivedLoginRequest(WebView view, String realm, String account, String args) { if (hasDelegate()) { delegate().onReceivedLoginRequest(view, realm, account, args); } else { super.onReceivedLoginRequest(view, realm, account, args); } } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { if (hasDelegate()) { delegate().onReceivedSslError(view, handler, error); } else { super.onReceivedSslError(view, handler, error); } } @Override public void onUnhandledKeyEvent(WebView view, KeyEvent event) { if (hasDelegate()) { delegate().onUnhandledKeyEvent(view, event); } else { super.onUnhandledKeyEvent(view, event); } } @Override public void onScaleChanged(WebView view, float oldScale, float newScale) { if (hasDelegate()) { delegate().onScaleChanged(view, oldScale, newScale); } else { super.onScaleChanged(view, oldScale, newScale); } } @TargetApi(Build.VERSION_CODES.HONEYCOMB) @Override public WebResourceResponse shouldInterceptRequest(WebView view, String url) { if (hasDelegate()) { return delegate().shouldInterceptRequest(view, url); } else { return super.shouldInterceptRequest(view, url); } } @Override public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) { if (hasDelegate()) { return delegate().shouldOverrideKeyEvent(view, event); } else { return super.shouldOverrideKeyEvent(view, event); } } }