Loading packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt +19 −11 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.pm.PackageManager import android.content.pm.PackageManager.ApplicationInfoFlags import android.content.pm.ResolveInfo import android.os.SystemProperties import android.util.Log import com.android.internal.R import com.android.settingslib.spaprivileged.framework.common.userManager import kotlinx.coroutines.async Loading Loading @@ -85,7 +86,8 @@ class AppListRepositoryImpl( userId: Int, loadInstantApps: Boolean, matchAnyUserForAdmin: Boolean, ): List<ApplicationInfo> = coroutineScope { ): List<ApplicationInfo> = try { coroutineScope { val hiddenSystemModulesDeferred = async { packageManager.getHiddenSystemModules() } val hideWhenDisabledPackagesDeferred = async { context.resources.getStringArray(R.array.config_hideWhenDisabled_packageNames) Loading @@ -99,6 +101,10 @@ class AppListRepositoryImpl( app.isInAppList(loadInstantApps, hiddenSystemModules, hideWhenDisabledPackages) } } } catch (e: Exception) { Log.e(TAG, "loadApps failed", e) emptyList() } private suspend fun getInstalledApplications( userId: Int, Loading Loading @@ -210,6 +216,8 @@ class AppListRepositoryImpl( } companion object { private const val TAG = "AppListRepository" private fun ApplicationInfo.isInAppList( showInstantApps: Boolean, hiddenSystemModules: Set<String>, Loading packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt +16 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ import android.content.pm.PackageManager.ResolveInfoFlags import android.content.pm.ResolveInfo import android.content.pm.UserInfo import android.content.res.Resources import android.os.BadParcelableException import android.os.DeadObjectException import android.os.UserManager import android.platform.test.flag.junit.SetFlagsRule import androidx.test.core.app.ApplicationProvider Loading @@ -44,6 +46,7 @@ import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.doAnswer import org.mockito.kotlin.doReturn import org.mockito.kotlin.doThrow import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.spy Loading Loading @@ -310,6 +313,19 @@ class AppListRepositoryTest { assertThat(appList).containsExactly(NORMAL_APP, HIDDEN_APEX_APP) } @Test fun loadApps_hasException_returnEmptyList() = runTest { packageManager.stub { on { getInstalledApplicationsAsUser(any<ApplicationInfoFlags>(), eq(ADMIN_USER_ID)) } doThrow BadParcelableException(DeadObjectException()) } val appList = repository.loadApps(userId = ADMIN_USER_ID) assertThat(appList).isEmpty() } @Test fun showSystemPredicate_showSystem() = runTest { val app = SYSTEM_APP Loading Loading
packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt +19 −11 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import android.content.pm.PackageManager import android.content.pm.PackageManager.ApplicationInfoFlags import android.content.pm.ResolveInfo import android.os.SystemProperties import android.util.Log import com.android.internal.R import com.android.settingslib.spaprivileged.framework.common.userManager import kotlinx.coroutines.async Loading Loading @@ -85,7 +86,8 @@ class AppListRepositoryImpl( userId: Int, loadInstantApps: Boolean, matchAnyUserForAdmin: Boolean, ): List<ApplicationInfo> = coroutineScope { ): List<ApplicationInfo> = try { coroutineScope { val hiddenSystemModulesDeferred = async { packageManager.getHiddenSystemModules() } val hideWhenDisabledPackagesDeferred = async { context.resources.getStringArray(R.array.config_hideWhenDisabled_packageNames) Loading @@ -99,6 +101,10 @@ class AppListRepositoryImpl( app.isInAppList(loadInstantApps, hiddenSystemModules, hideWhenDisabledPackages) } } } catch (e: Exception) { Log.e(TAG, "loadApps failed", e) emptyList() } private suspend fun getInstalledApplications( userId: Int, Loading Loading @@ -210,6 +216,8 @@ class AppListRepositoryImpl( } companion object { private const val TAG = "AppListRepository" private fun ApplicationInfo.isInAppList( showInstantApps: Boolean, hiddenSystemModules: Set<String>, Loading
packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt +16 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,8 @@ import android.content.pm.PackageManager.ResolveInfoFlags import android.content.pm.ResolveInfo import android.content.pm.UserInfo import android.content.res.Resources import android.os.BadParcelableException import android.os.DeadObjectException import android.os.UserManager import android.platform.test.flag.junit.SetFlagsRule import androidx.test.core.app.ApplicationProvider Loading @@ -44,6 +46,7 @@ import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor import org.mockito.kotlin.doAnswer import org.mockito.kotlin.doReturn import org.mockito.kotlin.doThrow import org.mockito.kotlin.eq import org.mockito.kotlin.mock import org.mockito.kotlin.spy Loading Loading @@ -310,6 +313,19 @@ class AppListRepositoryTest { assertThat(appList).containsExactly(NORMAL_APP, HIDDEN_APEX_APP) } @Test fun loadApps_hasException_returnEmptyList() = runTest { packageManager.stub { on { getInstalledApplicationsAsUser(any<ApplicationInfoFlags>(), eq(ADMIN_USER_ID)) } doThrow BadParcelableException(DeadObjectException()) } val appList = repository.loadApps(userId = ADMIN_USER_ID) assertThat(appList).isEmpty() } @Test fun showSystemPredicate_showSystem() = runTest { val app = SYSTEM_APP Loading