diff --git a/gradle.properties b/gradle.properties index d11d9555972860ca7434e98e7d843dd5d4a1ff67..8478b5b92bbb8ab59e193123ada9c159134a5cd7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,6 @@ GROUP=org.briarproject POM_ARTIFACT_ID=dont-kill-me-lib -VERSION_NAME=0.2.4 +VERSION_NAME=0.2.5 POM_NAME=Do not kill me library POM_DESCRIPTION=An Android library helping to keep a foreground service with wake-locks running. No other use-cases considered. diff --git a/lib/build.gradle b/lib/build.gradle index c4d84eaffa46b32e7402a386c99935e7d898880f..f1a9a5e665173925a466b2fc62c646ed9d0e8cb3 100644 --- a/lib/build.gradle +++ b/lib/build.gradle @@ -36,10 +36,15 @@ kotlin { dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + testImplementation 'org.junit.jupiter:junit-jupiter:5.8.2' } signing { useGpgCmd() } +tasks.withType(Test) { + useJUnitPlatform() +} + apply from: "${rootProject.rootDir}/gradle/ktlint.gradle" diff --git a/lib/src/main/java/org/briarproject/android/dontkillmelib/DozeHelperImpl.kt b/lib/src/main/java/org/briarproject/android/dontkillmelib/DozeHelperImpl.kt index b6937e1c858c384d90d69a450a56b7412a20d6c9..802307dd7989985b908346346b010c55899a1c94 100644 --- a/lib/src/main/java/org/briarproject/android/dontkillmelib/DozeHelperImpl.kt +++ b/lib/src/main/java/org/briarproject/android/dontkillmelib/DozeHelperImpl.kt @@ -8,7 +8,7 @@ public class DozeHelperImpl : DozeHelper { return DozeUtils.needsDozeWhitelisting(appContext) || HuaweiUtils.protectedAppsNeedsToBeShown(appContext) || HuaweiUtils.appLaunchNeedsToBeShown(appContext) || - XiaomiUtils.xiaomiRecentAppsNeedsToBeShown || + XiaomiUtils.xiaomiRecentAppsNeedsToBeShown() || XiaomiUtils.xiaomiLockAppsNeedsToBeShown(appContext) } } diff --git a/lib/src/main/java/org/briarproject/android/dontkillmelib/HuaweiUtils.kt b/lib/src/main/java/org/briarproject/android/dontkillmelib/HuaweiUtils.kt index 329fa5b0d327e8f85fe93cfd14096eb008a4473a..0955f1e28eaf7e0ef2cf2bd7671745008b41f91e 100644 --- a/lib/src/main/java/org/briarproject/android/dontkillmelib/HuaweiUtils.kt +++ b/lib/src/main/java/org/briarproject/android/dontkillmelib/HuaweiUtils.kt @@ -44,14 +44,16 @@ public object HuaweiUtils { } @JvmStatic - public val huaweiAppListIntent: Intent = Intent().apply { - setClassName(PACKAGE_NAME_HUAWEI, CLASS_NAME_APP_LIST) - } + public val huaweiAppListIntent: Intent + get() = Intent().apply { + setClassName(PACKAGE_NAME_HUAWEI, CLASS_NAME_APP_LIST) + } @JvmStatic - public val huaweiPowerManagerIntent: Intent = Intent().apply { - setClassName(PACKAGE_NAME_HUAWEI, CLASS_NAME_POWER_MANAGER) - } + public val huaweiPowerManagerIntent: Intent + get() = Intent().apply { + setClassName(PACKAGE_NAME_HUAWEI, CLASS_NAME_POWER_MANAGER) + } /** * First tries [huaweiAppListIntent] and then falls back to [huaweiPowerManagerIntent]. @@ -65,8 +67,9 @@ public object HuaweiUtils { ) @JvmStatic - public val huaweiProtectedAppsIntent: Intent = Intent().apply { - setClassName(PACKAGE_NAME_HUAWEI, CLASS_NAME_PROTECTED_APPS) - } + public val huaweiProtectedAppsIntent: Intent + get() = Intent().apply { + setClassName(PACKAGE_NAME_HUAWEI, CLASS_NAME_PROTECTED_APPS) + } } diff --git a/lib/src/main/java/org/briarproject/android/dontkillmelib/XiaomiUtils.kt b/lib/src/main/java/org/briarproject/android/dontkillmelib/XiaomiUtils.kt index 2b025930882f609cef68ba07c02d605ea85f2bef..5620a863a9093d1e2980fbb6e6ca3f5d25484ca3 100644 --- a/lib/src/main/java/org/briarproject/android/dontkillmelib/XiaomiUtils.kt +++ b/lib/src/main/java/org/briarproject/android/dontkillmelib/XiaomiUtils.kt @@ -26,27 +26,29 @@ public object XiaomiUtils { @JvmStatic public fun isMiuiVersionAtLeast(major: Int, minor: Int): Boolean { // E.g. "V12.5.3.0.QFGMIXM" - var version = INCREMENTAL + val version = INCREMENTAL Log.i(TAG, "MIUI version $version") - version = version.replace("[^\\d.]".toRegex(), "") - val parts = version.split("\\.") - if (parts.size >= 2) { - try { - val maj = parts[0].toInt() - val min = parts[1].toInt() - Log.i(TAG, "Parsed version $maj.$min") - return maj > major || (maj == major && min >= minor) - } catch (e: NumberFormatException) { - // Fall through - } + return try { + val pair = parseMiuiVersion(version) + val maj = pair.first + val min = pair.second + Log.i(TAG, "Parsed version $maj.$min") + maj > major || (maj == major && min >= minor) + } catch (e: Exception) { + Log.w(TAG, "Could not parse MIUI version") + false } - Log.w(TAG, "Could not parse MIUI version") - return false + } + + public fun parseMiuiVersion(version: String): Pair<Int, Int> { + val parts = version.replace("[^\\d.]".toRegex(), "").split(".") + if (parts.size < 2) throw IllegalArgumentException() + return Pair(parts[0].toInt(), parts[1].toInt()) } @JvmStatic - public val xiaomiRecentAppsNeedsToBeShown: Boolean - get() = isXiaomiOrRedmiDevice && !isMiuiVersionAtLeast(12, 5) + public fun xiaomiRecentAppsNeedsToBeShown(): Boolean = + isXiaomiOrRedmiDevice && !isMiuiVersionAtLeast(12, 5) @JvmStatic public fun xiaomiLockAppsNeedsToBeShown(context: Context): Boolean { @@ -57,7 +59,8 @@ public object XiaomiUtils { } @JvmStatic - public val xiaomiLockAppsIntent: Intent = Intent().apply { - setClassName(PACKAGE_NAME, CLASS_NAME) - } + public val xiaomiLockAppsIntent: Intent + get() = Intent().apply { + setClassName(PACKAGE_NAME, CLASS_NAME) + } } diff --git a/lib/src/test/java/org/briarproject/android/dontkillmelib/XiaomiUtilsTest.kt b/lib/src/test/java/org/briarproject/android/dontkillmelib/XiaomiUtilsTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..96777ff6d6624e345ddb114c3e95f3f8222d8ae3 --- /dev/null +++ b/lib/src/test/java/org/briarproject/android/dontkillmelib/XiaomiUtilsTest.kt @@ -0,0 +1,14 @@ +package org.briarproject.android.dontkillmelib + +import org.briarproject.android.dontkillmelib.XiaomiUtils.parseMiuiVersion +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +public class XiaomiUtilsTest { + + @Test + public fun testParsesMiuiVersion() { + val version = "V12.5.3.0.QFGMIXM" + assertEquals(Pair(12, 5), parseMiuiVersion(version)) + } +}