44import static android .os .Build .VERSION_CODES .N ;
55
66import android .net .Uri ;
7+ import android .app .AlertDialog ;
8+ import android .content .Context ;
9+ import android .content .DialogInterface ;
710import android .net .http .SslError ;
811import android .text .TextUtils ;
912import android .util .Base64 ;
@@ -24,10 +27,12 @@ public class Web3ViewClient extends WebViewClient {
2427
2528 private final JsInjectorClient jsInjectorClient ;
2629 private final UrlHandlerManager urlHandlerManager ;
30+ private final Context context ;
2731
2832 private boolean isInjected ;
2933
30- public Web3ViewClient (JsInjectorClient jsInjectorClient , UrlHandlerManager urlHandlerManager ) {
34+ public Web3ViewClient (Context context ,JsInjectorClient jsInjectorClient , UrlHandlerManager urlHandlerManager ) {
35+ this .context = context ;
3136 this .jsInjectorClient = jsInjectorClient ;
3237 this .urlHandlerManager = urlHandlerManager ;
3338 }
@@ -145,8 +150,41 @@ private void injectScriptFile(WebView view) {
145150 }
146151
147152 @ Override
148- public void onReceivedSslError (WebView view , SslErrorHandler handler , SslError error ) {
149- handler .proceed ();
153+ public void onReceivedSslError (WebView view , final SslErrorHandler handler , SslError error ) {
154+ final AlertDialog .Builder builder = new AlertDialog .Builder (context );
155+ String message = "SSL Certificate error." ;
156+ switch (error .getPrimaryError ()) {
157+ case SslError .SSL_UNTRUSTED :
158+ message = "The certificate authority is not trusted." ;
159+ break ;
160+ case SslError .SSL_EXPIRED :
161+ message = "The certificate has expired." ;
162+ break ;
163+ case SslError .SSL_IDMISMATCH :
164+ message = "The certificate Hostname mismatch." ;
165+ break ;
166+ case SslError .SSL_NOTYETVALID :
167+ message = "The certificate is not yet valid." ;
168+ break ;
169+ }
170+ message += " Do you want to continue anyway?" ;
171+
172+ builder .setTitle ("SSL Certificate Error" );
173+ builder .setMessage (message );
174+ builder .setPositiveButton ("continue" , new DialogInterface .OnClickListener () {
175+ @ Override
176+ public void onClick (DialogInterface dialog , int which ) {
177+ handler .proceed ();
178+ }
179+ });
180+ builder .setNegativeButton ("cancel" , new DialogInterface .OnClickListener () {
181+ @ Override
182+ public void onClick (DialogInterface dialog , int which ) {
183+ handler .cancel ();
184+ }
185+ });
186+ final AlertDialog dialog = builder .create ();
187+ dialog .show ();
150188 }
151189
152190 public void onReload () {
0 commit comments