Merge pull request #2135 from kiwix/macgills/feature/2026-legacy-content-prefix

#2026 Migrate Zim prefix away from "content://"
This commit is contained in:
Seán Mac Gillicuddy 2020-06-16 16:04:13 +01:00 committed by GitHub
commit 49e00b0d55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 15 additions and 26 deletions

View File

@ -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 {

View File

@ -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 =
"""

View File

@ -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

View File

@ -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)