summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-05-28 11:58:52 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-05-28 11:58:52 -0300
commit2c31c16266a370054cf5467bd6840d581cb98d42 (patch)
tree79827440e987ee5f6fc77066d41d7dca38c9c37c /android
parentd157ceec4d136bddfc44c42c8b88de3bc0a8a1e8 (diff)
parent4364cf616695a5b97d29c79762dfacd3f901791f (diff)
downloadmullvadvpn-2c31c16266a370054cf5467bd6840d581cb98d42.tar.xz
mullvadvpn-2c31c16266a370054cf5467bd6840d581cb98d42.zip
Merge branch 'fix-split-tunneling-support-for-tv-apps'
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProvider.kt3
-rw-r--r--android/src/test/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProviderTest.kt54
2 files changed, 47 insertions, 10 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProvider.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProvider.kt
index a097ffd231..ab6315afd2 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProvider.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProvider.kt
@@ -30,7 +30,8 @@ class ApplicationsProvider(
}
private fun isLaunchable(packageName: String): Boolean {
- return packageManager.getLaunchIntentForPackage(packageName) != null
+ return packageManager.getLaunchIntentForPackage(packageName) != null ||
+ packageManager.getLeanbackLaunchIntentForPackage(packageName) != null
}
private fun isSelfApplication(packageName: String): Boolean {
diff --git a/android/src/test/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProviderTest.kt b/android/src/test/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProviderTest.kt
index 689047e565..578f6b4821 100644
--- a/android/src/test/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProviderTest.kt
+++ b/android/src/test/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProviderTest.kt
@@ -28,6 +28,9 @@ class ApplicationsProviderTest {
val launchWithoutInternetPackageName = "launch_without_internet_package_name"
val nonLaunchWithInternetPackageName = "non_launch_with_internet_package_name"
val nonLaunchWithoutInternetPackageName = "non_launch_without_internet_package_name"
+ val leanbackLaunchWithInternetPackageName = "leanback_launch_with_internet_package_name"
+ val leanbackLaunchWithoutInternetPackageName =
+ "leanback_launch_without_internet_package_name"
every {
mockedPackageManager.getInstalledApplications(PackageManager.GET_META_DATA)
@@ -36,12 +39,19 @@ class ApplicationsProviderTest {
createApplicationInfo(launchWithoutInternetPackageName, launch = true),
createApplicationInfo(nonLaunchWithInternetPackageName, internet = true),
createApplicationInfo(nonLaunchWithoutInternetPackageName),
+ createApplicationInfo(
+ leanbackLaunchWithInternetPackageName,
+ leanback = true,
+ internet = true
+ ),
+ createApplicationInfo(leanbackLaunchWithoutInternetPackageName, leanback = true),
createApplicationInfo(selfPackageName, internet = true, launch = true)
)
val result = testSubject.getAppsList()
val expected = listOf(
- AppData(launchWithInternetPackageName, 0, launchWithInternetPackageName)
+ AppData(launchWithInternetPackageName, 0, launchWithInternetPackageName),
+ AppData(leanbackLaunchWithInternetPackageName, 0, leanbackLaunchWithInternetPackageName)
)
assertLists(expected, result)
@@ -49,21 +59,40 @@ class ApplicationsProviderTest {
verifyAll {
mockedPackageManager.getInstalledApplications(PackageManager.GET_META_DATA)
- mockedPackageManager.checkPermission(internet, launchWithInternetPackageName)
- mockedPackageManager.checkPermission(internet, launchWithoutInternetPackageName)
- mockedPackageManager.checkPermission(internet, nonLaunchWithInternetPackageName)
- mockedPackageManager.checkPermission(internet, nonLaunchWithoutInternetPackageName)
- mockedPackageManager.checkPermission(internet, selfPackageName)
+ listOf(
+ launchWithInternetPackageName,
+ launchWithoutInternetPackageName,
+ nonLaunchWithInternetPackageName,
+ nonLaunchWithoutInternetPackageName,
+ leanbackLaunchWithInternetPackageName,
+ leanbackLaunchWithoutInternetPackageName,
+ selfPackageName
+ ).forEach { packageName ->
+ mockedPackageManager.checkPermission(internet, packageName)
+ }
- mockedPackageManager.getLaunchIntentForPackage(launchWithInternetPackageName)
- mockedPackageManager.getLaunchIntentForPackage(nonLaunchWithInternetPackageName)
- mockedPackageManager.getLaunchIntentForPackage(selfPackageName)
+ listOf(
+ launchWithInternetPackageName,
+ nonLaunchWithInternetPackageName,
+ leanbackLaunchWithInternetPackageName,
+ selfPackageName
+ ).forEach { packageName ->
+ mockedPackageManager.getLaunchIntentForPackage(packageName)
+ }
+
+ listOf(
+ nonLaunchWithInternetPackageName,
+ leanbackLaunchWithInternetPackageName,
+ ).forEach { packageName ->
+ mockedPackageManager.getLeanbackLaunchIntentForPackage(packageName)
+ }
}
}
private fun createApplicationInfo(
packageName: String,
launch: Boolean = false,
+ leanback: Boolean = false,
internet: Boolean = false
): ApplicationInfo {
val mockApplicationInfo = mockk<ApplicationInfo>()
@@ -81,6 +110,13 @@ class ApplicationsProviderTest {
null
every {
+ mockedPackageManager.getLeanbackLaunchIntentForPackage(packageName)
+ } returns if (leanback)
+ mockk()
+ else
+ null
+
+ every {
mockedPackageManager.checkPermission(Manifest.permission.INTERNET, packageName)
} returns if (internet)
PackageManager.PERMISSION_GRANTED