11package com .alphawallet .app .web3 ;
22
3- import static androidx .webkit .WebSettingsCompat .FORCE_DARK_OFF ;
4- import static androidx .webkit .WebSettingsCompat .FORCE_DARK_ON ;
5-
63import android .annotation .SuppressLint ;
74import android .content .Context ;
8- import android .content .res .Configuration ;
95import android .graphics .Bitmap ;
106import android .os .Build ;
117import android .util .AttributeSet ;
1915import androidx .annotation .NonNull ;
2016import androidx .annotation .Nullable ;
2117import androidx .annotation .RequiresApi ;
22- import androidx .webkit .WebSettingsCompat ;
23- import androidx .webkit .WebViewFeature ;
2418
2519import com .alphawallet .app .BuildConfig ;
2620import com .alphawallet .app .entity .URLLoadInterface ;
3529import org .jetbrains .annotations .Contract ;
3630import org .jetbrains .annotations .NotNull ;
3731
32+ import java .net .MalformedURLException ;
33+ import java .net .URL ;
3834import java .util .HashMap ;
3935import java .util .Map ;
4036
@@ -380,7 +376,7 @@ else if (!loadingError && loadInterface != null)
380376 @ Override
381377 public boolean shouldOverrideUrlLoading (WebView view , String url )
382378 {
383- redirect = true ;
379+ redirect = isRedirect ( view , url ) ;
384380
385381 return externalClient .shouldOverrideUrlLoading (view , url )
386382 || internalClient .shouldOverrideUrlLoading (view , url );
@@ -398,10 +394,42 @@ public void onReceivedError(WebView view, WebResourceRequest request, WebResourc
398394 @ Override
399395 public boolean shouldOverrideUrlLoading (WebView view , WebResourceRequest request )
400396 {
401- redirect = true ;
397+ redirect = isRedirect ( view , request ) ;
402398
403399 return externalClient .shouldOverrideUrlLoading (view , request )
404400 || internalClient .shouldOverrideUrlLoading (view , request );
405401 }
402+
403+ private boolean isRedirect (WebView view , String url )
404+ {
405+ try
406+ {
407+ return isRedirect (new URL (view .getUrl ()), new URL (url ));
408+ }
409+ catch (MalformedURLException e )
410+ {
411+ return true ;
412+ }
413+ }
414+
415+ private boolean isRedirect (WebView view , WebResourceRequest request )
416+ {
417+ try
418+ {
419+ return isRedirect (new URL (view .getUrl ()), new URL (request .toString ()));
420+ }
421+ catch (MalformedURLException e )
422+ {
423+ return true ;
424+ }
425+ }
426+
427+ private boolean isRedirect (URL urlSource , URL urlDestination )
428+ {
429+ String sourceBase = urlSource .getHost ();
430+ String destinationBase = urlDestination .getHost ();
431+
432+ return !sourceBase .equals (destinationBase ) || urlSource .toString ().equals (urlDestination .toString ());
433+ }
406434 }
407435}
0 commit comments