diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-05-28 11:58:52 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2021-05-28 11:58:52 -0300 |
| commit | 2c31c16266a370054cf5467bd6840d581cb98d42 (patch) | |
| tree | 79827440e987ee5f6fc77066d41d7dca38c9c37c /android | |
| parent | d157ceec4d136bddfc44c42c8b88de3bc0a8a1e8 (diff) | |
| parent | 4364cf616695a5b97d29c79762dfacd3f901791f (diff) | |
| download | mullvadvpn-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.kt | 3 | ||||
| -rw-r--r-- | android/src/test/kotlin/net/mullvad/mullvadvpn/applist/ApplicationsProviderTest.kt | 54 |
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 |
