mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-10-31 22:37:56 +01:00 
			
		
		
		
	Switch to AndroidX Webkit library
This commit is contained in:
		| @@ -5,11 +5,15 @@ import android.content.Context | ||||
| import android.os.Build | ||||
| import android.os.Handler | ||||
| import android.os.Looper | ||||
| import android.webkit.WebResourceRequest | ||||
| import android.webkit.WebResourceResponse | ||||
| import android.webkit.WebSettings | ||||
| import android.webkit.WebView | ||||
| import android.widget.Toast | ||||
| import androidx.webkit.WebResourceErrorCompat | ||||
| import androidx.webkit.WebViewClientCompat | ||||
| import androidx.webkit.WebViewFeature | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.util.system.WebViewClientCompat | ||||
| import eu.kanade.tachiyomi.util.system.isOutdated | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| import okhttp3.Cookie | ||||
| @@ -97,8 +101,9 @@ class CloudflareInterceptor(private val context: Context) : Interceptor { | ||||
|                         cloudflareBypassed = true | ||||
|                         latch.countDown() | ||||
|                     } | ||||
|                     // Http error codes are only received since M | ||||
|                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && | ||||
|  | ||||
|                     // HTTP error codes are only received since M | ||||
|                     if (WebViewFeature.isFeatureSupported(WebViewFeature.RECEIVE_WEB_RESOURCE_ERROR) && | ||||
|                         url == origRequestUrl && !challengeFound | ||||
|                     ) { | ||||
|                         // The first request didn't return the challenge, abort. | ||||
| @@ -106,16 +111,31 @@ class CloudflareInterceptor(private val context: Context) : Interceptor { | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 override fun onReceivedErrorCompat( | ||||
|                 override fun onReceivedHttpError( | ||||
|                         view: WebView, | ||||
|                         errorCode: Int, | ||||
|                         description: String?, | ||||
|                         failingUrl: String, | ||||
|                         isMainFrame: Boolean | ||||
|                         request: WebResourceRequest, | ||||
|                         errorResponse: WebResourceResponse | ||||
|                 ) { | ||||
|                     if (isMainFrame) { | ||||
|                         if (errorCode == 503) { | ||||
|                             // Found the cloudflare challenge page. | ||||
|                     if (request.isForMainFrame) { | ||||
|                         if (errorResponse.statusCode == 503) { | ||||
|                             // Found the Cloudflare challenge page. | ||||
|                             challengeFound = true | ||||
|                         } else { | ||||
|                             // Unlock thread, the challenge wasn't found. | ||||
|                             latch.countDown() | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|  | ||||
|                 @SuppressLint("RequiresFeature") | ||||
|                 override fun onReceivedError( | ||||
|                         view: WebView, | ||||
|                         request: WebResourceRequest, | ||||
|                         error: WebResourceErrorCompat | ||||
|                 ) { | ||||
|                     if (request.isForMainFrame) { | ||||
|                         if (error.errorCode == 503) { | ||||
|                             // Found the Cloudflare challenge page. | ||||
|                             challengeFound = true | ||||
|                         } else { | ||||
|                             // Unlock thread, the challenge wasn't found. | ||||
|   | ||||
| @@ -9,13 +9,14 @@ import android.os.Bundle | ||||
| import android.view.Menu | ||||
| import android.view.MenuItem | ||||
| import android.webkit.WebChromeClient | ||||
| import android.webkit.WebResourceRequest | ||||
| import android.webkit.WebView | ||||
| import androidx.core.graphics.ColorUtils | ||||
| import androidx.webkit.WebViewClientCompat | ||||
| import eu.kanade.tachiyomi.R | ||||
| import eu.kanade.tachiyomi.source.SourceManager | ||||
| import eu.kanade.tachiyomi.source.online.HttpSource | ||||
| import eu.kanade.tachiyomi.ui.base.activity.BaseActivity | ||||
| import eu.kanade.tachiyomi.util.system.WebViewClientCompat | ||||
| import eu.kanade.tachiyomi.util.system.getResourceColor | ||||
| import eu.kanade.tachiyomi.util.system.openInBrowser | ||||
| import eu.kanade.tachiyomi.util.system.toast | ||||
| @@ -71,8 +72,8 @@ class WebViewActivity : BaseActivity() { | ||||
|             } | ||||
|  | ||||
|             webview.webViewClient = object : WebViewClientCompat() { | ||||
|                 override fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean { | ||||
|                     view.loadUrl(url) | ||||
|                 override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean { | ||||
|                     view.loadUrl(request.url.toString()) | ||||
|                     return true | ||||
|                 } | ||||
|  | ||||
| @@ -89,7 +90,7 @@ class WebViewActivity : BaseActivity() { | ||||
|                     invalidateOptionsMenu() | ||||
|                 } | ||||
|  | ||||
|                 override fun onPageCommitVisible(view: WebView?, url: String?) { | ||||
|                 override fun onPageCommitVisible(view: WebView, url: String) { | ||||
|                     super.onPageCommitVisible(view, url) | ||||
|  | ||||
|                     // Reset to top when page refreshes | ||||
|   | ||||
| @@ -1,82 +0,0 @@ | ||||
| package eu.kanade.tachiyomi.util.system | ||||
|  | ||||
| import android.annotation.TargetApi | ||||
| import android.os.Build | ||||
| import android.webkit.* | ||||
|  | ||||
| @Suppress("OverridingDeprecatedMember") | ||||
| abstract class WebViewClientCompat : WebViewClient() { | ||||
|  | ||||
|     open fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean { | ||||
|         return false | ||||
|     } | ||||
|  | ||||
|     open fun shouldInterceptRequestCompat(view: WebView, url: String): WebResourceResponse? { | ||||
|         return null | ||||
|     } | ||||
|  | ||||
|     open fun onReceivedErrorCompat( | ||||
|             view: WebView, | ||||
|             errorCode: Int, | ||||
|             description: String?, | ||||
|             failingUrl: String, | ||||
|             isMainFrame: Boolean) { | ||||
|  | ||||
|     } | ||||
|  | ||||
|     @TargetApi(Build.VERSION_CODES.N) | ||||
|     final override fun shouldOverrideUrlLoading( | ||||
|             view: WebView, | ||||
|             request: WebResourceRequest | ||||
|     ): Boolean { | ||||
|         return shouldOverrideUrlCompat(view, request.url.toString()) | ||||
|     } | ||||
|  | ||||
|     final override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean { | ||||
|         return shouldOverrideUrlCompat(view, url) | ||||
|     } | ||||
|  | ||||
|     final override fun shouldInterceptRequest( | ||||
|             view: WebView, | ||||
|             request: WebResourceRequest | ||||
|     ): WebResourceResponse? { | ||||
|         return shouldInterceptRequestCompat(view, request.url.toString()) | ||||
|     } | ||||
|  | ||||
|     final override fun shouldInterceptRequest( | ||||
|             view: WebView, | ||||
|             url: String | ||||
|     ): WebResourceResponse? { | ||||
|         return shouldInterceptRequestCompat(view, url) | ||||
|     } | ||||
|  | ||||
|     @TargetApi(Build.VERSION_CODES.M) | ||||
|     final override fun onReceivedError( | ||||
|             view: WebView, | ||||
|             request: WebResourceRequest, | ||||
|             error: WebResourceError | ||||
|     ) { | ||||
|         onReceivedErrorCompat(view, error.errorCode, error.description?.toString(), | ||||
|                 request.url.toString(), request.isForMainFrame) | ||||
|     } | ||||
|  | ||||
|     final override fun onReceivedError( | ||||
|             view: WebView, | ||||
|             errorCode: Int, | ||||
|             description: String?, | ||||
|             failingUrl: String | ||||
|     ) { | ||||
|         onReceivedErrorCompat(view, errorCode, description, failingUrl, failingUrl == view.url) | ||||
|     } | ||||
|  | ||||
|     @TargetApi(Build.VERSION_CODES.M) | ||||
|     final override fun onReceivedHttpError( | ||||
|             view: WebView, | ||||
|             request: WebResourceRequest, | ||||
|             error: WebResourceResponse | ||||
|     ) { | ||||
|         onReceivedErrorCompat(view, error.statusCode, error.reasonPhrase, request.url | ||||
|             .toString(), request.isForMainFrame) | ||||
|     } | ||||
|  | ||||
| } | ||||
		Reference in New Issue
	
	Block a user