mirror of
https://github.com/kiwix/kiwix-android.git
synced 2025-09-19 04:16:27 -04:00
Merge pull request #2135 from kiwix/macgills/feature/2026-legacy-content-prefix
#2026 Migrate Zim prefix away from "content://"
This commit is contained in:
commit
49e00b0d55
@ -32,7 +32,6 @@ import java.util.HashMap;
|
||||
import org.kiwix.kiwixmobile.core.CoreApp;
|
||||
import org.kiwix.kiwixmobile.core.R;
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer;
|
||||
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil;
|
||||
|
||||
import static org.kiwix.kiwixmobile.core.main.CoreMainActivity.HOME_URL;
|
||||
import static org.kiwix.kiwixmobile.core.reader.ZimFileReader.CONTENT_PREFIX;
|
||||
@ -47,9 +46,9 @@ public abstract class CoreWebViewClient extends WebViewClient {
|
||||
}};
|
||||
protected final WebViewCallback callback;
|
||||
protected final ZimReaderContainer zimReaderContainer;
|
||||
private final SharedPreferenceUtil sharedPreferenceUtil =
|
||||
new SharedPreferenceUtil(CoreApp.getInstance());
|
||||
private View home;
|
||||
private static String LEGACY_CONTENT_PREFIX =
|
||||
Uri.parse("content://" + CoreApp.getInstance().getPackageName() + ".zim.base/").toString();
|
||||
|
||||
public CoreWebViewClient(
|
||||
WebViewCallback callback, ZimReaderContainer zimReaderContainer) {
|
||||
@ -60,7 +59,7 @@ public abstract class CoreWebViewClient extends WebViewClient {
|
||||
@Override
|
||||
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
||||
callback.webViewUrlLoading();
|
||||
|
||||
url = convertLegacyUrl(url);
|
||||
if (zimReaderContainer.isRedirect(url)) {
|
||||
if (handleEpubAndPdf(url)) {
|
||||
return true;
|
||||
@ -92,6 +91,12 @@ public abstract class CoreWebViewClient extends WebViewClient {
|
||||
return true;
|
||||
}
|
||||
|
||||
private String convertLegacyUrl(String url) {
|
||||
return url.startsWith(LEGACY_CONTENT_PREFIX)
|
||||
? url.replace(LEGACY_CONTENT_PREFIX, CONTENT_PREFIX)
|
||||
: url;
|
||||
}
|
||||
|
||||
private boolean handleEpubAndPdf(String url) {
|
||||
String extension = MimeTypeMap.getFileExtensionFromUrl(url);
|
||||
if (DOCUMENT_TYPES.containsKey(extension)) {
|
||||
@ -144,6 +149,7 @@ public abstract class CoreWebViewClient extends WebViewClient {
|
||||
@Nullable
|
||||
@Override
|
||||
public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
|
||||
url = convertLegacyUrl(url);
|
||||
if (url.startsWith(CONTENT_PREFIX)) {
|
||||
return zimReaderContainer.load(url);
|
||||
} else {
|
||||
|
@ -207,6 +207,7 @@ class ZimFileReader constructor(
|
||||
private fun valueOfJniStringAfter(jniStringFunction: (JNIKiwixString) -> Boolean) =
|
||||
JNIKiwixString().takeIf { jniStringFunction(it) }?.value
|
||||
|
||||
@Suppress("ExplicitThis") // this@ZimFileReader.name is required
|
||||
fun toBook() = Book().apply {
|
||||
title = this@ZimFileReader.title
|
||||
id = this@ZimFileReader.id
|
||||
@ -219,7 +220,7 @@ class ZimFileReader constructor(
|
||||
language = this@ZimFileReader.language
|
||||
articleCount = this@ZimFileReader.articleCount.toString()
|
||||
mediaCount = this@ZimFileReader.mediaCount.toString()
|
||||
bookName = name
|
||||
bookName = this@ZimFileReader.name
|
||||
tags = this@ZimFileReader.tags
|
||||
}
|
||||
|
||||
@ -231,9 +232,7 @@ class ZimFileReader constructor(
|
||||
@JvmField
|
||||
val UI_URI: Uri? = Uri.parse("content://org.kiwix.ui/")
|
||||
|
||||
@JvmField
|
||||
val CONTENT_PREFIX =
|
||||
Uri.parse("content://${CoreApp.instance.packageName}.zim.base/").toString()
|
||||
const val CONTENT_PREFIX = "zim://content/"
|
||||
|
||||
private val INVERT_IMAGES_VIDEO =
|
||||
"""
|
||||
|
@ -18,11 +18,9 @@
|
||||
|
||||
package org.kiwix.kiwixmobile.core
|
||||
|
||||
import android.net.Uri
|
||||
import io.mockk.clearAllMocks
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.reactivex.processors.PublishProcessor
|
||||
import io.reactivex.schedulers.Schedulers
|
||||
import org.junit.jupiter.api.AfterAll
|
||||
@ -48,7 +46,7 @@ class StorageObserverTest {
|
||||
private val downloadModel: DownloadModel = mockk()
|
||||
private val file: File = mockk()
|
||||
private val readerFactory: Factory = mockk()
|
||||
private val zimFileReader: ZimFileReader
|
||||
private val zimFileReader: ZimFileReader = mockk()
|
||||
|
||||
private val files: PublishProcessor<List<File>> = PublishProcessor.create()
|
||||
private val downloads: PublishProcessor<List<DownloadModel>> = PublishProcessor.create()
|
||||
@ -57,12 +55,6 @@ class StorageObserverTest {
|
||||
|
||||
init {
|
||||
setScheduler(Schedulers.trampoline())
|
||||
val coreApp = mockk<CoreApp>()
|
||||
CoreApp.instance = coreApp
|
||||
every { coreApp.packageName } returns "pkg"
|
||||
mockkStatic(Uri::class)
|
||||
every { Uri.parse(any()).toString() } returns "pkg"
|
||||
zimFileReader = mockk()
|
||||
}
|
||||
|
||||
@AfterAll
|
||||
|
@ -18,15 +18,12 @@
|
||||
|
||||
package org.kiwix.kiwixmobile.core.search.viewmodel
|
||||
|
||||
import android.net.Uri
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.verify
|
||||
import org.assertj.core.api.Assertions.assertThat
|
||||
import org.junit.jupiter.api.BeforeEach
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.kiwix.kiwixmobile.core.CoreApp
|
||||
import org.kiwix.kiwixmobile.core.reader.SearchResult
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimFileReader
|
||||
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
|
||||
@ -38,12 +35,7 @@ internal class ZimSearchResultGeneratorTest {
|
||||
|
||||
private val sharedPreferenceUtil: SharedPreferenceUtil = mockk()
|
||||
private val zimReaderContainer: ZimReaderContainer = mockk()
|
||||
private val zimFileReader: ZimFileReader = run {
|
||||
mockkStatic(CoreApp::class)
|
||||
every { CoreApp.getInstance().packageName } returns "pkg"
|
||||
mockkStatic(Uri::class)
|
||||
every { Uri.parse(any()).toString() } returns "pkg"
|
||||
}.let { mockk() }
|
||||
private val zimFileReader: ZimFileReader = mockk()
|
||||
|
||||
private val zimSearchResultGenerator: ZimSearchResultGenerator =
|
||||
ZimSearchResultGenerator(sharedPreferenceUtil, zimReaderContainer)
|
||||
|
Loading…
x
Reference in New Issue
Block a user