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

Commit fb3db302 authored by Mark Kim's avatar Mark Kim Committed by Android (Google) Code Review
Browse files

Merge "Support fetching PackageInfo for archived apps" into main

parents 5ac8a4e2 9942248d
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.app.settings.SettingsEnums
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.pm.FeatureFlags
import android.content.pm.FeatureFlagsImpl
import android.content.pm.PackageInfo
import android.content.pm.PackageManager
import android.os.UserHandle
@@ -50,6 +52,7 @@ class PackageInfoPresenter(
    val userId: Int,
    private val coroutineScope: CoroutineScope,
    private val packageManagers: IPackageManagers = PackageManagers,
    private val featureFlags: FeatureFlags = FeatureFlagsImpl(),
) {
    private val metricsFeatureProvider = featureFactory.metricsFeatureProvider
    private val userHandle = UserHandle.of(userId)
@@ -141,9 +144,10 @@ class PackageInfoPresenter(
    private fun getPackageInfo() =
        packageManagers.getPackageInfoAsUser(
            packageName = packageName,
            flags = PackageManager.MATCH_ANY_USER or
                PackageManager.MATCH_DISABLED_COMPONENTS or
                PackageManager.GET_PERMISSIONS,
            flags = PackageManager.MATCH_ANY_USER.toLong() or
                PackageManager.MATCH_DISABLED_COMPONENTS.toLong() or
                PackageManager.GET_PERMISSIONS.toLong() or
                if (featureFlags.archiving()) PackageManager.MATCH_ARCHIVED_PACKAGES else 0,
            userId = userId,
        )
}
+37 −0
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import android.app.ActivityManager
import android.app.settings.SettingsEnums
import android.content.Context
import android.content.Intent
import android.content.pm.FakeFeatureFlagsImpl
import android.content.pm.Flags
import android.content.pm.PackageManager
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
@@ -155,6 +157,41 @@ class PackageInfoPresenterTest {
        verifyAction(123)
    }

    @Test
    fun reloadPackageInfo_archivingDisabled() = runTest {
        coroutineScope {
            val fakeFeatureFlags = FakeFeatureFlagsImpl()
            fakeFeatureFlags.setFlag(Flags.FLAG_ARCHIVING, false)
            val packageInfoPresenter =
                PackageInfoPresenter(context, PACKAGE_NAME, USER_ID, this, packageManagers, fakeFeatureFlags)

            packageInfoPresenter.reloadPackageInfo()
        }

        val flags = PackageManager.MATCH_ANY_USER.toLong() or
            PackageManager.MATCH_DISABLED_COMPONENTS.toLong() or
            PackageManager.GET_PERMISSIONS.toLong()
        verify(packageManagers).getPackageInfoAsUser(PACKAGE_NAME, flags, USER_ID)
    }

    @Test
    fun reloadPackageInfo_archivingEnabled() = runTest {
        coroutineScope {
            val fakeFeatureFlags = FakeFeatureFlagsImpl()
            fakeFeatureFlags.setFlag(Flags.FLAG_ARCHIVING, true)
            val packageInfoPresenter =
                PackageInfoPresenter(context, PACKAGE_NAME, USER_ID, this, packageManagers, fakeFeatureFlags)

            packageInfoPresenter.reloadPackageInfo()
        }

        val flags = PackageManager.MATCH_ANY_USER.toLong() or
            PackageManager.MATCH_DISABLED_COMPONENTS.toLong() or
            PackageManager.GET_PERMISSIONS.toLong() or
            PackageManager.MATCH_ARCHIVED_PACKAGES
        verify(packageManagers).getPackageInfoAsUser(PACKAGE_NAME, flags, USER_ID)
    }

    private fun verifyAction(category: Int) {
        verify(metricsFeatureProvider).action(context, category, PACKAGE_NAME)
    }