Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 79563030 authored by Wes Okuhara's avatar Wes Okuhara
Browse files

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
parent 5c781127
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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
            }
        }
    }

+19 −0
Original line number Diff line number Diff line
@@ -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))