Enable more WebView settings to better mimic regular browser

pull/3489/head
arkon 4 years ago
parent d8f4e6b45f
commit a928d9fa0b

@ -14,6 +14,7 @@ import androidx.webkit.WebViewFeature
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.util.system.isOutdated
import eu.kanade.tachiyomi.util.system.setDefaultSettings
import eu.kanade.tachiyomi.util.system.toast
import java.io.IOException
import java.util.concurrent.CountDownLatch
@ -85,7 +86,7 @@ class CloudflareInterceptor(private val context: Context) : Interceptor {
handler.post {
val webview = WebView(context)
webView = webview
webview.settings.javaScriptEnabled = true
webview.setDefaultSettings()
// Avoid sending empty User-Agent, Chromium WebView will reset to default if empty
webview.settings.userAgentString = request.header("User-Agent")

@ -22,6 +22,7 @@ import eu.kanade.tachiyomi.ui.base.activity.BaseActivity
import eu.kanade.tachiyomi.ui.main.ForceCloseActivity
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.system.openInBrowser
import eu.kanade.tachiyomi.util.system.setDefaultSettings
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.util.view.invisible
import eu.kanade.tachiyomi.util.view.visible
@ -71,6 +72,8 @@ class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
binding.webview.settings.userAgentString = source.headers["User-Agent"]
}
binding.webview.setDefaultSettings()
supportActionBar?.subtitle = url
// Debug mode (chrome://inspect/#devices)
@ -78,9 +81,6 @@ class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
WebView.setWebContentsDebuggingEnabled(true)
}
binding.webview.settings.javaScriptEnabled = true
binding.webview.settings.domStorageEnabled = true
binding.webview.webChromeClient = object : WebChromeClient() {
override fun onProgressChanged(view: WebView?, newProgress: Int) {
binding.progressBar.visible()

@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.util.system
import android.content.Context
import android.content.pm.PackageManager
import android.webkit.CookieManager
import android.webkit.WebSettings
import android.webkit.WebView
object WebViewUtil {
@ -29,6 +30,18 @@ fun WebView.isOutdated(): Boolean {
return getWebViewMajorVersion(this) < WebViewUtil.MINIMUM_WEBVIEW_VERSION
}
fun WebView.setDefaultSettings() {
with(settings) {
javaScriptEnabled = true
domStorageEnabled = true
databaseEnabled = true
setAppCacheEnabled(true)
useWideViewPort = true
loadWithOverviewMode = true
cacheMode = WebSettings.LOAD_DEFAULT
}
}
// Based on https://stackoverflow.com/a/29218966
private fun getWebViewMajorVersion(webview: WebView): Int {
val originalUA: String = webview.settings.userAgentString

Loading…
Cancel
Save