Settings: Do not show install info for Play Store app

Clicking the "App details" row in the info subpage for the Play Store
app results in a crash. It appears that this app is not considered a
mainline module and has an installer label, but this app is a special
case. Hide the row for the Play Store app.

Bug: 302093631
Test: atest com.android.settings.spa.app.appinfo.AppInstallerInfoPreferenceTest
Flag: EXEMPT bugfix
Change-Id: I291ee3e5dec2075381cb52d041982583cdd04323
This commit is contained in:
Wes Okuhara
2025-02-28 11:26:23 -08:00
parent 5c7811274e
commit 79563030fb
2 changed files with 28 additions and 4 deletions

View File

@@ -91,10 +91,15 @@ private class AppInstallerInfoPresenter(
}
}.sharedFlow()
val isAvailableFlow = installerLabelFlow.map { installerLabel ->
val isAvailableFlow = installerLabelFlow.map() { installerLabel ->
// Do not show the install info for the special case of the Play Store app.
if (app.packageName == context.getString(R.string.config_mainline_module_update_package)) {
false
} else {
withContext(Dispatchers.IO) {
!AppUtils.isMainlineModule(packageManager, app.packageName) &&
installerLabel != null
val isMainlineModule = AppUtils.isMainlineModule(packageManager, app.packageName)
!isMainlineModule && installerLabel != null
}
}
}

View File

@@ -121,6 +121,25 @@ class AppInstallerInfoPreferenceTest {
composeTestRule.onRoot().assertIsNotDisplayed()
}
@Test
fun whenIsPlayStoreApp_notDisplayed() {
val playStorePackageName = "com.android.vending"
whenever(
AppStoreUtil.getInstallerPackageNameAndInstallSourceInfo(
any(),
eq(playStorePackageName)
)
)
.thenReturn(Pair(INSTALLER_PACKAGE_NAME, INSTALL_SOURCE_INFO))
val playStoreApp = ApplicationInfo().apply {
packageName = playStorePackageName
uid = UID
}
setContent(playStoreApp)
composeTestRule.onRoot().assertIsNotDisplayed()
}
@Test
fun whenStoreLinkIsNull_disabled() {
whenever(AppStoreUtil.getAppStoreLink(context, INSTALLER_PACKAGE_NAME, PACKAGE_NAME))