mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-24 05:04:50 -04:00
Fixed the WebView using from more than one process at once with the same data directory is not supported.
This commit is contained in:
parent
2a0b392b13
commit
39930b844e
@ -18,35 +18,27 @@
|
|||||||
|
|
||||||
package org.kiwix.kiwixmobile.core
|
package org.kiwix.kiwixmobile.core
|
||||||
|
|
||||||
import android.app.Application.getProcessName
|
import android.util.Log
|
||||||
import android.content.Context
|
|
||||||
import android.os.Build
|
|
||||||
import android.webkit.WebResourceRequest
|
import android.webkit.WebResourceRequest
|
||||||
import android.webkit.WebResourceResponse
|
import android.webkit.WebResourceResponse
|
||||||
import android.webkit.WebView
|
|
||||||
import androidx.webkit.ServiceWorkerClientCompat
|
import androidx.webkit.ServiceWorkerClientCompat
|
||||||
import androidx.webkit.ServiceWorkerControllerCompat
|
import androidx.webkit.ServiceWorkerControllerCompat
|
||||||
import androidx.webkit.WebViewFeature
|
import androidx.webkit.WebViewFeature
|
||||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
class ServiceWorkerInitialiser @Inject constructor(
|
class ServiceWorkerInitialiser @Inject constructor(zimReaderContainer: ZimReaderContainer) {
|
||||||
zimReaderContainer: ZimReaderContainer,
|
|
||||||
context: Context
|
|
||||||
) {
|
|
||||||
init {
|
init {
|
||||||
if (WebViewFeature.isFeatureSupported(WebViewFeature.SERVICE_WORKER_BASIC_USAGE)) {
|
if (WebViewFeature.isFeatureSupported(WebViewFeature.SERVICE_WORKER_BASIC_USAGE)) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
try {
|
||||||
val process = getProcessName()
|
ServiceWorkerControllerCompat.getInstance()
|
||||||
if (context.packageName != process) {
|
.setServiceWorkerClient(object : ServiceWorkerClientCompat() {
|
||||||
WebView.setDataDirectorySuffix(process)
|
override fun shouldInterceptRequest(request: WebResourceRequest): WebResourceResponse? =
|
||||||
}
|
zimReaderContainer.load(request.url.toString(), request.requestHeaders)
|
||||||
|
})
|
||||||
|
} catch (ignore: Exception) {
|
||||||
|
Log.e("ServiceWorkerInitialiser", "Error setting up ServiceWorkerClient", ignore)
|
||||||
}
|
}
|
||||||
ServiceWorkerControllerCompat.getInstance()
|
|
||||||
.setServiceWorkerClient(object : ServiceWorkerClientCompat() {
|
|
||||||
override fun shouldInterceptRequest(request: WebResourceRequest): WebResourceResponse? =
|
|
||||||
zimReaderContainer.load(request.url.toString(), request.requestHeaders)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user