mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 08:08:55 +01:00 
			
		
		
		
	Revert usage of AndroidX Webkit library (closes #2611)
This commit is contained in:
		@@ -116,7 +116,6 @@ dependencies {
 | 
			
		||||
    implementation 'androidx.annotation:annotation:1.1.0'
 | 
			
		||||
    implementation 'androidx.browser:browser:1.2.0'
 | 
			
		||||
    implementation 'androidx.multidex:multidex:2.0.1'
 | 
			
		||||
    implementation 'androidx.webkit:webkit:1.1.0'
 | 
			
		||||
 | 
			
		||||
    // UI library
 | 
			
		||||
    implementation 'com.google.android.material:material:1.1.0'
 | 
			
		||||
 
 | 
			
		||||
@@ -2,17 +2,14 @@ package eu.kanade.tachiyomi.network
 | 
			
		||||
 | 
			
		||||
import android.annotation.SuppressLint
 | 
			
		||||
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
 | 
			
		||||
@@ -102,39 +99,24 @@ class CloudflareInterceptor(private val context: Context) : Interceptor {
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                    // HTTP error codes are only received since M
 | 
			
		||||
                    if (WebViewFeature.isFeatureSupported(WebViewFeature.RECEIVE_WEB_RESOURCE_ERROR) &&
 | 
			
		||||
                            url == origRequestUrl && !challengeFound
 | 
			
		||||
                    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
 | 
			
		||||
                        url == origRequestUrl && !challengeFound
 | 
			
		||||
                    ) {
 | 
			
		||||
                        // The first request didn't return the challenge, abort.
 | 
			
		||||
                        latch.countDown()
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                override fun onReceivedHttpError(
 | 
			
		||||
                override fun onReceivedErrorCompat(
 | 
			
		||||
                        view: WebView,
 | 
			
		||||
                        request: WebResourceRequest,
 | 
			
		||||
                        errorResponse: WebResourceResponse
 | 
			
		||||
                        errorCode: Int,
 | 
			
		||||
                        description: String?,
 | 
			
		||||
                        failingUrl: String,
 | 
			
		||||
                        isMainFrame: Boolean
 | 
			
		||||
                ) {
 | 
			
		||||
                    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.
 | 
			
		||||
                    if (isMainFrame) {
 | 
			
		||||
                        if (errorCode == 503) {
 | 
			
		||||
                            // Found the cloudflare challenge page.
 | 
			
		||||
                            challengeFound = true
 | 
			
		||||
                        } else {
 | 
			
		||||
                            // Unlock thread, the challenge wasn't found.
 | 
			
		||||
 
 | 
			
		||||
@@ -9,14 +9,13 @@ 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
 | 
			
		||||
@@ -75,8 +74,8 @@ class WebViewActivity : BaseActivity() {
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            webview.webViewClient = object : WebViewClientCompat() {
 | 
			
		||||
                override fun shouldOverrideUrlLoading(view: WebView, request: WebResourceRequest): Boolean {
 | 
			
		||||
                    view.loadUrl(request.url.toString())
 | 
			
		||||
                override fun shouldOverrideUrlCompat(view: WebView, url: String): Boolean {
 | 
			
		||||
                    view.loadUrl(url)
 | 
			
		||||
                    return true
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
@@ -94,7 +93,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
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,82 @@
 | 
			
		||||
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