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)
     }