From 70b857ad8ec7383968b88bc7827807db62239b86 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Mon, 1 May 2023 21:20:45 +0800 Subject: [PATCH] Update AppListRepository getSystemPackageNames Since Instant Apps never system, no need for param showInstantApps. Also correct the test result, since "home app" and "app in launcher" will not be returned from this function. Bug: 280280596 Test: Unit Tests Change-Id: I2ae17ecaa24780fb2f0c896e84176fc16ccf7de0 --- .../model/app/AppListRepository.kt | 24 +++++-------- .../model/app/AppListRepositoryTest.kt | 34 ++++++------------- .../model/app/AppListViewModelTest.kt | 5 +-- 3 files changed, 20 insertions(+), 43 deletions(-) diff --git a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt index 2c3e58ece8e0e..2b38b4cefe3ee 100644 --- a/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt +++ b/packages/SettingsLib/SpaPrivileged/src/com/android/settingslib/spaprivileged/model/app/AppListRepository.kt @@ -49,7 +49,7 @@ internal interface AppListRepository { ): Flow<(app: ApplicationInfo) -> Boolean> /** Gets the system app package names. */ - fun getSystemPackageNamesBlocking(userId: Int, showInstantApps: Boolean): Set + fun getSystemPackageNamesBlocking(userId: Int): Set } /** @@ -58,12 +58,8 @@ internal interface AppListRepository { object AppListRepositoryUtil { /** Gets the system app package names. */ @JvmStatic - fun getSystemPackageNames( - context: Context, - userId: Int, - showInstantApps: Boolean, - ): Set = - AppListRepositoryImpl(context).getSystemPackageNamesBlocking(userId, showInstantApps) + fun getSystemPackageNames(context: Context, userId: Int): Set = + AppListRepositoryImpl(context).getSystemPackageNamesBlocking(userId) } internal class AppListRepositoryImpl(private val context: Context) : AppListRepository { @@ -140,12 +136,12 @@ internal class AppListRepositoryImpl(private val context: Context) : AppListRepo ): Flow<(app: ApplicationInfo) -> Boolean> = userIdFlow.combine(showSystemFlow, ::showSystemPredicate) - override fun getSystemPackageNamesBlocking(userId: Int, showInstantApps: Boolean) = - runBlocking { getSystemPackageNames(userId, showInstantApps) } + override fun getSystemPackageNamesBlocking(userId: Int) = + runBlocking { getSystemPackageNames(userId) } - private suspend fun getSystemPackageNames(userId: Int, showInstantApps: Boolean): Set = + private suspend fun getSystemPackageNames(userId: Int): Set = coroutineScope { - val loadAppsDeferred = async { loadApps(userId, showInstantApps) } + val loadAppsDeferred = async { loadApps(userId) } val homeOrLauncherPackages = loadHomeOrLauncherPackages(userId) val showSystemPredicate = { app: ApplicationInfo -> isSystemApp(app, homeOrLauncherPackages) } @@ -184,10 +180,8 @@ internal class AppListRepositoryImpl(private val context: Context) : AppListRepo } } - private fun isSystemApp(app: ApplicationInfo, homeOrLauncherPackages: Set): Boolean { - return !app.isUpdatedSystemApp && app.isSystemApp && - !(app.packageName in homeOrLauncherPackages) - } + private fun isSystemApp(app: ApplicationInfo, homeOrLauncherPackages: Set): Boolean = + app.isSystemApp && !app.isUpdatedSystemApp && app.packageName !in homeOrLauncherPackages companion object { private fun ApplicationInfo.isInAppList( diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt index b732a6a4495e0..302f780816263 100644 --- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt +++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListRepositoryTest.kt @@ -78,9 +78,15 @@ class AppListRepositoryTest { whenever(context.packageManager).thenReturn(packageManager) whenever(context.userManager).thenReturn(userManager) whenever(packageManager.getInstalledModules(anyInt())).thenReturn(emptyList()) + whenever(packageManager.getHomeActivities(any())).thenAnswer { + @Suppress("UNCHECKED_CAST") + val resolveInfos = it.arguments[0] as MutableList + resolveInfos += resolveInfoOf(packageName = HOME_APP.packageName) + null + } whenever( packageManager.queryIntentActivitiesAsUser(any(), any(), anyInt()) - ).thenReturn(emptyList()) + ).thenReturn(listOf(resolveInfoOf(packageName = IN_LAUNCHER_APP.packageName))) whenever(userManager.getUserInfo(ADMIN_USER_ID)).thenReturn(UserInfo().apply { flags = UserInfo.FLAG_ADMIN }) @@ -290,35 +296,16 @@ class AppListRepositoryTest { @Test fun showSystemPredicate_isHome() = runTest { - val app = HOME_APP - - whenever(packageManager.getHomeActivities(any())).thenAnswer { - @Suppress("UNCHECKED_CAST") - val resolveInfos = it.arguments[0] as MutableList - resolveInfos.add(resolveInfoOf(packageName = app.packageName)) - null - } - val showSystemPredicate = getShowSystemPredicate(showSystem = false) - assertThat(showSystemPredicate(app)).isTrue() + assertThat(showSystemPredicate(HOME_APP)).isTrue() } @Test fun showSystemPredicate_appInLauncher() = runTest { - val app = IN_LAUNCHER_APP - - whenever( - packageManager.queryIntentActivitiesAsUser( - any(), - any(), - eq(ADMIN_USER_ID) - ) - ).thenReturn(listOf(resolveInfoOf(packageName = app.packageName))) - val showSystemPredicate = getShowSystemPredicate(showSystem = false) - assertThat(showSystemPredicate(app)).isTrue() + assertThat(showSystemPredicate(IN_LAUNCHER_APP)).isTrue() } @Test @@ -333,10 +320,9 @@ class AppListRepositoryTest { val systemPackageNames = AppListRepositoryUtil.getSystemPackageNames( context = context, userId = ADMIN_USER_ID, - showInstantApps = false, ) - assertThat(systemPackageNames).containsExactly("system.app", "home.app", "app.in.launcher") + assertThat(systemPackageNames).containsExactly(SYSTEM_APP.packageName) } private suspend fun getShowSystemPredicate(showSystem: Boolean) = diff --git a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt index 36d9db5ef251f..6889e5d21ac09 100644 --- a/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt +++ b/packages/SettingsLib/SpaPrivileged/tests/src/com/android/settingslib/spaprivileged/model/app/AppListViewModelTest.kt @@ -96,10 +96,7 @@ class AppListViewModelTest { showSystemFlow: Flow, ): Flow<(app: ApplicationInfo) -> Boolean> = flowOf { true } - override fun getSystemPackageNamesBlocking( - userId: Int, - showInstantApps: Boolean, - ): Set = emptySet() + override fun getSystemPackageNamesBlocking(userId: Int): Set = emptySet() } private object FakeAppRepository : AppRepository {