Merge "Support fetching PackageInfo for archived apps" into main
diff --git a/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt b/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt
index 98a3e66..6eee72e 100644
--- a/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt
+++ b/src/com/android/settings/spa/app/appinfo/PackageInfoPresenter.kt
@@ -20,6 +20,8 @@
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 @@
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 @@
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,
)
}
diff --git a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/PackageInfoPresenterTest.kt b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/PackageInfoPresenterTest.kt
index 2648e08..6c5cb85 100644
--- a/tests/spa_unit/src/com/android/settings/spa/app/appinfo/PackageInfoPresenterTest.kt
+++ b/tests/spa_unit/src/com/android/settings/spa/app/appinfo/PackageInfoPresenterTest.kt
@@ -20,6 +20,8 @@
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 @@
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)
}