Skip to content

Commit 2797623

Browse files
Merge branch 'fix-inject-redirect' into 2636_api_23_crashfix
2 parents a3c012a + 4a2d38f commit 2797623

1 file changed

Lines changed: 36 additions & 8 deletions

File tree

app/src/main/java/com/alphawallet/app/web3/Web3View.java

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package com.alphawallet.app.web3;
22

3-
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_OFF;
4-
import static androidx.webkit.WebSettingsCompat.FORCE_DARK_ON;
5-
63
import android.annotation.SuppressLint;
74
import android.content.Context;
8-
import android.content.res.Configuration;
95
import android.graphics.Bitmap;
106
import android.os.Build;
117
import android.util.AttributeSet;
@@ -19,8 +15,6 @@
1915
import androidx.annotation.NonNull;
2016
import androidx.annotation.Nullable;
2117
import androidx.annotation.RequiresApi;
22-
import androidx.webkit.WebSettingsCompat;
23-
import androidx.webkit.WebViewFeature;
2418

2519
import com.alphawallet.app.BuildConfig;
2620
import com.alphawallet.app.entity.URLLoadInterface;
@@ -35,6 +29,8 @@
3529
import org.jetbrains.annotations.Contract;
3630
import org.jetbrains.annotations.NotNull;
3731

32+
import java.net.MalformedURLException;
33+
import java.net.URL;
3834
import java.util.HashMap;
3935
import 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

Comments
 (0)