Skip to content

Commit 536ae33

Browse files
authored
Merge pull request #2846 from kiwix/develop
Merging develop branch to master.
2 parents 3d4a6d9 + 3987184 commit 536ae33

File tree

129 files changed

+1982
-439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

129 files changed

+1982
-439
lines changed

.github/workflows/coverage.yml

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,26 @@ jobs:
1515
coverageReport:
1616
strategy:
1717
matrix:
18-
api-level: [21, 21, 30]
18+
api-level: [21,30]
1919
fail-fast: false
20-
runs-on: macOS-latest
20+
runs-on: macos-10.15
2121
steps:
2222
- name: checkout
23-
uses: actions/checkout@v1
23+
uses: actions/checkout@v3
2424
with:
2525
fetch-depth: 1
2626

2727
- name: create instrumentation coverage
28-
uses: ReactiveCircus/[email protected]
28+
uses: ReactiveCircus/[email protected]
29+
env:
30+
GRADLE_OPTS: "-Dorg.gradle.internal.http.connectionTimeout=60000 -Dorg.gradle.internal.http.socketTimeout=60000 -Dorg.gradle.internal.network.retry.max.attempts=6 -Dorg.gradle.internal.network.retry.initial.backOff=2000"
2931
with:
3032
api-level: ${{ matrix.api-level }}
3133
arch: x86_64
3234
ndk: 21.4.7075529
3335
script: bash contrib/instrumentation.sh
3436

37+
3538
- name: Upload screenshot result
3639
uses: actions/upload-artifact@v1
3740
if: failure()
@@ -40,15 +43,17 @@ jobs:
4043
path: screencap.png
4144

4245
- name: create unit coverage
46+
if: ${{ matrix.api-level==21 }}
4347
run: ./gradlew jacocoTestDebugUnitTestReport jacocoTestCustomExampleDebugUnitTestReport
4448

4549
- name: Upload coverage to Codecov
50+
if: ${{ matrix.api-level==21 }}
4651
run: |
4752
bash <(curl -s https://codecov.io/bash)
4853
4954
- name: Upload Coverage to GH-Actions
5055
uses: actions/[email protected]
51-
if: ${{ always() }}
56+
if: ${{ matrix.api-level==21 }}
5257
with:
5358
name: Tests Coverage Report
5459
path: |

.github/workflows/nightly.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,5 +69,5 @@ jobs:
6969
run: |
7070
mkdir $DATE
7171
cp $UNIVERSAL_DEBUG_APK $DATE
72-
scp -vrp -i ssh_key -o StrictHostKeyChecking=no $DATE [email protected]:/data/download/nightly/
72+
scp -P 30022 -vrp -i ssh_key -o StrictHostKeyChecking=no $DATE ci@master.download.kiwix.org:/data/download/nightly/
7373

.github/workflows/release.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ jobs:
4747
run: |
4848
./gradlew assembleRelease
4949
cp $UNIVERSAL_RELEASE_APK kiwix-${TAG}.apk
50-
scp -vrp -i ssh_key -o StrictHostKeyChecking=no kiwix-${TAG}.apk [email protected]:/data/download/release/kiwix-android/
50+
scp -P 30022 -vrp -i ssh_key -o StrictHostKeyChecking=no kiwix-${TAG}.apk ci@master.download.kiwix.org:/data/download/release/kiwix-android/
5151
5252
- name: Publish to github releases
5353
uses: ncipollo/release-action@v1

CHANGELOG

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,14 @@
1+
3.5.0
2+
* FIX: Storing Zim/Book files inside the public Kiwix Directory on internal storage.
3+
* FIX: Storing Zim/Book files inside the public Kiwix Directory on external storage in android 11 and above.
4+
* FIX: Ability to save Notes in android 10 and above.
5+
* FIX: Ability to open externally downloaded Zim Files.
6+
* FIX: MIME type fix for "*.js" titles.
7+
* FIX: CI/CD Pipeline fixed for android 21 & android 30.
8+
* FIX: Partial library migration from jcenter to jitpack & maven repo.
9+
* FIX: Add network permission dialog on download navigation.
10+
* NEW: File Selector for selecting any zim files from storage.
11+
112
3.4.6
213
* FIX: Added MANAGE_EXTERNAL_STORAGE permission for Android 11 and later
314
* FIX: Hide "Download over wifi settings" on custom apps

app/build.gradle.kts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ apply(from = rootProject.file("jacoco.gradle"))
1010

1111
ext {
1212
set("versionMajor", 3)
13-
set("versionMinor", 4)
14-
set("versionPatch", 6)
13+
set("versionMinor", 5)
14+
set("versionPatch", 0)
1515
}
1616

1717
fun generateVersionName() = "${ext["versionMajor"]}.${ext["versionMinor"]}.${ext["versionPatch"]}"
@@ -87,7 +87,4 @@ play {
8787

8888
dependencies {
8989
implementation(Libs.squidb)
90-
implementation(Libs.squidb_annotations)
91-
implementation(Libs.ink_page_indicator)
92-
add("kapt", Libs.squidb_processor)
9390
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:tools="http://schemas.android.com/tools"
3+
xmlns:android="http://schemas.android.com/apk/res/android"
34
package="org.kiwix.kiwixmobile">
45

6+
<application
7+
android:usesCleartextTraffic="true"/>
58
<uses-sdk tools:overrideLibrary="android_libs.ub_uiautomator" />
69
</manifest>

app/src/androidTest/java/DebugFunctions.kt

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,21 @@ inline fun <reified T : BaseRobot> T.applyWithViewHierarchyPrinting(
3636
} catch (runtimeException: RuntimeException) {
3737
uiDevice.takeScreenshot(File(context.filesDir, "${System.currentTimeMillis()}.png"))
3838
InstrumentationRegistry.getInstrumentation().runOnMainSync {
39-
throw RuntimeException(
40-
combineMessages(
41-
runtimeException,
42-
ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(RESUMED).last()
43-
),
44-
runtimeException
45-
)
39+
// During the Pause state, it can't any state or since it may not hold strong reference it
40+
// may garbage collected in the low memory stage or may not return an instance of particular
41+
// activity
42+
val activity =
43+
ActivityLifecycleMonitorRegistry.getInstance().getActivitiesInStage(RESUMED).lastOrNull()
44+
if (activity != null) {
45+
throw RuntimeException(
46+
combineMessages(
47+
runtimeException = runtimeException,
48+
activity = activity
49+
),
50+
runtimeException
51+
)
52+
}
53+
throw RuntimeException()
4654
}
4755
}
4856
}

app/src/androidTest/java/org/kiwix/kiwixmobile/BaseRobot.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ package org.kiwix.kiwixmobile
2121
import android.R.id
2222
import android.app.Instrumentation
2323
import android.content.Context
24+
import androidx.test.espresso.NoMatchingViewException
2425
import androidx.test.platform.app.InstrumentationRegistry
2526
import androidx.test.uiautomator.Direction
2627
import androidx.test.uiautomator.UiDevice
@@ -52,7 +53,7 @@ abstract class BaseRobot(
5253
uiDevice.pressBack()
5354
}
5455

55-
protected fun isVisible(findable: Findable, timeout: Long = DEFAULT_WAIT) =
56+
protected fun isVisible(findable: Findable, timeout: Long = VERY_LONG_WAIT) =
5657
waitFor(findable, timeout) ?: throw RuntimeException(findable.errorMessage(this))
5758

5859
protected fun UiObject2.swipeLeft() {
@@ -63,7 +64,7 @@ abstract class BaseRobot(
6364
customSwipe(Direction.RIGHT)
6465
}
6566

66-
protected fun clickOn(findable: Findable, timeout: Long = DEFAULT_WAIT) {
67+
protected fun clickOn(findable: Findable, timeout: Long = VERY_LONG_WAIT) {
6768
isVisible(findable, timeout).click()
6869
}
6970

@@ -81,9 +82,20 @@ abstract class BaseRobot(
8182

8283
private fun waitFor(
8384
findable: Findable,
84-
timeout: Long = DEFAULT_WAIT
85-
): UiObject2? =
86-
uiDevice.wait(Until.findObject(findable.selector(this)), timeout)
85+
timeout: Long = VERY_LONG_WAIT,
86+
retryCount: Int = 5
87+
): UiObject2? {
88+
var uiObject2: UiObject2? = null
89+
for (i in 0 until retryCount) {
90+
try {
91+
uiObject2 = uiDevice.wait(Until.findObject(findable.selector(this)), timeout)
92+
break
93+
} catch (noMatchingViewException: NoMatchingViewException) {
94+
noMatchingViewException.printStackTrace()
95+
}
96+
}
97+
return uiObject2
98+
}
8799

88100
private fun UiObject2.customSwipe(
89101
direction: Direction,

app/src/androidTest/java/org/kiwix/kiwixmobile/DownloadTest.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@
2626
import androidx.test.filters.LargeTest;
2727
import androidx.test.rule.ActivityTestRule;
2828
import androidx.test.rule.GrantPermissionRule;
29-
import com.schibsted.spain.barista.interaction.BaristaMenuClickInteractions;
30-
import com.schibsted.spain.barista.interaction.BaristaSleepInteractions;
29+
import com.adevinta.android.barista.interaction.BaristaMenuClickInteractions;
30+
import com.adevinta.android.barista.interaction.BaristaSleepInteractions;
3131
import java.util.concurrent.TimeUnit;
3232
import org.junit.After;
3333
import org.junit.Before;
@@ -41,9 +41,9 @@
4141

4242
import static androidx.test.espresso.Espresso.onData;
4343
import static androidx.test.espresso.matcher.ViewMatchers.withId;
44-
import static com.schibsted.spain.barista.assertion.BaristaVisibilityAssertions.assertDisplayed;
45-
import static com.schibsted.spain.barista.interaction.BaristaClickInteractions.clickOn;
46-
import static com.schibsted.spain.barista.interaction.BaristaSwipeRefreshInteractions.refresh;
44+
import static com.adevinta.android.barista.assertion.BaristaVisibilityAssertions.assertDisplayed;
45+
import static com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn;
46+
import static com.adevinta.android.barista.interaction.BaristaSwipeRefreshInteractions.refresh;
4747
import static junit.framework.Assert.fail;
4848
import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS;
4949
import static org.kiwix.kiwixmobile.testutils.TestUtils.allowPermissionsIfNeeded;

app/src/androidTest/java/org/kiwix/kiwixmobile/NetworkTest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
import androidx.test.ext.junit.runners.AndroidJUnit4;
2626
import androidx.test.rule.ActivityTestRule;
2727
import androidx.test.rule.GrantPermissionRule;
28-
import com.schibsted.spain.barista.interaction.BaristaMenuClickInteractions;
29-
import com.schibsted.spain.barista.interaction.BaristaSleepInteractions;
28+
import com.adevinta.android.barista.interaction.BaristaMenuClickInteractions;
29+
import com.adevinta.android.barista.interaction.BaristaSleepInteractions;
3030
import java.io.InputStream;
3131
import java.util.concurrent.TimeUnit;
3232
import org.junit.After;
@@ -49,10 +49,10 @@
4949
import static androidx.test.espresso.action.ViewActions.click;
5050
import static androidx.test.espresso.action.ViewActions.longClick;
5151
import static androidx.test.espresso.matcher.ViewMatchers.withId;
52-
import static com.schibsted.spain.barista.interaction.BaristaClickInteractions.clickOn;
53-
import static com.schibsted.spain.barista.interaction.BaristaDialogInteractions.clickDialogPositiveButton;
54-
import static com.schibsted.spain.barista.interaction.BaristaMenuClickInteractions.clickMenu;
55-
import static com.schibsted.spain.barista.interaction.BaristaSwipeRefreshInteractions.refresh;
52+
import static com.adevinta.android.barista.interaction.BaristaClickInteractions.clickOn;
53+
import static com.adevinta.android.barista.interaction.BaristaDialogInteractions.clickDialogPositiveButton;
54+
import static com.adevinta.android.barista.interaction.BaristaMenuClickInteractions.clickMenu;
55+
import static com.adevinta.android.barista.interaction.BaristaSwipeRefreshInteractions.refresh;
5656
import static org.hamcrest.CoreMatchers.allOf;
5757
import static org.kiwix.kiwixmobile.testutils.TestUtils.TEST_PAUSE_MS;
5858
import static org.kiwix.kiwixmobile.testutils.TestUtils.getResourceString;

0 commit comments

Comments
 (0)