package com.huawei.secure.android.common.webview; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; import android.graphics.Bitmap; import android.net.http.SslError; import android.os.Message; import android.text.TextUtils; import android.util.AttributeSet; import android.util.Log; import android.view.KeyEvent; import android.webkit.ClientCertRequest; import android.webkit.HttpAuthHandler; import android.webkit.RenderProcessGoneDetail; import android.webkit.SafeBrowsingResponse; import android.webkit.SslErrorHandler; import android.webkit.URLUtil; import android.webkit.WebResourceError; import android.webkit.WebResourceRequest; import android.webkit.WebResourceResponse; import android.webkit.WebView; import android.webkit.WebViewClient; import com.huawei.secure.android.common.util.LogsUtil; import com.huawei.secure.android.common.webview.WebViewLoadCallBack; import java.util.Arrays; import java.util.Map; public class SafeWebView extends WebView { private static final String f = "SafeWebView"; private String a; private String[] b; private String[] c; private String[] d; private WebViewLoadCallBack e; private static class b implements DialogInterface.OnClickListener { private final SslErrorHandler a; b(SslErrorHandler sslErrorHandler) { this.a = sslErrorHandler; } public void onClick(DialogInterface dialogInterface, int i) { this.a.cancel(); } } private static class c implements DialogInterface.OnClickListener { private final SslErrorHandler a; c(SslErrorHandler sslErrorHandler) { this.a = sslErrorHandler; } public void onClick(DialogInterface dialogInterface, int i) { this.a.proceed(); } } /* access modifiers changed from: private */ public final class d extends WebViewClient { private WebViewClient a; private boolean b; public final void doUpdateVisitedHistory(WebView webView, String str, boolean z) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.doUpdateVisitedHistory(webView, str, z); } else { super.doUpdateVisitedHistory(webView, str, z); } } public final void onFormResubmission(WebView webView, Message message, Message message2) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onFormResubmission(webView, message, message2); } else { super.onFormResubmission(webView, message, message2); } } public final void onLoadResource(WebView webView, String str) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onLoadResource(webView, str); } else { super.onLoadResource(webView, str); } } public final void onPageCommitVisible(WebView webView, String str) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onPageCommitVisible(webView, str); } else { super.onPageCommitVisible(webView, str); } } public final void onPageFinished(WebView webView, String str) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onPageFinished(webView, str); } else { super.onPageFinished(webView, str); } } public final void onPageStarted(WebView webView, String str, Bitmap bitmap) { WebViewClient webViewClient = this.a; if (webViewClient != null && !this.b) { webViewClient.onPageStarted(webView, str, bitmap); } else if (!SafeWebView.this.isWhiteListUrl(str)) { SafeWebView.this.onCheckError(webView, str); } else { super.onPageStarted(webView, str, bitmap); } } public final void onReceivedClientCertRequest(WebView webView, ClientCertRequest clientCertRequest) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedClientCertRequest(webView, clientCertRequest); } else { super.onReceivedClientCertRequest(webView, clientCertRequest); } } public final void onReceivedError(WebView webView, int i, String str, String str2) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedError(webView, i, str, str2); } else { super.onReceivedError(webView, i, str, str2); } } public final void onReceivedHttpAuthRequest(WebView webView, HttpAuthHandler httpAuthHandler, String str, String str2) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedHttpAuthRequest(webView, httpAuthHandler, str, str2); } else { super.onReceivedHttpAuthRequest(webView, httpAuthHandler, str, str2); } } public final void onReceivedHttpError(WebView webView, WebResourceRequest webResourceRequest, WebResourceResponse webResourceResponse) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedHttpError(webView, webResourceRequest, webResourceResponse); } else { super.onReceivedHttpError(webView, webResourceRequest, webResourceResponse); } } public final void onReceivedLoginRequest(WebView webView, String str, String str2, String str3) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedLoginRequest(webView, str, str2, str3); } else { super.onReceivedLoginRequest(webView, str, str2, str3); } } public final void onReceivedSslError(WebView webView, SslErrorHandler sslErrorHandler, SslError sslError) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedSslError(webView, sslErrorHandler, sslError); } else { super.onReceivedSslError(webView, sslErrorHandler, sslError); } } public final boolean onRenderProcessGone(WebView webView, RenderProcessGoneDetail renderProcessGoneDetail) { WebViewClient webViewClient = this.a; if (webViewClient != null) { return webViewClient.onRenderProcessGone(webView, renderProcessGoneDetail); } return super.onRenderProcessGone(webView, renderProcessGoneDetail); } public final void onSafeBrowsingHit(WebView webView, WebResourceRequest webResourceRequest, int i, SafeBrowsingResponse safeBrowsingResponse) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onSafeBrowsingHit(webView, webResourceRequest, i, safeBrowsingResponse); } else { super.onSafeBrowsingHit(webView, webResourceRequest, i, safeBrowsingResponse); } } public final void onScaleChanged(WebView webView, float f, float f2) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onScaleChanged(webView, f, f2); } else { super.onScaleChanged(webView, f, f2); } } public final void onTooManyRedirects(WebView webView, Message message, Message message2) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onTooManyRedirects(webView, message, message2); } else { super.onTooManyRedirects(webView, message, message2); } } public final void onUnhandledKeyEvent(WebView webView, KeyEvent keyEvent) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onUnhandledKeyEvent(webView, keyEvent); } else { super.onUnhandledKeyEvent(webView, keyEvent); } } @Override // android.webkit.WebViewClient public final WebResourceResponse shouldInterceptRequest(WebView webView, WebResourceRequest webResourceRequest) { WebViewClient webViewClient = this.a; if (webViewClient != null) { return webViewClient.shouldInterceptRequest(webView, webResourceRequest); } return super.shouldInterceptRequest(webView, webResourceRequest); } public final boolean shouldOverrideKeyEvent(WebView webView, KeyEvent keyEvent) { WebViewClient webViewClient = this.a; if (webViewClient != null) { return webViewClient.shouldOverrideKeyEvent(webView, keyEvent); } return super.shouldOverrideKeyEvent(webView, keyEvent); } @Override // android.webkit.WebViewClient public final boolean shouldOverrideUrlLoading(WebView webView, String str) { WebViewClient webViewClient = this.a; if (webViewClient != null) { return webViewClient.shouldOverrideUrlLoading(webView, str); } return super.shouldOverrideUrlLoading(webView, str); } private d(WebViewClient webViewClient, boolean z) { this.a = webViewClient; this.b = z; } public final void onReceivedError(WebView webView, WebResourceRequest webResourceRequest, WebResourceError webResourceError) { WebViewClient webViewClient = this.a; if (webViewClient != null) { webViewClient.onReceivedError(webView, webResourceRequest, webResourceError); } else { super.onReceivedError(webView, webResourceRequest, webResourceError); } } @Override // android.webkit.WebViewClient public final WebResourceResponse shouldInterceptRequest(WebView webView, String str) { WebViewClient webViewClient = this.a; if (webViewClient != null) { return webViewClient.shouldInterceptRequest(webView, str); } return super.shouldInterceptRequest(webView, str); } @Override // android.webkit.WebViewClient public final boolean shouldOverrideUrlLoading(WebView webView, WebResourceRequest webResourceRequest) { WebViewClient webViewClient = this.a; if (webViewClient != null) { return webViewClient.shouldOverrideUrlLoading(webView, webResourceRequest); } return super.shouldOverrideUrlLoading(webView, webResourceRequest); } } public SafeWebView(Context context) { super(context); a(); } private boolean a(String str) { return URLUtil.isHttpUrl(str); } public String getDefaultErrorPage() { return this.a; } public WebViewLoadCallBack getWebViewLoadCallBack() { return this.e; } @Deprecated public String[] getWhitelist() { String[] strArr = this.b; if (strArr == null) { return null; } return (String[]) Arrays.copyOf(strArr, strArr.length); } public String[] getWhitelistNotMathcSubDomain() { String[] strArr = this.c; if (strArr == null) { return null; } return (String[]) Arrays.copyOf(strArr, strArr.length); } public String[] getWhitelistWithPath() { String[] strArr = this.d; if (strArr == null) { return null; } return (String[]) Arrays.copyOf(strArr, strArr.length); } public boolean isWhiteListUrl(String str) { if (TextUtils.isEmpty(str)) { LogsUtil.e(f, "url is null"); return false; } else if (!URLUtil.isNetworkUrl(str)) { return true; } else { String[] whitelistWithPath = getWhitelistWithPath(); String[] whitelistNotMathcSubDomain = getWhitelistNotMathcSubDomain(); String[] whitelist = getWhitelist(); if (whitelistWithPath != null && whitelistWithPath.length != 0) { return UriUtil.isUrlHostAndPathInWhitelist(str, whitelistWithPath); } if (whitelistNotMathcSubDomain == null || whitelistNotMathcSubDomain.length == 0) { return UriUtil.isUrlHostInWhitelist(str, whitelist); } return UriUtil.isUrlHostSameWhitelist(str, whitelistNotMathcSubDomain); } } public void loadDataWithBaseURL(String str, String str2, String str3, String str4, String str5) { if (a(str)) { Log.e(f, "loadDataWithBaseURL: http url , not safe"); if (!TextUtils.isEmpty(this.a)) { super.loadDataWithBaseURL(this.a, str2, str3, str4, str5); } else if (getWebViewLoadCallBack() != null) { Log.e(f, "WebViewLoadCallBack"); getWebViewLoadCallBack().onCheckError(str, WebViewLoadCallBack.ErrorCode.HTTP_URL); } } else { super.loadDataWithBaseURL(str, str2, str3, str4, str5); } } public void loadUrl(String str) { if (a(str)) { Log.e(f, "loadUrl: http url , not safe"); if (!TextUtils.isEmpty(this.a)) { super.loadUrl(this.a); } else if (getWebViewLoadCallBack() != null) { Log.e(f, "WebViewLoadCallBack"); getWebViewLoadCallBack().onCheckError(str, WebViewLoadCallBack.ErrorCode.HTTP_URL); } } else { super.loadUrl(str); } } public final void onCheckError(WebView webView, String str) { LogsUtil.e(f, "onCheckError url is not in white list ", str); webView.stopLoading(); String defaultErrorPage = getDefaultErrorPage(); if (!TextUtils.isEmpty(defaultErrorPage)) { webView.loadUrl(defaultErrorPage); } else if (getWebViewLoadCallBack() != null) { Log.e(f, "onPageStarted WebViewLoadCallBack"); getWebViewLoadCallBack().onCheckError(str, WebViewLoadCallBack.ErrorCode.URL_NOT_IN_WHITE_LIST); } } public void postUrl(String str, byte[] bArr) { if (a(str)) { Log.e(f, "postUrl: http url , not safe"); if (!TextUtils.isEmpty(this.a)) { super.postUrl(this.a, bArr); } else if (getWebViewLoadCallBack() != null) { Log.e(f, "WebViewLoadCallBack"); getWebViewLoadCallBack().onCheckError(str, WebViewLoadCallBack.ErrorCode.HTTP_URL); } } else { super.postUrl(str, bArr); } } public void setDefaultErrorPage(String str) { this.a = str; } public void setWebViewClient(WebViewClient webViewClient) { super.setWebViewClient(new d(webViewClient, true)); } public void setWebViewLoadCallBack(WebViewLoadCallBack webViewLoadCallBack) { this.e = webViewLoadCallBack; } @Deprecated public void setWhitelist(String[] strArr) { this.b = strArr == null ? null : (String[]) Arrays.copyOf(strArr, strArr.length); } public void setWhitelistNotMathcSubDomain(String[] strArr) { this.c = strArr == null ? null : (String[]) Arrays.copyOf(strArr, strArr.length); } public void setWhitelistWithPath(String[] strArr) { this.d = strArr == null ? null : (String[]) Arrays.copyOf(strArr, strArr.length); } /* access modifiers changed from: protected */ @Deprecated public final void showNoticeWhenSSLErrorOccurred(String str, String str2, String str3, String str4, SslErrorHandler sslErrorHandler) { AlertDialog.Builder builder = new AlertDialog.Builder(getContext()); if (!TextUtils.isEmpty(str)) { builder.setTitle(str); } c cVar = new c(sslErrorHandler); b bVar = new b(sslErrorHandler); builder.setMessage(str2); builder.setPositiveButton(str3, cVar); builder.setNegativeButton(str4, bVar); builder.create().show(); } private void a() { SafeWebSettings.initWebviewAndSettings(this); setWebViewClient(null); } public void setWebViewClient(WebViewClient webViewClient, boolean z) { super.setWebViewClient(new d(webViewClient, z)); } public SafeWebView(Context context, AttributeSet attributeSet) { super(context, attributeSet); a(); } public SafeWebView(Context context, AttributeSet attributeSet, int i) { super(context, attributeSet, i); a(); } public SafeWebView(Context context, AttributeSet attributeSet, int i, int i2) { super(context, attributeSet, i, i2); a(); } @Override // android.webkit.WebView public void loadUrl(String str, Map<String, String> map) { if (a(str)) { Log.e(f, "loadUrl: http url , not safe"); if (!TextUtils.isEmpty(this.a)) { super.loadUrl(this.a, map); } else if (getWebViewLoadCallBack() != null) { Log.e(f, "WebViewLoadCallBack"); getWebViewLoadCallBack().onCheckError(str, WebViewLoadCallBack.ErrorCode.HTTP_URL); } } else { super.loadUrl(str, map); } } }